如何写需求
申和平 2013年11月
软件工程,从需求开始。
1. 需求知识概述
软件需求的重要性
软件需求基本概念
优秀需求应具备特征
需求开发的主要困难
需求分析员应备能力
2. 软件需求开发
需求获取
需求分析
需求规格说明
需求验证
3. 软件需求管理
需求版本控制
需求变更控制
需求跟踪控制
目录
典型的软件开发
软件需求的重要性
中国有句谚语:“好的开始就等于成功的一半”。
项目遇困几大原因
需求是制定项目计划的基础。
需求规格说明是软件设计和软件实现的基础。
需求规格说明是测试工作和用户验收的依据。
需求规格说明是软件维护工作的依据。
河的源头被污染,那么整条河也就被污染了。
缺乏用户的参与。(13%)
不完整规格说明。(12%)
不断变更的需求。(12%)
需求错误的代价
我们往往并不清楚究竟该做什么,却一直忙碌不停的开发。
若对需求缺乏明确了解便直接进入编码环节,预期后续进行修改,实际上更多情形是编写过程中同步进行修改。
软件的调节与调整具有极高的灵活性,无论需求如何变化,都能在软件中迅速得到体现。
你是如此吗?
这些见解主要源自于对小型项目的开发实践,而当你着手处理一个中等或大型项目时,?
软件需求的定义
IEEE软件工程标准词汇表(1977)中的需求定义:
用户解决问题或达到目标所需的条件或权能。
系统及其组成部分必须符合合同条款、行业标准、技术规范以及任何其他正式文件所要求的各项要求或功能。
一种反应上述所描述的条件或权能的文档说明。
简单来说,需求源自用户的各种需求点,经过细致的分析与核实,最终转化为一份详尽的文档,该文档详尽阐述了产品需实现或应具备的功能。
需求工程的定义
与需求紧密相关的各类活动被统称为需求工程,这一领域大致可划分为需求开发与需求管理两大环节。在需求开发环节,主要任务是生成需求规格说明;而在需求管理环节,则主要负责针对需求的变化,对需求规格说明的具体内容以及版本进行有效管理。
软件需求的层次(1)
软件需求的层次(2)
业务需求
表示组织机构或客户对系统或产品高层次的目标。
它们在项目视图与范围文档中予以说明。
描述组织为什么要开发一个系统。
用户需求
描述用户的目标,或用户要求系统必须完成的任务。
用例、场景描述都是表达用户需求的有效途径。
描述用户使用系统能做什么。
功能需求
明确了开发人员需实现的软件功能,确保用户能够顺利完成各自的任务,进而满足业务上的需求。
非功能需求
系统在实现其功能时,需遵守一系列补充性的约束条件,这包括必须遵循的各类标准、规范、协议,以及性能指标、设计或实施过程中的限制以及相关的质量特性。
软件需求的质量属性(1)
外部质量,对用户很重要。
正确性
软件需准确完成既定任务的功能。其准确性是衡量质量的首要且至关重要的标准。
健壮性
这指的是软件在遭遇异常状况时仍能保持正常运作的属性。健壮性包含两个层面,一方面是指其容错性,另一方面则是指其恢复性。
可靠性
这是指在特定条件与限定的时间框架内,软件能够持续稳定运行,未出现故障的可能性。
性能
这指的是软件对于特定事件的反应速度。它包括两个方面的考量:一是软件从接收到事件到做出响应所需的时间长度,二是软件在特定时间内能够处理的事件数量。
安全性
这是指软件抵御非法侵入的防御能力,既涉及技术层面的考量,也关联到管理层面的处理。
易用性
是指用户使用软件的容易程度。
兼容性
是指不同产品或者新老产品相互交换信息的能力。