《软件过程与软件开发模型》由会员分享,可在线阅读,更多相关《软件过程与软件开发模型(33页珍藏版)》请在金锄头文库上搜索。
1、软件过程与软件开发模型演讲人 崔琳娜生存周期与软件过程的关系什么是过程?广义的说,人们随时间的流逝而进行 的各种活动均可称为过程(process,流程)因此, 软件过程可理解为围绕软件开发所进行的一系列活 动。在早些时候,人们常常把软件过程译为“软件开发 模型”按照早期软件工程的观点,软件开发模型包含的阶 段与活动软件生存周期划分的阶段与活动基本上是 一致的。它们共同的特点是将整个“过程”严格的 划分阶段,各阶段的活动分步完成;前一阶段的活 动没有结束,下一阶段的活动就不能进行,恰如奔 流不息、拾级而下的瀑布。软件过程的演变在第一代软件工程期间,瀑布开发模型在 软件的开发与维护中被普遍采用。到
2、了20世纪80年代中期,人们终于发现, 这种线性开发模型不适合于大型复杂系统 的开发。软件开发模型开始演变。除传统的线性开 发模型外,又陆续涌现了一批新的、允许 在开发过程中任意回溯和迭代的过程模 型。软件过程涵义软件过程是软件开发与维护的工作流程和 工艺流程,是软件工程的重要组成部分。软件过程指软件生存周期中所涉及的一系 列相关过程。过程是活动的集合,活动是 任务的集合,任务是把输入转换为输出的 操作。软件过程是动态的,它动态地产 生、推进(执行),动态地消亡。软件过程模型是对软件过程静态的、抽象 的描述,是软件过程执行的依据。软件过程-ISO/IEC 12207 主要过程类获取过程 供应过
3、 程 开发过 程 运行过程 维护过 程支持过程类文档编制过程 配置管理过程 质量保证过 程 验证过 程 确认过 程 联合评审过 程 审核过程 问题 解决过程组织过 程类管理过程 基础设 施过程 改进过 程 培训过 程软件开发模型与软件工程常见的开发模型:瀑布模型、演化模型、螺旋模型、 XP开 发模型、 快速开发模型等。由于现在还没有任何一种方法能够解决软 件危机中的所有问题,所以在软件开发的 各个阶段采用综合治理的方法。软件开发模型直接影响软件开发的周期和 软件质量,是软件开发的组织管理形式, 是软件工程最重要的内容之一。瀑布模型的概念瀑布模型是将软件生存周期各活动规定为 依线性顺序联接的若干
4、阶段的模型。它包 括需求分析、概要设计、详细设计、编 码、测试和维护。它规定了由前至后、相 互衔接的固定次序,如同瀑布流水,逐级 下落。瀑布模型的特点特征:从上一阶段承接的成果物作为本阶段的工作对象;对上一阶段成果实施本阶段的活动;给出本阶段的成果,作为下一阶段的输入;对本阶段的工作进行评审,若本阶段的工作得到确认 ,则继续下阶段的工作,否则返回前一阶段或更前一 阶段。 优点:提供了一个模板,使得分析、设计、编码、测试、运 行维护可以在该模板的指导下应用。瀑布模型的特点缺点:缺乏灵活性,不能适应用户需求的改变开始阶段的小错误被逐级放大,可能导致软件产品报 废返回上一级的开发需要十分昂贵的代价随
5、着软件规模和复杂性的增加,对于需求不能完全确 定的软件开发项目将产生很大的风险。 通常使用场合:需求分析做得比较好的系统二次开发系统原型模型在项目开发的初始阶段,人们对软件的需求认 识往往不够清楚,因而使得开发项目难以做到 一次开发成功,出现返工再开发在所难免。在获得用户基本需求说明的基础上,投入少量 人力和物力,快速建立一个原始模型,使用户 及时运行和看到模型的概貌和使用效果,并对 需求说明进行补充和精化,提出改进意见,开 发人员进一步修改完善,如此循环迭代,直到 得到一个用户满意的模型为止。原型模型的内容原型模型的特点优点:开发者与用户充分交流,可以澄清模糊需求,需求定 义比其他模型好得多
6、 为用户需求的改变提供了充分的余地 缺点:开发者为了使一个原型快速运行起来,往往在实现过 程中采用折衷的手段。软件系统的组成部分可能会打 折扣;资源规划和管理较为困难,随时更新文档也带来麻 烦。 一般使用场合:开发者在不了解的应用领域开发 客户不清楚其所开发软件项目的最终目标 软件演化模型-增量模型 系统设计时分片交付,可使用户在使用某些基本功能的同时,开发剩余的功能。这样通常会并行地存在两个系统:生产系统和开发系统。运行或生产系统是当前被客户或用户所使用的系统。而开发系统是准备用于替代当前生产系统的下一个版本。增量模型是一种非整体开发的模型。是瀑布模型的顺序特征和快速原型模型的迭代特征相结合
7、的产物。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。软件演化模型-螺旋模型 软件开发几乎总要冒一定的风险,例如,产品交付 给用户之后用户可能对产品不满意,到了预定的交付日 期软件可能还未开发出来,实际的开发成本可能超过了 预算,产品完成之前一些关键的开发人员可能“跳槽”了 ,产品投入市场之前竞争对手发布了一个功能相近、价 格更低的软件等等。软件风险是任何软件开发项目中都 普遍存在的实际问题,项目越大,软件产品越复杂,承 担该项目所冒的风险也越大。软件风险可能在不同程度 上损害软件开发过程和软件产品质量。因此,在软件开 发过程中必须及时识别和分析风险,并且采取适当
8、措施 以消除或减少风险的危害。 构建原型是一种能使某些类型的风险降至最低的方 法。 于是在1988年B.boehm提出了螺旋模型。XP开发模型XP极限编程(eXtreme Programming)是一种敏捷 (Agile)开发方法,以编码为核心任务的,供中小 型小组用于开发需求快速变化的软件。 敏捷是什么?敏捷已经成为当今描述现代软件过程 的时髦用词。每个人都是敏捷的,敏捷团队是能够 适当响应变化的灵活团队。变化就是软件开发本身 ,软件构建有变化,团队成员在变化、使用新技术 带来变化,各种 变化都会对开发的软件产品以及项 目本身造成影响。我们必须接受“支持变化”的思 想,它应当根植于软件开发中
9、的每一件事中,因为 这是软件的心脏与灵魂。敏捷团队意识到软件是团 队中所有人共同开发完成的,这些人的个人技能和 合作能力是项目成功的关键所在XP开发模型敏捷方法是为了克服传统软件工程中认识 和实践的弱点开发而成的(Jim Highsmith说:“传统方法学家陷入了误 区,乐于生完美的文档而不是满足业务需 要的可运行系统”)。敏捷开发可以带来 多方面的好处,但它并不使用于所有的项 目、所有的方面、所有的人和所有的情况 ,它并不完全对立于传统的软件工程实 践。XP模型开发概要XP有四部分组成:价值、原则、活动和实践 XP的4种价值观:交流:侧重口头交流,而不是文档、报表和计划。因而,人际关系显 得
10、尤为重要。简化:在管用的前提下,做最简单的事。目标放在客户当前的需求上 ,摒弃了过多的文档。反馈:u通过及时地单元测试和功能测试获得快速反馈。u快速地编写软件,然后向客户演示。为确保准确性和高质量,获 取客户关于到目前为止的进度的反馈是至关重要的。勇气:u提倡积极面对现实和处理问题的勇气u快速工作并在必要时重新进行开发的勇气。XP模型开发概要XP的指导原则:快速反馈:开发人员通过简短的反馈循环迅速了解其 当前产品是否满足了客户的需求。简单性假设:将每个问题都视为很容易解决。只需为 当前迭代打算,而无需洞察未来可能需要什么。逐步修改:通过一系列细微的修改来解决问题。拥抱变化:包容变化,提倡变化。
11、高质量的工作:工作质量决不可打折扣。XP采用测试 先行的编程方式,强调编码和测试的重要性。面向对象的开发模型面向对象的基本概念对象Object类Class继承Inheritance消息Message 面向对象对象+类+继承+消息通信面向对象的基本概念对象Object客观世界中的实体状态(静态属性 Attributes)操作(动态行为 Methods)对象:=Identifier(标识:即名称,用来在问题域中区分其他 对象)Method Set(即行为或方法:一是对自身的操作,改变 原有的属性状态;另一是施加于其他对象的操作,将产生的 输出结果作为消息发送的操作)Data Structure(数
12、据:描述对象属性的存储或数据结 构,他表示了对象的一个状态)Message Interface(接口:主要指对外接口,指对象 受理外部消息所制定的操作的名称集合)面向对象的基本概念类Class和实例Instance类相同属性和行为的对象的抽 象实例特定类所描述的一个具体对 象面向对象的基本概念继承(Inheritance)多态性Polymorphism概念不同类层次共享一个方法名相同的参数特征和返回值类型多种不同实现C+中虚函数实现动态联编重载Overloading函数重载同一作用域多个名字相同的函数参数特征不同静态联编运算符重载消息Message对象间的交互手段形式:Message:dest
13、,op,paraDestination Object(目标对象)Operation(操作)Parameters(参数)面向对象的开发模型2 对象技术为软件工程的基于构件的过程模 型提供了技术框架。面向对象范型强调了 类的创建,类封装了数据和用于操纵该数 据的算法。如果经过合适的设施和实现, 面向对象的类可以在不同的应用及基于计 算机的系统结构中复用 面向对象模型融合了螺旋模型的许多特 征。它本质上是演化的,支持软件开发的 迭代方法。 构件集成模型 构件(component)也称为组件,是一段实现一系列 有确定接口的程序体,具有自己的功能和逻辑,能 同其他构件组装起来协调工作。 该模型支持软件重
14、用,对缩短软件开发周期、 降低项目成本有重要的现实意义。同时,建造符合 某应用领域体系结构标准的构件,可以用来搭建分 布式的、跨越不同操作平台的软件,扩展了软件的 应用前景,促进了软件标准化、商品化的发展。 因此,在此基础上专家们又提出了“基于构件 的软件工程”(CBSE)。构件组装模型具有极其广阔的实用性和深远的意 义。 构件组装模型如下图所示:构建集成模型构件技术 软件体系结构被建立后,必须用构件去充实,这些 构件可从复用库中获得,或者根据专门需要而开 发。整个过程可以演化地进行,面向对象方法给予 技术上的支持。 构件技术目前主要有三种流行标准: OMG的CORBA: 对象管理组织发布的公
15、共 对象请求代理体系结构(Common Object Request Broker Architecture)。一个对象请求代理(ORB)提 供一系列服务,使得一个构件和其他构件通信,而 不管它们在系统中的位置,实现了远程对象通过接 口进行通信的机制。构件技术 微软的COM/DCOM:微软开发了构件对象模型( Component Object Model),它提供了运行于windows 之上的单个应用系统使用不同厂商生产的构件的规 约。基于分布式环境下的COM称为DCOM (Distribute COM)。 SUN的EJB (Enterprise JavaBean):随着Java 在企业级应用的地位日趋重要,Sun提出了一个统 一的企业级Java平台J2EE。在J2EE中,EJB负责 最核心的业务处理。它为服务器端的应用程序提供 了一种与厂商无关的Java接口,让任何符合EJB规范 的构件都可以运行在每一台这样的服务器上。基于构件的未来生产线参考文献软件工程-原理、方法与应用 ThankThank you !you !