软件开发模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存周期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。
软件开发的承建单位必须首先制定适宜的开发策略,并建立相应的软件工程模型,以便对要交付的软件的开发过程实施有效的控制和管理。该策略的选择和模型的建立应当基于项目和应用的特点、覆盖软件开发的全过程并与项目合同中所规定的进度相协调。
监理单位应该根据承建单位选定的模型制定自己的监理策略。
承建单位可根据软件开发项目的具体情况选择采用相应的开发策略、方法和模型,并要在有关文档中(例如在“项目开发计划”中)对所采用的软件工程方法与模型加以说明。下面对常见的软件开发模型进行简单介绍。
瀑布模型规定了各项软件工程活动,包括:制定开发计划,进行需求分析和说明,软件设计,程序编码。测试及运行维护,并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落,如图19.2所示。
然而软件开发的实践表明,上述各项活动之间并非完全是自上而下,呈线性图式。实际情况是,,每项开发活动均处于一个质量环(输入一处理一输出一评审)中。只有当其工作得到确认,才能继续进行下一项活动,在图19.2中用向下的箭头表示;否则返工,在图中由向上的箭头表示。
瀑布模型的开发策略是要求软件开发组织在进行软件开发时,要严格划分开发过程的每一个阶段,并根据工程化的有关规定,在“软件开发计划”及“软件质量保证计划”中反映每个阶段的活动。对每阶段的工作要进行认真的评审。只有在某个阶段的目标确实达到后,才能进入下一阶段的工作。
瀑布模型为软件开发和软件维护提供了一种理想情况下的管理模式,从理论上讲,对需求能严格地进行预先定义的软件开发项目是合适和有效的。然而在软件工程实践中,这一开发策略一旦遇到与假设不相符合的情况,就容易导致失败。尽管如此,该模型仍不失为一个很好的基准模型。事实上,在今天的软件工程实践中常常都是以瀑布模型为基础,综合采用其他各种模型的优点,以改善软件开发过程对现实情况的适应性。
原型模型也称演化模型,此方法主要针对所要开发的系统的需求不是很清楚,需要一个可实际运行的工作演示系统,即原型,作为软件开发人员和用户学习、研究、试验和确定软件需求的工作平台。原型模型又可细分为增量模型和渐进模型。
(1)快速分析。快速确定软件系统的基本要求。
(2)构造原型。尽快实现一个可运行的系统。
(3)运行和评价原型。验证原型的正确程度,根据用户的新设想,提出全面的修改
意见。
(4)修正和改进。首先修改并确定需求规格说明,然后再重新构造或修改原型。
(5)判定原型是否完成。如果用户认可,迭代过程可以结束:否则,继续迭代。
(6)判断原型细部是否说明。
(7)原型细部的说明。
(8)判定原型效果。·
(9)整理原型和提供文档。
·增量模型
对于需求不能很快全部明确的系统,软件开发项目难于做到一次开发成功,可使用此模型。此时,应尽可能明确己知的软件需求,完成相应的需求分析,并按瀑布模型的方法进行第一次开发工作。在系统集成时,通过实验找出需求中的欠缺和不足之处,明确那些未知的软件需求,再迭代进行增加部分的需求分析和开发。对有些系统这种反复可能要进行几次,但尽可能不要超过两次,否则难以控制软件的结构规模、开发质量和进度。
·渐进模型
此模型主要是针对部分需求尽管明确但一时难以准确进行定义的系统设计。如用户的操作界面等。使用此模型时,可以先做初步的需求分析,之后立即进行设计和编码,随后与系统进行第一次集成(不做或少做测试)。根据集成后反映的问题,进一步做更全面的需求分析、设计、编码、测试和集成。
对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析。螺旋模型沿着螺线旋转,如图19.3所示,在笛卡尔坐标的四个象限上分别表达了四个方面的活动,即:
(1)制定计划—确定软件目标,选定实施方案,弄清项目开发的限制条件;
(2)风险分析—分析所选方案,考虑如何识别和消除风险;
(3)实施工程—实施软件开发;
(4)客户评估—评价开发工作,提出修正建议。
沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。
螺旋模型是软件开发的高级策略,它不仅适合结构化方法而且更适合面向对象方法。它的实施将对软件开发组织的工作模式、人员素质、管理和技术水平产生深远的影响,是最有前途的过程模型之一。
喷泉模型对软件复用和生存周期中多项开发活动的集成提供了支持,主要支持面向对象的开发方法。“喷泉”一词本身体现了迭代和无间隙特性。系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演进的系统。所谓无间隙是指在开发活动,即分析、设计和编码之间不存在明显的边界,如图19.4所示。
各省软考办 | ||||||||||