需求分析
为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深人理解是软件开发工作获得成功的前提条件,不论人们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望.给开发者带来烦恼。
需求分析是软件定义时期的最后个阶段 ,它的基本任务是准确地回答“系统必须做什么”这个问题。
虽然在可行性研究阶段已经粗略地了解了用户的需求,甚至还提出了一些可行的方案,但是,可行性研究的基本目的是用较小的成本在较短的时间内确定是否存在可行的解法,因此许多细节被忽略了。然而在最终的系统中却不能遗漏任何一个微小的细节,所以可行性研究并不能代替需求分析,它实际上并没有准确地回答“系统必须做什么”这个问题,
需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、消晰、具体的要求。
在需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求。
在分析软件需求和书写软件需求规格说明书的过程中,分析员和用户都起着关键的必不可少的作用。只有用户才真正知道自己需要什么,但是他们并不知道怎样用软件实现自己的需水,用户必须把他们对软件的需求尽量准确、具体地描述出来;分析员知道怎样用软件实现人们的需求,但是在需求分析开始时他们对用户的需求并不+t分清楚,必须通过与用户沟通获取用户对软件的需求。
需求分析和规格说明是一项十分艰巨复杂的工作。用户与分析员之间需要沟通的内容非常多,在双方交流信息的过程中很容易出现误解或遗漏,也可能存在二义性。因此,不仅在整个需求分析过程中应该采用行之有效的通信技术,集中精力细致工作,而且必须严格审查验证需求分析的结果。
尽管目前有许多不同的用于需求分析的结构化分析方法,但是,所有这些分析方法都遵守下述准则。
(1)必须理解并描述问题的信息域.根据这条准则应该建立数据模型。
(2)必须定义软件应完成的功能。这条准则要求建立功能模型.
(3)必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。
(4)必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。
需求分析的任务
确定对系统的综合要求
虽然功能需求是对软件系统的一项基本需求,但却并不是唯一的需求。 通常对软件系统有下述几方面的综合要求。
1.功能需求
这方面的需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。
2.性能需求
性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存容量、磁盘容量、安全性等方面的需求。例如,“应力分析程序必须在一分钟之内生成任何一个梁的应力报告”就是一项性能需求。
3.可靠性和可用性需求
可靠性需求定量地指定系统的可靠性,例如,“机场雷达系统在一个月内不能出现两次以上故障”。可用性与可靠性密切相关,它量化了用户可以使用系统的程度。例如,“在任何时候主机或备份机上的机场雷达系统应该至少有一个是可用的,而且在一个月内在任何一-台计算机上该系统不可用的时间不能超过总时间的2%”。
4.出错处理需求
这类需求说明系统对环境错误应该怎样响应。例如,如果它接收到从另一个系统发来的违反