一、软件工程概述
1.1计算机软件
计算机软件是指计算机系统中的程序及其文档。按照软件的应用领域,可以将计算机软件分为十大类:
·系统软件:系统软件是一整套服务于其他程序的程序,如操作系统构件、驱动程序等;
·应用软件:解决特定业务需要的独立应用程序;
以及工程/科学软件、嵌入式软件、产品线软件、Web应用、人工智能软件、开放计算、网络资源以及开源软件
1.2软件工程基本原理
用分阶段的生命周期计划严格管理、坚持进行阶段评审、实现严格的产品控制、采用现代程序设计技术、结果应能清楚的审查、开发小组成员应少而精、承认不断改进软件工程实践的必要性
1.3软件生存周期
可行性分析与项目开发计划(确定要解决的问题、解决办法、资源等,生成可行性分析报告和项目开发计划)—>需求分析(准确定义软件系统必须做什么,实现什么功能,产生软件需求说明书)—>概要设计(把确定的各项功能转化为需要的体系结构,生成概要设计说明书)—>详细设计(把功能转化为结构化过程描述,产生详细设计文档)—>编码(编写实现代码)—>测试(检查软件各个组成部分,生成软件测试计划、测试用例和测试报告)—>维护(软件生存周期中最长的阶段)
1.4软件过程
1)能力成熟度模型(CMM):提供一种评价软件承接方能力的方法,分为5级:
初始级(Initial):软件过程杂乱无章,项目的成功完全依赖个人努力或核心人物作用
可重复级(Repeatable):建立了基本的项目管理过程,有必要的过程准则
已定义级(Defined):大部分工程的努力目标,管理和工程两方面的软件已经文档化、标准化
已管理级(Managed):制定了软件过程和产品质量的详细度量标准
优化级(Optimized):加强了定量分析,不断持续改进
2)能力成熟度模型集成(CMMI):若干过程模型的综合改进,提供了两种表示方法:
阶段式模型:类似于CMM,关注组织的成熟度,初始的,过程不可预测且缺乏控制;已管理的,过程为项目服务;已定义的,过程为组织服务;定量管理的,过程已度量和控制;优化的,集中于过程改进
连续式模型:关注每个过程领域的能力,分6级,编号0~5。
二、软件过程模型
2.1瀑布模型(Waterfall Model)
规定了从前至后、相互衔接的固定次序,容易理解,管理成本低,但客户必须能完整、正确和清晰的表达需求,需求设计中的错误往往到了后期才能被发现。可强迫开发人员采用规范的方法,严格规定了必须提交的文档,要求严格的评审
2.2增量模型(Incremental Model)
增量模型假设可以将需求分段为一系列增量产品。第一个增量往往是核心产品,客户对,每个增量的使用