0.个人与团队

看看老师给的作业要求,想想要用什么编译器什么语言编写,然后直接打开电脑开干——这几乎是我们每一个在校的计算机学生做软件开发时的常见思路。这种思路对于个人开发而言,并没有什么错误,然而当我们把它放在一个团队型的软件开发过程中时,就会犯很多错误了。

没有文档,没有规划,没有质量保障……这些都是在团队开发时的大忌,以至于这种“不管三七二十一,干就完了”的开发风格,根本不可能适用于工作中的开发环境。这就好比是盖楼房,你如果只是用积木搭一个房屋模型,确实可以先动手胡乱拼凑一个,有问题大不了拆了重盖就行,但是在现实生活中的房屋搭建中,你难道也能这么干吗?显然不可以。

因此,抛去我们随性的个人开发风格,学习一些团队软件开发过程中的科学模型,势必会为我们的职业生涯带来非常多的好处。

这就是“软件过程模型”的作用,它能够指引我们进行团队型的复杂软件开发。

1.瀑布模型

在所有的软件过程模型当中,最典型的当属“瀑布模型”了。

瀑布模型,顾名思义,就是将软件生命周期中的各项活动,按照一定的顺序连接起来,形如瀑布流水,最终得到软件产品。

如图所示,从软件的计划立项开始,通过之后进入软件的需求分析阶段,然后再进入设计阶段,接着再进入编码实现阶段,最后进行测试,然后发布运行、维护。

我们可以看到,在这个模型中,每一个阶段的输入都是上一个阶段的输出,而每一个阶段的输出又是下一个阶段的输入。这样子结构化的过程有利于软件开发人员管理整个项目的进度,亦能够使整个项目平稳地向前推进。

但它却有一个很令人头疼的弊端,就是——向前一段回溯非常难!

比如我在编码实现的阶段中,突然想要对软件的某个需求进行变更,那么这就意味着我必须要停下手头所有的编码工作,转回需求分析的阶段,重新调整需求后再进行重新的编码,这样的成本实在是太大了。

就好比是我造一台车,车身、车顶、底盘等等东西都已经造好了,结果这时客户突然跑过来跟我说,他改变主意了,想要一台敞篷车,那我就得把这造好的一切全都打回原形,重新按照客户的新需求来进行设计。更有甚者,客户可能会在我已经费力造完车后,重新告诉我他的新需求,以至于我的整个开发流程全部打了水漂。

这就是瀑布模型的利弊,它既有利于开发过程的稳步推进,却又无法适应客户变化的需求来进行迭代更新。

2.增量模型

因此,在瀑布模型的基础之上,增量模型诞生了。

增量模型的意思就是,我先实现产品的核心功能,也就是给产品赋予第1个增量(从0到核心功能),然后交付给客户。客户如果还有其他的需求,再反馈给我,我再根据客户的新需求来给产品增添新的增量(从核心功能到更多的功能)

比如依然是造车的这个例子,我先把车的底盘、轮胎、方向盘、座椅、动力装置给做了,毕竟不管是什么车,都需要这些装置才能够跑起来,然后,我们把这个略显寒酸的破车交付给客户——虽然磕碜,但它起码是一台能跑的车了。然后,如果客户有其他的需求,比如需要更酷炫的外观,比如需要是敞篷的,比如需要更快的动力装置,我们再根据这些需求给产品赋予新的增量,以此来实现对客户需求的满足。

这就解决了瀑布模型中,无法对客户变化的需求进行迭代更新的问题了。而增量模型里,每一个增量的实现,都是依靠着瀑布模型来完成的,亦即每一个增量都要经历从计划立项,到需求分析,最后到运行维护的这么一个线性过程,因此我们可以把增量模型,看成是一个瀑布模型的变型。

3.快速原型模型

与增量模型中,先打造出产品的核心功能类似,快速原型模型是在进行整体的软件开发之前,先打造出一个可运行的软件原型,供客户参考,然后得到用户的反馈后,再进行原型修改,并最终根据原型来搭建一个完整的产品。

比如还是造车,我可以先搭一个汽车模型,然后给客户看,问他这个模型满不满足他的要求。在得到客户的修改意见后,我们再根据客户的反馈进行原型的修改,并最终在得到客户肯定后,根据原型的设计来实现真正的产品。

不同于增量模型的是,在增量模型中,第一个增量,也就是产品的核心功能,它往往也是正式产品中的可拆解的一部分,而原型却并不一定如此。

比如造车,在增量模型中,我首先给客户的是一辆只有车架子、车轱辘和方向盘的破车,但这些组成部分即使在我造好了整台车后,依然是车上的一部分。而在快速原型模型中,我首先拿给客户的只是一个汽车模型,它未来也不可能会成为我正式产品的一部分,因此这和增量模型并不完全相同,只是原理上有些类似罢了。

我个人认为,快速原型模型是一个非常灵活的模型,哪怕是在现如今的开发环境中,想必应该也会有一席之地的吧,纵使现在已经有了诸如敏捷开发这样的更为先进的软件过程模型,但它怎么说,也比瀑布模型要强不少了吧!

4.螺旋模型

真的,讲实话,这个模型我自己都不太想赘述过多。

