需求分类
需求分析概括就是:需求分析主要是确定待开发软件的功能、性能、数据、界面等要求。需求分析的实现步骤通常包括:获取当前系统的物理模型,抽象出当前系统的逻辑模型,建立目标系统 的逻辑模型三个部分。
需求分析阶段的工作可以分成 4 个方面:
(1)问题识别:用于发现需求、描述需求,主要包括功能需求、性能需求、环境需求、 可靠性需求、安全保密需求、用户界面需求、资源使用需求、软件成本消耗与开发进度需求, 以此来预先估计以后系统可能达到的目标。
(2)分析与综合:也就是对问题进行分析,然后在此基础上整合出解决方案。
常用的方法有面向数据流的结构化分析方法(Structured Analysis, SA),面向数据结构的 Jackson 方法,面向对象的分析方法(Object Oriented Analysis, OOA),以及用于建立动态模型的状态迁移图和 Petri 网。
(3)编制需求分析的文档:也就是对已经确定的需求进行文档化描述,该文档通常称为“需求规格说明书”。
(4)需求分析与评审:它是需求分析工作的最后一步,主要是对功能的正确性、完整性和清晰性,以及其他需求给予评价。
需求分类:软件需求包括功能需求、非功能需求和设计约束三方面内容。
功能需求:是指系统必须完成的那些事,即为了向它的用户提供有用的功能,产品必须执行的动作。
非功能需求:是指产品必须具备的属性或品质,如性能、响应时间、可靠性、容错性、扩展性等。
设计约束:也称为限制条件、补充规约,这通常是对解决方案的一些约束说明,例如必须采用国有自主知识版权的数据库系统,必须在 UNIX 操作系统之下运行等。
业务需求、用户需求、系统需求这三个处于不同层面的概念。
业务需求(Business Requirement):是指反映组织机构或客户对系统、产品高层次的目标要求,通常问题定义本身就是业务需求。
用户需求(User Requirement):是指描述用户使用产品必须要完成什么任务,怎么完成的需求,通常是在问题定义的基础上进行用户访谈、调查,对用户使用的场景进行整理,从而建立从用户角度出发的需求。
系统需求(System Requirement):是从系统的角度来说明软件的需求,它包括用特性说明的功能需求、质量属性、非功能需求及设计约束。
需求工程
需求工程就是包括创建和维护系统需求文档所必需的一切活动的过程,主要包括需求开发和需求管理两大工作。
(1)需求开发:包括需求捕获、需求分析、编写规格说明书和需求验证 4 个阶段。
(2)需求管理:通常包括定义需求基线、处理需求变更、需求跟踪等方面的工作。
需求开发是主线,是目标;需求管理是支持,是保障。
需求分析方法
(1)结构化分析方法:
使用标准化的方法,开发和推出各种名为“结构化分析”的方法论,而 Tom DeMacro 则是这个领域最有代表性和权威性的专家。
(2)软系统方法:这是一个过渡性的方法论,并未真正流行过。因为结构化分析方法采用的相对形式化的模型不仅与社会观格格不入,而且在解决“不确定性”时显得十分无力。最有代表性的软系统方法是 Checklan方法。
(3)面向对象分析方法:在 20 世纪 90 年代,结构化方法的不足在面对多变的商业世界时,显得更加苍白无力,这就催使了 OOA 的迅速发展。
(4)面向问题域的分析(Problem Domain Oriented Analysis, PDOA):现在又发现面向对象分析方法也存在着很多的不足,应运而生了一些新的方法论, PDOA 就是其中一种。不过现在还在研究阶段,并未广泛应用。