当前位置:文档之家› 软件过程与软件开发模型

软件过程与软件开发模型


瀑布模型的概念

瀑布模型是将软件生存周期各活动规定为 依线性顺序联接的若干阶段的模型。它包 括需求分析、概要设计、详细设计、编码、 测试和维护。它规定了由前至后、相互衔 接的固定次序,如同瀑布流水,逐级下落。
瀑布模型的特点
特征: 从上一阶段承接的成果物作为本阶段的工作对象; 对上一阶段成果实施本阶段的活动; 给出本阶段的成果,作为下一阶段的输入; 对本阶段的工作进行评审,若本阶段的工作得到确认, 则继续下阶段的工作,否则返回前一阶段或更前一阶 段。 优点: 提供了一个模板,使得分析、设计、编码、测试、运 行维护可以在该模板的指导下应用。
面向对象的开发模型——2


对象技术为软件工程的基于构件的过程模 型提供了技术框架。面向对象范型强调了 类的创建,类封装了数据和用于操纵该数 据的算法。如果经过合适的设施和实现, 面向对象的类可以在不同的应用及基于计 算机的系统结构中复用 面向对象模型融合了螺旋模型的许多特征。 它本质上是演化的,支持软件开发的迭代 方法。
软件演化模型-增量模型
系统设计时分片交付,可使用户在使用某些 基本功能的同时,开发剩余的功能。这样 通常会并行地存在两个系统:生产系统和 开发系统。运行或生产系统是当前被客户 或用户所使用的系统。而开发系统是准备 用于替代当前生产系统的下一个版本。 增量模型是一种非整体开发的模型。是瀑 布模型的顺序特征和快速原型模型的迭代 特征相结合的产物。 该模型具有较大的灵活性,适合于软件需 求不明确、设计方案有一定风险的软件项 目。
软件过程是软件开发与维护的工作流程和 工艺流程,是软件工程的重要组成部分。 软件过程指软件生存周期中所涉及的一 系列相关过程。过程是活动的集合,活动 是任务的集合,任务是把输入转换为输出 的操作。软件过程是动态的,它动态地产 生、推进(执行),动态地消亡。 软件过程模型是对软件过程静态的、抽 象的描述,是软件过程执行的依据。
瀑布模型的特点
缺点: 缺乏灵活性,不能适应用户需求的改变 开始阶段的小错误被逐级放大,可能导致软件产品报 废 返回上一级的开发需要十分昂贵的代价 随着软件规模和复杂性的增加,对于需求不能完全确 定的软件开发项目将产生很大的风险。 通常使用场合: 需求分析做得比较好的系统 二次开发系统
软件开发模型与软件工程
常见的开发模型: 瀑布模型、演化模型、螺旋模型、 XP开 发模型、 快速开发模型等。 由于现在还没有任何一种方法能够解决软 件危机中的所有问题,所以在软件开发的 各个阶段采用综合治理的方法。 软件开发模型直接影响软件开发的周期和 软件质量,是软件开发的组织管理形式, 是软件工程最重要的内容之一。
软件演化模型-螺旋模型
软件开发几乎总要冒一定的风险,例如,产品交付 给用户之后用户可能对产品不满意,到了预定的交付日 期软件可能还未开发出来,实际的开发成本可能超过了 预算,产品完成之前一些关键的开发人员可能“跳槽” 了,产品投入市场之前竞争对手发布了一个功能相近、 价格更低的软件等等。软件风险是任何软件开发项目中 都普遍存在的实际问题,项目越大,软件产品越复杂, 承担该项目所冒的风险也越大。软件风险可能在不同程 度上损害软件开发过程和软件产品质量。因此,在软件 开发过程中必须及时识别和分析风险,并且采取适当措 施以消除或减少风险的危害。 构建原型是一种能使某些类型的风险降至最低的方 法。 于是在1988年B.boehm提出了螺旋模型。

构件技术

• 微软的COM/DCOM:微软开发了构件对象模型 (Component Object Model),它提供了运行于 windows之上的单个应用系统使用不同厂商生产的 构件的规约。基于分布式环境下的COM称为DCOM (Distribute COM)。
• SUN的EJB (Enterprise JavaBean):随着Java 在企业级应用的地位日趋重要,Sun提出了一个统 一的企业级Java平台—J2EE。在J2EE中,EJB负责 最核心的业务处理。它为服务器端的应用程序提供 了一种与厂商无关的Java接口,让任何符合EJB规范 的构件都可以运行在每一台这样的服务器上。
重载Overloading
函数重载 同一作用域 多个名字相同的函数 参数特征不同 静态联编 运算符重载

消息Message

对象间的交互手段 形式: Message:[dest,op,para] Destination Object(目标对象) Operation(操作) Parameters(参数)
XP开发模型
XP开发模型

敏捷方法是为了克服传统软件工程中认识 和实践的弱点开发而成的(Jim Highsmith说:“传统方法学家陷入了误 区,乐于生完美的文档而不是满足业务需 要的可运行系统”)。敏捷开发可以带来 多方面的好处,但它并不使用于所有的项 目、所有的方面、所有的人和所有的情况, 它并不完全对立于传统的软件工程实践。
构件集成模型




