作为一名不合格程序员的你和我,是不是总是听说软件开发方法/软件开发模型?并且总是搞不清,什么是什么东西?
上一文中,我们分享了软件开发方法:《系统架构师之——软件开发方法》,很多时候你会把软件开发方法和开发模型搞混淆并不是你的错,而是不通的人不通的习惯导致的差异理解,其实可以结合。源于“开发”与“设计”的理解。
软件开发方法更多的是讲究如何进行软件的设计的方法,例如采用结构化分析设计方法/面向对象设计方法/面向服务的设计方法;软件开发模型更多的是讲究整个项目生命周期的开发的全过程/活动/任务/结构架构的模型。
简单说,软件开发(设计)方法是软件开发模型里面的一个子集,软件开发模型贯穿了整个项目的需求-设计-编码-测试-运维阶段。所以,软件开发模型,更多时候称之为软件过程模型。
软件开发方法比如房屋的设计建造方式,软件开发模型比如房屋项目的项目过程管理模型。
软件开发过程模型主要有:
目的:每一种模型都是为了更好的解决具体的需求而保障项目如期交付可靠高质量产品/成果
一 软件生命周期
在进入了解学习具体的软件开发模型之前,我们有必要清楚一个软件的生命周期。因为软件开发模型就是根据自身业务需求,从而构建出不同的软件生命周期模型。
万物都有一个生命周期,从孕育-诞生-成长-成熟-衰弱-消亡等等多阶段多形态,形成自身的生命周期。
软件的生命周期阶段如下:
每一个阶段做什么工作,顾名思义非常直观。不管你是做Web 站,还是Android/IOS移动端,或者是新兴的小程序平台,还是古老的PC应用程序,还是硬件嵌入式,Linux/Windows等什么平台什么系统什么业务,基本都是安装此生命周期进行,虽许阶段名称有所差异,但是本质如此。万物都逃离不了周期的诞生与泯灭,感叹造物主的神奇。
二 瀑布模型 Waterfall Model
根据软件生命周期,所有阶段都是顺序连接进行,如瀑布般一泻千里。此般开发模型模式,就是瀑布模型。生命周期每一个阶段排布如下:
1-优点特点:
2-缺点缺陷:
三 V模型 (增强型瀑布模型)
V-model其实是针对瀑布模型的严重缺陷问题进行改进增强的模型,增加了每一个阶段的验证校验,形状如V字,故称之为V模型。
1-优点特点:
2-缺点缺陷:
四 增量模型 Increment Model
基于瀑布模型的缺点,集成瀑布模型的优点进行迭代进行,得到增量模型。也就是多个瀑布模型流水线(迭代)进行,将项目拆分成多个业务模块,基于基础版进行逐个增量开发。
模型结构如下:
1-优点特点:
2-缺点缺陷:
五 演化模型 Evolutionary Model
源化模型指的是软件生命周期根据时间的推移而演化,根据业务/商业/产品的需求变化而变化。本质上是一种迭代演化的过程模型,为了是可以让我们那些苦逼的程序员能够快速应对万恶的产品经理的“突然莫名其妙不可思议”的新需求已及变化,使得开发人员能逐步开发出完整的软件版本。基本符合这种思想的都是演化模型。
1-经典的演化模型种类:
2-原型模型 Prototype Model
模型结构图
a-优点特点:
b-缺点缺陷:
3-螺旋模型 Spiral Model
模型结构图
a-优点特点:
b-缺点缺陷:
六 喷泉模型 Water Fountain Model
以用户需求为动力,对象驱动,适合面向对象设计方法的项目。开发活动之间无间隙,无需要明显划分阶段,交叉迭代进行,分析设计编码无边界同步进行。即在同一阶段进行项目全生命周期的工作,同时交叉进行,如一个喷泉。
1-优点特点:
2-缺点缺陷:
七 基于构建的开发模型 Component-based Development Model
基于构建组件的开发模型,Component Based Software Development,一般简称CBSD模型或者CBD模型。国内或者中小企业用得比较少,或者说没什么机会用这种方式。顾名思义是基于现有系统的组件模型进行快速搭建系统,例如常见的IBM的BPM,Siebel等产品都有现有组件,可以快速搭建开发新模块系统。软件开发过程模型的分析和设计阶段要比传统模型花费更多的时间,开发时间反而更少投入。适用于稳定成熟的中大型企业。
模型结构图:类似乐高积木
模型主流分类:
不深入展开,需要可参考
:http://article.sapub.org/10.5923.j.se.20120204.07.html#Sec1
1-优点特点:
2-缺点缺陷:
八 形式方法模型 Formal Methods Model
建立在严格的数学基础分析上,主要任务活动是系统形式化的数学规格说明,采用数学语言语义进行描述功能约束与规则,数学分析推导分析需求。而数学规范描述可以采用VDM或者Z语言实现。
生命周期模型结构图如下:
形式化描述后进行转换到可执行程序过程
形式化描述例如长这样的:
1-优点特点:
2-缺点缺陷:
九 统一过程UP 模型
通过用例(UserCase)和风险驱动,以架构为中心,迭代增量,使用UML方法和工具进行。典型代表为RUP模型/AUP模型(敏捷UP)。
更多知识参考白皮书《企业统一过程:扩展Rational Unified Process》
https://www.amazon.com/Enterprise-Unified-Process-
过程与阶段:起始阶段-精化阶段-构建阶段-移交阶段
https://sce.uhcl.edu/helm/rationalunifiedprocess/m
1-优点特点:
2-缺点缺陷:
十 敏捷方法 Agile Development
为了更快更早持续地对有价值的软件进行交付(逼程序员痛苦加班/(ㄒoㄒ)/~~),灵活加班敲码,方便用户再开发周期增加改变需求(坑爹!)^n,于是乎有了很多方法来逼你加班赶项目,每一种方法都有一套原则。这些原则实现了敏捷方法所宣称的理念——敏(压)捷(榨)宣(加)言(班)。大名鼎鼎的敏捷宣言,自行百科Wiki,如下图:
所以,敏捷开发模型非常适合创业公司互联 公司,方便快捷。至于为什么,有机会我们详细写一篇文章分析《为什么敏捷开发模型更适合创业公司》,敬请期待。
生命周期模型结构图
经典的丧心病狂的压榨方式有:
1-优点特点:
2-缺点缺陷:
十一 总结
对于一个项目选择什么样的软件开发模型/软件过程模型,需要具体根据项目系统的业务场景考虑,成本管理/时间管理/人员资源等多方面考虑选择出最合适的过程模型。只有初期对这个婴儿的整个生命周期进行规划——选择合适软件开发模型,才能让其稳定健壮成长,控制好成本,控制好风险,如期交付高质量的产品/软件给客户。
这才是一个好程序员,一个好架构师,一个好的项目经历,一个好的开发经理。(⊙﹏⊙)对于头发的事情,喝点枸杞水就好。
期待我们更多技术分享交流,请继续关注我们头条 甫义工作室
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!