1.5.10 软件过程模型的选择

更新于 2026年10月10日 版权声明
1.5.10 软件过程模型的选择

1.软件过程模型选择需要考虑的因素

各种软件过程模型反映了软件生存周期表现形式的多样性。在生存周期的不同阶段也可采用不同的软件过程模型。在具体的软件开发过程中,可以选择某种软件过程模型,按照某种开发方法,使用相应的工具进行软件开发。

在选择软件过程模型时需要考虑以下几点。

(1)符合软件自身的特性,如规模、成本和复杂性等。

(2)满足软件开发进度的要求。

(3)对软件开发的风险进行预防和控制。

(4)具有计算机辅助工具的支持。

(5)与用户和软件开发人员的知识和技能相匹配。

(6)有利于软件开发的管理和控制。

一般来说,结构化方法和面向数据结构方法可采用瀑布模型或增量模型进行软件开发;而面向对象方法可采用快速原型模型、喷泉模型或RUP模型进行软件开发。

在实际的软件开发过程中,选择软件过程模型并非是一成不变的,有时还需要针对具体的目标要求进行裁剪、修改等,从而构成完全适合开发目标要求的软件过程模型。

现实中的软件系统各种各样,软件开发方式也千差万别。对于同一个问题,不同的开发组织可能选择不同的开发模型(过程模型)去解决,开发出的软件系统也不可能完全一样,但是其基本目标都是一致的,即应该满足用户的基本功能需求,否则,再好的软件系统也是没有意义的。

2.软件过程模型实例

例1.1 针对下面这些应用开发软件,应采用哪种软件过程模型?要求说明原因。

(1)已经充分了解了的数据处理应用程序。

解:应选用瀑布模型。

原因:在软件开发的过程中,需求不发生或很少发生变化,并且开发人员可以一次性获取全部需求;软件项目的风险较低;开发者对软件应用领域很熟悉。

(2)通过卫星通信连接计算机的新软件产品,假设之前没有开发卫星通信软件的经验。

解:应选用螺旋模型。

原因:没有相应的开发经验,风险较大,螺旋模型明确包括了开发的每一阶段中的风险处理,在每一次迭代中,风险分析通过原型构建进行,允许对处理风险可用的不同选项进行权衡。

(3)作为电话交换系统控制器的软件产品。

解:应选用快速原型模型。

原因:已有产品或产品的原型,为简单而熟悉的行业和领域。

先建立一个模拟的电话交换系统控制器原型系统,让用户提出修改意见,快速地修改原型系统,直到用户认为模拟的电话交换系统可以达成目的,再无须返工以线性顺序开发,便可实现需求。

(4)新的图书馆自动化软件,连接城市中不同的图书馆。

解:应选用基于构件的开发模型。

原因:有丰富的现有构件和系统框架,充分利用软件复用的思想,降低开发成本和风险,加快产品开发。

图书馆自动化软件所需要的模块较多,如数据库索引、用户的识别及连接其他图书馆等,可采用基于构件的开发模型;从构件库中筛选相关的构件,然后开发人员根据需求设计或使用现有的成熟开发框架复用这些构件,最后将所有构件集合在一起,进行系统测试。

