第一部分:绪论
软件的发展经历了以“机器”“应用”“企业”为中心的三个阶段。这也是软件从一开始的新型项目到逐渐完整的一个制作体系形成的过程。其中关于需求规格说明和需求管理的缺陷是软件开发中最常见的两类重要问题。而导致需求问题的原因中,未能很好的理解和掌握。应用型软件的模拟特性以及由此而产生的一系列影响的要求。软件可以分为三种类别:面向专业用户的纯工具型软件、面向普通用户的纯工具型软件和应用型软件。应用型软件正确的工作基础是具有包括目的性、正确性和显示可理解性的模拟性。需求问题的具体原因有非技术性和社会性因素重视不足的态度问题,传统需求分析方法的缺陷的外部问题。
需求工程是所有需求处理活动的总和,它收集信息、分析问题、整合观点、记录需求并验证其正确性,最终反映软件被应用后与其环境互动形成的期望效应。需求工程包括需求开发(需求获取、需求分析、需求规格说明、需求验证)和需求管理两个方面。需求工程师需要具备认知学和社会学等方面比如认知心理学,人类学,社会学,语言学,哲学知识等理论指导和专业、分析、交流、观察、建模、写作、创新和协调等技能。
当软件系统被用来解决某些问题时,这些问题的问题集合域就是问题域,而软件系统通过影响问题域能够帮助人们解决问题成为解系统。通过映射建立的共同知识就是问题域和解系统之间的共享现象,也就是两者之间实现交互和互相影响的途径与接口。
需求分为功能需求、性能需求、质量属性、对外接口。约束。功能需求包括业务需求、用户需求和系统(级)需求。其他四项可划为非功能需求。其中性能需求常见的包括速度、容量、吞吐量、负载和实时性。约束主要有系统开发及运行的环境、问题域内的相关标准和商业规则。优秀的需求应该具备完整性、正确性、精确性、可行性、必要性、无歧义和可验证的特性。需求并没有反映用户的真实需要、模糊和歧义的需求、信息遗漏、不必要的需求、不切实际的期望等是常见的需求定义错误。
从这部分的需求绪论可以看到许都需求方面的整体定义,但并没有具体的步骤指导。从整体定义上来看,需求工程是一个庞大而繁琐的过程,如何抓住软件的功能重点是需求工程的最终目的。
第二部分:需求获取
通过第一部分的理论知识,需求工程的第一步行动就是需求获取。需求获取的困难有用户和开发人员的背景不同和立场不同,普通用户缺乏概括性综合性的表述能力,用户存在认知困难,用户越俎代庖和缺乏用户参与等几个方面。每个方面又是具体而复杂的。对于需求获取一定要有一个完整的规划和充足的耐心。获取信息的内容包括需求、问题域描述、环境与约束。获取信息的来源包括涉众、硬数据、相关产品、重要文档、相关技术标准和法规。获取信息的方法包括传统的问卷调查等,集体获取方法(头脑风暴),原型方法,模型驱动方法(uml),认知方法(任务分析和协议分析),基于上下文的方法。获取信息的过程包括在整体上制定组织方案、维护项目的前景和范围、接受需求的不稳定性、控制探索性工作。防止遗漏需求和结束获取。具体的实例影响和作用可以参考上一本书的阅读笔记。最后整理记录保存。