软件开发模式

软件的开发无非是这样几个环节 需求分析、设计、编码、集成、测试、维护 所有的开发模式都是在此基础上的变化

1.传统的瀑布式开发

由W.W.Royce在1970年最初提出的软件开发模型

典型特征是每个步骤都按照100%的进度来往下进行,不适应过程中的变化。要求每个环节做到完美,因此这种开发模式是效率最低,后期变化情况下基本上不可行。

2.迭代式开发

   是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。

实际上是一种主体开发,然后在此基础上完成每个迭代,这样做的要求是框架必须设计的足够适应变化。
   每次只设计和实现这个产品的一部分, 
   逐步逐步完成的方法叫迭代开发, 
   每次设计和实现一个阶段叫做一个迭代.

在迭代式开发方法中,整个开发工作被组织为一系列的短小的、
   固定长度(如3周)的小项目,被称为一系列的迭代。
   每一次迭代都包括了需求分析、设计、实现与测试。
   采用这种方法,开发工作可以在需求被完整地确定之前启动,
  并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。
   再通过客户的反馈来细化需求,并开始新一轮的迭代。

迭代式开发的优点:
  1、降低风险
  2、得到早期用户反馈
  3、持续的测试和集成
  4、使用变更
  5、提高复用性

目前这种开发模式应该是许多大公司最普遍采用的模式

3.螺旋开发

