|
需求分析的过程包括需求的获取、分析、编写文档、管理等一系列活动。
|
|
|
|
需求获取是需求分析阶段的基本活动。软件的需求来源可以是多方面的,这取决于待开发产品的性质和开发环境。主要的需求来源有以下几种。
|
|
|
①有潜在需要的用户。用户的需要是最根本的需求,要明确用户对软件产品的需求,最有效的方法就是直接与用户沟通和交流。
|
|
|
②当前同类产品。同类软件往往具有相当好的参考价值,从某种意义上讲,同类产品可以作为原型进行研究。
|
|
|
③原有系统的缺陷报告或改进性要求。对已有系统的意见是用户实践的成果,是相当有价值的需求来源。
|
|
|
④市场调查和用户问卷调查。通过大面积的调查可以获得相当有代表性的数据。
|
|
|
⑤分析用户的工作内容和工作方式。直接观察用户的工作,从用户的角度设身处地地分析新的软件系统究竟应该具有哪些功能。
|
|
|
需求获取的关键是同用户之间的交流,它也是非常容易出现误解和歧义的环节。需求获取的成功完全依赖于客户和开发者之间的合作效果。
|
|
|
|
在需求获取的基础上需要进行问题分析和方案的综合。由于需求获取来源的多样性,最初的需求表达往往是不规范的,描述问题的形式和角度各不相同。并不是用户提出的所有需求都是合理的,有些用户需求甚至是矛盾的,这就需要有经验的分析人员用科学的方法找出系统各元素之间的联系,逐步细化所有的软件功能、接口特性和设计上的限制等。通过分析确定满足功能要求的程度,根据功能需求、性能需求、运行环境需求等删除其不合理的部分,增加其需要的部分,最终给出目标系统的逻辑定义。
|
|
|
需求分析是一个需要经过多次反复的工作阶段。在这个阶段可以使用前面介绍过的原型法,实践已经证明,原型法是需求分析的有力工具。分析过程应该得到正确、完整和清晰的系统需求。在需求分析过程中,通常会用到系统结构层次图、数据流图、输入/处理/输出图、数据字典等描述系统的工具。
|
|
|
需求分析的基本原则是自顶向下地逐层分解问题。在纵向上将系统划分为若干层次,在同一层次上再横向分解为若干部分,将复杂问题分解为多个较易理解的部分,确定各部分之间的接口,从而实现整体功能。
|
|
|
|
需求文档是需求过程阶段的成果体现形式,软件工程特别强调文档的重要性。需求文档是客户了解未来产品的依据,是开发者开发工具的基本指导,也是产品研制出来以后判定其是否符合要求的基准,还是编写各种客户文档、培训材料的基础。可以看出,需求文档将在整个软件开发中起指导性作用。
|
|
|
根据需求分析阶段的基本任务,需求文档包括以下四种主要资料。
|
|
|
①系统规格说明。主要描述目标系统的概述、功能要求、性能要求、运行环境要求和其他要求(如可使用性、安全保密性、可维护性、可移植性等)以及将来可能提出的要求。
|
|
|
②数据要求。主要包括在需求分析时建立的数据字典以及数据结构的描绘,还包括存储信息(数据库或普通文件)的分析结果。
|
|
|
③用户系统描述。这个文档从用户使用系统的角度描述系统,相当于一份初步的用户手册,使得未来的用户能从使用者的角度检查该目标系统,帮助他们判断这个系统是否符合他们的需要。
|
|
|
④修正的开发计划。经过需求分析阶段的工作,开发者对目标系统有了更深入、更具体的认识,能够对系统的成本和进度做出更准确的估计,在此基础上应该对开发成本计划、资源使用计划、进度计划等进行细化和修正。
|
|
|