软件开发模型
- 瀑布模型(SDLC):适用于需求明确或二次开发的项目
理想化的开发模型,要求有明确的需求分析,而要达到这一点在现实开发中几乎不开能
结构化模型的代表,线性开发:软件计划→需求分析→软件设计→程序编程→软件测试→运行维护 - 原型模型:适用于需求不明确的项目
项目开发初期,构造一个软件原型,通过调整原型使其满足客户要求,一旦确定真正需求,原型将被丢弃 - 演化模型:适用于对需求缺乏准确认识的项目
从初始的原型逐步演化成最终软件产品 - 增量模型:适用于可以分批次地进行软件产品交付的项目
将待开发的软件系统模块化,先做实现基本需求的核心模块,交付用户使用后,根据用户需求不断增量,调整,直到完善 - 螺旋模型:适用于大型复杂的项目
结合了瀑布和演化的优点,加入了风险分析
沿着螺线进行若干次迭代(制定计划→风险分析→实施工程→客户评估),从概念项目开始第一个螺旋 - 喷泉模型:适用于面向对象的软件项目
面向对象的模型,以用户需求为动力,以对象为驱动的模型,使开发具有迭代性和无间隙性 - V模型:适用于传统信息系统应用的项目
强调了软件开发过程中若干个测试级别
在需求分析的时候,写验收测试和系统测试,可以提早发现问题;
在概要设计的时候,写集成测试的测试计划;
在详细设计的时候,写单元测试的测试计划 - 快速应用开发(RAD):适用于系统模块化程度较高的项目,不适合技术风险很高的情况
业务建模→数据建模→过程建模→应用生成→测试与交付 - 迭代模型:适用于需求难以确定,不断变更的项目,采用迭代开发方法
- 构件组装模型(CBSD):
基于构件的开发方法,提高了软件开发的复用性,可靠性强
需求分析和定义→软件架构设计→构件库的建立→应用软件构建→测试和发布 - 统一过程(UP):适用于大型项目
用例驱动,以架构为中心,迭代和增量
初始→细化→构建→交付 - 敏捷开发方法:适用于小型项目,是一种以人为核心、迭代、循序渐进的开发方法
- 极限编程(XP):一种轻量级的开发方法,激发开发人员创造性、使得管理负担最小的一组技术
- 4大价值观:沟通、简单、反馈、勇气
- 5大原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作
- 12个最佳实践:
- 计划游戏(快速制定计划、随着细节的不断变化而完善)
- 小型发布(系统的设计要能够尽可能早地交付)
- 隐喻(找到合适的比喻传达信息)
- 简单设计(只处理当前的需求,使设计保持简单)
- 测试现行(先写测试代码,然后再编写程序)
- 重构(重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求)
- 结队编程
- 集体代码所有制
- 持续集成(可以按日甚至按小时为客户提供可运行的版本)
- 每周工作40个小时
- 现场客户
- 编码标准
- 水晶法:强调经常交付,认为每—个不同的项目都需要一套不同的策略、约定和方法论
- 并列争球法:核心是迭代、增量交付,按照30天进行迭代开发交付可实际运行的软件
- 使用迭代的方法,其中,把每30天一次的迭代称为一个“冲刺”, 并按需求的优先级来实现产品,多个自组织和自治的小组并行地递增实现产品
- 自适应软件开发:核心是三个非线性的,重迭的开发阶段:猜测、合作、学习
- 6个基本原则:
- 有一个使命作为指导;
- 特征被视为客户价值的关键点;
- 过程中的等待是很重要的,因为“重做”与“做”同样关键;
- 变化不被视为更改,而是被视为对软件开发实际情况的调整;
- 确定的交付时间迫使开发人员认真考虑每一个生产的版本的关键需求;
- 风险也包含其中
- 6个基本原则:
- 极限编程(XP):一种轻量级的开发方法,激发开发人员创造性、使得管理负担最小的一组技术
软件开发方法
方法 |