1988年,巴利·玻姆(Barry Boehm)正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
“螺旋模型”刚开始规模很小,当项目被定义得更好、更稳定时,逐渐展开。

  “螺旋模型”的核心就在于您不需要在刚开始的时候就把所有事情都定义的清清楚楚。您轻松上阵,定义最重要的功能,实现它,然后听取客户的意见,之后再进入到下一个阶段。如此不断轮回重复,直到得到您满意的最终产品。 
       (1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;

  (2)风险分析:分析评估所选方案,考虑如何识别和消除风险;

  (3)实施工程:实施软件开发和验证;

  (4)客户评估:评价开发工作,提出修正建议,制定下一步计划。 
螺旋模型很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。

4.敏捷软件开发又称敏捷开发
是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不
尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织
型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。

  • 人和交互 重于过程和工具。
  • 可以工作的软件 重于求全而完备的文档。
  • 客户协作重于合同谈判。
  • 随时应对变化重于循规蹈矩。

其中位于右边的内容虽然也有其价值,但是左边的内容最为重要。
人员彼此信任 人少但是精干 可以面对面的沟通

项目的敏捷开发:
敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果; 
关注业务优先级; 检查与调整。

最重要的因素恐怕是项目的规模。规模增长,面对面的沟通就愈加困难,
因此敏捷方法更适用于较小的队伍,40、30、20、10人或者更少。
大规模的敏捷软件开发尚处于积极研究的领域。

时间: 2025-01-19 22:47:05

软件开发模式的相关文章

我所理解的软件开发模式

在写这篇博客之前,提到软件开发我所能讲出来的只有个人开发团队开发之类的,于是我去百度,得知软件开发模式有:边做边改模型,瀑布模型,迭代模型,快速原型模型,增量模型,螺旋模型,敏捷软件开发,演化模型,喷泉模型,智能模型,混合模型等. 好吧,你赢了. 在读了邹欣老师在知乎发表的Build To Win的文章之后,我对软件开发的模式有了一定新的认知: 软件开发的目地决定了软件开发的模式. 每个人开发软件都是有目地的,我作为学生,写一些小的程序是为了练习,是一个学习的过程,就是邹欣老师在文章中提到的Bu

软件开发模式,DevOps

参考文献:http://www.cnblogs.com/jetzhang/p/6068773.html 历史回顾 为了能够更好的理解什么是DevOps,我们很有必要对当时还只有程序员(此前还没有派生出开发者,前台工程师,后台工程师之类)这个称号存在的历史进行一下回顾. 如编程之道中所言: 老一辈的程序员是神秘且深奥的.我们没法揣摩他们的想法,我们所能做的只是描述一下他们的表象. 清醒的像一只游过水面的狐狸 警惕的像一位战场上的将军 友善的像一位招待客人的女主人 单纯的像一块未经雕琢的木头 深邃的

基于成熟网管平台的网管软件开发模式

随着计算机网络的迅速发展,特别是国际互联网的不断地推广,计算机网络的使用越来越广泛,人们的生产生活学习对计算机网络的依赖也越来越大.同时,随着计算机网络的网络规模的不断扩大和连入网络的设备越来越多样,网络的复杂性也越来越高,网络的异构性也越拉越高.于是,网络管理就成为了一个重要的研究课题. 网络管理是对硬件.软件.人力的综合使用和协调,对网络资源进行监视.测试.配置.分析.评价和控制,从而以合理的价格满足网络的需求,如实时运行性能.服务质量等.从定义中可以看出,网络管理包含了两个重要的任务,一是

TDD、BDD、ATDD、DDD 软件开发模式

TDD.BDD.ATDD.DDD 软件开发模式 四个开发模式意思: TDD:测试驱动开发(Test-Driven Development) BDD:行为驱动开发(Behavior Driven Development) ATDD:验收测试驱动开发(Acceptance Test Driven Development) DDD:领域驱动开发(Domain Drive Design) 1.TDD:测试驱动开发(Test-Driven Development) 测试驱动开发是敏捷开发中的一项核心实践和

软件开发模式:瀑布与敏捷

瀑布和敏捷不是什么新概念,这里只是个人在团队合作中不得不去思考而做的归纳和总结,同时记录自己曾经踩过的坑,新瓶装旧酒,希望对你有所启发. 瀑布模式 瀑布模型是比较传统一种开发模式,特别是在2B的传统企业,包括ERP,MES,WMS,CRM,OA,IBMS等系统当中可以经常见到他们的影子.现在这种模式仍然流行在一些大的项目或者是外包的一些项目当中. 如上图所示,瀑布模型优缺点都很突出. 优点明显: 阶段清晰.从计划到开发最后到上线运行,三个阶段非常清晰. 时间顺序.每个阶段顺序必须是从上到下,严格

华为软件开发云测评报告一:项目管理

体验环境 体验方式:PC端 系统:Windows 64位 浏览器类型:Chrome浏览器 浏览器版本:49.0.2623.110 m 体验时间:2017.05.11 测试目的 了解华为软件开发云的项目管理服务功能,分析其优缺点: 瀑布化开发到敏捷开发的转型分析,以及未来软件开发模式的发展方向: 产品简介 产品名称:华为软件开发云 定位:软件开发云(DevCloud)是集华为研发实践.前沿研发理念.先进研发工具为一体的研发云平台,面向开发者提供研发工具服务,让软件开发简单高效. 产品slogan:

软件开发的过程

一: 软件开发大爆炸模式的最大优点是 简单 分析:大爆炸模式的软件开发几乎没有计划,进度和正规的安排所有的精力都发在开发软件和编写代码上,几乎没有什么测试.而且在软件快速完成后的测试就是把软件的确定告诉顾客,并不可能从头在开始修改软件.从项目管理的角度来看,装备交付的软件会因为软件测试员的工作妨碍了交付. 二:  采用便携边修改的模式是如何得知软件发布的时间 采用这种方式的小组通常最初只有粗略的想法,接着进行一些简单的设计,然互开始漫长的来回编写,测试和修改缺陷的过程.等到觉得足够了,就发布产品

何谓敏捷软件开发?与传统软件工程的对比

大家好,下面的内容将阐述我对于敏捷软件开发的产生背景.理解以及在实际运用中对于敏捷开发的误解.如果有理解阐述不正确的地方,欢迎指正! 敏捷软件开发 Agile software Development 敏捷开发是一种软件开发方法,基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作.[1] 想必大家会看到过下面这张图,对于整个庞大的复杂的软件项目,在背景知识需求了解的基础上,首先要尽可能的将项目进行模块的划分,并且尽量减少耦合,对于每一个小的模块 进入该部分的冲刺阶段,通过不断的交付可以

敏捷软件开发VS.传统软件工程

敏捷软件开发 VS. 传统软件工程 本文主要介绍敏捷软件开发与传统软件工程分别是什么,并讨论二者各自的优缺点. 一.传统软件工程 1.传统软件工程的由来 进入上个世纪60年代,人们开始逐渐认识到了确实存在着"软件危机" 这样一个事实.例如: ·软件生产不能满足日益增长的需要 ·软件开发成本和开发进度估计往往不准确 ·软件开发人员和用户之间信息交流不充分,用户对完成的软件满意度很低 ·软件价格昂贵,软件成本在整个计算机系统中所占的比例急剧上升,软件已成为许多计算机系统中花钱最多的项. ·