目录
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的优缺点
优点
- RUP将项目管理,业务建模,分析和设计等统一起来,贯穿整个软件开发过程。
- 为团队成员提供了使用准则,模板和工具指导,形成最佳实现方案,并基于共同的基础知识,使所有团队成员思想统一,沟通更易,这是项目成功的关键因素。
- 增强软件开发人员的预见性,提高了软件质量,缩短项目时间。
- RUP可用于所有类型的软件系统开发,应用广泛。
缺点
过于庞大和复杂,不能适应需求快速变化,每个需求变更都要经过复杂的过程和额外的工作,对于小的项目和公司,使用敏捷方法会更合适。
11.敏捷开发方法
敏捷开发方法是一种比较新的开发方法,适合中小项目,强调小步快跑,快速迭代。
发展历程:在最初我们还没有开发方法,开发模型的时候,我们开发的软件质量很难保证,但随着软件工程的兴起,越来越多的开发方法,开发模型,越来越多的开发文档及规范,开发人员的工作也越来越多,需要写很多的文档,这时候敏捷开发出现了,其思想就是给开发人员减负,抛弃不必须要的文档及流程,采用小步快跑,快速迭代的方式进行开发。
敏捷开发不是一个开发模型而是一组开发模型。包含自适应开发,水晶方法,特征驱动开发,SCRUM,极限编程。
1.敏捷开发的原则
五大原则
- 快速反馈
- 简单性假设
- 逐步修改
- 提倡更改
- 优质工作
基本原则
- 短平快的会议
- 小型版本发布
- 较少的文档
- 合作为重
- 客户直接参与
- 自动化测试
- 适应性计划调整
- 结对编程
- 测试驱动开发
- 持续的集成
- 重构
2.12个最佳实践
- 计划游戏,像游戏一样让用户参与进来
- 小型版本
- 结对编程,2个在一起开发,一人开发一人审查
- 持续集成
- 重构
- 隐喻,用比喻的方式和用户描述问题
- 测试先行
- 简单设计
- 现场客户
- 编程标准
- 集体代码所有制
- 每周工作40小时,不加班
3.敏捷开发优缺点
优点:可以快速开发出基线版本,快速可持续的开发速度,能快速响应市场需求变化,客户前期满意度高。
缺点:需要团队中有经验高的人,不然容易遇到瓶颈,因为对文档要求精简,所以人员流通大会带来系统维护困难。