【复习】软件需求工程

软件需求的分类

目标需求、业务需求、功能需求、性能需求、约束与限制


软件工程和需求工程

软件工程是指用工程方法开发和维护软件的过程和有关技术

需求工程是指应用工程化的方法、技术和规格来开发和管理软件的需求


软件需求:目标需求、业务需求和功能及非功能需求(性能需求、约束与限制)

软件生命周期:需求分析和定义、设计、编码、测试、运行、维护直到废止

常见软件开发过程模型(含个人理解):


瀑布式模型:依照软件生命期提出的模型,每个阶段有明确的分工和任务,并产生一定的书面结果,各阶段之间紧密相关,后一阶段的工作依据前一阶段的工作结果而开展。阶段间具有顺序性和依赖性,各阶段必须完成规定的文档,从而在审查文档的基础上保证软件的质量。(在实际工作中存在着反复,例:在设计中发现需求比较含糊,则需回到需求分析于定义阶段重新进行处理)

可能存在的问题:

1.实际开发中,用户不可能一开始就使自己的需求很清晰。

2.在阶段间移交文档过程中,由于个人理解不同等原因容易产生误解。

3.用户参与的程度小,只参与了需求分析与定义和测试阶段的后期。


快速原型模型:快速建立一个实现了若干功能的可运行模型来启发、揭示和不断完善用户需求,直到满足用户的全部需求为止。用户参与程度提高,减少用户需求的遗漏和频繁修改的可能性。

可能存在的问题:

1.用户容易误认为原型就是正式产品或者通过少量修改就能成为正式产品。

2.对于软件系统的开发环境要求较多。(产品发布在不同平台)


增量模型:从核心功能开始,通过不断地改进和扩充,使得软件系统能适应用户需求的变动和扩充,从而获得柔性较高的软件系统。

可能存在的问题:
1.增加构件或功能时,可能破坏该软件系统。

2.设计软件结构时就要充分考虑其开放性,难度较大。


螺旋式模型:将瀑布式模型与快速原型模型结合到一起,并在每个阶段加上风险分析,逐渐生成原型1..原型2..可运行原型。

可能存在的问题:

1.要求软件开发人员具有丰富的风险评估经验和专门知识,难度较大。


面向对象的开发模型:面向对象分析=>面向对象设计=>面向对象实现和测试=>系统维护

面向对象分析的任务是构造可理解的现实世界的问题分析模型,如对象模型、动态模型和功能模型。面向对象设计的任务是确定对象的内部细节,包括定义对象的界面、数据结构、算法和操作等。面向对象实现和测试的任务是用面向对象的程序设计语言和工具实现类和对象,以及它们之间的静态和动态关系。

特点:

1.支持软件的重用

2.软件系统的表达形式在整个开发模型中都是以类及其结构作为表达单元。

3.非线性的工作方式,部分分析工作、设计工作、实现工作需要并行地进行。


需求获取=>需求分析=>需求描述(生成需求规格说明书)=>需求验证

(需求管理:过程中对需求进行管理,为了有效的管理需求变更。)


需求获取:确定需求开发计划=>建立项目的目标和范围=>确定调查对象=>实地收集需求信息(可使用场景技术<用例模型>)=>确定非功能需求


需求分析:建立系统关联图=>分析需求的可行性=>构建用户接口原型=>(*确定需求的优先级)=>需求建模=>建立数据字典

构建用户接口原型的方法:纸上原型方法、人工模拟原型化方法、自动原型化方法



需求分析的方法:结构化分析方法(SA)、面向对象的需求分析、面向问题域的分析方法、面向多视点的需求分析方法


结构化分析方法(SA)

基本思想:按照由抽象到具体、逐层分解的方法,确定软件系统内部的数据流、变换(或加工)的关系,并用数据流图表示。

描述手段:一套分层的数据流图(分层DFD0,1,2...)、一本词典(解释说明数据流图中的每个元素)、其他补充材料(补充或修改文档的说明)


面向对象方法(OOM)

基本思想:从获取的需求信息中识别出问题域中的类与对象并分析他们之间的关系,最终建立起简洁、精确和易理解的需求模型

描述手段:对象模型(如类图)、动态模型(如序列图、状态转换图)、功能模型(如数据流图+数据字典)


基于图形的需求建模技术:UML活动图(状态图的特殊形式)、UML协作图、UML实体关联图(ER)

猜你喜欢

转载自blog.csdn.net/xc1158840657/article/details/77907755
今日推荐