需求工程包括需求开发和需求管理两个方面。需求管理是一种系统化方法,可用于获取、组织和记录系统需求并使客户和项目团队在系统变更需求上达成并保持一致。需求开发是一个包括创建和维持系统需求文档所必需的一切活动的过程,它包含4个通用的高层需求工程活动:系统可行性研究、需求导出和分析、需求描述和文档编写、需求有效性验证。图3-2说明了这些活动之间的关系,也说明了在需求开发过程的每个阶段将产生哪些文档。
图3-2 需求开发过程模型
(1)可行性研究。它指明现有的软件、硬件技术能否实现用户对新系统的要求,从业务角度来决定系统开发是否划算,以及在预算范围内是否能够开发出来。可行性研究是比较便宜和省时的。结果就是要得出结论:该系统是否值得进行更细致的分析。
(2)需求导出和分析。这是一个通过对现有系统分析、与潜在用户和购买者讨论、进行任务分析等导出系统需求的过程,也可能需要开发一个或多个不同的系统模型和原型。这些都会帮助分析了解所要描述的系统。
(3)需求描述。需求描述就是把在分析活动中收集的信息以文档的形式确定下来。在这个文档中有两类需求:用户需求是从客户和最终用户角度对系统需求的抽象描述;功能需求是对系统要提供的功能的详尽描述。
(4)需求有效性验证。这个活动检查需求实现的一致性和完备性。在这个过程中,不难发现需求文档中的错误,之后必须加以改正。
当然,需求过程中的各项活动并不是严格按顺序进行的。在定义和描述期间,需求分析继续进行,这不排除在整个需求工程过程中不断有新的需求出现。因此,分析、定义和描述是交替进行的。
在初始的可行性研究之后,下一个需求工程过程就是需求导出和分析。在这个活动中,软件开发技术人员要和客户及系统最终用户一起调查应用领域,即系统应该提供什么服务,系统应该具有什么样的性能以及硬件约束等。
需求获取是在问题及其最终解决方案之间架设桥梁的第一步。获取需求的一个必不可少的结果是对项目中描述的客户需求的普遍理解。一旦理解了需求,分析者、开发者和客户就能探讨、确定描述这些需求的多种解决方案。参与需求获取的人员只有在他们理解了问题之后才能开始设计系统,否则,对需求定义的任何改进,在设计上都必须大量返工。把需求获取集中在用户任务上而非用户接口上,有助于防止开发组由于草率处理设计问题而造成的失误。
所有对系统需求有直接或间接影响力的人统称为项目相关人员。项目相关人员包括使用系统的最终用户和机构中其他与系统有关的人员,正在开发或维护其他相关系统的工程人员、业务经理、领域专家等。以下原因增加了系统需求导出和分析的难度:
项目相关人员通常并不真正知道他们希望计算机系统做什么。让他们清晰地表达出需要系统做什么是件困难的事情,他们或许会提出不切实际的需求。项目相关人员用他们自己的语言表达需求,这些语言会包含很多他们所从事工作中的专业术语和专业知识。需求工程师没有客户的领域中的知识和经验,而他们又必须了解这些需求。不同的项目相关人员有不同的需求,他们可能以不同的方式表达这些需求。需求工程师必须发现所有潜在的需求资源,而且能发现这些需求的相容之处和冲突之处。政治上的因素可能影响系统的需求。管理者可能提出特别需求,因为这些允许他们在机构中增加他们的影响力。经济和业务环境决定了分析是动态的,它在分析过程期间会发生变更。因此,个别需求的重要程度可能改变。新的需求可能从新的项目相关人员那里得到。
由于软件开发项目和组织文化的不同,对于需求开发没有一个简单的、公式化的途径。需求开发活动通常包括如下14个步骤:
(1)定义项目的视图和范围;
(2)确定用户类;
(3)在每个用户类中确定适当的代表;
(4)确定需求决策者和他们的决策过程;
(5)选择需求获取技术;
(6)运用需求获取技术对作为系统一部分的使用实例进行开发并设置优先级;
(7)从用户那里收集质量属性的信息和其他非功能需求;(www.xing528.com)
(8)详细拟订使用实例使其融合到必要的功能需求中;
(9)评审使用实例的描述和功能需求;
(10)开发分析模型用以澄清需求获取的参与者对需求的理解;
(11)开发并评估用户界面原型以助想象还未理解的需求;
(12)从使用实例中开发出概念测试用例;
(13)用测试用例来论证使用实例、功能需求、分析模型和原型;
(14)在继续进行设计和构造系统每一部分之前,重复(6)~(13)步。
需求导出和分析过程的通用过程模型如图3-3所示。
图3-3 需求导出和分析过程
过程活动包括以下内容:
(1)领域了解。分析人员一定要了解应用领域。举例来说,为一家超级市场做系统开发,则分析人员一定要了解超级市场的运作方式。
(2)需求收集。这是一个与项目相关人员沟通以发现他们需求的过程。很显然,在这个活动期间能对领域有进一步的了解。
(3)分类。收集的需求是无序的,需要对其重新组织和整理,将其分成相关的几个组。
(4)冲突解决。在有多个项目相关人员参与的地方,需求将不可避免地会发生冲突,这个活动就是发现而且解决这些冲突。
(5)优先排序。在任何一组需求中,一些需求总是会比其他的更重要。这个阶段包括和项目相关人员交互以发现最重要的需求。
(6)需求检查。检查需求是否完全、是否一致以及是否与项目相关人员对系统的期待相符合。
从图3-3可以看出,需求导出和分析是一个重复过程,从一个活动到另一个活动会有持续不断的反馈。过程循环从领域了解开始,以需求检查结束。分析人员在每个回合中都能进一步加深对需求的理解。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。