第1页:高级软件工程封面
高级软件工程:课程封面,标明课程名称。
第2页:课程内容与学时安排
课程介绍——一、授课内容与方式:
- 概述(1学时):课程内容设置背景与依据
- 软件构件(分布式对象)模型(20学时):CORBA(11)、COM(9)
- 软件体系结构(12学时):体系结构(6)、OMA(3)、DNA(3)
- 软件建模(开发过程与结果)(15学时):use case(3)、class(6)、sequence(6)
第3页:实习内容与成绩计算
5、其它话题(6学时):软件复用(领域工程、应用工程、再工程)、工程管理(CMM)。
二、实习内容与方式:分成两组,每人分别针对不同的领域,利用CORBA或者DCOM开发一个小系统,鼓励多人协作开发。
三、成绩计算方法:
- 自学材料,提交反馈意见与报告:20分
- 开发实习,提交程序及文档:30分
- 期末笔试,提交答卷:50分
第4页:参考文献(一)
四、参考文献:
- OMG,The Common Object Request Broker: Architecture and Specification,v2.31,1999.10
- 潘爱民,《COM原理与应用》,清华大学出版社,1999年11月
- Mary Shaw, David Garlan, Software Architecture, Prentice Hall, 1996
- OMG,Unified Modeling Language Specification,v1.3,1999年6月
其中1、4可以从 www.omg.org 或者 ftp.cs.pku.edu.cn 下载,2、3可以从书店购买。
第5页:参考文献(二)
- 邵维忠,杨芙清,《面向对象的系统分析》,清华大学出版社,1999年
- 王立福,张世琨,朱冰,《软件工程》,北京大学出版社,1997年
- 周之英,《现代软件工程》,科学出版社,1999年9月
- Thomas J. Mowbray, William A. Ruh, INSIDE CORBA, ADDISON-WESLEY,1997
- Ivar Jacobson, Grady Booch, James Rumbaugh, Unified Software Developing Process, Addison-Wesley, 1999.9
- Mark C. Paulk、Bill Curtis、Mary Beth Chrissis、Charles V. Weber,Capability Maturity Model for Software, Version 1.1,CMU/SEI-93-TR-024,1993
第6页:今日作业与提交方式
今日作业:在课程内容侧重点、授课方式等方面提出建设性建议并阐述理由。
提交方式:电子邮件,TO:wqx@cs.pku.edu.cn
第7页:第一章 概述
第一章 概述,包含以下内容:
- 1、软件发展现状
- 2、软件发展趋势
- 3、现有软件标准
- 4、软件工程研究范围的扩展
第8页:软件发展现状
1、软件发展现状:
- 已经存在大量正在运行的软件:金融、电信、航空航天等
- 软件的应用范围不断扩大:商务、交通、家电等,“无处不在的软件”
- 软件的规模与复杂性持续增加:越来越多的知识正在由软件进行显式表达
- 出现了大量与软件相关的标准
- 软件危机仍然存在(软件脱节):1968-2000
第9页:软件发展趋势
2、软件发展趋势:
- 遗留软件将继续发挥作用
- 软件应用范围将继续扩大,成为信息社会的物理设施
- 网络化软件将是发展重点
- 软件的可靠性与安全性日趋重要
- 工业化生产是必由之路
第10页:与软件相关的各种标准
3、与软件相关的各种标准:
与软件相关的各种标准| 领域 | 主流标准 |
|---|
| 网络协议 | ISO/OSI 与 TCP/IP |
|---|
| 软件构件 | CORBA 与 COM |
|---|
| 建模语言 | UML |
|---|
| 数据访问 | ODBC |
|---|
| 工程管理 | CMM 与 ISO(9001-3,15504) |
|---|
第11页:软件工程研究范围的扩展
4、软件工程研究范围的扩展。软件工程:“确立并使用正确的工程原理和方法,以便能够经济地获得可靠而有效的软件”。——Friedrich I. Bauer
- 原则:形式化、模块化等
- 方法与技术(过程及结果表示):开发方法(结果描述为主)——结构化方法、面向对象方法;开发模型(过程描述为主)——瀑布模型、渐进(增量)模型、螺旋模型、喷泉模型
- 工具
第12页:高级软件工程的研究定位
高级软件工程:以传统软件工程研究内容为基础,以面向对象技术、网络计算技术、软件复用技术为核心,以CORBA、COM、UML标准等为主要参考,讨论、研究软件开发过程中需要关注的新焦点。
- 新概念(原理):软件构件、体系结构
- 新方法(技术):过程与结果
- 软件复用与工程管理
第13页:传统与高级软件工程对比
传统软件工程与高级软件工程的构成对比:涵盖方法与技术、原则、工具三个层面,分别对应面向对象技术、分布计算技术、软件复用技术,并延伸到概念与原理、方法与技术、工具与环境三个层次。
本页以结构对比图为主,文字版为图中要素的罗列,建议对照原图理解层次关系。
第14页:第二章 软件构件
第二章 软件构件:本章以分布对象为核心,结合CORBA与COM介绍运行级大粒度构件的概念与原理。
第15页:什么是软件构件
- 构件
- 系统中可以明确辨识的构成成分
- 软件构件
- 软件系统中具有一定意义的独立构成成分
- 可复用软件构件
- 可以被多个软件系统所复用的、具有独立功能的软件系统构成成分;构件是可以被直接复用的软件实体
构件由构件接口与构件实现两部分组成。
第16页:构件分类
构件分类:
构件的纵向与横向分类| 分类维度 | 构件类型 |
|---|
| 纵向 | 系统级构件、应用构件(共性,面向领域) |
|---|
| 横向 | 界面构件(控件)、业务构件、数据访问构件 |
|---|
本课程重点关注应用构件与业务构件——这样的构件与分布对象技术中的构件(分布对象)概念完全吻合。
第17页:第二章 本章内容
本章内容:
- 一、分布对象技术发展过程
- 二、CORBA
- 三、COM
- 四、不同实现技术的比较
第18页:分布对象技术发展过程
程序 = 算法 + 数据结构;软件 = 程序 + 文档。
模块化是软件的规模与复杂性发展到一定程度时产生的必然结果。关注焦点的不同,形成了不同的技术:
- 数据与操作的封装 → 面向对象技术
- 利用网络计算环境 → 分布计算技术
- 利用已经开发出的代码 → 软件复用技术
第19页:模块形式与协作方式
不论哪种技术,模块形式及模块之间的协作方式是关键问题:
- 面向对象技术:对象,对象之间的关联
- 分布计算技术:不同节点上的运行程序及程序之间的通讯
- 软件复用技术:软件构件,软件构件的组装
第20页:模块间的三种关系
从运行时刻不同模块所处的进程考虑,两个模块之间存在如下三种关系:
- 同一进程内部:子程序、共享变量
- 同一机器的不同进程:操作系统提供进程间通讯
- 不同机器上:消息传递(TCP/IP)、远程过程调用 RPC(DCE)
模块化继续发展的结果之一即为分布对象。
第21页:分布对象技术
分布对象技术是面向对象技术、分布式计算(网络计算)技术、软件复用技术的结合,三者具有内在的一致性:自治、协作。
- 核心:分布对象模型,以及分布对象间的互操作
- 实现:OMG 的 CORBA、微软的 DCOM
第22页:CORBA 本节内容
二、CORBA,本节内容:
- 1、OMG与CORBA
- 2、CORBA对象模型
- 3、CORBA概述
- 4、IDL
- 5、ORB接口
- 6、IR
- 7、POA
- 8、举例(9、CCM)
第23页:OMG 组织简介
(1)OMG(www.omg.org):
- 成立于1989年4月
- 固定成员很少
- 不做开发:OMG不写任何代码
- 致力于利用现有的技术进行应用系统的集成
- 目前已经拥有超过1000个的成员:包括软件厂商、系统集成商以及最终用户
第24页:分布对象互操作与总线
(2)如何使分布对象互操作:类比计算机硬件中的模块及互联方式,分布对象之间需要类似“总线”的统一互联机制,才能彼此互操作。
本页以硬件总线示意图为主,文字版为图中要点,建议对照原图查看。
第25页:OMA 对象管理体系结构
OMA:Object Management Architecture,由以下部分构成:
- Object Request Broker(对象请求代理)
- Object Services(对象服务)
- Application Interfaces(应用接口)
- Domain Interfaces(领域接口)
- Common Facilities(公共设施)
第26页:OMG 发布的 CORBA 相关规范
OMG发布的与CORBA相关的规范:
- ORB:CORBA: Common Object Request Broker Architecture and Specification
- Object Services:CORBAservices: Common Object Services Specification
- Common Facilities:CORBAfacilities: Common Facilities Architecture
本章介绍CORBA的主要内容,其它规范的部分内容将在第三章中进行介绍。
第27页:CORBA 规范内容(一)
CORBA规范(2.3.1)内容,第一部分:CORBA CORE
- 第一章:对象模型,描述CORBA环境中的计算模型
- 第二章:CORBA综述,描述ORB结构,以及接口、实现信息
- 第三章:OMG IDL词法与语义,IDL被用于描述客户对象调用、对象实现提供的接口
- 第四章:ORB接口,定义ORB中不依赖于对象适配器的功能接口
- 第五章:值类型语义,描述通过值传送对象的语义
- 第六章:抽象接口语义,提供延迟至运行时刻决定对象由引用还是由值传送的机制
第28页:CORBA 规范内容(二)
- 第七章:动态调用接口(DII),客户端接口,允许动态创建并发出对象的请求
- 第八章:动态骨架接口(DSI),服务器端接口,可以从ORB向对象实现发出请求,该实现体不具有它所实现对象类型的编译知识
- 第九章:Any Values 的动态管理,描述动态 Any Values 的接口
- 第十章:接口池,描述ORB的一个组成部分,它管理并提供对对象定义集合的访问
- 第十一章:可移植对象适配器(POA),定义一组IDL接口,实现体用它们访问ORB功能
第29页:CORBA 互操作部分
第二部分:CORBA互操作
- 第十二章:互操作综述
- 第十三章:ORB互操作体系结构
- 第十四章:建立ORB间互操作的桥
- 第十五章:General Inter-ORB Protocol(GIOP)
- 第十六章:DCE ESIOP - Environment-Specific Inter-ORB Protocol(ESIOP)
第30页:CORBA 协作部分
第三部分:CORBA协作
- 第十七章:协作体系结构
- 第十八章:Mapping: COM and CORBA
- 第十九章:Mapping: OLE Automation and CORBA
- 第二十章:与非CORBA系统互操作
- 第二十一章:Interceptors
第31页:本节主要讲述内容
本节主要讲述内容(勾选部分):第一章 CORBA对象模型、第二章 CORBA综述、第三章 OMG IDL、第四章 ORB接口、第五章 值类型语义、第六章 抽象接口语义、第七章 动态调用接口、第八章 动态骨架接口、第九章 Any Values的动态管理、第十章 接口池、第十一章 可移植对象适配器(POA),以及应用程序具体开发步骤。
第32页:CORBA 对象模型概述
2、CORBA对象模型(概念):以客户/服务器模式为对象间互操作模型——客户向对象发出请求,对象执行服务。
第33页:对象与对象实现
对象实现:对象系统的实现,执行请求服务所需的计算活动;这些活动可以包括计算请求的结果和更新系统状态,在这个过程中可能发出其它请求。
实现模型包括两部分:
- 执行模型:描述如何执行服务
- 构造模型:描述如何定义服务
(1)对象:符合传统对象的语义,具有封装、继承、多态等特点。“对象是可标识的封装实体,提供客户可以请求的一个或多个服务”。
第34页:请求(Request)
(2)请求(request):客户通过发出请求来请求服务。“从客户的初始化开始,至与该初始化因果相关的最后一个事件之间的全部因果相关的事件序列”。
最后一个事件可能为:
- 客户从服务器接收到与请求相关的最后响应
- 服务器在单向请求的情况下处理完相关操作
- 与请求相关的事件序列因失败而终止
与请求相关的信息包括:操作、目标对象、零个或多个(实际)参数,以及可选的请求环境。
第35页:值与对象引用
- 值(Value)
- 任何可以作为合法请求(实)参数的皆可以是值。尤其是,一个值是一个OMG IDL数据类型的一个实例。
- 对象引用(object reference)
- 可靠地指示一个特定对象的值。特别地,每次在请求中使用引用时,对象引用将标识相同的对象(受到某些空间和时间的实际限制)。对象可以由多个不同的对象引用指示。
第36页:类型(Type)
(3)类型(type):类型是与一个定义在一组实体之上的谓词(结果为布尔型的单参数数学函数)相关联的可标识实体。如果谓词对于某个实体为真,那么该实体满足类型;满足类型的实体称为类型的成员。
类型用于在签名(signature,基调、函数头)中对可能的参数进行约束、特征化可能的返回结果。对象类型(object type)是成员为对象引用的类型。
第37页:操作(Operation)
(4)操作(operation):一个操作是一个指示不可分割原语的可标识实体,该原语是可以被请求的服务体。请求一个操作的活动被称为调用(invoking,唤起)操作,一个操作由操作标识符标识。
操作有一个描述请求参数合法值和返回值的签名,包括:
- 请求该操作时所需参数的规定
- 操作结果的规定
- 请求操作所引发例外处理的规定和它们附带的参数类型
- 可能影响请求的其它环境信息规定
- 客户预期从请求操作获得的执行语义指示
第38页:操作签名的一般形式
操作签名的一般形式:
[oneway] <op_type_spec> <identifier> (param1,...,paramL) [raises(except1,...,exceptN)] [context(name1,...,nameM)]
- 可选的 oneway 关键字指示对该操作的请求预期获得最佳效果语义;如果操作成功返回结果,则默认语义是只有一次,如果返回例外处理,则默认语义是最多一次
- <op_type_spec> 是返回结果的类型
- <identifier> 为接口中的操作提供名称
- 操作所需的操作参数以修饰符 in、out 或 inout 标记,指示信息流的方向(相对于执行请求的对象)
- 可选的 raises 表达式指示可以引发的用户定义例外处理;未提供时不会引发任何用户定义的例外处理
- 可选的 context 表达式指示将对对象实现有效的请求环境信息
第39页:接口(Interface)
(5)接口(interface):“接口是一组操作的描述,客户可以通过该接口向对象请求这些操作”。接口提供了句法描述,说明支持该接口的对象所提供的服务如何被访问。
- 一个对象满足一个接口,当且仅当它按照操作的规约通过接口的操作提供其服务
- 一个给定接口的接口类型是一个对象类型;一个对象引用满足该类型,当且仅当所引用的对象也满足该接口
- 接口是用 OMG IDL 指定的
- 接口继承提供的复合机制允许对象支持多个接口
第40页:值类型与抽象接口
- 值类型(value type)
- 一个实体,同时具有接口与结构的许多特征;它是关于客户可能请求的操作集合与可以由客户访问的状态集合的描述。值类型实例总是某种编程语言中的本地实在实现体,值类型是用 OMG IDL 指定的。
- 抽象接口(abstract interface)
- 一个实体,在运行时可能表示一个通常的接口,也可能表示一个值类型。实体运行时刻的类型取决于它们使用的语义。
第41页:属性(Attribute)
(6)属性(attribute):属性是接口的一部分,从逻辑上等价于声明一对辅助函数——一个获取属性的值(set)、一个设置属性的值(get)。属性可以是只读的。
第42页:CORBA 对象模型概念小结
概念小结:对象(Object)、请求(Request)、类型(Type)、接口(Interface)、操作(Operation)、属性(Attribute)。
思考:Class?为什么不同的体系中概念存在不一致?——视角不同、抽象层次不同(OOP、OOD、OOA、运行)。