构件(component)也称为组件,是一段实现一系列 有确定接口的程序体,具有自己的功能和逻辑,能 同其他构件组装起来协调工作。 该模型支持软件重用,对缩短软件开发周期、降 低项目成本有重要的现实意义。同时,建造符合某 应用领域体系结构标准的构件,可以用来搭建分布 式的、跨越不同操作平台的软件,扩展了软件的应 用前景,促进了软件标准化、商品化的发展。 因此,在此基础上专家们又提出了“基于构件的 软件工程”(CBSE)。 构件组装模型具有极其广阔的实用性和深远的意义。 构件组装模型如下图所示:


软件过程-ISO/IEC 12207
主要过程类
支持过程类
• 供应过程 • 开发过程 • 运行过程 • 维护过程
• 文档编制过程 • 配臵管理过程 • 质量保证过程 • 验证过程 • 确认过程
组织过程类
• 获取过程
• 管理过程 • 基础设施过程 • 改过程


基于构件的未来生产线
参考文献

软件工程-原理、方法与应用
XP模型开发概要
XP的指导原则: 快速反馈:开发人员通过简短的反馈循环迅速了解其 当前产品是否满足了客户的需求。 简单性假设:将每个问题都视为很容易解决。只需为 当前迭代打算,而无需洞察未来可能需要什么。 逐步修改:通过一系列细微的修改来解决问题。 拥抱变化:包容变化,提倡变化。 高质量的工作:工作质量决不可打折扣。XP采用测试 先行的编程方式,强调编码和测试的重要性。
面向对象的开发模型

面向对象的基本概念
对象Object 类Class 继承Inheritance 消息Message 面向对象 对象+类+继承+消息通信

面向对象的基本概念


对象Object
客观世界中的实体 状态(静态属性 Attributes) 操作(动态行为 Methods) 对象::=<ID,MS,DS,MI> Identifier——(标识:即名称,用来在问题域中区分其他 对象) Method Set——(即行为或方法:一是对自身的操作,改变 原有的属性状态;另一是施加于其他对象的操作,将产生的 输出结果作为消息发送的操作) Data Structure——(数据:描述对象属性的存储或数据结 构,他表示了对象的一个状态) Message Interface——(接口:主要指对外接口,指对象 受理外部消息所制定的操作的名称集合)
原型模型的内容
原型模型的特点
优点: 开发者与用户充分交流,可以澄清模糊需求,需求定 义比其他模型好得多 为用户需求的改变提供了充分的余地 缺点: 开发者为了使一个原型快速运行起来,往往在实现过 程中采用折衷的手段。软件系统的组成部分可能会打 折扣; 资源规划和管理较为困难,随时更新文档也带来麻烦。 一般使用场合: 开发者在不了解的应用领域开发 客户不清楚其所开发软件项目的最终目标

面向对象的基本概念

类Class和实例Instance
类 相同属性和行为的对象的抽 象 实例 特定类所描述的一个具体对 象

面向对象的基本概念

继承(Inheritance)
多态性Polymorphism

概念



不同类层次共享一个方法名 相同的参数特征和返回值类型 多种不同实现 C++中虚函数实现 动态联编
软件过程与软件开发模型
演讲人 崔琳娜
生存周期与软件过程的关系



什么是过程?广义的说,人们随时间的流逝而进行 的各种活动均可称为过程(process,流程)因此, 软件过程可理解为围绕软件开发所进行的一系列活 动。 在早些时候,人们常常把软件过程译为“软件开发 模型” 按照早期软件工程的观点,软件开发模型包含的阶 段与活动软件生存周期划分的阶段与活动基本上是 一致的。它们共同的特点是将整个“过程”严格的 划分阶段,各阶段的活动分步完成;前一阶段的活 动没有结束,下一阶段的活动就不能进行,恰如奔 流不息、拾级而下的瀑布。
XP模型开发概要

XP有四部分组成:价值、原则、活动和实践
XP的4种价值观: 交流:侧重口头交流,而不是文档、报表和计划。因而,人际关系显 得尤为重要。 简化:在管用的前提下,做最简单的事。目标放在客户当前的需求上, 摒弃了过多的文档。 反馈: 通过及时地单元测试和功能测试获得快速反馈。 快速地编写软件,然后向客户演示。为确保准确性和高质量,获 取客户关于到目前为止的进度的反馈是至关重要的。 勇气: 提倡积极面对现实和处理问题的勇气 快速工作并在必要时重新进行开发的勇气。
原型模型


在项目开发的初始阶段,人们对软件的需求认 识往往不够清楚,因而使得开发项目难以做到 一次开发成功,出现返工再开发在所难免。 在获得用户基本需求说明的基础上,投入少量 人力和物力,快速建立一个原始模型,使用户 及时运行和看到模型的概貌和使用效果,并对 需求说明进行补充和精化,提出改进意见,开 发人员进一步修改完善,如此循环迭代,直到 得到一个用户满意的模型为止。
相关主题