软件开发过程 软件开发生命周期软件过程模型 极限编程的迭代开发过程
软件开发生命周期 软件从功能确定、设计到开发成功投入使用,并在使用中不断地修改、增补和完善,直到被新的需要所代替而停止使用该软件的全过程。1.问题定义阶段:明确要解决的问题是什么?2.可性行研究阶段:明确做不做?用最小的代价在尽可能短的时间内从经济、技术、社会因素等方面论证解决方案的可行性。3.需求分析阶段: 明确做什么?4.概要设计(总体设计)阶段:明确怎么做?5.详细设计阶段:明确具体做法?设计出程序的详细规格说明,即详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。 阶段性成果:详细设计规格说明书和单元测试计划等。6.编码和单元测试阶段:编码和单元测试7.综合测试阶段:通过各种类型的测试(及调试)使软件达到预定的要求。组装测试:根据设计的软件结构,把经过单元测试检验的模块按某种策略装配起来,在装配过程中对程序进行必要的测试。验收测试:按照规格说明书的规定,由用户对目标系统进行验收,看其是否达到需求规格说明书中定义的全部功能和性能等方面的需求。9.软件维护阶段:各种必要的维护活动使系统持久地满足用户的要求。改正性维护:诊断和改正在使用过程中发现的软件错误适应性维护:修改软件易适应环境的变化完善性维护:根据用户的要求改进或扩充软件使它更完善预防性维护:修改软件为将来的维护活动预先做准备。
软件过程模型 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成 各项任务的工作步骤。 软件过程描述为了开发出客户需要的软件,什么人(who)、在什么时候 (when)、做什么事(what)以及怎样(how)做这些事以实现某一个特定的 具体目标。
瀑布模型:
原形模型:
增量模型:
螺旋模型:
喷泉模型:
喷泉模型:
统一软件开发过程(RUP)
1.RUP是一个面向对象且基于网络的程序开发方法论。2.RUP重复一系列周期,每个周期由一个交付给用户的产品结束。 每个周期划分为初始、细化、构造和移交四个阶段,每个阶段围绕着五个 核心工作流(需求、分析、设计、实现、测试)分别迭代。# RUP过程模型四个阶段:初始阶段:进行问题定义,确定目标系统范围,评估其可行性,降低关键风险。细化阶段:制定项目计划、配置各类资源、建立系统架构(包括各类视图)。构造阶段:开发整个产品,并确保产品可移交给用户。移交阶段:产品发布、安装、用户培训。# 特点:(1)软件开发是一个迭代过程;(2)软件开发是由用例驱动的;(3)软件开发是以架构设计(Architecture Design) 为中心的。# 适合的场景从规模上说,它可以用于大、中、小型软件开发,从个人到大型团队开发都可以。从种类上说,它可以开发信息管理系统、分布式系统、并行系统、实时系统及Web系统。RUP采用管理和技术相结合的二维方法,特别适合需求易变动的高风险项目。敏捷开发与极限编程
# 什么是敏捷过程?敏捷过程是容易适应变化并迅速做出调整,在保证质量的前提下做到文档适量适度。 敏捷开发方法并不是一个具体的过程,而是一个概况性的术语。具有以人为核心、循环迭代、响应变化的特点,着眼于高质量的快速交付令客户满意的工作软件。 # 敏捷过程的特征 开发过程以代码为核心,而不是以文档为核心。代码编写,测试,发布,重构,然后进入第二次迭代,经过多次小型迭代开发过程逐步逼近实际需求。 以人为本。程序员在软件开发中不再是单纯被管理的对象,而是开发的主体。所有的主要设计策略的制定,开发方法的选择,需求的确定都由程序员决定,因为他们才是真正生产软件的人,他们最了解如何开发软件。 # 敏捷方法如何保证开发进度,开发效率,开发质量?(1)这个问题的答案就是靠人自我的管理,团队自我的管理。(2)敏捷方法抛弃了机械、严格的过程控制,就必须依赖于程序员和开发团队的高标准自我要求:严格的自律,团队合作精神,个人高度自觉的主动性,责任感。 敏捷方法的高效和高质量实际上是以程序员的高素质和开发团队的高度合作的开发文化为基础的。 # 敏捷过程的四条基本价值观个体和交互 VS 过程和工具可以工作的软件 VS 面面俱到的文档客户合作 VS 合同谈判响应变化 VS 遵循计划# 敏捷开发的代表方法1.动态系统开发: DSDM ——Dynamic Systems Development Method 2.特征驱动开发:FDD ——Feature-Driven Development3.水晶模型: Crystal4.Scrum模型5.极限编程:XP ——eXtreme Programming # 极限编程XP1.极限编程是敏捷开发中最有名的一个, 适于小型项目。2.极限编程对于传统的软件工程看来是“极端的”实践。3.XP团队使用现场客户、特殊计划方法和持续测试来提供快速的反馈和全面的交流。这可以帮助团队最大化地发挥他们的价值。# 极限编程的四条基本价值观 1. 改善沟通2. 寻求简单3. 获得反馈4. 富有勇气 极限编程的迭代开发过程
12条有效经验
极限编程XP与RUP
相同点
它们的基础都是面向对象方法,都重视代码、文档的最小化和设计的简化,采用动态适应变化的演进式迭代周期(取代传统的瀑布型生命周期)、需求和测试驱动并鼓励用户积极参与等。
不同点
RUP细化阶段的主要目的就是构造出一个可运行的架构原型,作为将来添加需求功能的稳固基础;而XP没有包含业务建模、部署等概念,反映了它以编程为中心,节省一切的思想。