软件开发方法和开发模型的比较

我搞不清软件开发方法和开发模型这两个概念。

书本上这两部分都放在《软件工程》这一章节里,但是是分开介绍的,并没有阐明二者之间的关系,比较割裂。我尝试在互联网上找找资料,但都非常少。这里先把一些学习心得记录下来,等待以后完善。

一、铺垫知识
系统生命周期分为四个阶段。

其中重头戏是系统开发阶段。这一阶段可以进一步细化为:

开发方法 和 开发模型 都属于软件开发阶段的套路。

二、开发方法

开发方法有很多种分类,不同标准有不同的分类:从开发风范分,可分为自顶向下和自底向上的开发方法;从开发性质看,可分为形式化方法和非形式化方法;从适用范围看,可分为整体性方法和局部性方法。

但基本上,通常是分为结构化方法面向对象方法

结构化方法对应系统开发的不同阶段,有结构化分析(SA),结构化设计,结构化程序设计,等等。同样,面向对象方法也有面向对象分析(OOA),面向对象设计之类。其中,SA对应的是ER图,数据流图,数据字典等;而OOA则主要输出类图、用例图、活动图。

SD的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段,其中概要设计确定软件系统的结构,对系统进行模块划分,确定每个模块的功能、接口和模块之间的调用关系;详细设计负责为每个模块设计实现的细节。所以,我们张嘴就来的“概要设计”、“详细设计”,其实算是属于结构化方法的概念。

而面向对象设计方法里,并没有强调结构化方法那样的阶段性,因此一般不引入概要、详细设计的概念。如果非要有这种分工的话,可以将包的划分、类及对象间的关系、类的对外属性、方法及协作设计看做概要设计;类属性、方法的内部实现看做详细设计。

三、开发模型

开发模型,基本上所有人都至少知道一两个,比如瀑布模型,螺旋模型。除此之外,还有构件组装模型、V模型、喷泉模型、统一过程、快速应用开发、敏捷开发,等等。

开发模型,简单而言,就是项目的大致开发方式和步骤。它是一种规划和步骤指南,包括需求、设计、编码、测试等几个阶段都有处置方法。

四、开发方法与开发模型

软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发过程包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要任务和活动,用来作为软件项目工作的基础。对于不同的软件项目,针对应用需求、项目复杂程度、规模等不同要求,可以采用不同的开发模型,并采用相应的人员组织策略、管理方法、工具和环境。

开发模型与开发方法不是同一类事物。开发方法是一种方法学,主要是针对系统开发阶段中的设计和编码进行实现。而开发模型是一种规划和相对稳定的框架,对系统开发阶段的不同环节有不同的处理流程。除了开发本身,还包含人员组织策略、管理方法、工具和环境的协调与处理等。可以说,开发模型的范围要大于开发方法。

但实际应用中,二者往往重叠得很厉害,边界不是非常清晰。比如大名鼎鼎的原型法,大家耳熟能详,按书本上的意思,应当归类为开发方法,但我一直以为它是开发模型。


我想,开发模型是从系统分析、设计、编码到测试,甚至还包括维护阶段,基本上是关注了软件开发阶段的整个过程。而软件开发方法,只局限在某一个阶段。

来源:左直拳

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月20日
下一篇 2022年4月20日

相关推荐