⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 200603131358465.html

📁 软件工程的红包书
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<html>
<head><title>软件体系结构</title></head>
<center><h1>软件体系结构</h1></center>
<div><P align=right><FONT face=黑体><FONT color=#ff0033><a href="200604112229525.html" tppabs="http://www.itisedu.com/phrase/200604112229525.html" target="_new">中科永联</a>高级技术培训中心(</FONT></FONT><FONT face=黑体 color=#ff0033>www.itisedu.com</FONT><FONT face=黑体 color=#ff0033>)<STRONG><IMG src="200631314813885.jpg" tppabs="http://www.itisedu.com/manage/Upload/image/200631314813885.jpg" border=0></STRONG></FONT></P>
<P><FONT face=Verdana>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="200603131358465.html" tppabs="http://www.itisedu.com/phrase/200603131358465.html" target="_new">软件体系结构</a>是具有一定形式的结构化元素,即<a href="200604161439595.html" tppabs="http://www.itisedu.com/phrase/200604161439595.html" target="_new">构件</a>的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200603122156385.html  \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon.  \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200603122156385.html'" tppabs="http://www.itisedu.com/phrase/200603122156385.html" target="_new">体系结构</a>的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。 </FONT></P>
<P><FONT face=Verdana><STRONG>一、<a href="200604232134205.html" tppabs="http://www.itisedu.com/phrase/200604232134205.html" target="_new">软件</a>体系结构的定义</STRONG></FONT></P>
<P><FONT face=Verdana>  虽然软件体系结构已经在<a href="200602281725525.html" tppabs="http://www.itisedu.com/phrase/200602281725525.html" target="_new">软件工程</a>领域中有着广泛的应用,但迄今为止还没有一个被大家所公认的定义。许多专家学者从不同角度和不同侧面对软件体系结构进行了刻画,较为典型的定义有:<BR>  (1)Dewayne Perry和A1ex Wo1f曾这样定义:软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。 </FONT></P>
<P><FONT face=Verdana>&nbsp;&nbsp;&nbsp; (2)Mary Shaw和David Garlan认为软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理分布与合成,设计方案的选择、评估与实现等<BR>  (3)Kruchten指出,软件体系结构有四个角度,它们从不同方面对系统进行描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织。<BR>  (4)Hayes Roth则认为软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。<BR>  (5)David Garlan和Dewne Perry于1995年在IEEE软件工程学报上又采用如下的定义:软件体系结构是一个<a href="200604232224305.html" tppabs="http://www.itisedu.com/phrase/200604232224305.html" target="_new">程序</a>/系统各构件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。<BR>  (6)Barry Boehm和他的学生提出,一个软件体系结构包括一个软件和系统构件,互联及约束的集合;一个系统<a href="200603101518295.html" tppabs="http://www.itisedu.com/phrase/200603101518295.html" target="_new">需求</a>说明的集合;一个基本原理用以说明这一构件,互联和约束能够满足系统需求。<BR>  (7)1997年,Bass,Ctements和Kazman在《使用软件体系结构》一书中给出如下的定义:一个程序或<a href="200603021438435.html" tppabs="http://www.itisedu.com/phrase/200603021438435.html" target="_new">计算机</a>系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中,"软件外部的可见特性"是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。</FONT></P>
<P><FONT face=Verdana><STRONG>二、软件体系结构的发展历史</STRONG></FONT></P>
<P><FONT face=Verdana>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 与最初的大型中央主机相适应,最初的<a href="200602282202575.html" tppabs="http://www.itisedu.com/phrase/200602282202575.html" target="_new">软件结构</a>体系也是Mainframe结构,该结构下客户、数据和程序被集中在主机上,通常只有少量的GUI界面,对远程<a href="200602271218062.html" tppabs="http://www.itisedu.com/phrase/200602271218062.html" target="_new">数据库</a>的访问比较困难。随着PC的广泛应用,该结构逐渐在应用中被淘汰。 </FONT></P>
<P><FONT face=Verdana>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在80年代中期出现了<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604231337375.html  \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon.  \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604231337375.html'" tppabs="http://www.itisedu.com/phrase/200604231337375.html" target="_new">Client</a>/Server分布式计算结构,应用程序的处理在客户(PC机)和服务器(Mainframe或Server)之间分担;请求通常被关系型数据库处理,PC机在接受到被处理的数据后实现显示和业务逻辑;系统支持模块化开发,通常有GUI界面。<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604291147015.html  \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon.  \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604291147015.html'" tppabs="http://www.itisedu.com/phrase/200604291147015.html" target="_new">Client/Server结构</a>因为其灵活性得到了极其广泛的应用。但对于大型<a href="200602281706245.html" tppabs="http://www.itisedu.com/phrase/200602281706245.html" target="_new">软件系统</a>而言,这种结构在系统的部署和扩展性方面还是存在着不足。 </FONT></P>
<P><FONT face=Verdana>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Internet的发展给传统应用软件的开发带来了深刻的影响。基于Internet和Web的软件和应用系统无疑需要更为开放和灵活的体系结构。随着越来越多的商业系统被搬上Internet,一种新的、更具生命力的体系结构被广泛采用,这就是为我们所知的“三层/多层计算”。 </FONT></P>
<P><FONT face=Verdana>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 。客户层(<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604241148385.html  \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon.  \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604241148385.html'" tppabs="http://www.itisedu.com/phrase/200604241148385.html" target="_new">client tier</a>) 用户接口和用户请求的发出地,典型应用是网络浏览器和胖客户(如Java程序) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 。服务器层(server tier) 典型应用是Web服务器和运行业务代码的应用程序服务器 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 。数据层(data tier) 典型应用是关系型数据库和其他后端(back-end)数据资源, 如 <a href="200604040935115.html" tppabs="http://www.itisedu.com/phrase/200604040935115.html" target="_new">Oracle</a>和<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604080959005.html  \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon.  \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604080959005.html'" tppabs="http://www.itisedu.com/phrase/200604080959005.html" target="_new">SAP</a>、 R/3等 </FONT></P>
<P><FONT face=Verdana>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 三层体系结构中,客户(请求信息)、程序(处理请求)和数据(被操作)被物理地隔离。三层结构是个更灵活的体系结构,它把显示逻辑从业务逻辑中分离出来,这就意味着业务代码是独立的,可以不关心怎样显示和在哪里显示。业务逻辑层现在处于<a href="200603101709095.html" tppabs="http://www.itisedu.com/phrase/200603101709095.html" target="_new">中间层</a>,不需要关心由哪种<a href="200603051002565.html" tppabs="http://www.itisedu.com/phrase/200603051002565.html" target="_new">类型</a>的客户来显示数据,也可以与后端系统保持相对独立性,有利于系统扩展。三层结构具有更好的移植性,可以跨不同<a href="200603090857555.html" tppabs="http://www.itisedu.com/phrase/200603090857555.html" target="_new">类</a>型的平台工作,允许用户请求在多个服务器间进行负载平衡。三层结构中安全性也更易于实现,因为应用程序已经同客户隔离。应用程序服务器是三层/多层体系结构的组成部分,应用程序服务器位于中间层。</FONT></P>
<P><FONT face=Verdana><IMG src="200631314058114.jpg" tppabs="http://www.itisedu.com/manage/Upload/image/200631314058114.jpg" border=0></FONT></P><FONT face=Verdana>
<P><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如图所示,应用程序服务器运行于浏览器和数据资源之间,一个简单的实例是,顾客从浏览器中输入一个定单,web服务器将该请求发送给应用程序服务器,由应用程序服务器执行处理逻辑,并且获取或更新后端用户数据。 <BR><FONT size=1>摘自http://www.huihoo.com/<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604241155235.html  \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon.  \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604241155235.html'" tppabs="http://www.itisedu.com/phrase/200604241155235.html" target="_new">middleware</a>/application_server/1/a1.html</FONT></P>
<P><STRONG>三、软件体系结构的兴起</STRONG></P>
<P>  六十年代的<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200603112323405.html  \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon.  \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200603112323405.html'" tppabs="http://www.itisedu.com/phrase/200603112323405.html" target="_new">软件危机</a>使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上,随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。软件危机的程度日益加剧,现有的软件工程方法对此显得力不从心。对于大规模的复杂软件系统来说,对总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择已经变得明显重要得多。在此种背景下,人们认识到软件体系结构的重要性,并认为对软件体系结构的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。</P>
<P>  自从软件系统首次被分成许多模块,模块之间有相互作用,组合起来有整体的属性,就具有了体系结构。好的开发者常常会使用一些体系结构<a href="200603061709535.html" tppabs="http://www.itisedu.com/phrase/200603061709535.html" target="_new">模式</a>作为软件系统结构设计策略,但他们并没有规范地、明确地表达出来,这样就无法将他们的知识与别人交流。软件体系结构是设计抽象的进一步发展,满足了更好地理解软件系统,更方便地开发更大、更复杂的软件系统的需要。</P>
<P>  事实上,软件总是有体系结构的,不存在没有体系结构的软件。体系结构(<a href="200604241327575.html" tppabs="http://www.itisedu.com/phrase/200604241327575.html" target="_new">Architecture</a>)一词在英文里就是"建筑"的意思。把软件比作一座楼房,从整体上讲,是因为它有基础、主体和装饰,即<a href="200602281634075.html" tppabs="http://www.itisedu.com/phrase/200602281634075.html" target="_new">操作系统</a>之上的基础设施软件、实现计算逻辑的主体应用程序、方便使用的用户界面程序。从细节上来看每一个程序也是有结构的。早期的结构化程序就是以语句组成模块,模块的聚集和嵌套形成层层调用的程序结构,也就是体系结构。结构化程序的程序(表达)结构和(计算的)逻辑结构的一致性及自顶向下开发方法自然而然地形成了体系结构。由于结构化<a href="200602281641255.html" tppabs="http://www.itisedu.com/phrase/200602281641255.html" target="_new">程序设计</a>时代程序规模不大,通过强调结构化程序设计方法学,自顶向下、逐步求精,并注意模块的耦合性就可以得到相对良好的结构,所以,并未特别研究软件体系结构。</P>
<P>  我们可以作个简单的比喻,结构化程序设计时代是以砖、瓦、灰、沙、石、预制梁、柱、屋面板盖平房和小楼,而<a href="200603101726185.html" tppabs="http://www.itisedu.com/phrase/200603101726185.html" target="_new">面向对象</a>时代以整面墙、整间房、一层楼梯的预制件盖高楼大厦。构件怎样搭配才合理?体系结构怎样构造容易?重要构件有了更改后,如何保证整栋高楼不倒?每种应用领域需要什么构件(医院、工厂、旅馆)?有哪些实用、美观、强度、造价合理的构件骨架使建造出来的建筑(即体系结构)更能满足用户的需求?如同土木工程进入到现代建筑学一样,软件也从传统的软件工程进入到现代面向<a href="200603090845215.html" tppabs="http://www.itisedu.com/phrase/200603090845215.html" target="_new">对象</a>的软件工程,研究整个软件系统的体系结构,寻求建构最快、成本最低、质量最好的构造过程。<BR>  软件体系结构虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网络体系结构中很多宝贵的思想和方法,最近几年软件体系结构研究已完全独立于软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。软件体系结构研究的主要内容涉及软件体系结构描述、软件体系结构风格、软件体系结构评价和软件体系结构的形式化方法等。解决好软件的重用、质量和维护问题,是研究软件体系结构的根本目的。</P>
<P><STRONG>四、软件体系结构应用现状</STRONG></P>
<P>1 形成研究热点,仍处于非形式化水平</P>
<P>  自20世纪90年代后期以来,软件体系结构的研究成为一个热点。广大软件工作者已经认识到软件体系结构研究的重大意义和它对软件系统设计开发的重要性,开展了很多研究和实践工作。 </P>
<P>  从软件体系结构研究的现状来看,当前的研究和对软件体系结构的描述,在很大程度上来说还停留在非形式化的基础上。<a href="200604241327425.html" tppabs="http://www.itisedu.com/phrase/200604241327425.html" target="_new">软件构架</a>师仍然缺乏必要的工具,这种工具应该是显式描述的、有独立性的形式化工具。</P>
<P>  在目前通用的<a href="200603282233345.html" tppabs="http://www.itisedu.com/phrase/200603282233345.html" target="_new">软件开发</a>方法中,其描述通常是用非形式化的图和文本,不能描述系统期望的存在于构件之间的接口,不能描述不同的组成系统的组合关系的意义。难以被开发人员理解,更不能用来分析其一致性和完整性等特性。</P>
<P>  当一个软件系统中的构件之间几乎以一种非形式化的方法描述时,系统的重用性也会受到影响,在设计一个系统结构过程中的努力很难移植到另一个系统中去。对系统构件和连接关系的结构化假设没有得到显式的、形式化的描述时,把这样的系统构件移植到另一个系统中去将是有风险的,甚至是不可能的。 </P>
<P>2 软件体系结构的形式化方法研究</P>
<P>  软件体系结构研究如果仅仅停留在非形式化的框图阶段,已经难以适应进一步发展的需要。为支持基于体系结构的开发,需要有形式化建模符号、体系结构说明的分析与开发工具。从软件体系结构研究的现状来看,在这一领域近来已经有不少进展,其中比较有代表性的是美国卡耐基梅隆大学(Carnegie Mellon University)的Robert J.A11en于l997年提出的Wright系统。Wright是-种结构描述语言,该语言基于一种形式化的、抽象的系统模型,为描述和分析软件体系结构和<a href="200602281749185.html" tppabs="http://www.itisedu.com/phrase/200602281749185.html" target="_new">结构化方法</a>提供了一种实用的工具。Wright主要侧重于描述系统的软件构件和连接的结构、配置和方法。它使用显式的、独立的<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604230857465.html  \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon.  \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604230857465.html'" tppabs="http://www.itisedu.com/phrase/200604230857465.html" target="_new">连接模型</a>来作为交互的方式,这使得该系统可以用逻辑谓词符号系统,而不依赖特定的系统实例来描述系统的抽象行为。该系统还可以通过一组静态检查来判断系统结构规格说明的一致性和完整性。从这些特性的分析来说,Wright系统的确适用于对大型系统的描述和分析。</P>
<P>3 软件体系结构的建模研究</P>
<P>  研究软件体系结构的首要问题是如何表示软件体系结构,即如何对软件体系结构建模。根据建模的侧重点的不同,可以将软件体系结构的模型分为5种:结构模型、<a href="200603061723295.html" tppabs="http://www.itisedu.com/phrase/200603061723295.html" target="_new">框架</a>模型、动态模型、过程模型和功能模型。在这5个模型中,最常用的是结构模型和动态模型。</P>
<P>(1)结构模型<BR>  这是一个最直观、最普遍的建模方法。这种方法以体系结构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。研究结构模型的核心是体系结构描述语言。<BR>(2)框架模型<BR>  框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。 <BR>(3)动态模型<BR>  动态模型是对结构或框架模型的补充,研究系统的"大颗粒"的行为性质。例如,描述系统的重新配置或演化。动态可能指系统总体结构的配置、建立或拆除通信通道或计算的过程。这类系统常是激励型的。<BR>(4)过程模型<BR>  过程模型研究构造系统的步骤和过程。因而结构是遵循某些过程脚本的结果。<BR>(5)功能模型<BR>  该模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。它可以看作是一种特殊的框架模型。<BR>这5种模型各有所长,也许将5种模型有机地统一在一起,形成一个完整的模型来刻画软件体系结构更合适。例如,Kruchten在1995年提出了一个"4+1"的视角模型。"4+1"模型从5个不同的视角包括逻辑视角、过程视角、物理视角、开发视角和场景视角来描述软件体系结构。每一个视角只关心系统的一个侧面,5个视角结合在一起才能够反映系统的软件体系结构的全部内容。"4+1"模型如图1所示。 </P>
<P><IMG src="200631314213560.gif" tppabs="http://www.itisedu.com/manage/Upload/image/200631314213560.gif" border=0><BR>&nbsp;图1 "4+1"模型</P>
<P>4 发展基于体系结构的<a href="200602282307275.html" tppabs="http://www.itisedu.com/phrase/200602282307275.html" target="_new">软件开发模型</a></P>
<P>  软件开发模型是跨越整个<a href="javascript:if(confirm('http://www.itisedu.com/phrase/200604241237575.html  \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon.  \n\nDo you want to open it from the server?'))window.location='http://www.itisedu.com/phrase/200604241237575.html'" tppabs="http://www.itisedu.com/phrase/200604241237575.html" target="_new">软件生存周期</a>的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系。目前,常见的软件开发模型大致可分为三种类型:</P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -