目录
[6. 需求工程](#6. 需求工程)
1.定义
软件工程:指的是应用计算机科学,数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。
目的是:提高软件生产率,提高软件质量,降低软件成本。
计算机软件:指的是计算机系统中的程序及其文档。
2.软件生存周期
软件生存周期包括以下七个方面:
1.可行性分析与项目开发计划:确定软件的开发目标及其可行性。产生的文档有:可行性分析报告,项目开发计划。
2.需求分析:确定软件系统要做什么,功能,性能,数据和界面等要求。产生文档:软件需求说明书
3.概要设计:设计软件的结构,明确软件由哪些模块组成。产生文档:概要设计说明书
4.详细设计:对每一模块的功能进一步详细,具体的描述。产生文档:详细设计文档。
5.编码:程序代码
6.测试:另一个部门的软件设计师或系统设计师进行测试。产生文档:软件测试计划,测试用例,测试报告。
7.维护:是生存周期中时间最长的阶段。
3.软件过程(即软件开发中遵循的一系列可预测的步骤)
1.软件过程中能力成熟度模型:
CMM(能力成熟度模型):初始级,可重复级,已定义级,已管理级,优化级。
CMMI(能力成熟度模型集成):初始级,已管理级,已定义级,定量管理级,优化级。
连续式模型:未完成的,已执行的,已管理的,已定义级的,定量管理级的,优化的。
4.软件开发模型
1.瀑布模型:结构化方法的模型
适用场合:需求明确或二次开发
优点:容易理解,成本低,强调开发的阶段性早期计划及需求调查和产品测试
缺点:客户必须能完整,正确和清晰的表达需求
2.演化模型:适用于软件需求不够明确的情况
(1)快速原型模型:
在开发初期构造一个简易系统(可为界面,可为初步的系统),以比较低的成本来获取比较全面的用户需求。
适用场合:用户需求不明确,需求经常变化且系统规模不太大,不太复杂的软件项目。
(2)螺旋模型:
将瀑布模型和原型模型结合起来,并强调风险分析。
与瀑布模型相比,支持用户希求的动态变化。
适用场合:用于庞大,复杂且具有高风险的系统。
3.增量模型:
先做一块核心模块,之后交给用户体验,之后再做另一块核心模型...(风险小)
4.喷泉模型:
适用于面向对象的开发方法。
5.基于构件的开发模型:利用预先包装的构件来构造应用系统。
构件:面向软件系统体系架构的可复用软件模块。
具有许多螺旋模型的特点。本质上是演化模型,需要以迭代的方式构建软件。
- 统一过程(UP):
典型代表:RUP
7.敏捷开发方法:尽可能早的,持续的对有价值的软件进行交付
5.需求分析(软件需求分析,系统需求分析或需求分析工程)
准确理解用户和项目的功能,性能,可靠性等具体要求。
6. 需求工程
是一个不断反复的需求定义,文档记录,需求演进的过程,并最终在验证的基础上冻结需求。
可以细分为6个阶段:
7.系统设计
1,概要设计
2.详细设计
8.系统测试
1.传统软件的测试策略
软件测试分为4步:单元测试,集成测试,确认测试和系统测试
单元测试:也叫模块测试。侧重于模块中的内部处理逻辑和数据结构
在每个模块进行测试时,需要开发两种模块:
2.集成测试
3.确认测试
4.系统测试