生存周期的瀑布模型瀑布模型软件开发特点快速原型化开发软件生存周期的概念软件生存周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。把整个生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理主要活动软件生存周期软件生存周期在各阶段有不同的划分。在划分软件生存周期阶段时,应遵循的一条基本原则是:各阶段的任务应尽可能相对独立,同一阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂程度,简化不同阶段之间的联系,有利于软件项目开发的组织管理。通常,软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动,可以将这些活动以适当的方式分配到不同阶段去完成。软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。软件生存周期模型确立了软件开发和演绎中各阶段的次序限制以及各阶段活动的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调,便于各种人员的有效通信,有利于活动重用,有利于活动管理。什么是软件生存周期模型软件生存周期模型主要有:瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型。软件生存周期模型介绍瀑布模型瀑布模型有时也称传统生存周期或线性顺序模型,它提出了软件开发的系统化的、顺序的方法,从系统级开始,随后是分析、设计、编码、测试和运行与维护。瀑布模型把软件生存期划分为计划、开发、运行三个时期.①便于控制开发工作的复杂性;②通过—定的有限的步骤,把用户需要解决的问题从抽象的逻辑概念逐步转化为具体的物理实现。生存周期划分为阶段的目的可行性研究问题识别市场调查分析准备环境分析物理分析功能分析信息分析动态分析确立系统方案,作出各种估算模型评审问题的初步认识了解系统应解决的问题,这些问题使如何提出的设想这些问题如何解决才能满足要求了解问题的结构市场调查了解市场对待开发软件的需求情况调查市场上已有的类似软件系统的功能、性能、价格情况分析准备确立分析计划规定由谁参加分析作业,任务分配对参加分析的人员进行必要的培训环境分析明确系统的目的和限制条件使用单位的状况、经营方针和组织机构使用单位的计算机利用情况相关的硬件、软件及其它接口部分用户的操作环境及操作要求习惯、法律、制度上对软件的制约开发能具备的基数条件和设备条件物理分析了解实际业务活动状况,特别对一些活动要点进行分析明确在这些要点之间什么东西在流动,如何进行流动对物理流量进行分析对其模型化,得到实际业务系统(当前系统)的物理模型功能分析决定系统应具备的功能(工作域)分析功能的结构:功能展开和功能分配分析各功能之间的关系,整理它们之间传递的信息利用数据流图,描述信息在系统流动与处理的情况信息分析调查系统的输入、输出、保存信息明确信息的结构及各信息之间的关系调查各信息的信息量调查各种报表和文件的格式建立粗略的数据词典,定义系统中使用的数据动态分析系统内每一部分有几种状态各种状态转换的条件同步产生的条件与同步后状态的变化确立系统方案,进行各种估算粗略地估算成本估算可能取得的效益提出可能需要的资源,包括人员、硬件、软件等提出大概的进度安排模型评审将目标系统的逻辑模型提出管理部分与用户进行评审复查问题定义、工程规模和系统目标瀑布模型的特点1.阶段间的顺序性和依赖性2.推迟实现的观点3.质量保证的观点瀑布模型的局限性传统的瀑布模型曾经给软件产业带来了巨大的进步,部分缓解了软件危机,但这种模型本质上是一种线性顺序模型,因此存在着比较明显的缺点,各阶段之间存在着严格的顺序性,特别强调预先定义需求的重要性,在着手进行具体的开发工作之前,必须通过需求分析预先定义并“冻结”软件需求,然后再一步一步地实现这些需求。但是实际项目很少是遵循着这种线性顺序进行的。虽然瀑布模型也允许迭代,但这种改变往往给项目开发带来混乱。在系统建立之前很难只依靠分析就确定出一套完整、准确、一致、有效的用户需求,这种预先定义需求的方法更不能适应用户需求不断变化的情况。传统的瀑布模型很难适应需求可变、模糊不定的软件系统的开发,而且在开发过程中,用户很难参与进去,只有到开发结束才能看到整个软件系统。这种思想的、线性的开发过程,缺乏灵活性,不适应实际的开发过程。原型化方法在开发初期,要想得到一个完整准确的规格说明不是一件容易的事。特别是对一些大型的软件项目。用户往往对系统只有一个模糊的想法,很难完全准确地表达对系统的全面要求。软件开发者对于所要解决的应用问题认识更是模糊不清随着开发工作向前推进,用户可能会产生新的要求,或因环境变化,要求系统也能随之变化;开发者又可能在设计与实现的过程中遇到些没有预料到的实际困难,需要以改变需求来解脱困境。因此规格说明难以完善、需求的变更、以及通信中的模糊和误解,都会成为软件开发顺利推进的障碍。为了解决这些问题,逐渐形成了软件系统的快速原型的概念。软件原型的分类在软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。探索型:目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。实验型:这种原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠。进化型:这种原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。原型使用策略废弃策略追加策略建立快速原型,进行系统的分析和构造的好处:增进软件者和用户对系统服务需求的理解,使比较含糊的具有不确定性的软件需求(主要是功能)明确化。软件原型化方法提供了一种有力的学习手段。使用原型化方法,可以容易地确定系统的性能,确认各项主要系统服务的可应用性,确认系统设计的可行性,确认系统作为产品的结果。软件原型的最终版本,有的可以原封不动地成为产品,有的略加修改就可以成为最终系统的一个组成部分,这样有利于建成最终系统。原型开发技术可执行规格说明基于脚本(scenario)的设计自动程序设计专用语言可复用(reusable)的软件简化假设作业P61;P121,2,3,4,7.喷泉模型迭代重复演进无间隙各阶段间无明显界限