软需---软件工程与需求工程
软件工程与需求工程
软件工程
软件工程是指用工程方法开发和维护软件的过程和有关技术。
关于软件的荒谬说法
- 软件成本低于物理设备成本
- 软件易修改
- 计算机比物理设备可靠性高
- 软件的正确性可形式化的证明
- 软件重用提高安全性和可靠性
- 计算机系统同机械系统相比风险更低
软件开发过程模型
软件生命期:是指软件从软件计划开始,经历需求分析和定义、设计、编码、测试、运行、维护直到废止为止的期间。
经典的四种模型
-
瀑布模型
-
核心思想
- 系统开发是逐步求精的过程
- 各步骤相对独立,便于管理
-
存在的问题
- 忽略了需求的动态性
- 需求完成后,用户对项目的参与即停止
- 需求描述与设计分开
- 不支持原型的使用和软件重用
-
-
快速原型模型
-
目的
- 1明确并完善需求
- 2探索设计选择方案
- 3可发展为最终产品
-
适用范围
- 用于获取关于系统用户界面的需求
- 用于检验设计方案的可行性,或探讨系统性能问题
-
存在的问题
- 用户将原型误认为最终系统
- 原型所反映的系统是不全面的
-
-
增量模型
- 1、每版只增加新功能,需求是固定的
- 2、每版可能增加新需求,以延长软件周期
-
螺旋模型
-
螺旋模型主要用于风险分析,可以减少需求变更带来的风险
-
每一轮开发活动具体包括:
- 制定下一轮计划
- 决定设计目标和限制条件
- 评估候选方案, 风险降解
- 产品开发
-
存在的问题:
- 无法应付不可预见的需求变化
-
面向对象的开发模型
-
步骤
- 面向对象分析
- 面向对象设计
- 面向对象编程
- 面向对象测试
- 面向对象维护
-
通常需要建立三种形式的模型
- 对象模型:描述系统数据结构
- 动态模型:描述系统控制结构。
- 功能模型:描述系统功能 。
需求工程在软件开发中的地位
需求工程对软件开发的影响
- 需求是制定项目计划的基础
- 需求工程所产生的最终产物是软件设计和软件实现的基础
- 需求规格说明是测试工作和用户验收软件系统的依据
- 需求规格说明是软件维护工作的依据
需求工程面临的困难
- 需求获取和分析的困难性
- 需求描述语言和规范化的困难性
- 需求验证的困难性
- 需求管理的困难性
软件需求的开发和管理过程
需求工程的领域划分
-
需求开发
- 问题获取
- 分析
- 编写规格说明
- 验证
-
需求管理
- 建立并维护在软件工程中同客户达成的契约,根据需求的变化对规格说明的内容和版本进行管理
需求工程活动的主要任务
- 需求获取:确定和收集与软件系统相关的、来自不同来源和对象的用户需求信息。
- 需求分析:对获得的用户需求信息进行分析和综合,即提炼、分析和仔细审查已收集到的用户需求信息,并找出其中的错误、遗漏或其他不足的地方,以获得用户对软件系统的真正需求,建立软件系统的需求模型。
- 需求定义:使用适当的描述语言,按标准的格式描述软件系统的需求,并产生需求规格说明及其相应文档。
- 需求验证:审查和验证需求规格说明是否正确和完整地表达了用户对软件系统的需求。
- 需求管理:有效地管理软件系统的需求规格说明及其文档,评估需求变更带来的潜在影响及可能的成本费用,跟踪软件需求的状态,管理需求规格说明的版本等。
补充 关于需求的基本观点
- 需求工程活动不总是顺序进行
- 问题陈述无法追求完美
- 追求规约的描述会降低性价比
- 问题描述永不可能是固定的