第1章 软件体系结构概论1.软件发展阶段的划分、各阶段注重的方面及代表性语言; 2.软件重用的概念; 软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。 软件重用的目的是使非结构化、非标准化程序及数据变为结构化、标准化,并形成大量能重用的软件构件和模块。 软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。可重用的元素称作软构件(简称为构件),可重用的软件元素越大,我们就说重用的粒度越大。 软件重用技术优点:可减少重复工作,提高软件生产率、缩短开发周期。同时,由于软构件大都经过严格的质量认证,因此有助于改善软件质量,大量使用构件,软件的灵活性和标准化程度也可得到提高。 3.对象方法与构件方法的区别; 1.对象方法重视分析与设计,构件方法重视开发与部署; 2.面向对象设计关注设计时系统中实体之间的关系; 3.面向构件的设计将这种关系扩展到系统生命周期的其他阶段,特别是产品阶段和部署阶段; 4.构件的概念; 构件是指语义完整、语法正确和有可重用价值的单位软件,在软件重用过程中可以明确辨识;结构上,它是语义描述、通讯接口和实现代码的复合体。 构件与对象在概念上有重叠,对象是类的实例,在最简单的情况下,一个构件可以只包含一个类,但大多数情况下,一个构件包含多个协作的类。广义上,一个构件可以是程序构件,也可以是其他独立的部署单元,如一个文本文件、一个图片、一个数据文件、一个脚本等 ◎ 构件表示 构件用一边有两个小矩形的一个长方形表示,它可以用实线与代表构件接口的圆圈相连。 ◎ 构件图 构件图表示构件之间的依赖关系。每个构件实现(支持)一些接口,并使用另一些接口。 5.典型的构件实现模型 ◎ 构件实现模型的三个主要流派 1.OMG(Object Management Group,对象管理集团)的CORBA(Common Object Request Broker Architecture,通用对象请求代理结构) 2.Sun的EJB(Enterprise Java Bean) 3.Microsoft的DCOM(Distributed Component Object Model,分布式构件对象模型) 6.构件的分类与组织 (1)关键字分类法:通过定义一个层次结构来描述构件。 (2)刻面分类法:对领域进行分析,并标识出一组基本的描述特征,这些特征称为刻面。 (3)超文本组织方法 7.构件重用 ◎ 检索与提取构件 :(1)基于关键字的检索(2)刻面检索法(3)超文本检索法(4)其他检索方法 ◎ 理解与评价构件:(1)构件的功能与行为;(2)相关的领域知识;(3)可适应性约束条件与例外情形;(4)可以预见的修改部分及修改方法。 ◎ 修改构件:理想的情形是对库中的构件不作修改而直接用于新的软件项目。 但是,在大多数情况下,必须对构件进行或多或少的修改,以适应新的需求。为了减少构件修改的工作量,要求开发人员尽量使构件的功能、行为和接口设计更为抽象化、通用化和参数化。 ◎ 构件组装:(1)基于功能的组装技术(2)基于数据的组装技术(3)面向对象的组装技术 第2章 软件体系结构建模 1.了解“4+1”视图模型由哪些视图组成; 2.体系结构的基本元素; 1、逻辑视图:逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。在面向对象技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图。 逻辑视图标记符号 2、开发视图:也称模块视图,主要侧重于软件模块的组织和管理。开发视图通过系统输入输出关系的模型图和子系统图来描述。在开发视图中,最好采用4-6层子系统,而且每个子系统仅仅能与同层或更低层的子系统通讯,这样可以使每个层次的接口既完备又精练,避免了各个模块之间很复杂的依赖关系。设计时要充分考虑,对于各个层次,层次越低,通用性越强,这样,可以保证应用程序的需求发生改变时,所做的改动最小。开发视图所用的风格通常是层次结构风格。 开发视图的标记符号 3、进程视图:侧重于系统的运行特性,主要关注一些非功能性的需求。进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。它也定义逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。 l 主动对象:主动对象也称为并发对象、并发任务或者线程。一个并发对象拥有自己的控制线程,并能独立于其他对象而执行。 l 被动对象:被动对象等待其他对象来调用它们的操作,并且从不启动任何行动。被动对象也能调用其他被动对象中的操作,但被动对象没有控制线程,因此是被动类的实例。 l 顺序应用:由一组被动对象组成,并且仅有一个控制线程。在顺序应用中,仅支持同步的消息通信(过程调用或方法调用)。 l 并发应用:通常有几个并发对象,每个对象都拥有自己的控制线程。并发应用支持异步的消息通信。 l 并发对象间的协作:当并发对象相互协作时,会出现以下方面的问题。 Ø 互斥问题:当并发对象需要互斥地访问资源时,会出现互斥问题,也称为多读者-写者问题。 Ø 同步问题:当两个并发对象需要互相同步它们的操作时,就会发生同步问题。 Ø 生产者/消费者问题:当并发对象需要相互通信从而将数据从一个并发对象传向另一个并发对象时,就会发生生产者/消费者问题。 进程视图的标记符号 4、物理视图:主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。解决系统拓扑结构、系统安装、通讯等问题。当软件运行于不同的节点上时,各视图中的构件都直接或间接地对应于系统的不同节点上。因此,从软件到节点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小。 物理视图中使用的标记符号 5、场景:场景可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。在开发体系结构时,它可以帮助设计者找到体系结构的构件和它们之间的作用关系。也可以用场景来分析一个特定的视图,或描述不同视图构件间是如何相互作用的。场景可以用文本表示,也可以用图形表示。 3.体系结构的核心模型。 Ø 构件: Ø 构件是具有某种功能的可重用的软件模板单元,表示系统中主要的计算元素和数据存储。 Ø 构件的种类:复合构件,原子构件。 Ø 连接件: Ø 连接件表示构件之间的交互; Ø 简单的交互:管道,过程调用,事件广播;复杂的交互:客户-服务器通信协议,数据库与应用之间的SQL连接。 Ø 配置:表示构件的拓扑逻辑和约束; Ø 构件只能通过接口与外界环境交互; Ø 构件的接口由一组端口组成。 Ø 角色:连接件也有接口,其接口由一组角色组成;每个角色定义了所连接的参与者; Ø 连接件有两个角色或多个角色,如消息传递连接件的角色是sender和receiver。 第3章 软件体系结构风格 1.有哪些种类的体系结构风格 ◎ 数据流风格:管道/过滤器;批处理序列。 ◎ 调用/返回风格:主程序/子程序;面向对象风格;层次结构。 ◎ 独立构件风格:进程通讯;事件系统。 ◎ 虚拟机风格:解释器;基于规则的系统。 ◎ 仓库风格:数据库系统;超文本系统;黑板系统。 2.重点掌握C2风格 C2风格:通过连接件绑定在一起的按照一组规则运作的并行构件网络。 C2风格中的系统组织规则如下: ◎ 系统中的构件和连接件都有一个顶部和一个底部; ◎ 构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的; ◎ 一个连接件可以和任意数目的其它构件和连接件连接; ◎ 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。 C2风格的特点: ◎ 系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起; ◎ 所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的; ◎ 构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。 3.客户机/服务器风格 ◎ C/S软件体系结构是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术,C/S体系结构定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上。 ◎ C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络。 1、◎ 服务器 (1)数据库安全性的要求; (2)数据库访问并发性的控制; (3)数据库前端的客户应用程序的全局数据完整性规则; (4)数据库的备份与恢复。 2、◎ 客户应用程序 (1)提供用户与数据库交互的界面; (2)向数据库服务器提交用户请求并接收来自数据库 服务器的信息; (3)利用客户应用程序对存在于客户端的数据执行应 用逻辑要求。 3、◎处理流程:(如图) C/S优点: ◎ C/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。 ◎ 系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。 ◎ 在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。 C/S缺点: ◎ 开发成本较高 ◎ 客户端程序设计复杂 ◎ 信息内容和形式单一 ◎ 用户界面风格不一,使用繁杂,不利于推广使用 ◎ 软件移植困难 ◎ 软件维护和升级困难 ◎ 新技术不能轻易应用 4.正交软件体系结构风格的特点 正交软件体系结构定义:由组织层和线索的构件构成。层是由一组具有相同抽象级别的构件构成。线索是子系统的特例,它是由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的实现无关或关联很少,在同一层中的构件之间是不存在相互调用的。如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的。 正交软件体系结构特点: ◎ 正交软件体系结构由完成不同功能的n(n > 1)个线索(子系统)组成; ◎ 系统具有m(m > 1)个不同抽象级别的层; 5.了解CORBA的技术规范。 ◎ 接口定义语言(IDL): CORBA利用IDL统一地描述服务器对象(向调用者提供服务的对象)的接口。IDL本身也是面向对象的。它虽然不是编程语言,但它为客户对象(发出服务请求的对象)提供了语言的独立性,因为客户对象只需了解服务器对象的IDL接口,不必知道其编程语言。IDL语言是CORBA规范中定义的一种中性语言,它用来描述对象的接口,而不涉及对象的具体实现。在CORBA中定义了IDL语言到C、C++、SmallTalk和Java语言的映射。 ◎ 接口池(IR): CORBA的接口池包括了分布计算环境中所有可用的服务器对象的接口表示。它使动态搜索可用服务器的接口、动态构造请求及参数成为可能。接口池提供持久对象的服务。这些对象在运行时以可用的形式表示IDL信息。 ◎ 动态调用接口(DII): CORBA的动态调用接口提供了一些标准函数以供客户对象动态创建请求、动态构造请求参数。客户对象将动态调用接口与接口池配合使用可实现服务器对象接口的动态搜索、请求及参数的动态构造与动态发送。当然,只要客户对象在编译之前能够确定服务器对象的IDL接口,CORBA也允许客户对象使用静态调用机制。显然,静态机制的灵活性虽不及动态机制,但执行效率却胜过动态机制。 ◎ 对象适配器(OA): 在CORBA中,对象适配器用于屏蔽ORB内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用ORB内部的某些功能。这些功能包括服务器对象的登录与激活、客户请求的认证等。 第4章 软件体系结构描述 1.了解软件体系结构的描述方法; ◎ 图形表达工具 ◎ 模块内连接语言 ◎ 基于软构件的系统描述语言 ◎ 软件体系结构描述语言 :主要的体系结构描述语言有Aesop、MetaH、C2、Rapide、SADL、Unicon和Wright等,尽管它们都描述软件体系结构,却有不同的特点。 2.体系结构描述语言(ADL)的三个基本元素是什么? ADL是在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。其三个基本元素是:构件、连接件、体系结构配置。 3.了解C2对体系结构的描述方法 ◎ C2和其提供的设计环境(Argo)支持采用基于事件的风格来描述用户界面系统,并支持使用可替换、可重用的构件开发GUI的体系结构。 ◎ 在C2中,连接件负责构件之间消息的传递,而构件维持状态、执行操作并通过两个名字分别为“top”和“bottom”的端口和其它的构件交换信息。 ◎ 每个接口包含一种可发送的消息和一组可接收的消息。构件之间的消息要么是请求其它构件执行某个操作的请求消息,要么是通知其他构件自身执行了某个操作或状态发生改变的通知消息。 ◎ 构件之间的消息交换不能直接进行,而只能通过连接件来完成。每个构件接口最多只能和一个连接件相连,而连接件可以和任意数目的构件或连接件相连。 ◎ 请求消息只能向上层传送而通知消息只能向下层传送。 ◎ 通知消息的传递只对应于构件内部的操作,而和接收消息的构件的需求无关。 ◎ C2对构件和连接件的实现语言、实现构件的线程控制、构件的部署以及连接件使用的通讯协议等都不加限制。 4. 了解UML的4层元模型体系结构 1、元-元模型层定义了元模型层的规格说明语言,由UML最基本的元素“事物(thing)”组成,代表要定义的所有事物。UML中有四种事物:结构事物、行为事物、分组事物、注释事物。 2、元模型层为给定的建模语言定义规格说明,由UML基本元素组成,包括面向对象和面向构件的概念。这一层的每个概念都是元元模型中“事物”概念的实例。 3、模型层用来定义特定软件系统的模型,由UML模型组成,这一层的每个概念都是元模型层中概念的实例。 4、用户对象用来构建给定模型的特定实例,由UML模型的例子组成,这一层中的每个概念都是模型层的一个实例(通过分类),也是元模型层模型的一个实例。这一层的模型通常称为对象模型或实例模型。 5. 了解OCL语言及其应用 对象约束语言OCL(Object Constraint Language)语言:OCL是开发的形式化表示法,以使UML的使用者向规格说明中加入更精确的内容;OCL具有逻辑数学及离散数学的所有优势,然而,OCL的设计者决定在OCL语句中只能使用ASCII字符,而不能使用传统的数学表示方法。 OCL的语义与语法:为了使用OCL,软件工程师需要从一个或多个UML图(通常为类图、状态图、活动图)开始。为此,需要增加说明图中元素的OCL表达式。这些表达式被称为约束:从模型导出的任何实现必须保证每一个约束为恒真。OCL表达式包括操作对象的操作符。 完整表达式的结果总是一个布尔值,即其值为true或false。对象可以是OCL 聚集类的实例,集合和序列是OCL 聚集类的两个子类。在计算OCL表达式的上下文中,对象self是UML图的元素。可以从self对象使用点(dot)符号导航获得其它对象。例如: 如果self是具有属性a的类C,则self.a计算存储在a中的对象的值。 应用:块处理器 6. 了解UML的扩展机制。 扩展的基础是UML的模型元素,利用扩展机制可以给这些元素的变形加上新的语义。 UML提供了三种扩展机制: 1、构造型 (stereotype): 构造型是在一个已定义的模型元素的基础上构造的一种新的模型元素。构造型也允许引入新的图形符号,以便为模型提供可视化提示,适应特定领域。 2、标记值 (tagged value):标记值是对UML元素的特性的扩展,允许在元素的规格说明中创建新的信息。标记值用字符串表示,字符串有标记名、等号和值。它们被规则地放置在大括弧内。 3、约束 (constraint):约束 是对建模元素的语义上的限制。约束是用文字表达式表示的语义限制。约束用大括弧内的字符串表达式表示。约束可以附加在表元素、依赖关系,或注释上。 5、第5章 统一建模语言 1.掌握UML的事物、关系和图 UML的构造块:事物、关系、图 公共机制:是指达到特定目标的公共UML方法,主要包括规格说明、修饰、公共分类、扩展机制4种。 规则:UML用于描述事务的语义规则,分别是为事物、关系和图命名。 包括范围、可见性、完整性及执行。 事物 关系 图(具体画法内容过多见第五章ppt) 2.了解UML的扩展机制。(如第四章6知识点) 第8章 基于服务的体系结构 1.掌握Web服务的相关概念 Web服务是一种新兴的Web应用模式,是一种崭新的分布式计算模型,是Web上数据和信息集成的有效机制。 Web服务就如同Web上的构件编程,开发人员通过调用Web应用编程接口,将Web服务集成进他们的应用程序,就如同调用本地服务一样。 Web服务的关键是Web服务体系结构,它是由平台搭建商提供的基于Internet的应用解决方案,这些方案可以用标准的格式通过Internet进行调用,从而完成对业务的集成。 Web服务是一个能够使用XML消息通过网络来访问的接口,这个接口描述了一组可访问的操作。 (1)由SOAP+WSDL包装的Object。 (2)适应松散偶合的网络环境,可通过Web访问,手段是SOAP Message。 (3) 服务的行为、输入/输出都可使用WSDL描述。 2. 掌握Web服务体系结构 在Web服务解决方案中,有三种逻辑构件:服务提供者、服务请求者、服务注册中心(可选)。 服务提供者:负责定义并实现服务,使用WSDL对服务进行描述,并将该描述发布到服务注册中心,供服务请求者查找并绑定使用。 服务请求者:是服务的使用者,是查找、绑定并调用服务,或与服务进行交互的应用程序。 服务注册中心:服务注册中心是连接服务提供者和服务请求者的纽带,服务提供者在此发布服务描绘,服务请求者在此查找所需要的服务。 与Web服务相关的操作:发布、查找和绑定。 发布:服务提供者对服务进行描述,并发布(注册)到服务注册中心服务器上。 查找:服务请求者向服务注册中心发出服务查询请求。服务注册中心提供规范的接口来接受服务请求者的查询请求。 绑定:服务的调用。分析从注册服务器中得到的调用该服务所需要的详细绑定信息,根据这些信息,服务请求者就可以实现对服务的远程调用。 Web服务开发生命周期可分为构建、部署、运行和管理四个阶段。 构建:包括开发和测试Web服务的实现,定义服务接口描述和定义服务实现描述。 部署:部署阶段包括向服务请求者或服务注册中心发布服务接口和服务实现的定义,以及把Web服务的可执行文件部署到执行环境中。 运行:在运行阶段可以调用Web服务。 管理:管理阶段包括持续的管理和经营Web服务应用程序。在这个阶段必须解决安全性、可用性、性能、服务质量和业务流程问题。 3. 了解Web服务的核心技术 (1) XML: XML是W3C制定的作为Internet上数据交换和表示的标准语言,是一种允许用户定义自己的标记的语言。 (2) 简单对象访问协议SOAP :SOAP定义了一种简单的机制,使其可以在松散的、分布式环境中使用XML交换结构化的和类型化的信息。 (3) Web服务描述语言WSDL :WSDL是一种XML格式,用于将网络服务描述为一组端点,这些端点对包含面向文档或面向过程信息的消息进行操作。 (4) 统一描述、发现和集成协议UDDI:UDDI是一套基于Web的、分布式的、为Web服务提供信息注册中心的实现标准和规范。 4.了解SOA的概念,SOA与Web服务的关系 SOA: ◎ SOA(Service-Oriented Architecture)即面向服务体系架构; ◎面向服务(Service-Oriented)是在面向对象(Object-Oriented,OO)、基于组件∕构件(Component-Based)、分布式计算、Web技术以及系统集成等已有方法和技术的基础上,提出的一种新的软件开发范型 SOA与Web服务的关系: Web服务虽然不是实现SOA的唯一方式(比如:用CORBA也能实现SOA),但它是目前最典型也是最好的实现方式。 Web服务使SOA的概念能够落到实处,它已被工业界、学术界广泛接受、应用和研究。所以,通过Web服务来理解SOA是一种有效的学习方式。 5.掌握在.Net平台上开发Web服务、发布Web服务、使用Web服务的方法。(详见第八章ppt) 第9章 企业应用模型与体系架构 1.了解企业应用模型 应用服务器可以为服务器端构件提供:一致性,事务处理与负载平衡,从而简化了编程工作 但在J2EE之前,这些API是应用服务器相关的! 1、Java EE 2、富互联网应用体系结构 2. Java EE体系结构及核心技术 Java EE提供了一套完整的解决所有这些问题的框架方案:(1)提供了分布式、可移植构件的框架(2)为构件与应用服务器提供标准API (3)简化了服务器端中间层构件的设计 1、Java EE架构 容器与构件: 2、Java EE的核心技术: 核心技术一:EJB EJB (Enterprise JavaBeans) :EJB不是一个具体的产品,而是一个Java服务器端组件开发的规范,软件厂商根据它来实现EJB服务器。使用EJB,Java程序员可以将一些定义明确的程序块组合到一起,从而方便、快捷地构建分布式应用程序。使用EJB可以使整个程序分块明确,并且EJB可以使用其它EJB或JDBC等服务,从而增强了分布式应用程序的可扩展性和性能。EJB规范在简化分布式应用程序开发复杂性方面做了大量的工作,所以EJB程序员不必太担心事务处理、多线程、资源管理等方面的问题,可以专注于支持应用所需的商业逻辑,而不用担心周围框架的实现问题。EJB的使用增强了整个系统程序的可靠性、可管理性和可移植性。EJB容器是:EJB的运行环境。它提供规范中定义的接口使EJB类访问所需的服务。容器厂商也可以在容器或服务器中提供额外服务的接口。EJB服务器是:管理EJB容器的高端进程或应用程序,并提供对系统服务的访问。EJB服务器也可以提供厂商自己的特性,如优化的数据库访问接口,对其他服务(如CORBA服务)的访问。一个EJB服务器必须提供支持对JNDI的名字服务和TS事务服务的可访问。 EJB组件的三种类型: (1) Entity Bean(实体Bean) :实体Bean代表数据对象,通常代表的是数据表记录集的一行,一个实体EJB可以同时与多个客户进行交互。 (2) Session Bean(会话Bean) :会话EJB向客户提供一定的服务,如:特定的商业逻辑、数据库查询等; (3) Message-Driven Bean(消息驱动Bean):以上两种Bean以同步方式为EJB客户提供服务。消息驱动Bean采用Java消息服务JMS,客户程序可以将消息发送给消息队列,消息驱动Bean检索消息队列,执行其内容。 实现EJB的三个关键构件: EJBHome 接口(扩展javax.ejb.EJBHome接口):使用了factory设计模式,定义了创建、查找EJB的方法。 EJBObject接口(扩展javax.ejb.EJBObject接口):使用了proxy设计模式,定义了在bean中实现的业务逻辑方法。 Bean实现类(实现javax.ejb.EntityBean/SessionBean):实现业务逻辑。 核心技术二:CORBA CORBA体系结构:核心ORB CORBA(Common Object Request Broker Architecture)是分布式对象体系结构,它独立于平台,也独立于语言。 在这个体系结构中,对象可以被本机上的客户或远程客户通过方法激活来存取。客户(对象或应用)无须知道被调用对象(称为服务对象)的运行环境,也无须知道实现这个对象的编程语言,客户只要知道服务对象的逻辑地址和提供的接口。这种互操作性的关键是IDL(Interface Definition Language、接口定义语言),IDL说明对象接口中的方法,这些方法可以被其他对象(或应用)激活。 核心技术三:RMI RMI(Remote Method Invoke)是一种被EJB使用的更底层的协议,正如其名字所表示的那样,RMI协议调用远程对象上方法,使用序列化方式在客户端和服务器端的对象之间传递数据。 RMI和CORBA相比: 两者的关键差别在于语言环境,Java RMI是一个分布式对象计算的纯Java解决方案(如,在Java RMI中,对象的接口用Java定义,而不是用IDL); 其次,CORBA没有定义安全服务,而Java RMI继承了Java的安全性; 再者,CORBA有不同的实现,不同的独立软件开发商的不同实现均有独特性,这使得在不同平台上的匹配比较困难,而且不是所有CORBA产品开发商都支持所有平台,而几乎所有平台都支持Java虚拟机,因此Java RMI具有更高的可移植性。如果客户对象和服务对象都基于Java虚拟机,那么Java RMI是分布对象计算的最好选择。 最后,IIOP已经提供了Java RMI和CORBA的互操作能力,而且两者的发展有互相借鉴的趋势。 核心技术四:JSP JSP是服务器端的脚本语言,是以Java和Servlet为基础开发而成的动态网页生成技术,它的底层实现是Java Servlet。 JSP(Java Server Pages)页面由HTML代码和嵌入其中的Java代码所组成。客户端向服务器发出请求以后,服务器对页面中的Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。 特点:面向对象,跨平台,和Servlet一样稳定,可以使用Servlet提供的API,克服了Servlet的缺点。 应用:一般和JavaBeans结合使用,从而将界面表现和业务逻辑分离。 JSP与ASP的相似之处: 都是运行于服务器端的脚本语言,两者都是动态网页生成技术。 这两项技术都使用HTML来决定网页的版面,都是在HTML 代码中混合某种程序代码,由语言引擎解释执行程序代码。HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。 JSP与ASP的不同之处: JSP是由Sun推出的一项技术,是基于JavaServlet以及整个java体系的Web开发技术,利用这一技术可以建立先进、安全和跨平台的动态网站。ASP是MS公司推出的技术,只能在MS的平台上运行,无法实现跨平台,也无安全性保障。 ASP下的编程语言是 VBScript 之类的脚本语言,而JSP 使用的是Java。 ASP 与 JSP 还有一个更为本质的区别:两种语言引擎用完全不同的方式处理页面中嵌入的程序代码。在 ASP 下, VBScript 代码被 ASP 引擎解释执行;在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。 核心技术五:Servlet Servlets(=Server +Applet):是一些运行于Web服务器端的Java小程序,用来扩展Web服务器的功能。 Servlet是一种扩展Web服务器功能的技术,而且由于它是用Java编写的,所以能够访问整个Java API库,包括用于访问企业数据库的JDBC API。 Servlets用特定的Java解决方案替代了其它的Web服务器方编程模式(如:CGI,ISAPI等),因而继承了Java的所有特性(跨平台、多线程、OO)。 用来编写Servlets的Servlet API对于服务器环境和协议没有任何特殊的要求,所以Servlets具有很强的可移植性,也不像利用CGI程序等其它方式那样具有性能局限。 Servlets也同样使用HTTP协议与客户端进行通讯,所以有时也称Sevlets为“HTTP Servlets”。 Java Servlet和JSP的比较: 相似: 两者都是基于Java的技术,所以都继承了Java的所有特性(跨平台、多线程、OO ),都可以使用Java强大的API。 两者工作方式相似:JSP代码先被JSP容器转换为Servlet代码再编译为类。 两者在J2EE体系结构中的工作层次相同,都负责与客户端的连接。 不同: 编程方式不同。Servlets是一些运行于Web服务器端的Java小程序;而JSP是脚本,编写起来更简单容易。 应用目的不同。Servlet主要用于从客户端接收请求信息,而JSP主要负责将服务器端信息传送到客户端。 使用JSP的真正意义在于:可以将界面设计和业务逻辑设计分离。 核心技术六:JavaBean JavaBean是基于Java的组件模型,类似Microsoft的COM组件。 运行JavaBean最小的需求是JDK1.1或者以上的版本。 在Java平台中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。 对于程序员来说,最好的一点就是JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。 JavaBean传统的应用在于可视化的领域,如AWT下的应用。自从Jsp诞生后,JavaBean更多的应用在非可视化领域,在服务器端应用方面表现出来了越来越强的生命力。 JavaBean规范: 编写JavaBean就是编写Java 类,这个类创建的一个对象称作一个Bean。为了能让使用这个Bean 的应用程序构建工具知道其属性和方法,只需在类的方法命名上遵守以下规则: (1)如果类的成员属性的名字是xxx,那么为了更改或获取成员属性的值,在类中可以使用以下两个方法: getXXX():用来获取属性xxx setXXX():用来修改属性xxx (2)对于boolean 类型的成员属性,即布尔类型的属性,允许使用“is”代替上面的“get”和“set”。 (3)类中方法的访问属性都必须是public的。 (4)类中包含公共无参的构造方法。 核心技术七:JDBC JDBC是一组API,定义了用来访问数据源的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源。 JDBC对数据库的访问具有平台无关性。 JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题。 JDBC的目标是使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。 核心技术八:JDBC JDBC是一组API,定义了用来访问数据源的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源。 JDBC对数据库的访问具有平台无关性。 JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题。 JDBC的目标是使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。 核心技术九:JMS JMS技术:JMS是一种基于 Java的技术,因此是平台无关的。它为消息服务定义了通用 Java 语言接口,支持最常见的消息传递模型(发布/订阅和点到点)。通过对JMS(Java消息服务)API的访问可实现面向消息的通信。JMS通常用来实现异构系统之间的松散集成。 消息系统的特点:1、消息是异步的。2、允许不同的应用程序之间进行通讯。3、消息应用程序之间是对等的,服务器与客户机之间没有明显的界限。 消息的生产者可以消费消息,消费消息的应用程序也可以生产消息。 消息系统的优势:1、与平台无关,与在网络上所处的位置无关。2、是可伸缩、可扩展的。需更大的吞吐量,只需添加硬件即可。可支持数万台客户机,每秒钟可处理事件的数目可达几万。3、在异构的环境中可以很好地工作。4、是健壮的,发送接受可以失败,网络也可以失败,这时Messaging System可以继续执行它的职责。 J2EE核心技术中最常用的技术:EJB、 CORBA、 RMI、JSP、Java Servlet、JavaBean、JDBC、XML、JMS、…… 开发大型企业级应用:异构、分布、数据交换CORBA、 RMI、XML、JMS、…… 3. 富互联网应用体系结构,富客户端的主要技术。 RIA是Web开发和部署模式的一种演变。 “富”的含义有两种,分别是丰富的数据模型和丰富的用户界面。 1、丰富的数据模型使得在客户端可以进行运算,以及异步发送、接收数据。 2、丰富的用户界面本质上是将界面分解为由单独个体组成,来适应局部改变、服务器交互,以及客户端内部构件的通信。 3、伴随着丰富的用户界面,用户可以从早期的服务器响应影响整个界面的运作模式,迁移到只对发出请求的特定区域进行改变的模式上来。 1、富客户模型将界面分解为许多既可以与用户直接交互,又可以与服务器进行通信的小单元模块。从而将应用系统的设计从以一个个相对独立的页面为中心转移到以构件为中心,使客户层变得更加灵活。 2、RIA模型是一种事件模型,客户端和服务器端交互数据是不同步的,这样用户就可以控制构件创建信息发送给服务器和处理服务器的响应。 富客户端的主要技术: 技术一:AJAX AJAX技术是由几种技术组合而成,包含基于XHTML和CSS标准的表示;使用DOM进行动态显示和交互;使用XMLHttpRequest与服务器进行异步通信;使用JavaScript进行绑定。 XHTML:是一个基于XML的标记语言,结合了部分XML的强大功能和大多数HTML的简单特性。 CSS:一个CSS样式单就是一组规则,样式再根据特定的一套规则级联起来。CSS提供了从内容中分离应用样式和设计的机制. DOM:为XML文档的已解析版本定义了一组接口。解析器读入整个文档,构建一个驻留内存的树结构,代码就可以使用DOM接口来操作这个树结构。 JavaScript:JavaScript是一种粘合剂,使AJAX应用的各部分集成在一起 。在AJAX中, JavaScript主要用来传递用户界面上的数据到服务端,并返回结果。 XMLHttpRequest对象用来响应通过HTTP传递的数据,一旦数据返回到客户端,就可以使用DOM将数据显示在网页上。 技术二:Mashup Mashup通过开放API、RSS(Really Simple Syndication,内容聚合)等方式将不同内容聚合起来,它与AJAX的结合增加了与用户的交互。 Mashup也是多种技术的综合使用。 Mashup聚合的内容可概况为服务和数据。 如果聚合的是服务,则通过调用API来获取各个源的功能, Mashup最常用的API类型一般有两种,分别是REST和SOAP;如果聚合的是数据,则使用RSS或Atom来获取数据。 RSS是一种对网站内容进行描述和同步的格式,是目前使用最为广泛的Web资源发布方式。RSS基于XML标准、内容包装和投递协议,任何内容源都可以采用这种方式来发布。 Atom基于XML标准及HTTP协议,借鉴了各种版本RSS的使用经验,开发一个新的网站内容摘要格式以解决RSS存在的问题。 Atom比RSS具有更大的弹性。 第10章 体系结构的分析与测试 1.了解迁移矩阵的概念 状态图是一个有向图,在状态图中,每一个结点Si表示一个状态,从状态Si到状态Sj的迁移通过连接边(Si,Sj)表示。 假设Ri表示状态Si的可靠性,Pij表示从状态Si到Sj的迁移的概率,基于状态图可以定义一个迁移矩阵M和可达值M(i,j) M(i,j) = Ri×Pij M(i,j)表示能够从状态Si到状态Sj成功迁移的概率。 假设S={S1, S2, …, Sn}是一个状态的集合,S1是开始状态,Sn是最终状态。Mk(i,j)表示通过k个迁移从Si成功到达Sj的概率。 2. 掌握顺序结构风格、并行/管道-过滤器结构风格、容错结构风格、调用-返回结构风格的可靠性建模方法 顺序结构风格:在顺序结构风格中,系统的运行按构件的顺序依次执行。 假设体系结构是由k个构件顺序组成,其迁移矩阵通过下式构造: M(i,j) = 0, Si不能够到达Sj ,for 1小于等于i,j小于等于k M(i,j) = RiPij, Si能够到达Sj 其中, M(i,j) 是状态Si能够成功到达Sj的概率。 并行/管道-过滤器结构风格:在这种风格中,多个构件可以在同一状态下并行执行。 具有k个构件的并行/管道-过滤器体系结构风格,其迁移矩阵通过下式构造: 容错结构风格:是由一个原始构件和一系列的备份构件组成,原始构件和备份构件都放在一个并行结构下,使得当一个构件出现错误时,其他构件能够继续提供服务。 容错构件聚集在如下图状态Sb1内: 假设所有备份构件的迁移概率与原始构件的迁移概率是相同的。从状态S1到状态Sk-2和状态Sk-1时,如果状态S2出现错误,则使用S3的状态,如果S2和S3都出现错误,则使用S4的状态。 迁移矩阵: 调用-返回结构风格 :在调用-返回风格中,被调用构件可能被多次调用,而调用构件只执行一次。 M(1,3) = R1P13; M(2,1) = R2P21 ; 由于从状态S1可以多次迁移到状态S2,在计算M(1,2)时,只考虑从状态S1到状态S2迁移的概率,不考虑状态S1的可靠性。 假设存在由k个构件组成的调用-返回结构风格,其状态数量为k,其迁移矩阵通过下式构造: M(i,j) = RiPij, Si可以到达Sj M(i,j) = Pij, Si可以到达Sj ,Sj是被调用构件 M(i,j) = 0, Si不能到达Sj 其中, 1小于等于i,j小于等于k。 3. 了解软件体系结构风险分析的主要步骤。 分析方法的主要步骤: 1、采用体系结构描述语言ADL对体系结构进行建模。 2、通过模拟方法执行复杂性分析。 3、通过FMEA(failure mode and effect analysis)和模拟运行执行严重性分析。 4、为构件和连接件开发启发式风险因子。 5、建立用于风险评估的CDG。 6、通过图论中的算法执行风险评估和分析。 第12章 基于体系结构的软件开发 1.了解设计模式的基本组成成分及常用的设计模式 基本组成成分: ◎ 模式名称:通常用来描述一个设计问题、它的解法和后果,由一到两个词组成。 ◎ 问题:告诉我们什么时候要使用设计模式、解释问题及其背景。 ◎ 解决方案:描述设计的基本要素,它们的关系、各自的任务以及相互之间的合作。 ◎ 效果:描述应用设计模式后的结果和权衡。比较与其他设计方法的异同,得到应用设计模式的代价和优点。 常用的设计模式: ◎ Coad的面向对象模式 ◎ 代码模式 ◎ 框架应用模式 ◎ 形式合约 2. 了解基于体系结构的设计方法 基于体系结构的软件设计(architecture-based software design, ABSD)方法为软件系统的概念体系结构提供构造方法,概念体系结构描述了系统的主要设计元素及其关系。概念体系结构代表了在开发过程中作出的第一个选择,它是达到系统质量和业务目标的关键,为达到预定功能提供了基础。 ABSD方法有三个基础: (1) 功能分解:在功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术; (2) 通过选择体系结构风格来实现质量和业务需求。 (3) 软件模板的使用:利用一些软件系统的结构。 软件模板是一个特殊类型的软件元素,包括描述所有这种类型的元素在共享服务和底层构造的基础上如何进行交互。 软件模板还包括属于这种类型的所有元素的功能,这些功能的例子有:每个元素必须记录某些重大事件,每个元素必须为运行期间的外部诊断提供测试点等。 3. 了解基于体系结构的软件开发模型(ABSDM) 基于体系结构的软件开发模型(ABSDM)将软件开发过程划分为体系结构需求、设计、文档化、复审、实现、演化等六个子过程。 4. 掌握Petri网的组成及特点 组成:通常在Petri 网的图形表示中, 用圆圈(○) 表示位置, 矩形(□) 表示变迁, 箭头( -> )表示弧,小黑点(·) 表示标记。 1、位置用于描述可能的系统局部状态(条件或状况); 2、变迁用于描述改变系统状态的事件; 3、弧使用两种方法规定局部状态和事件之间的关系:它们引述事件能够发生的局部状态;由事件所引发的局部状态的转换。 4、标记包含在位置中,它们在位置中的动态变化表示系统的不同状态。 特点: (1) 形式化的语义:Petri网具有严密的数学基础,为形式化描述和语法建立奠定了基础。每个Petri网都有形式化的语义定义,一个Petri网模型加上相应的语义就能够描述一个业务过程。 (2) 直观的图形表示:Petri网是一种图形化的描述语言,比较容易理解。 (3) 丰富的分析技术:如系统活性、有界性、安全性计算。 (4) 基于状态的表示方式:软件工程领域的图形表示方法一般是基于事件的表示。Petri网基于状态的描述能清晰地区分一个任务是处于授权状态,还是处于执行状态。 5.掌握使用Petri网对基本的软件过程进行表示。 一个基于体系结构的软件过程Petri 网模型:模型把整个基于体系结构的软件过程划分为体系结构需求、设计、文档化、复审、实现、演化和退役等七个子过程, 其软件过程Petri网如图所示: 10、第13章 软件产品线体系结构 1.软件产品线的组成 软件产品线概念: ◎ 将利用了产品间公共方面、预期考虑了可变性等设计的产品族称为产品线。 ◎ 产品线就是由在系统的组成元素和功能方面具有共性和个性的相似的多个系统组成的一个系统族。 ◎ 软件产品线就是在一个公共的软件资源集合基础上建立起来的,共享同一个特性集合的系统集合。 ◎ 一个软件产品线由一个产品线体系结构、一个可重用构件集合和一个源自共享资源的产品集合组成,是组织一组相关软件产品开发的方式。 软件产品线的组成:主要由两部分组成:核心资源、产品集合。 1、核心资源是领域工程的所有结果的集合,是产品线中产品构造的基础。也有组织将核心资源库称为“平台”。 2、核心资源必定包含产品线中所有产品共享的产品线体系结构,新设计开发的或者通过对现有系统的再工程得到的、需要在整个产品线中系统化重用的软件构件。 3、产品线体系结构和构件用于软件产品线中产品的构建,是核心资源最重要的部分。 2.产品线的过程模型,框架及应用框架的概念 1、双生命周期模型 2、SEI模型 ◎ 循环重复是产品线开发过程的特征,也是核心资源开发、产品线开发以及核心资源和产品之间协作的特征; ◎ 核心资源开发和产品开发没有先后之分; ◎ 管理活动协调整个产品线开发过程的各个活动,对产品线的成败负责; ◎ 核心资源开发和产品开发是两个互动的过程,三个活动和整个产品线开发之间也是双向互动的。 3、三生命周期模型 ◎ Fred针对大型软件企业的软件产品线开发对双生命周期模型进行了改进,提出了三生命周期模型; ◎ 为有多个产品线的大型企业增加企业工程流程,以便在企业范围内对所有资源的创建、设计和重用提供合理规划。 框架的定义:框架是一个具有“插入点”集合的架构,可以适应特定的问题域。插入点使得软件工程师能够在架构内集成特定问题的类或功能。在面向对象的环境下,框架是相互协作的类的集合。 框架和设计模式有着明显的区别:设计模式比框架更抽象,框架可以用代码表示出来,但只有模式的举例才可以用代码表示出来。设计模式是比框架更小的体系结构元素。一个典型的框架包括一些设计模式,而设计模式却不包括框架。框架总是有特定的应用领域,而体系结构和设计模式几乎可以用在任何类型的应用程序中。 应用框架的定义: 由于特定领域的不同应用之间具有更多相似的特征,随着应用的发展和完善,某些带有整体性的应用模式被逐渐固定下来,经过抽象、设计和实现,就形成了特定的框架,也称为应用框架,包括基本构成元素和关系。软件产品线中的框架主要指的是应用框架。 Gamma:应用框架是为一个特定应用领域的软件系统提供可重用结构的一组相互协作的类的集合。 Buschmann:特定领域应用的框架称为应用框架。 Froehlich:应用框架就是某个领域公共问题的骨架式解决方案。框架为该领域所有应用提供公共的体系结构和功能基础。 3. 了解Web应用框架 Web应用框架通常采用多层软件体系结构,在JavaEE或.Net平台上实现模型-视图-控制器(MVC)设计模式,也会将一些服务集成到基础的业务对象中。 Web应用框架是基于被普遍接受的标准(例如,Java, .Net, XML, XSLT, JAAS, Servlet, JSP, JDBC, ADO.Net)和技术(例如,如构件技术、Agent技术等),使得有经验的开发者可以快速开发Web应用系统。 Web应用框架的分类:可以划分为基于请求的框架,基于构件的框架、混合框架、元框架和基于RIA(Rich Internet Application)的框架。 1、基于请求的框架与最初的CGI规格类似,每个请求本质上都是无状态的,通过引入服务器端会话,获得一定的状态,例如,WebWork、Struts、Beehive及Stripes框架。 2、基于构件的框架将请求处理部分抽象出来,将其逻辑封装到可复用的构件中,例如,JSF(JavaServer Faces)、Tapestry和Wicket框架。 3、混合框架是上面两种框架的组合,在基于请求的模型中控制所有数据和逻辑流,如RIFE框架。 4、元框架具有一组公共服务的核心接口和集成构件和服务的高度可扩展的骨架,元框架有时被认为是框架的框架,如Keel、Spring框架。 5、基于RIA的框架使用客户端容器模型,降低了与服务器的通信量,如DWR(Direct Web Remoting)、Echo2、JSON-RPC-Java框架。 4.框架的分类。 一般可以将软件框架分为以下几类:概念框架(如Zachman框架)、平台框架(如.Net框架,JavaEE框架)、开发框架(如Eclipse、Netbeans、OSGi等)及应用框架。 应用框架的种类非常多,从技术角度可以分为构件框架、服务框架、Web应用框架等。 由于平台框架和开发框架与具体的应用领域无关,也可将其称为基础框架。应用框架一般是基于基础框架开发的。 根据框架的使用和扩展方式,可以将框架分为: 1、黑盒框架通过构件/类的组合来支持重用和扩展。应用中的类由框架的不同构件组合而成。 2、白盒框架一般使用类的继承机制实现,由未完成的类组成,类有一个或多个抽象接口或虚方法。 具体的框架实际上都是“灰色” 的,是可继承和可组合方式的结合: 灰盒框架:可以分成三部分:固定的、可选择的和开放的;固定部分包含该领域最基本的功能,内建了应用的控制流;可选部分为该领域中相对固定的、应用特定的功能特征,即领域个性部分,用可组合的类和构件实现;开放部分针对一些无法准确估计和预测的功能特征,只能为其规定统一的接口和挂接点。 |
|