软件设计和体系结构清华大学出版社1第2章软件模型和描述清华大学出版社2内容提要2.1什么是软件模型2.2软件模型的发展脉络2.3软件模型解析2.3.1功能模型2.3.2对象模型2.3.3组件模型2.3.4配置型组件模型2.3.5服务模型2.3.6抽象模型2.4深入认识软件模型2.4.1软件体系结构的描述2.4.2软件体系结构的设计2.5体系结构描述语言(ADL)2.5.1ADL简介2.5.2几种典型ADL的比较2.5.3描述体系结构行为2.6小结清华大学出版社3清华大学出版社42.1什么是软件模型模型(Model)一般是指客观世界中存在事物的一种抽象。软件模型(SoftwareModel)软件的一种抽象,目前,一般通过非数学模型来描述。软件模型可以看做一种元模型(MetaModel)。软件模型作为软件组成的最基本单元的抽象,既反映了软件体系结构构建的核心思想,也奠定了软件体系结构构建的基础。清华大学出版社52.2软件模型的发展脉络抽象模型配置型组件模型功能模型对象模型组建模型服务模型1、软件模型的发展轨迹清华大学出版社62.2软件模型的发展脉络2、技术、应用和软件模型的关系配置型组件模型功能模型对象模型组建模型服务模型抽象模型应用技术软件模型的发展事实上也就是不断动态地黏合应用与技术清华大学出版社72.3软件模型解析2.3.1功能模型嵌入式软件功能模型(FunctionModel)也可以称为过程模型或函数模型,它是模型化软件构建方法的第一个基本模型。功能模型的基本原理是将一个系统分解为若干个基本功能模块,基本功能模块之间可以按需进行调用。功能模型的核心之一,是基本功能模块的抽象及耦合。基本功能模块一般有函数(Function)和过程(Procedure)两种形式,前者返回处理结果,后者不返回处理结果。清华大学出版社8基本功能模块在PASCAL语言和C语言中的实现清华大学出版社9参数传递和函数返回实现的基本思想堆栈参数传递堆栈函数返回主调模块被调模块主调模块被调模块实际参数实际参数形式参数处理结果处理结果清华大学出版社10功能模型的核心之二——递归思想的具体实现递归(Recursion)用同一种处理方法来处理不断缩小规模的数据集,并通过不断综合小规模数据集的处理结果来得到大规模数据集的处理结果的一种问题处理方法。递归方法的基本思想数据规模足够小,可以直接求值通过综合得到值通过综合得到值通过综合得到值通过综合得到值得到最终的值大数据规模及其递归处理递归处理最小数据规模,直接处理递归思想在汉诺塔中的应用(3)(2)(1)(3)(1)(2)nn-11n-11n-11n-1n-21n-21n-21n个圆金片环从A到C,B作为临时用n-1个圆金片环从A到B,C作为临时用清华大学出版社13三种基本处理逻辑处理顺序单分支双分支多分支循环1循环2清华大学出版社142.3.2对象模型对象模型(ObjectModel)以对象为核心,通过对象进行数据组织的抽象并实现数据组织和数据处理的统一。对象(Object)客观世界中存在的事物,可以是具体的(如:人、猫、狗等)或者抽象的(如:缓冲池、堆栈等)。对象有型和值之分对象模型的核心之一对数据类型的抽象。对象模型的核心之二同构(或同族)对象关系的定义,这种关系体现在继承和多态两个方面。清华大学出版社15对象描述的基本视图清华大学出版社162.3.3组件模型组件模型(ComponentModel)在对象模型的基础之上,强调了异族对象关系以及独立性问题。组件模型以接口(Interface)为核心。组件的基本结构……组件封装体组件对象组件对象组件对象组件接口组件接口组件接口……清华大学出版社17MicrosoftCOM组件的封装结构组件对象定义工厂类……资源类型库......……组件的封装(宿主)(物理组件/制造及发行单元)组件(逻辑组件/软件功能集成单元)COMDLLCoClassInterfaceFunctionFactoryClass清华大学出版社18MicrosoftCOM组件的运行时结构库应用客户客户应用代理本地服务应用占位COM库本地SCM注册表清华大学出版社19组件集成的基本原理客户组件对象组件对象应用总线总线服务①注册②查找③调用……命名持久化属性安全事务复合文档型框架进行程序构造的基本原理组件实例组件实例组件实例组件实例组件之间关系清华大学出版社21一个样例清华大学出版社22DCOM运行时结构库应用客户客户应用代理远程服务器应用占位COM库本地SCM注册表RPCSS.DLL专用协议专用协议COM库本地SCM注册表RPCSS.DLL清华大学出版社232.3.4配置型组件模型配置型组件模型(ConfigurableComponentModel)又称为服务器组件模型,它专门针对应用服务器,定义其基于组件的基础结构模型。在传统的分布式对象计算模型中,软总线提供的附加基础服务需要被业务逻辑代码显式地使用。然后对于响应大量客户端的服务器而言,基础服务的提供涉及系统资源的有效利用,基础服务需要与资源管理技术一起使用。因此,如果这两者都由业务逻辑代码来显式使用,那么应用开发的复杂度就会急剧增大。清华大学出版社24配置型组件模型的基本实现思想…………业务逻辑处理系统基础服务P1P2PnP1P2Pn.NET模块及装配件的基本结构装配件DLL打包清单IL代码元数据(a)单DLL(模块)文件装配件DLL打包清单IL代码元数据(b)单EXE(模块)文件资源装配件DLL打包清单IL代码元数据(c)多DLL(模块)文件模块IL代码元数据模块IL代码元数据资源.NET应用程序结构应用程序应用域2应用域1装配件2装配件1模块MachineXOSProcessBOSProcessACLRAppDomainA.NET.NETAppDomainB.NET.NETAppDomainC.NET.NETCLRAppDomainD.NET.NET.NET.NET.NET.NET(a)组件对象、应用程序域和进程的关系.NETA.NETB.NETC.NETD.NETA.NETB.NETCDLL.NETD模块.NETE(逻辑)可部署包组件包模块包(b)应用程序可部署包清华大学出版社272.3.5服务模型服务(Service)指一个封装着高级业务概念、实现公共需求功能、可远程访问的独立应用程序模块。服务一般由数据、业务逻辑、接口及服务描述构成服务模型的标准主要是WebServices。WebServices以XML作为最基本的通用描述规范,并以此定义出各种规范。清华大学出版社28服务的一般结构服务……接口A--操作1--操作2……接口B--操作1--操作2……服务合约服务合约业务逻辑数据清华大学出版社29服务模型的基本原理服务中介服务使用者服务提供者服务查找服务调用服务发布明确服务提供者和服务使用者,并通过服务中介实现两者的耦合清华大学出版社30服务模型的抽象作用Web服务客户应用程序具体实现平台和语言未知的通信平台和语言相关的通信抽象层:实现隔离目前,服务模型的标准主要是WebServices。WebServices以XML(ExtensibleMarkupLanguage,可扩展标记语言)作为最基本的通用描述规范,并以此定义出各种规范。例如,服务定义、描述、访问、发布及集成等。XML作为一种集成技术具体抽象具体抽象类型和实例XMLSchema结构项XMLInfoset元素和特性XML1.0+Namespace实体和文档XML1.0文件和分组特定操作系统和协议扇区和位流特定硬件面向传输与存储类和对象特定应用程序类型和实例XMLSchema结构项XMLInfoset元素和特性XML1.0+Namespace实体和文档XML1.0组件特定组件标准接口、类型特定组件面向组件集成类和对象特定应用程序清华大学出版社32面向互联网的Web服务对象ASP.NETWebServiceWebServer(IIS)COM+组件SOAP客户Microsoft.NET平台面向新一代Web应用的开发,通过在开发工具VisualStudio.NET中提供VisualC#Projects中的ASP.NETWebService模版类型以及建立支持属性编程的新型程序设计语言C#,直接支持面向WebServices的应用开发。清华大学出版社332.3.6抽象模型抽象模型主要包括基于归纳思维策略的可恢复程序语句组件模型和基于演绎思维策略的元模型。可恢复程序语句组件模型,通过书签机制来实现其可恢复特性。书签是指一个物理恢复点,对应于可恢复程序语句组件中的一个逻辑定位点及可恢复程序语句组件实例的当前执行状态。清华大学出版社34书签机制的完整解析逻辑定位点1逻辑定位点2……逻辑定位点n书签1书签2……书签n监听器(1)执行中以逻辑定位点1及当前执行状态通过书签管理器建立书签1并放弃当前执行(3)从逻辑定位点1及当前执行状态恢复执行(2)外部事件外部事件外部事件可恢复语句组件书签管理器注:逻辑定位点2恢复执行后,整个可恢复程序语句组件执行完毕可恢复程序语句组件的基本模型可恢复执行逻辑基本执行逻辑可恢复程序基本结构程序复合语句组件复合语句组件可恢复程序语句组件可恢复程序语句组件可恢复程序语句组件基于可恢复程序语句组件模型的可恢复程序,是由可恢复程序语句组件和复合语句组件及其逻辑关系定义所建立的一个复合语句组件。亦即,可恢复程序本质上也是一个复合语句组件,其描述的控制流是相对独立的某种业务工作流。可恢复程序设计思想与面向对象设计思想的思维通约性Class……Class……Class基本类型基本类型基本类型……复合语句组件……复合语句组件……复合语句组件可恢复程序语句组件……可恢复程序语句组件可恢复程序语句组件可恢复程序的执行流程启动运行时加载程序描述按程序描述创建程序实例维护程序实例的状态程序实例执行完成?释放程序实例书签管理器书签书签书签程序实例空闲?外部事件到达?钝化实例恢复相应程序实例停止运行时YNYNNY清华大学出版社382.4深入认识软件模型2.4.1软件体系结构的描述1.非形式化描述(缺陷)语义模糊由语义模糊引起的沟通障碍无法实现系统验证不适于描述体系结构行为清华大学出版社392.形式化描述形式化描述可以用于系统描述,而且可以在不同层次上进行描述。形式化描述在体系结构行为描述上更胜一筹。形式化描述使得系统验证变得可行。清华大学出版社40几种典型的形式化描述Petri网Z语言形式化描述方法还存在如下问题说明与实际代码的差距仍然巨大。受本身性质所限,形式化描述方法很难与软件开发过程整合。清华大学出版社412.4.2软件体系结构的设计水平型设计运用通用建模设计工具和表达语言所进行的软件体系结构的设计。垂直型设计运用面向体系结构的专用建模设计工具及其表达模型所进行的软件体系结构的设计。这种专用工具的典型代表是Microsoft的VSTS(VisualStudioTeamSystem)ArchitectureEdition。清华大学出版社422.5体系结构描述语言(ADL)2.5.1ADL简介ADL(ArchitectureDescriptionLanguage,体系结构描述语言)一种用于描述软件与系统结构的计算机语言。ADL中的元素包括:构件(Components)操作(Operations)模式(Patterns)闭包(Closure)规格说明(Specification)清华大学出版社432.5.2几种典型ADL的比较WRIGHTC2DarwinACMExADLπ-ADLKDL清华大学出版社442.5.3描述体系结构行为CCSCSPπ演算清华大学出版社452.6小结软件模型是软件体系结构赖以建立的基础。本章首先介绍了软件模型以及软件模型对软件体系结构的作用然后介绍了软件模型的发展