`
齐晓威_518
  • 浏览: 606880 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

软件开发常见的几种模式

 
阅读更多

虽然自己一身从事着软件开发的工作,但是对于平时采用何种开式模式 却很少思考过,今天特地花了点时间看了一些文档,感觉自己以前的开发模式采用瀑布模式 的比较多,如果是相对大一点的项目,采用这种开发模式风险大一点,如果采用迭代模式 ,则风险相对小一点。如果某家公司是做软件外包 的业务,则适合于采用迭代模式进行开发(如果是小项目而且工期又短就另说了,一般软件外包的项目不会太小 ),如果是小项目且需求比较清楚,如开发一个新闻发布系统,不到一个月就可以完工,则采用瀑布模式会比较合理。

1.瀑布模式
我们开发一个产品,如果不太复杂,会采用瀑布模型,简单的说就是先需求定义,然后构建框架,然后写代码,然后测试,最后发布一个产品。

这样,几个月过去了,直到最后一天发布时,大家才能见到一个产品。

  这样的方式有明显的缺点,假如我们对用户的需求判断的不是很准确时——这是很常见的问题,一点也不少见——你工作了几个月甚至是几年,当你把产品拿给客户看时,客户往往会大吃一惊,这就是我要的东西吗?
Via :

2.迭代模式
迭 代的方式就有所不同,假如这个产品要求6个月交货,我在第一个月就会拿出一个产品来,当然,这个产品会很不完善,会有很多功能还没有添加进去,bug很 多,还不稳定,但客户看了以后,会提出更详细的修改意见,这样,你就知道自己距离客户的需求有多远,我回家以后,再花一个月,在上个月所作的需求分析、框 架设计、代码、测试等等的基础上,进一步改进,又拿出一个更完善的产品来,给客户看,让他们提意见。
  就这样,我的产品在功能上、质量上都能够逐渐逼近客户的要求,不会出现我花了大量心血后,直到最后发布之时才发现根本不是客户要的东西
  这样的方法很不错,但他也有自己的缺陷,那就是周期长、成本很高。在应付大项目、高风险项目——就比如是航天飞机的控制系统时,迭代的成本比项目失败的风险成本低得多,用这种方式明显有优势
  如果你是给自己的单位开发一个小MIS,自己也比较清楚需求,工期上也不过花上个把月的时间,用迭代就有点杀鸡用了牛刀,那还是瀑布模型更管用,即使是做得不对,顶多再花一个月重来,没什么了不起
Via

3.敏捷开发
人与人之间的交互是复杂的,并且其效果从来都是难以预期的,但却是工作中最重要的方面。
  -- Tom DeMacro和Timothy Lister
  敏捷软件开发宣言:
  n 个体和交互 胜过 过程和工具
  n 可以工作的软件 胜过 面面俱到的文档
  n 客户合作 胜过 合同谈判
  n 响应变化 胜过 遵循计划
  虽然右项也有价值,但是我们认为左项具有更大的价值。
  敏捷宣言遵循的原则:
  n 我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意
  n 即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势
  n 经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好
  n 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
  n 围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。
  n 在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。
  n 工作的软件是首要的进度度量标准。
  n 敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度
  n 不断地关注优秀的技能和好的设计会增强敏捷能力。
  n 简单是最根本的。
  n 最好的构架、需求和设计出于自组织团队。
  n 每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。
  当软件开发需求的变化而变化时,软件设计会出现坏味道,当软件中出现下面任何一种气味时,表明软件正在腐化。
  n 僵化性: 很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动。
  n 脆弱性: 对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。
  n 牢固性: 很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。
  n 粘滞性: 做正确的事情比做错误的事情要困难。
  n 不必要的复杂性: 设计中包含有不具任何直接好处的基础结构。
  n 不必要的重复性: 设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。
  n 晦涩性: 很难阅读、理解。没有很好地表现出意图。
  敏捷团队依靠变化来获取活力。团队几乎不进行预先设计,因此,不需要一个成熟的初始设计。他们更愿意保持设计尽可能的干净、简单,并使用许多单元测试和验收测试作为支援 。这保持了设计的灵活性、易于理解性。团队利用这种灵活性,持续地改进设计,以便于每次迭代结束生成的系统都具有最适合于那次迭代中需求的设计。

 

 

参考:
RUP:
http://baike.baidu.com/view/491030.html
产品的加减法:敏捷开发与快速迭代: http://liujie.blog.sohu.com/54611489.html
UML: http://baike.baidu.com/view/23396.htm
ERWin: http://www.cnblogs.com/luqingfei/articles/448819.html

分享到:
评论

相关推荐

    Xilinx软件使用常见问题

    介绍了几种Xilinx软件开发使用中常见问题和解决方案,很实用

    浅谈计算机软件开发设计的难点及解决措施.docx

    通过数据将软件设计数据以图形的形式展现,利用软件开发工具,将软件设计层次化结构化,整个过程以图形的形式来设计,数据结构形式能够直接利用图形的形式解决开发过程中面临的难点和问题,利用的主要三种结构有:...

    常用开发模式讲解.zip

    设计模式是在软件开发中解决常见问题的最佳实践。它们是在大量项目中积累的经验的总结,旨在提高代码的可重用性、可维护性和可扩展性。下面介绍几种常用的设计模式,包括单例模式、工厂模式、观察者模式、建造者模式...

    敏捷软件测试常见的七个误区

    敏捷软件开发是从1990年代开始逐渐引起广泛关注的一种新型软件开发方法,是能够应对快速变化的需求的一种软件开发能力,它作为一种新型的开发模式,被越来越多地应用到软件项目  敏捷软件开发是从1990年代开始逐渐...

    设计模式python模版

    设计模式可以帮助程序员以优雅、高效的方式解决软件开发中的问题,提高代码的可读性、可维护性和可扩展性。 设计模式主要分为三大类: 创建型模式(Creational Patterns):这类模式关注对象的创建过程,主要有...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    《C#开发实例大全(基础卷)》既适合C#程序员参考和查阅,也适合C#初学者,如高校学生、软件开发培训学员及相关求职人员学习、练习、速查使用。 第1篇 C#编程基础篇 第1章 C#开发环境的使用 2 1.1 Visual Studio...

    软件测试入门培训

    软件测试入门培训PPT 常见的几种软件开发生命周期模式 生命周期:软件产品从最初构思到公开发行的过程 类型:大爆炸、边写边改、瀑布、螺旋、迭代、敏捷

    八种最常见Docker开发模式别说你还不知道

    我在本文中将概述我在使用Docker的过程中开始反复出现的几种模式。我不指望它们会带来多少新奇或惊喜,但希望其中一些有用,我也很想听听各位在使用Docker过程中遇到的模式。我试用Docker的基础是保持在卷中持续的...

    网狐荣耀版开发使用常见问题解答

    macos电脑一台,安装xcodes开发工作,同时安装证书服务器与相关软件环境。 二、系统修改 xcodes打开项目工程,进行开发者的配置与发布选项的配置,进行游戏名称与版本号修改等,进行编译,发布等。这里面的游戏...

    软件测试经典面试题 (超实用)

    (可以包括软件测试、过程改进、软件开发或者与此无关的其他方面) 35 11、为什么选择测试这行? 35 12、你的工作通常能在时限内完成吗.(我想问一下就是她问这个问题的动机是什么) 35 13、通常你对于别人批评你会...

    软件工程简答题

    快速原型是利用原型辅助软件开发的一种新思想。经过简单快速分析,快速实现一个原型,用户与开发者在试用原型过程中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,适应变化,最终提高软件质量。 ...

    重构与模式2.pdf

    记得在《重构》刚刚出版的时候,软件开发界和评论界就赞扬它是一本具有与《设计模式》同等高度的图书。我相信本书的每一位读者都和我一样,早已收藏了这两本书,反复阅读,仔细品味,并从中获益匪浅。  Ralph ...

    重构与模式1.pdf

    记得在《重构》刚刚出版的时候,软件开发界和评论界就赞扬它是一本具有与《设计模式》同等高度的图书。我相信本书的每一位读者都和我一样,早已收藏了这两本书,反复阅读,仔细品味,并从中获益匪浅。  Ralph ...

    RoKiSim 应用及其接口开发

    RoKiSim 是位于加拿大蒙特利尔 ETS 控制和机器人技术实验室开发的一款多平台6轴串联机器人教育软件。使用者可以用关节模式和直角坐标系模式来移动机器人,可以参照和显示TOOL...机器人模型包括了几种常见的品牌型号。

    软件工程-理论与实践(许家珆)习题答案

    而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术 不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力, 而在开发过程中就夭折。软件危机主要表现在两个方面: (1) ...

    嵌入式系统详细文档

    本文主要目的是研究面向对象软件开发技术和软件设计模式在工业数据采集软件设计开发中的应用。内容基于一套包含多种智能控制模块的嵌入式实时控制软件,实际上就是一套软PLC软件包,并结合当前工控组态软件实际情况...

    2020年9月Python青少年软件编程一级真题

    1. 了解Python常见的几种编程环境:IDLE、Visual Studio Code、JupyterNotebook; 2. 熟悉IDLE的操作过程,会打开IDLE,会新建文件、保存文 件; 3. 熟练掌握使用IDEL进行编程,会修改文件、运行文件等操 作; 4. ...

    java面试题及技巧3

    │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+Hibernate+Spring轻量级J2EE...

    基于JAVA的RSA文件加密软件的设计与实现(源代码+论文)

    结合现有的常见开发模式综合分析,有多种实现方案,下面陈述其中几种,并分析选择一种解决方案,并给出工程框架。 整个工程使用java平台实现 RSA密钥生成、RSA加密解密的功能实现十分简单,因为标准库中集成几乎...

Global site tag (gtag.js) - Google Analytics