搜档网
当前位置:搜档网 › 软件体系结构论文

软件体系结构论文

软件体系结构

论文

年级院系:

专业班级:

姓名:

学号:

指导老师:

2014年12月28日

目录:

一、软件体系结构概论 (1)

二、体系结构风格 (3)

三、UML语言 (5)

四、XML语言 (8)

五、动态软件体系结构 (10)

六、基于体系结构的软件开发 (12)

七、软件体系结构的评估 (12)

八、软件产品线体系结构 (12)

九、软件体系结构的发展方向 (13)

十、参考书籍 (14)

软件体系结构概论:

软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。

1、软件体系结构的定义:

虽然软件体系结构已经在软件工程领域中有着广泛的应用,但迄今为止还没有一个

被大家所公认的定义。许多专家学者从不同角度和不同侧面对软件体系结构进行了刻画,较为典型的定义有:

(1)软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理分布与合成,设计方案的选择、评估与实现等

(2)软件体系结构有四个角度,它们从不同方面对系统进行描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织。

(3)软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。

(4)一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中,"软件外部的可见特性"是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。

2、软件体系结构的发展历史:

与最初的大型中央主机相适应,最初的软件结构体系也是Mainframe结构,该结构下客户、数据和程序被集中在主机上,通常只有少量的GUI界面,对远程数据库的访问比较困难。随着PC的广泛应用,该结构逐渐在应用中被淘汰。

软件体系结构

在80年代中期出现了Client/Server分布式计算结构,应用程序的处理在客户(PC机)和服务器(Mainframe或Server)之间分担;请求通常被关系型数据库处理,PC机在接受到被处理的数据后实现显示和业务逻辑;系统支持模块化开发,通常有GUI界面。Client/Server 结构因为其灵活性得到了极其广泛的应用。但对于大型软件系统而言,这种结构在系统的部署和扩展性方面还是存在着不足。

Internet的发展给传统应用软件的开发带来了深刻的影响。基于Internet和Web的软件和应用系统无疑需要更为开放和灵活的体系结构。随着越来越多的商业系统被搬上Internet,一种新的、更具生命力的体系结构被广泛采用,这就是为我们所知的“三层/多层计算”。

。客户层(client tier)用户接口和用户请求的发出地,典型应用是网络浏览器和胖客户(如Java程序)

。服务器层(server tier)典型应用是Web服务器和运行业务代码的应用程序服务器

。数据层(data tier)典型应用是关系型数据库和其他后端(back-end)数据资源, 如Oracle和SAP、R/3等

兴起

六十年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上,随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。软件危机的程度日益加剧,现有的软件工程方法对此显得力不从心。对于大规模的复杂软件系统来说,对总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择已经变得明显重要得多。在此种背景下,人们认识到软件体系结构的重要性,并认为对软件体系结构的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。

3、应用现状:

自20世纪90年代后期以来,软件体系结构的研究成为一个热点。广大软件工作者已经

认识到软件体系结构研究的重大意义和它对软件系统设计开发的重要性,开展了很多研究和实践工作。

从软件体系结构研究的现状来看,当前的研究和对软件体系结构的描述,在很大程度上来说还停留在非形式化的基础上。软件构架师仍然缺乏必要的工具,这种工具应该是显式描述的、有独立性的形式化工具。

在目前通用的软件开发方法中,其描述通常是用非形式化的图和文本,不能描述系统期望的存在于构件之间的接口,不能描述不同的组成系统的组合关系的意义。难以被开发人员理解

C2风格的体系结构

,更不能用来分析其一致性和完整性等特性。

当一个软件系统中的构件之间几乎以一种非形式化的方法描述时,系统的重用性也会受到影响,在设计一个系统结构过程中的努力很难移植到另一个系统中去。对系统构件和连接关系的结构化假设没有得到显式的、形式化的描述时,把这样的系统构件移植到另一个系统中去将是有风险的,甚至是不可能的。

体系结构风格:

对软件体系结构风格的研究和实践促进了对设计的复用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。体系结构风格的不变部分使不同的系统可以共享同一个实现代码。只要系统是使用常用的、规范的方法来组织,就可使别的设计者很容易地理解系统的体系结构。例如,如果某人把系统描述为"客户/服务器"模式,则不必给出设计细节,我们立刻就会明白系统是如何组织和工作的。

通用体系结构风格的分类:

(1)数据流风格:批处理序列;管道/过滤器

(2)调用/返回风格:主程序/子程序;面向对象风格;层次结构

(3)独立构件风格:进程通讯;事件系统

(4)虚拟机风格:解释器;基于规则的系统

(5)仓库风格:数据库系统;超文本系统;黑板系统

C2体系

C2体系结构风格可以概括为:通过连接件绑定在一起的按照一组规则运作的并行构件网络。C2风格中的系统组织规则如下:

(1)系统中的构件和连接件都有一个顶部和一个底部;

(2)构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;

层次系统风格的体系结构

(3)一个连接件可以和任意数目的其它构件和连接件连接;

(4)当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。

上图是C2风格的示意图。图中构件与连接件之间的连接体现了C2风格中构建系统的规则。

上图3C2风格的体系结构

C2风格是最常用的一种软件体系结构风格。从C2风格的组织规则和结构图中,我们可以得出,C2风格具有以下特点:

(1)系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;

(2)所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的;

(3)构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。

UML 语言:

Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。

1、UML论述:

UML是在Booch、OMT、OOSE等面向对象的方法及其它许多方法与资料的基础上发展起来的。UML表示法集中了不同的图形表示方法,剔除了其中容易引起的混淆、冗余或者很少使用的符号,同时添加了一些新的符号。其中的概念来自于面向对象技术领域中众多专家的思想。

