【正确答案】传统软件生存期范例的典型代表是“瀑布模型”。这种模型的核心是将软件生存期划分为软件计划、需求分析、软件设计、编码、测试和运行维护等阶段,根据不同阶段工作的特点,运用不同的方法、技术和工具来完成该阶段的任务。软件开发人员遵循严格的规范,在每一个阶段工作结束时都要进行严格的阶段评审和确认,以得到该阶段一致、完整、正确和无歧义性的文档资料,并以它们作为下一阶段工作的基础。
传统思想强调每一阶段的严格性,尤其是开发初期要有良好的软件规格说明,主要是源于过去软件开发的经验教训,即在开发的后期或运行维护期间来修改不完善的规格说明不是一件容易的事。特别是对于一些大型的软件项目,在开发的早期用户往往对系统只有一个模糊的想法,很难完全准确地表达对系统的全面要求,软件开发人员对于所要解决的问题认识更是模糊不清。经过详细的讨论和分析,也许能得到一份较好的规格说明,但却很难期望该规格说明能将系统的各个方面都描述得完整、准确、一致,并与实际环境相符。很难通过它在逻辑上推断出(不是在实际运行中判断评价)系统运行的效果,以此达到各方对系统的共同理解,因此,很难保证每个阶段特别是定义阶段是正确的、完整的。
随着开发工作向前推进,用户可能会产生新的要求,或因环境的变化,要求系统也能随之变化,开发人员又可能在设计和实现的过程中遇到一些没有预料到的实际困难,需要以改变需求来解脱困境。因此,规格说明难以完善需求的变更,以及通信中的模糊和误解,都会成为软件开发顺利推进的障碍。尽管在传统软件生存期管理中通过加强评审、确认和全面测试,甚至依靠维护阶段能够缓解上述问题,但不能从根本上解决这些问题。
为了解决这些问题,逐渐形成了软件系统的快速原型的概念。由于运用原型的目的和方式不同,原型可分为以下三种不同的类型。
(1)探索性原型:这类原型是问题域中某些子系统或用户需求的某些子部分的可操作模型,它不涉及软件的实现方法。其主要作用是澄清应用领域和用户需求的某些疑难问题,并方便用户对开发人员的需求分析工作进行评价、纠错和确认。
(2)实验性原型:对于重要的用户目标和关键算法,开发人员可以生成实验性原型,以验证问题求解方案的可行性,比较各种方案的优劣,并征询用户对这些方案的功能和性能的意见。
(3)进化性原型:进化性原型不仅用来理解问题、试验求解方案,而且用作目标软件系统的基础,在后续开发过程中逐步进化为最终的软件产品。
建立快速原型进行系统的分析和构造,有以下的优点:
(1)增进软件开发人员和用户对系统服务需求的理解,使比较含糊的具有不确定性的软件需求(主要是功能)明确化。由于这种方法能在早期就明确了用户的要求,因此可以防止以后由于不能满足用户要求而造成的返工,从而避免了不必要的经济损失,缩短了开发周期。
(2)软件原型化方法提供了一种有力的学习手段。通过原型演示,用户可以亲身体验早期的开发过程,获得关于计算机和被开发系统的专门知识。软件开发人员也可以获得用户对系统的确切要求,学习到应用范围的专业知识。
(3)使用原型化方法,可以容易地确定系统的性能,确认各项主要系统服务的可应用性,确认系统设计的可行性,确认系统作为产品的结果。因而它可以作为理解和确认软件需求规格说明的工具。
(4)软件原型的最终版本,有的可以原封不动地成为产品,有的略加修改就可以成为最终系统的一个组成部分,这样有利于建成最终系统。
【答案解析】