因为是一个面向风险的迭代模型,以至于它会把整个软件开发周期拉的特~~~~别长,凭我现在的经验是无法想象它会在何种工作场合,何种软件项目中被采取的,毕竟现在的互联网环境对于速度、效率的要求还是蛮高的——可能以后工作上遇到了才能有体会吧。

这个模型的过程如图所示,自行体会,我就不说啥了,嘻嘻(#^.^#)

软件开发生命周期中的设计阶段_软件过程模型|如何进行团队式的软件开发?...相关推荐

  1. 软件开发生命周期中的设计阶段_测试基础——软件开发生命周期

    今天和大家分享的是软件开发生命周期,主要介绍软件的生命周期和软件的设计模型. 国标(GB8566-88)中将软件生命周期分为8个阶段:可行性研究与计划.需求分析.概要设计.详细设计.实现(包括单元测试 ...

  2. 软件开发生命周期中的设计阶段_什么是软件生命周期模型?软件测试和软件开发的关系分析!...

    软件生命周期这个词,对于大部分人应该比较陌生,但却不容忽视!正因为它的重要性,才有许多不同的软件开发生命周期模型,但是它们都有一个共同的特点,那就是在生命周期中的某一时刻,软件都会被测试.今天我就和大 ...

  3. 软件开发生命周期中的设计阶段_软件的生命周期——测试人员必须了解的事

    软件的生命周期(prdctrm) 计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与 ...

  4. 软件开发生命周期中的设计阶段_软件开发分为几个阶段

    软件开发生命周期,亦叫做软件生命周期或者系统开发生命周期,是直到生命周期结束的软件生成生命周期.有问题定义,可行性分析,总体描述,系统设计,编码,调试和测试,验收.运行,维护和升级到过时,这种分时的思 ...

  5. 软件开发生命周期中的设计阶段_BIM咨询在设计阶段包含哪些内容?体现了哪些价值?...

    BIM咨询包含的服务主要有,提供设计阶段.施工阶段.运营阶段的BIM服务,提供成熟的BIM团队,通常只要设计院或工程单位需要的BIM服务,BIM咨询都可以做.那么BIM咨询在项目设计阶段包含哪些内容呢 ...

  6. 在软件开发生命周期中使用应用程序验证器

    转自https://msdn.microsoft.com/zh-cn/library/aa480483.aspx#EHAA 发布日期 : 2006-6-5 | 更新日期 : 2006-6-5 摘要 M ...

  7. 在软件开发生命周期中的安全性

    本文介绍了CLASP,一个应用软件安全性过程和对Rational统一过程(RUP)的插件,由Secure Software开发的环境.CLASP提供给组织一种结构化的方法,在软件开发生命周期过程中处理 ...

  8. 一文弄懂软件发布生命周期中各阶段名称及代表含义

    什么是软件发布生命周期 软件发布生命周期是指开发.测试和发布软件产品的过程.不同阶段代表了不同的稳定级别(Stability levels). 软件发布生命周期的各个阶段名称及含义 Pre-alpha ...

  9. 软件开发生命周期(SDLC)完全指南

    译者:陈峻 软件开发生命周期(Software Development Life Cycle,SDLC)包含了软件从开始到发布的不同阶段.它定义了一种用于提高待开发软件质量和效率的过程.因此,SDLC ...

最新文章

  1. VC6迁移到VS2008几个问题——良好的代码,从我做起,从现在开始。
  2. 新IT运维时代 | Docker运维之最佳实践-下篇
  3. 基于Android移动终端的微型餐饮管理系统的设计与实现2-侧滑菜单
  4. Qt实现多国语言(即界面翻译)可实时进行切换
  5. 大势至电脑文件防泄密软件_有了数据防泄密软件,还会担心企业文件泄漏吗?...
  6. java性能分析与问题定位 实战
  7. 【PHP】__autoload()魔术方法与spl_autoload_register
  8. 数据结构与算法之反转单向链表和双向链表
  9. 信息学奥赛C++语言: 验证子串
  10. Leetcode每日一题:面试题16.19.水域大小
  11. 电脑自动关机设置方法
  12. 咱也过个双 11 !Flink Forward Asia 培训门票买一赠一!
  13. 我们眼中的资管管理行业三要素
  14. java计算机毕业设计校园点餐系统源程序+mysql+系统+lw文档+远程调试
  15. 吉林大学计算机学院林丛郁,吉林大学珠海学院201奖学金
  16. 5行等腰三角形php,cad等腰三角形怎么画
  17. 基于FPGA的双通道DDS信号发生器
  18. nvl() 和nvl2()
  19. 怎么PDF中更换图片
  20. 搭建quick-cocos2dx调试环境出错

热门文章

  1. 初学SLAM二之BA当中的数学知识点
  2. Deepin系统安装docker
  3. 鼠标经过文字显示隐藏图片css样式
  4. Linux iptables 防火墙相关资料
  5. 2020下半年软考中级(系统集成项目管理工程师)(个人备考用)
  6. Unity 3D模型展示之模型透明效果
  7. 加密与安全——非对称加密算法
  8. 查询linux服务器有哪些IP在连接
  9. 苹果 CEO 库克“喜当爹”,女子为其孕育双胞胎,索赔31.6亿分手费!
  10. 滑块验证成功后,对勾对号显示为根号