(5)超大型的软件,可以使用一套旋转的卫星,用来在订阅者中提供、监视和控制移动电话通信。(https://www.daowen.com)

解:应选用统一软件开发过程模型。

原因:作为超大型软件,功能覆盖面广,开发风险大,开发时间长。

采用统一软件开发过程模型,可以从初始开始不断细化迭代,可以多次地执行各个工作流程,有利于更好地理解需求,设计出合理的系统架构,降低风险。

(6)一个新的文本编辑器。

解:应选用增量模型。

原因:文本编辑器的特点是分为基本功能和拓展功能,基本功能实现简单,但是毫无特色,新的文本编辑器的主要优点集中在拓展功能上,为此可采用增量模型。

开发人员首先实现提供基本核心功能的增量构件,创建一个具备基本功能的子系统,然后不断地增量拓展功能,以此达到需求目的。

(7)一种新语言的编译器。

解:应选用统软件开发过程模型。

原因:采用统一软件开发过程模型,可以多次执行各个工作流程,有利于更好地理解需求,设计出合理的系统架构,并最终交付一系列渐趋完善的成果。

(8)面向对象的软件开发。

解:由于面向对象的过程模型有快速原型模型、喷泉模型和统一软件开发过程模型等,因此,需要根据具体的开发特性来决定模型的选择。

(9)一个大型软件产品的图形用户界面。

解:应选用敏捷模型。

原因:敏捷模型一般适用于小型项目和小型项目组,不大适用于大型项目和大型项目组。这里是对大型软件图形用户界面的开发,而不是对整个大型软件产品的开发,所以它应该算是小型项目。敏捷模型适用于软件需求常发生变化的软件开发,大型软件的图形用户界面开发也需要和用户深入交流协作,这些都是敏捷模型所擅长的。

例1.2 假设计划研发一种产品技术含量很高,与客户有关的风险也很多,你会采用哪种软件过程模型?请说明理由。

解:采用RUP模型。RUP模型在每个步骤后都会形成一个可以发布的产品,这个产品是最终产品的一个子集。这样能够在生存周期中尽早地避免风险,不会像其他过程模型,有可能直到最后才发现,而面临巨大风险。再者这个模型能产生多个软件样品,每个样品实现某个个别功能,一一解决软件开发中的难点,最终产生拥有高技术含量的成品。

由于考虑问题的角度不同,答案也许不是唯一的。此题还可以考虑采用敏捷模型。

(1)与客户有关的风险很多,其要求人们能够及时与客户进行沟通,充分了解客户的风险,敏捷模型有着经常交付可工作软件的原则,这点可以充分满足客户规避风险的需要;针对这点,瀑布模型和基于构件的开发模型都不符合。

(2)技术含量很高,这一特点让人们考虑到了时间成本和人力成本,从这两点来说,不能采用增量模型、喷泉模型和统一软件开发过程模型,同时这对技术人员提出了很高的要求,快速原型模型显然不适用,最终剩下了螺旋模型和敏捷模型。

(3)两者非常相似,但是敏捷模型更加注重软件开发工程中各种变化的必然性,通过与客户的沟通和团队的合作来更好地适应市场需求,螺旋模型更强调软件的整体性和风险的规避,但是这种模型的控制和管理较为复杂,可操作性不强,对项目管理人员的要求较高。

因此,选择敏捷模型作为软件过程模型。

例1.3 假设要为一家生产和销售长筒靴的公司开发一个软件,使用此软件来监控该公司的存货,并跟踪从购买橡胶开始到生产长筒靴、发货给各个连锁店,直至卖给顾客的全过程。以保证生产和销售过程的各个环节供需平衡,既不会有停工待料现象,也不会有供不应求现象。为这个项目选择的软件过程模型时使用什么准则?

解:采用螺旋模型。

原因:这个项目总体上来看复杂程度较高,各个部分需求比较难以确定且数量较大。螺旋模型适用于风险较大的大型软件项目的开发,将风险分析扩展到各个阶段中,大幅度降低了软件开发的风险,并且可以逐步取得明确的需求,逐步完善。所以选择采用螺旋模型。

例1.4 假设例1.3中为靴类连锁店开发的存货监控软件很受用户欢迎,现在软件开发公司决定把它重新写成个通用软件包,以卖给各种生产并通过自己的连锁店销售产品的公司。因此,这个新的软件产品必须是可移植的,并且应该能够很容易地适应新的运行环境(硬件或操作系统),以满足不同用户的需求。为本题中的软件选择过程模型时,使用的准则与例1.3中使用的准则有哪些不同?

解:采用喷泉模型。

原因:喷泉模型是典型的面向对象过程模型,具有较好的可移植性,容易适应各种运行环境,满足不同用户的需求。喷泉模型很好地缩短了软件维护的时间,适合本模型的分析设计多次重复等特点。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)