软件的开发模型

目录

1.基本概念

2.软件开发模型的分类

1.瀑布模型

2.原型模型

3.演化模型

4.增量模型

5.螺旋模型

6.V模型

7.喷泉模型

8.快速开发模型(RAD)

9.构件开发模型(CBSD)

10.RUP统一过程开发模型

1.RUP的特点

2.RUP的阶段

3.RUP的优缺点

11.敏捷开发方法

1.敏捷开发的原则

2.12个最佳实践

3.敏捷开发优缺点


1.基本概念

开发模型是软件开发过程中的开发体系,指导思想。

2.软件开发模型的分类

软件开发模型包含瀑布模型,原型模型,增量模型,演化模型,螺旋模型,V模型,统一过程RUP,敏捷开发方法。

1.瀑布模型

结构化方法中的一种模型,现在用的比较少了,因为新项目使用瀑布模型风险比较高,失败几率较大。

瀑布模型的流程分为软件计划,需求分析,软件设计,软件编码,程序测试,运行维护阶段。

为什么说瀑布模型在新项目中容易失败呢?

因为在新项目中需求难以明确,最后做完用户看到发现和自己想的不一样,又得重新进行需求分析等阶段,最终项目超时。所以瀑布模型使用于需求明确的项目或者二次开发项目。当然也可以结合原型模型一起使用。

2.原型模型

原型模型是在项目初期,快速构建一个简易的系统,用来和用户明确需求,适用于需求不明确的项目。

3.演化模型

演化模型是在原型模型之上不断演化成最终产品的方式。

4.增量模型

增量模型是结构化方法中模型的一种,其思想是先做一部分核心模块然后给用户看确认没问题,再做一部分模块,一直迭代增量开发,每一个增量都是一个可操作的系统,这种方式项目不会做到最后发现和用户需求不一致的情况。

5.螺旋模型

螺旋模型是多个模型的组合,包括原型模型,演化模型,增量模型,因其形状是螺旋型,一圈一圈的出来,所以叫做螺旋模型,其最显著的特征是引入了风险分析。

6.V模型

V模型是一种强调测试的模型,其型像一个V字所以叫做V模型,V的左边是需求分析->概要设计->详细设计->软件编程,V的右边是单元测试->集成测试->系统测试->验收测试

在需求分析阶段会写验收测试和系统测试的测试计划,在概要设计阶段写集成测试的测试计划,在详细设计阶段写单元测试的测试计划,强调测试提前,测试贯穿始终,而不是最后再进行测试,这样可以提前发现问题。

7.喷泉模型

喷泉模型是面向对象的一种模型,出现的比较早的一种面向对象模型,其有着一般面向对象模型的特点,迭代,无间隙。

8.快速开发模型(RAD)

RAD,快速开发模型,是瀑布模型和构件开发模型(CBSD)组合形成的模型,它的特点是快速开发应用,例如界面拖拽式开发。

9.构件开发模型(CBSD)

构件开发模型(CBSD),现在应用的比较广泛,它的思路是把各个功能模块做成标准构建,构建完成之后进行构件组装得到我们需要的系统,因其构件库的建立使得软件的复用性得到很大的提高,复用性提高就会带来项目周期的缩短,成本的降低,可靠性的提升。

其分为需求分析和定义,软件架构设计,构件库建立,应用软件构建,测试和发布。

10.RUP统一过程开发模型

RUP统一过程开发模型是一种面向对象的开发模型,适合大型项目的开发,现在比较流行。

1.RUP的特点

用例驱动,以架构为中心,迭代和增量

  • 用例驱动,简单来说用例就是系统的一个小的功能,在系统分析和系统设计中,我们把系统分解成很多小的单元,这些单元就是用例,然后我们对这些单元进行开发,用例贯穿整个软件的声明周期,在需求分析阶段,客户对用例进行描述。在设计阶段,架构师对用例进行分析。开发阶段,编程人员对用例进行实现。测试阶段,测试人员对用例进行验证。
  • 以架构为中心,统一过程强调把架构设计好,架构是系统开发中的一个重要组成部分,在设计过程中,必须完成对技术和运行平台的选取,整个项目的框架设计,公共组件的设计,还必须完成对可靠性,可用性,可扩展性,安全性,伸缩性等提出可行的解决方案,设计好之后我们就可以往里面填充构件,完成系统的开发。
  • 迭代和增量,迭代是指开发形成一个环状,每个环状会有一些增量的东西,每走一轮就是迭代和增量的过程。

2.RUP的阶段

RUP的软件过程是一个迭代的过程,通过初始,细化,构建,交付四个阶段就是一个周期,每个周期产生一代软件,循环迭代下去演化成最终的版本,直至退役。

  • 初始阶段:确定项目范围和边界,识别系统的关键用例,展现系统的候选架构,估计项目费用和时间,评估系统的项目风险。
  • 细化阶段:确定系统架构,选择构件。
  • 构建阶段:开发剩余的构建和应用程序功能,构建组装形成系统。
  • 交付阶段:beta测试,用户文档,用户培训,发布版本,确定新系统。

3.RUP的优缺点

优点

  1. RUP将项目管理,业务建模,分析和设计等统一起来,贯穿整个软件开发过程。
  2. 为团队成员提供了使用准则,模板和工具指导,形成最佳实现方案,并基于共同的基础知识,使所有团队成员思想统一,沟通更易,这是项目成功的关键因素。
  3. 增强软件开发人员的预见性,提高了软件质量,缩短项目时间。
  4. RUP可用于所有类型的软件系统开发,应用广泛。

缺点

过于庞大和复杂,不能适应需求快速变化,每个需求变更都要经过复杂的过程和额外的工作,对于小的项目和公司,使用敏捷方法会更合适。

11.敏捷开发方法

敏捷开发方法是一种比较新的开发方法,适合中小项目,强调小步快跑,快速迭代。

发展历程:在最初我们还没有开发方法,开发模型的时候,我们开发的软件质量很难保证,但随着软件工程的兴起,越来越多的开发方法,开发模型,越来越多的开发文档及规范,开发人员的工作也越来越多,需要写很多的文档,这时候敏捷开发出现了,其思想就是给开发人员减负,抛弃不必须要的文档及流程,采用小步快跑,快速迭代的方式进行开发。

敏捷开发不是一个开发模型而是一组开发模型。包含自适应开发,水晶方法,特征驱动开发,SCRUM,极限编程。

1.敏捷开发的原则

五大原则

  • 快速反馈
  • 简单性假设
  • 逐步修改
  • 提倡更改
  • 优质工作

基本原则

  • 短平快的会议
  • 小型版本发布
  • 较少的文档
  • 合作为重
  • 客户直接参与
  • 自动化测试
  • 适应性计划调整
  • 结对编程
  • 测试驱动开发
  • 持续的集成
  • 重构

2.12个最佳实践

  • 计划游戏,像游戏一样让用户参与进来
  • 小型版本
  • 结对编程,2个在一起开发,一人开发一人审查
  • 持续集成
  • 重构
  • 隐喻,用比喻的方式和用户描述问题
  • 测试先行
  • 简单设计
  • 现场客户
  • 编程标准
  • 集体代码所有制
  • 每周工作40小时,不加班

3.敏捷开发优缺点

优点:可以快速开发出基线版本,快速可持续的开发速度,能快速响应市场需求变化,客户前期满意度高。

缺点:需要团队中有经验高的人,不然容易遇到瓶颈,因为对文档要求精简,所以人员流通大会带来系统维护困难。

你可能感兴趣的:(软考,软件工程)