常见的软件过程模型,一篇文章帮你理解怎么开发软件~

      大家好,我是程序媛雪儿。

      在聊今天的话题之前,我想讲一个我开发中的现象,因为我是独立开发者,也是第一次一个人接大项目,所以我很自然的选择了写需求分析,画原型设计,库表设计,写代码,测试这个普遍流程走,走到库表设计我就发现问题了,系统太大了,一次性上线所有功能我给不出具体能完成的时间,这么大的任务我没完全把握能做出来,没办法,我和我老板谈能不能先上一个主要的模块,用户先用着,其他模块看软件使用情况再慢慢上线,这样搞开发时间短,也能先试试水占个市场。因为任务变小,处理难度变低,所以项目目前进展还是比较顺利的。

      我不了解软件开发过程模型,没有根据现实情况选用合适的方法,而是一上来就选择了最朴素的解决思路,花了很多冤枉时间,你瞅瞅,学点理论知识,是不是很重要呢?

    所以,今天咱们来聊聊常用的软件过程模型有哪些。

一、瀑布模型

使用最早,应用最广

瀑布模型特点

  • 具有顺序性和依赖性

前一阶段结束后一阶段开始,前一个阶段输出文档,后一个阶段才会输入文档

  • 推迟实现观点

在编码前设置了系统分析、系统设计阶段,推迟了程序的物理实现,保证前期工作扎实

  • 质量保证观点

每个阶段坚持两个重要做法

一是每个阶段都必须完成完整、准确的文档。软件开发时人员间通信、运行时期维护的重要依据

二是每阶段结束前对文档评审

实际瀑布模型

传统瀑布模型过于理想化,但人在工作过程中不可能不犯错误,所以实际瀑布模型带反馈环,也就是后一阶段发现问题,可以反馈给前一阶段,修改前一阶段。

瀑布模型优点

提高软件质量,降低维护成本,缓解软件危机

瀑布模型缺点

模型缺乏灵活性,无法解决需求不明确的问题,用户不经过实践提出完整准确需求不切实际

二、快速原型模型

是什么

快速建立反映用户主要需求的原型系统,反复由用户评价修正需求,开发出最终产品

优点:

  • 确定需求上优于瀑布模型(通过原型和用户交互,用户就知道功能是不是他们想要的了)

  • 对开发者和使用者了解系统有积极作用(提供学习手段)

  • 有的软件原型可以成为最终产品的一部分

缺点:

  • 快速建立的系统和连续的修改可能导致原型系统的内部结构不好(产品质量低下)

三、增量模型

又称渐增模型,开发软件时将软件产品作一系列增量构件设计、编码、集成和测试

和快速原型模型的区别:

快速:一次性把满足所有需求的产品提交给用户

增量:分批向用户提交产品

一个模块一个模块的提交,每个模块提交前都需要经过需求分析、规格说明、设计、维护这四个阶段。

优点:

  • 较短时间向用户提交工作产品

  • 相对来说风险较小

  • 用户有充裕时间学习适应产品

  • 软件结构必须开放,方便向现有产品加入新构件

缺点:

  • 软件结构很难做到开放

风险更大但实现速度更快的模型:确定用户需求后,各构件集并行构建

四、螺旋模型

加入风险分析,常用来指导大型软件项目

软件风险:超期、超预算、行业竞争

笛卡尔坐标四象限表达四个方面的活动:

  • 制定计划:确定目标、选定方案、设定约束条件

  • 风险分析:评估方案,识别和消除风险

  • 实施工程:软件开发

  • 客户评估:评价开发工作,计划下一阶段工作

自内向外每旋转一圈都能开发出更完善新版本

优点:

大型软件开发项目有较好的风险控制

缺点:

需要风险评估的经验(提供的风险评估要是没意义或者未来压根不可能出现,那只是徒增了软件开发的麻烦)

契约开发通常需要事先指定过程模型和发布产品

普及不如前述模型

五、喷泉模型

顾名思义,一次性把每个阶段需要的都搞出来,每个阶段同步进行。面向对象生命周期模型,体现迭代和无缝特性

迭代:求精,系统某部分常被重复工作多次,相关功能在每次迭代中逐渐加入演进系统

无缝:分析、设计、编码各阶段间不存在明显边界

优点:

无缝,可同步开发,提高开发效率,节省开发时间,适应面向对象软件

缺点:

可能随时加各种信息、需求与资料,需严格管理文档,审核的难度加大

六、Rational统一过程

是Rational软件公司推出的一种软件过程,该过程强调以迭代和渐增方式开发软件

Rational统一过程是一个二维生命周期模型

9个核心工作流,包括6个核心过程工作流和三个支持工作流

核心工作流:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境

四个连续阶段,每个阶段都有明确目标,通过一次或多次迭代完成

四个连续阶段:初始、精华、构建、移交

优点:

  • 不断地版本发布成为一种团队日常工作的真正驱动力

  • 将发现问题、制定方案和解决过程集成到下一次迭代

  • 迭代开发,降低风险

  • 更好地安排产品开发的辅助过程

七、微软公司软件开发过程

规划阶段:开展市场调查研究,结合公司战略形成产品的远景目标

设计阶段:根据产品远景目标,完成软件功能规格说明和总体设计,确定产品开发的主要进度

开发阶段:完成产品中所有构件的开发工作

稳定阶段:实行全面的内部和外部测试,最终形成可发布的RTM版本

发布阶段:确定产品质量符合发布标准后,发布产品及相关消息

优点

解决问题的及时性、不确定和变更因素可控性、缩短产品上市周期

    说了这么多,咱来总结一下。

总结

瀑布模型:自上而下,每个阶段顺序执行

快速原型模型:通过原型一次性提交需求和产品

增量模型:分批次一个模块一个模块提交需求和产品

螺旋模型:加入风险分析

喷泉模型:每个阶段同步执行,分析、设计、编码各阶段间不存在明显边界

Rational统一过程模型:通过工作流和阶段两个维度来描述开发,强调用迭代和渐增的方式开发软件

微软公司软件开发过程:分版本发布项目,每个版本快速完成五个阶段。

    回到咱们最初的话题,我本质上刚开始使用的是瀑布模型,但是因为项目模块太多,周期太长,而且用户的需求也不一定明确,这种情况是最不适合个体开发者的,后来我选择分模块上线项目,实质上是用的增量模型,分批次提交给用户产品,相对来说风险小,用户也有充足的时间学习适应产品,我们也能根据用户的需求慢慢做调整,这是更合理的选择。

        欢迎大家关注我的微信公众号,程序媛雪儿,雪儿会在上面发布编程的知识碎片,也有雪儿博客地址,上面有详细系统的笔记,雪儿是全栈,但是公众号目前主要还是发后端的技术,以后可能也会涉及到一些前端的知识,我们下期见,拜拜~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值