您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第7章面向对象软件工程的概念
六盘水师范学院孙新杰1第7章面向对象软件工程的概念传统软件开发方法的局限性面向对象的过程模型面向对象的概念几种面向对象方法统一建模语言-UML六盘水师范学院孙新杰27.1传统软件开发方法的局限性传统的软件工具、软件技术和抽象层次越来越难以适应大规模复杂软件系统的开发特点。软件能力问题已经成为制约软件发展的因素。软件工程自70年代以来,有力的推动了软件能力的解决。自顶向下的分析与设计的方法、软件项目的工程化管理、软件工具和开发环境、软件质量保证等都对软件的发展起了非常重要的作用。传统的软件开发方法在当时的软件工程中起了主导作用,随着系统复杂性、多变性增强,传统方法的缺陷就显露了出来:(1)面向过程为主。系统围绕着由计算机来实现功能的复杂过程而建立,在分析和解决问题时与人们对现实世界的认识有一定差距。六盘水师范学院孙新杰3(2)软件结构稳定性差。需求分析阶段重点是功能模型,难以彻底明确全部需求。设计阶段的软件体系结构是基于系统功能建立的。每个模块完成一个基本功能,多个模块的组合完成一个整体功能。一个模块的变动可能会影响到多个模块。用户的需求大多针对功能,功能的变化会引起体系结构的变化,不利于系统的维护。(3)软件开发的抽象力度小。解决问题的类型一般用于“输入-处理-输出”为核心的数据处理系统,不适应于复杂的实时、交互、事件驱动、分布式等新型应用的系统开发。(4)软件重用未能得到很好的解决。传统的方法一般从“零”开始开发软件,数据与操作作为相互分离的实体来考虑,使软件的可复用性差。重用的实施仅仅是公用模块的调用。面向对象的封装性、继承性、多态性等特性支持软件重用且重用的粒度大。软件的重用导致更快地、高质量地开发软件,为软件工业化生产奠定基础。六盘水师范学院孙新杰4传统方法数据与过程是分离的过程1输入输出过程2过程3数据实体属于该对象的数据对象处理数据的方法消息消息对象把数据和处理数据的方法封状成一个单元六盘水师范学院孙新杰5传统方法与面向对象方法的比较面向对象方法系统是交互对象的集合对象与人或其它对象交互对象发送与响应消息传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出六盘水师范学院孙新杰67.2面向对象的过程模型计划分析设计分析设计分析设计计划分析设计提取可复用类原型实现测试客户评估计划分析设计提取可复用类原型实现测试客户评估计划分析设计提取可复用类原型实现测试客户评估评审及精化早期的分析/设计迭代评审及精化评审及精化评审及精化第一个原型下一个增量1、演化/并行模型是Booch等人在90年代初建议的。该模型与第1章介绍的螺旋模型、增量模型相似。但强调:(1)对OO系统的分析和设计建模不在相同的抽象层次上进行。(2)分析和设计可以并发地应用到独立的系统构件。六盘水师范学院孙新杰7该模型每次迭代都要计划、工程和评估。每个计划都要调整进度以适应和本次迭代相关的变化。早期阶段迭代进行的分析与设计工作为了分离出OO模型中的所有重要元素;当工程工作不断进展时,产生软件的增量版本;在评估阶段对每个增量的评估其反馈将影响下一次计划活动及后续增量。2、RUP98年6月推出,该过程强调了开发方法的统一、建模语言的统一、研究成果的统一。该过程是基于构件的,即所构造的系统是由软件构件通过明确定义的接口相互连接所建造起来的。它使用UML来制定软件系统的所有蓝图。RUP的主要特点:(1)用例驱动用例作为系统分析、设计、实现和测试的基本输入。六盘水师范学院孙新杰8即用例不只是一种确定系统需求的工具,它还能驱动系统的设计、实现和测试的进行。基于用例模型,开发人员可以创建一系列实现这些用例的设计模型和实现模型。开发人员可以审查每个后续建立的模型是否与用例模型一致。测试人员测试实现以确定实现模型的构件是否实现了用例。所以用例启动了开发过程,还使开发过程结合为一体。开发过程是沿着一系列从用例得到的工作流前进的。六盘水师范学院孙新杰9下图显示了用例模型与其他模型之间的相关性:用例模型由…建立分析模型为系统描述一系列类由…设计设计模型为系统定义一系列子系统和界面由…实现实现模型将类映射到构件由…分配测试模型由…验证验证系统是否提供了用例模型中描述的功能配置模型定义软件分布六盘水师范学院孙新杰10(2)以构架(Architecture)为中心软件系统的构架从不同角度描述了即将构造的系统,它刻画了系统的整体设计,去掉了细节部分,突出了系统的重要特征,包含了系统中最重要的静态结构和动态行为。构架是根据应用领域的需要逐渐发展起来的,并在用例中得到反映。每种产品都具有功能和表现形式,功能与用例对应,表现形式与构架对应。用例与构架是相互影响的,用例在实现时必须符合于构架,构架必须预留空间以实现现在或将来所有需要的用例。六盘水师范学院孙新杰113、迭代与增量的过程迭代指工作流中的步骤,增量指产品中增加的部分。迭代过程要处理一组用例,这组用例合起来能扩展所开发产品的可用性,后续的迭代过程建立在前一次迭代过程末期所开发的产品上。构架提供了一种结构来指导迭代过程中的工作,用例则确定了目标并驱动每次迭代的工作。——三条腿的凳子!4、基于构件统一过程所构造的软件系统,是由软件构件通过明确定义的接口相互连接所建造起来的。5、使用UML统一过程使用UML来制定软件系统的所有蓝图,UML是整个统一过程的一个完整部分,他们是共同发展起来的,它强调创建和维护模型。六盘水师范学院孙新杰126、过程可剪裁用统一过程开发软件时,各阶段应该有多长?各个阶段迭代多少次是合适的?候选构架可以在哪一点完全建立起来?这些问题的答案取决于系统的规模、项目的性质、开发组织的领域经验,甚至包括相关人员有效配合程度。总之,统一过程是一个框架,可以根据具体情况加以裁剪,以此来适应各种各样的开发过程。六盘水师范学院孙新杰137.3面向对象的概念面向对象(ObjectOriented,简称OO)的概念起源于20世纪60年代中期的Simula67。80年代初,Smalltalk语言及其程序设计环境的出现成为面向对象技术发展的一个重要里程碑。80年代中期硬件的发展使C到C++过渡平滑,推出了相应工具及面向对象集成环境,使OOP模式进入主流。80年代中后期,面向对象分析与设计的研究开始发展。进入90年代,面向对象软件工程成了许多软件产品的建造笵型。(1)对象(object)是现实世界中个体或事物的抽象表示。封装了其属性及相关的操作。属性表示对象的性质,属性值规定了对象所有可能的状态。对象的操作指出了该对象具有的行为并提供了对外的服务。六盘水师范学院孙新杰14(2)类(class)是具有相同属性和相同操作的对象的抽象。通常用类名、类的属性、类的操作三方面的内容来定意一个类。一个具体对象是类的一个实例。(3)消息(message)是一个对象发送给另一个对象的操作请求。消息一般由三部分组成:对象名、消息名、参数。消息传递是对象与外部世界相互通信的唯一途径。(4)方法(method)是对象操作的实现,描述了对象中操作的算法和响应消息的方式。六盘水师范学院孙新杰15(5)继承(inheritance)是子类自动的共享其父类中定义的属性和操作的机制,该机制构成了类的层次结构。较高层的父类称为基类、超类、一般类。子类称为派生类、特殊类。子类除了继承父类的特征,还可有自己的特征。继承有传递性,子类能继承上层的全部特征。继承性使得相似的对象可以共享程序代码和数据结构,从而简化了创建类及对象的工作量,基类解决一般性问题,派生类解决特殊问题,提高了软件的可重用性。继承性还使得软件便于维护,当需要扩充软件原有功能时,从要修改的类中派生出一个子类,在该子类中添加新的代码。六盘水师范学院孙新杰16(6)多态(polymorphism)指在类的不同层次上可以使用相同的操作名。同一操作名可有不同的实现方式,运行时可动态地选择哪一个算法。多态性增加了软件的灵活性,可扩充性,通用功能的操作放在高层,不同地实现这一功能的行为放在低层,以实现不同的相应。六盘水师范学院孙新杰177.4几种面向对象方法20世纪80年代以来,出现了几十种面向对象软件开发方法。每一种都有自己的符号体系和开发过程,都支持以下基本活动:•标识类及对象•描述类及对象之间的关系•定义类的属性和操作1、Booch方法Booch是面向对象方法最早的提出者之一,提出了面向对象软件工程的概念。提出了“微开发过程”和“宏开发过程”的思想。六盘水师范学院孙新杰18微开发过程:定义一组分析任务,包括标识类和对象以及类和对象的语义、定义类和对象间的关系、描述类和对象的动态行为。宏开发过程:将微过程反复应用,并包含了体系结构设计的计划活动:•将相似的对象聚集到独立的模块;•描述对象管理、内存管理、错误处理等其它功能的实施;•可使用原型对上述任务进行精化;•将同时执行的进程分配到不同的处理机。该方法提出建立以下模型:类图、对象图、状态转移图、时序图、模块图、进程图。六盘水师范学院孙新杰192、Coad/Yourdon方法著名的OOA/OOD方法,也是最早的面向对象的分析与设计方法之一。简单、易学。OOA阶段的任务:•标识类及对象•定义结构(一般-特殊结构、整体-部分结构)•划分主题•定义属性及对象间的实例连接•定义服务及对象间的消息连接上述任务迭代进行,产生5个层次的问题域模型(主题层、类及对象层、结构层、属性层、服务层)六盘水师范学院孙新杰20OOD阶段的活动:•问题域部分•人机交互部分•任务管理部分•数据管理部分3、OMT方法Rumbaugh等人提出的对象建模技术(ObjectModelTechnology,OMT),该方法强调了三种模型,并将软件开发过程划分为以下几个阶段:(1)系统分析•问题描述•建立对象模型产品:对象模型=对象图+数据字典六盘水师范学院孙新杰21•建立动态模型产品:动态模型=状态图+事件跟踪图•建立功能模型产品:功能模型=数据流图+约束(2)系统设计•将系统分解为各个子系统•确定问题中固有的并发性•将各子系统分配给处理器•数据存储管理•全局资源管理•选择软件控制机制•边界条件处理六盘水师范学院孙新杰22(3)对象设计对分析模型细化:•将三种模型结合起来以获得对象类上的操作。如功能模型中的加工,动态模型中对应一个事件的活动。•设计实现操作的算法•优化数据访问路径•实现系统设计中的控制机制•为提高继承而调整类结构•设计对象之间的关联•将类和关联集成到模块中六盘水师范学院孙新杰234、Jacobson方法也称OOSE方法。最大特点是强调使用实例(Use-Case),每一个用例就是一个使用系统的方式,用例的执行将引发执行一系列与行为相关的事务。该方法将用例贯穿于整个开发阶段,并在用例描述中引入了角色或参与者(Actor)的概念。角色指使用系统的人以及与系统相互作用的软硬件环境。该方法还将对象区分为实体对象(业务对象)、接口对象(界面对象)和控制对象。需求分析阶段活动:定义潜在的角色、识别问题域中的对象和关系、基于需求规格说明和角色的需要描述用例。设计阶段的活动:从用例的描述中发现与设计有关的对象,并描述其属性、行为和关联。同时把所有用例的行为分派给每个对象。六盘水师范学院孙新杰247.5统一建模语言UMLUML(UnifiedModelingLanguage)产生于90年代中期。它不仅统一了Booch、OMT和OOSE方法中的概念和表示法,而且对其作了进一步扩展,最终成为在面向对象技术领域占主导地位的、并被大众所接受的标准建模语言。1、UML概述UML的发展历程(下图)UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行可视化建模。UML不是一个开发过程,也不是一个方法,但允许任何一种开发过程和面向对象方法使用它。六盘水师范学院孙新杰25Booch’93OMT-2UML0.8UML0.9&0.91UML1.0UML1.1UML同行专家意见OMG认证10/9510/96&9/96OMG审核,1/97OMG修正,9/97OMG采纳为标准,11/97UM
本文标题:第7章面向对象软件工程的概念
链接地址:https://www.777doc.com/doc-203414 .html