软件开发方法和开发模型有什么关系和区别?
能力、见识达到一个高度时,词都是按自己想法造的,可以随心而动。这里“方法”与“模型”并无重大差别。
好吧,我自问自答,抛砖引玉。钓鱼贴。
-------------------------------------------------------------------
我搞不清软件开发方法和开发模型这两个概念。
书本上这两部分都放在《软件工程》这一章节里,但是分开介绍,并没有阐明二者之间的关系,比较割裂。我尝试在互联网上找找资料,但都非常少。这里先把一些学习心得记录下来,等待以后完善。
一、铺垫知识
系统生命周期分为四个阶段。
系统规划
系统开发
系统运维
系统更新或消亡
其中重头戏是系统开发阶段。然后这一阶段又可以进一步细化为:
总体规划
系统分析
系统设计
系统实施
系统验收
开发方法 和 开发模型 都属于软件开发阶段的套路。
二、开发方法
开发方法有很多种分类,不同标准有不同的分类:从开发风范分,可分为自顶向下和自底向上的开发方法;从开发性质看,可分为形式化方法和非形式化方法;从适用范围看,可分为整体性方法和局部性方法。
但基本上,通常是分为结构化方法和面向对象方法。
结构化方法对应系统开发的不同阶段,有结构化分析(SA),结构化设计,结构化程序设计,等等。同样,面向对象方法也有面向对象分析(OOA),面向对象设计之类。其中,SA对应的是ER图,数据流图,数据字典等;而OOA则主要输出类图、用例图、活动图。
三、开发模型
开发模型,基本上所有人都至少知道一两个,比如瀑布模型,螺旋模型。除此之外,还有构件组装模型、V模型、统一过程、敏捷开发,等等。
开发模型,简单而言,就是项目的大致开发方式和步骤。它是一种规划和套路,包括需求、设计、编码、测试等几个阶段都有处置方法。
四、开发方法与开发模型
开发模型与开发方法不是同一类事物。开发模型是一种规划和相对稳定的套路,对系统开发阶段的不同环节有不同的处理流程。
而开发方法是一种方法学,主要是针对系统开发阶段中的设计和编码进行实现。
但实际应用中,二者往往重叠得很厉害,边界不是非常清晰。比如大名鼎鼎的原型法,大家耳熟能详,按书本上的意思,应当归类为开发方法,但我一直以为它是开发模型。