一、需求的作用
软件的作用
在许多现代技术产品中,软件技术是最重要的技术。软件通常为一些产品提供控制功能、耦合功能或者由软件本身所实现的功能。
软件在解决现代系统集成问题中的:灵活性、低成本、易修改、复杂性。
软件在系统工程中的作用
- 需求分析(问题定义)
- 软件体系结构设计(解决方案设计)
- 验证、确认及测试(产品评估)
在任何软件开发活动中,第一步都是:
- 调查、确定在一个系统需求规约中的分配给软件的系统需求;
- 调查、确定在一个软件需求规约(SRS)中的软件需求;
💡不论是采用自顶向下的软件开发,还是采用自底向上的软件开发,正确定义问题,是解决问题的前提,软件需求是软件开发的工作基础。
二、需求的定义
需求是一个有关“要予构造”的陈述,描述了待开发产品/系统(或项)功能上的能力、性能参数或者其它性质。
单一需求必须具有的 5 个基本性质
- 必要的;
- 无歧义的;
- 可测的;
- 可跟踪的;
- 可测量的;
注:确定一个需求是否满足以上五个性质是复杂耗时的。
三、需求的分类
功能
功能需求规约了系统或系统构件必须执行的功能。
除了对要执行的功能给出一个陈述外,还应规约如下内容:
- 关于该功能输入的所有假定,或为了验证该功能输入,有关检测的假定。
- 功能内的任一次序,这一次序是与外部有关的。
- 对异常条件的响应,包括所有内外部所产生的错误。
- 需求的时序或优先程度
- 功能之间的互斥规则。
- 系统内部状态的假定。
- 为了该功能的执行,所需要的输入和输出次序。
- 用于转换或内部计算所需要的公式。
功能需求是整个需求的主体,即没有功能需求,就没有非功能需求,即性能需求、外部接口需求、设计约束和质量属性。
性能
性能需求规约了一个系统或系统构件必须具有的性能特性。
外部接口
外部接口需求规约了系统或系统构件必须与之交互的硬件、软件或数据库元素。它也可能规约其格式、时间或者其他因素。
外部接口的分类:
- 系统接口:描述一个应用如何与系统的其他应用进行交互。
- 用户接口:规约了软件产品和用户之间接口的逻辑特性。即规约对给用户所显示的数据,对用户所要求的数据以及用户如何控制该用户接口。
- 硬件接口:如果软件系统必须与硬件设备进行交互,那么就应该说明所要求的支持和协议类型。
- 软件接口:允许与其他软件产品进行交互,如数据管理系统、操作系统或数学软件包。
- 通讯接口:规约待开发系统与通讯设施之间的交互。
- 内存约束;
- 操作;
- 地点需求;
设计约束
设计约束限制了系统或系统构件的设计方案。就约束本身而言,对其进行权衡或调整是相当困难的,甚至是不可能 的。它们必须予以满足。
质量属性
质量属性规约了软件产品必须具有的一个性质是否达到质量方面一个所期望的属性。
属性 | 描述 |
---|---|
可靠性 | 软件系统在指定环境中没有失败而正常运行的概率。 |
存活性 | 当系统的某一部分不能运行时,该软件继续运行或支持关键功能的可能性。 |
可维护性 | 发现和改正一个软件故障或对特定的范围进行修改所要求的平均工作。 |
用户友好性 | 学习和使用一个软件系统的容易程度。 |
安全性 | 在一个预定的时间内,使软件系统安全的可能性。 |
可移植性 | 软件系统运行的平台类型。 |
四、需求发现
- 自悟;
- 交谈;
- 观察;
- 小组会;
- 提炼;
- 综合运用;
五、需求规约(SRS)的概念和格式
概念
一个需求规约是一个软件项/产品/系统所有需求陈述的正式文档,是一个软件产品/系统的概念模型。
基本性质
一般来说,SRS 应必须具备以下4个性质:
- 重要性和稳定性程度;如基本需求、可选需求和期望需求。
- 可修改的:在不过多影响其他需求的前提下,可以容易地修改一个单一的需求。
- 完整的:没有被遗漏的需求。
- 一致的:不存在互斥的需求。
💡 需求规格说明书格式
xxx 系统需求规格说明书
1. 引言
1.1 编写目的
说明编写本需求规格说明书的目的。
1.2 背景说明
(1)给出待开发的软件产品的名称;
(2)说明本项目的提出者、开发者及用户;
(3)说明该软件产品将做什么,如有必要,说明不做什么;
1.3 术语定义
问题域相关的术语定义。
1.4 参考文献
列出本文档中所引用的全部资料,包括标题、文档编号、版本号、出版日期及出版单位等,必要时注明资料来源。
2. 概述
2.1 功能概述
描述待开发软件产品将要完成的主要功能。
2.2 约束
描述对系统设计产生影响的限制条件,并对下一节中所述的某些特殊需求提供理由,如管理模式、硬件限制、安全等。
3. 数据流图与数据字典及加工说明
3.1 数据流图
3.1.1 数据流图1
(1)画出该数据流图;
(2)加工说明;
(3)数据流说明;
3.1.2 数据流图2
3.2 数据字典
3.2.1 文件说明
需要参照数据库存储格式进行相关说明。
3.2.2 数据项说明
4. 接口
4.1 用户接口
4.2 硬件接口
4.3 软件接口
5. 性能需求(是文档的技术核心,一般指重要的非功能性需求)
5.1 精度
逐项说明对各项输入数据和输出数据达到的精度。
5.1 时间特征
定量说明本软件的时间特征,如响应时间、更新处理时间、数据传输、转换时间、计算时间等。
5.3 灵活性
说明本软件所具有的灵活性,即当用户需求有某些变化时(如操作方式、运行环境、时间特征等),本软件的适应能力。
6. 属性
6.1 可使用性
规定某些需求,如检验点、恢复方式和重启动性,以确保软件可使用。
6.2 保密性
规定保护软件的要素
6.3 可维护性
6.4 可移植性
7. 其他需求
7.1 数据库
7.2 操作
7.3 故障及处理
需要调研,与用户、领域专家进行充分交流,获取系统运行过程中可能产生的问题。
附录
索引
六、需求规约的作用
其作用可概括为:
第一,是最重要的,作为软件开发组织和用户之间一份事实上的技术合同书;是产品功能及其环境的体现。
第二,对于项目的其余大多数工作,它是一个管理控制点。
第三,对于产品的设计,它是一个正式的、受控的起始点。
第四,是创建产品验收测试计划和用户指南的基础,即基于需求规约一般还会产生另外两个文档初始测试计划和用户系统操作描述。
单元测试 ——> 详细设计阶段
集成测试 ——> 总体设计阶段
可用性测试 ——> 需求分析阶段
七、项目的需求及需求规约
关于项目的需求及其需求规约
项目需求是客户和开发者之间有关技术合同-产品/系统需求的理解,应记录在工作陈述SOW中或其他某一项目文档(例如,项目管理计划)中。
即 SRS 应只关注产品需求,即:产品/系统需求-“交付给客户的产品是什么”
SOW 应关注项目工作与管理,即:项目需求-“开发组要做的是什么”。
网友评论