UML从考虑系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、序列图、协作图、构件图、部署图等9种图。这些图从不同的侧面对系统进行描述。系统模型将这些不同的侧面综合成一致的整体,便于系统的分析和构造。尽管UML和其它开发工具还会设计出许多派生的视图,但上述这些图和其它辅助性的文档是软件开发人员所见的最基本的构造。其中:

UML用例图与OOSE中的用例图类似。

UML的类图综合了OMT、Booch等面向对象方法中的类图。

UML状态图是对David Harel所提出状态图的改进。

UML活动图的基本语义和状态图大致相同,它类似于许多方法(包括面向对象技术之前的一些方法)中的工作流图。

UML的协作图是通过对Booch方法的对象图、Fusion方法的对象交互图以及其它一些方法中的相关图表改造而成的。

UML的构建图和部署图是在Booch方法中的模块和进程图(处理关系图、处理器图)的基础上发展起来的。

UML简化了建模方法,它扬弃了Booch、OMT或OOSE等方法中的糟粕,而代之以其它方法中的精华。UML一般不引入新的概念和符号,只有在没有现有的解决方法可以借鉴时,UML的开发者们才考虑加入新的概念。UML的开发者们是在设计一种语言(尽管只是一种图形化语言),因此必须在简明(所有元素一律用方框和文字表示)和繁琐(为每个

元素设计单独的符号)之间权衡。尽管如此,UML中还是增添了衍型和扩展机制等一些新的元素,因为这些元素在其它建模语言的实践中已经被证明是非常有用的。[2]

用例图主要用来描述用户、需求、系统功能单元之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。

【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。[3]

类图显示了一组类、接口、协作以及他们之间的关系。在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统。类加上他们之间的关系就构成了类图,类图中还可以包含接口、包等元素,也可以包括对象、链等实例。[4]

对象图(Object Diagram) 是显示了一组对象和他们之间的关系。使用对象图来说明数据结构,类图中的类或组件等的实例的静态快照。对象图和类图一样反映系统的静态过程,但它是从实际的或原型化的情景来表达的。

对象图显示某时刻对象和对象之间的关系。一个对象图可看成一个类图的特殊用例,实例和类可在其中显示。对象也和合作图相联系,合作图显示处于语境中的对象原型(类元角色)。

对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。

2、分类:

UML定义了5类,10种模型图

五种类图定义:

1.用例图:从用户角度描述系统功能,并指各功能的操作者。

2.静态图:包括类图,包图,对象图。

类图:描述系统中类的静态结构

包图:是包和类组成的,表示包与包之间的关系,包图描述系统的分层结构

对象图:是类图的实例

3.行为图:描述系统动态模型和对象组成的交换关系。包括状态图和活动图

活动图:描述了业务实现用例的工作流程

状态图:是描述状态到状态控制流,常用于动态特性建模

4.交互图:描述对象之间的交互关系

顺序图:对象之间的动态合作关系,强调对象发送消息的顺序,同时显示对象之间的交互

合作图:描述对象之间的协助关系

5.实现图:

配置图:定义系统中软硬件的物理体系结构

十种模型图定义:

(1)、用例图:展示系统外部的各类执行者与系统提供的各种用例之间的关系

(2)、类图:展示系统中类的静态结构

(3)、对象图:是类图的一种实例化图(对象图是对类图的一种实例化)

(4)、包图:是一种分组机制。在UML1.1版本中,包图不再看作一种独立的模型图)

3、特点:

(1)UML统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效的消除了各种建模语言之间不必要的差异。它实际上是一种通用的建模语言,可以为许多面向对象建模方法的用户广泛使用。

(2)UML建模能力比其它面向对象建模方法更强。它不仅适合于一般系统的开发,而且对并行、分布式系统的建模尤为适宜。

(3)UML是一种建模语言,而不是一个开发过程。

XML 语言

可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。

它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。

1、基本概念:

1998年2月,W3C正式批准了可扩展标记语言的标准定义,可扩展标记语言可以对文档和数据进行结构化处理,从而能够在部门、客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发。可扩展标记语言可以使我们能够更准确的搜索,更方便的传送软件组件,更好的描述一些事物。例如电子商务交易等。

它被设计用来传输和存储数据;[1]

超文本标记语言被设计用来显示数据。

它们都是标准通用标记语言的子集。

一、什么是可扩展标记语言?

可扩展标记语言是一种很像超文本标记语言的标记语言。

它的设计宗旨是传输数据,而不是显示数据。

它的标签没有被预定义。您需要自行定义标签。

它被设计为具有自我描述性。

它是W3C的推荐标准。

二、可扩展标记语言和超文本标记语言之间的差异

它不是超文本标记语言的替代。

它是对超文本标记语言的补充。

它和超文本标记语言为不同的目的而设计:

它被设计用来传输和存储数据,其焦点是数据的内容。

超文本标记语言被设计用来显示数据,其焦点是数据的外观。

超文本标记语言旨在显示信息,而它旨在传输信息。

对它最好的描述是:它是独立于软件和硬件的信息传输工具。

3、可扩展标记语言是W3C的推荐标准

XML 于1998 年2 月10 日成为 W3C 的推荐标准。

4、可扩展标记语言无所不在

超文本标记语言。

XML 是各种应用程序之间进行数据传输的最常用的工具。

2、语法:

标准通用标记语言常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。标准通用标记语言的问题就在于它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:

1、某些起始标签可以选择性出现结束标签或者隐含了结束标签。

2、某些起始标签要求必须出现结束标签,例如HTML中