(计算机软件与理论专业论文)基于体系结构的软件复用方法研究与实践.pdf_第1页
(计算机软件与理论专业论文)基于体系结构的软件复用方法研究与实践.pdf_第2页
(计算机软件与理论专业论文)基于体系结构的软件复用方法研究与实践.pdf_第3页
(计算机软件与理论专业论文)基于体系结构的软件复用方法研究与实践.pdf_第4页
(计算机软件与理论专业论文)基于体系结构的软件复用方法研究与实践.pdf_第5页
已阅读5页,还剩72页未读 继续免费阅读

(计算机软件与理论专业论文)基于体系结构的软件复用方法研究与实践.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华中科技大学硕士学位论文 摘要 ( 为了促进软件复用,人们提出并尝试了许多方法,但大多数方法都集中 在代码级的复用上。事实上,代码级实体并不能最有效地被复用。很多推测 和实例证明,最有效的复用方式通常为更高抽象层次上的软件设计复用。软 件体系结构复用是一种设计复用。它复用的是系统整体结构,其中可复用的 、 体系结构元素为复用的重点。一一 | 在对软件体系结构的概念进行了介绍之后,分析了常用的软件开发模 型,在此基础上详细阐述了基于体系结构的软件开发模型,并提出了基于体 系结构的软件复用方法和过程,而且用w r i g h t 语言对三层c s 模型进行 了形式化的描述。为了有效地对可复用体系结构元素( 组件、连接器和设计 模式) 进行获取、分类和存储,本文研究了体系结构元素的属性模型,提出 了种三元组的描述形式。在此基础上,使用b n f 具体描述了元素的属性, 并构造了一个可复用软件体系结构元素库,建立了s o f t m a k e r ( 支持软件复 用的软件开发环境) 下的一个基于软件体系结构复用的开发环境。且分析了 该系统的逻辑结构和开发方法,并阐述了系统的功能、总体设计和具体实现。 该系统能支持对体系结构元素的浏览、搜索、实例化和删除。通过该系统, 我们对软件体系结构复用过程的实现进行了尝试,力图促进软件体系结构复 用的实践化。 关键词:软件复用;代码级复用;软件体系结构:设计复用;软件体系结构 复用:基于体系结构的开发模嘞体系结构元素;元素的属性模型 华中科技大学硕士学位论文 a b s t r a c t a l t h o u g hn u m e r o u sm e c h a n i s m sf o rp r o m o t i n gs o f t w a r e r e u s eh a v eb e e n p r o p o s e da n di m p l e m e n t e do v e rt h ey e a r s ,m o s th a v ef o c u s e do nt h e r e u s eo f i m p l e m e n t a t i o nc o d el e v e l i nf a c t ,c o d e - l e v e la r t i f a c t sa r en o t t h eo n e st h a tc a n b ep r o f i t a b l yr e u s e d t h e r ei sm u c hc o n j e c t u r ea n ds o m ee m p i r i c a le v i d e n c e t h a t t h em o s te f f e c t i v ef o r m so f r e u s ea r eg e n e r a l l yf o u n da tm o r ea b s t r a c tl e v e l so f s o f t w a r ed e s i g n w ed i s c u s ss o f t w a r e a r c h i t e c t u r er e u s e ,w h i c hr e u e s e st h e g e n e r a ls t r u c t u r eo fs y s t e ma n da l s oi s ak i n do fd e s i g nr e u s e ,w h o s ee m p h a s i s a r er e u s a b l ea r c h i t e c t u r a le l e m e n t s w ei n t r o d u c et h ec o n c e p to fs o f t w a r ea r c h i t e c t u r e ,a n di l l u s t r a t e s o f t w a r e a r c h i t e c t u r e b a s e ds o f t w a r e d e v e l o p p i n g m o d e la f t e r a n a l y z i n g t h e g e n e r a l s o r w a r ed e v e l o p p i n gm o d e l s ,t h e np r e s e n ts o f t w a r er e u s em e t h o da n dp r o c e s s b a s e do ns o f t w a r ea r c h i t e c t u r e w h e r e a f t e rw eg i v e af o r m a ld e s c r i p t i o no f t h r e e t i e rc sm o d e lu s i n gw r i g h t i no r d e rt or e t r i e v e ,s t o r e a n dc l a s s i f y r e u s a b l ea r c h i t e c t u r a le l e m e n t s ( c o m p o n e n t ,c o n n e c t o r ,d e s i g np a t t e r n ) e f f i c i e n t l y w es t u d yt h ea r c h i t e c t u r a le l e m e n t sa t t r i b u t em o d e lt h e np r e s e n tat h r e e t u p l e m o d e lt od e s c r i b ee l e m e n t sa sw e l la su s eb n f t os p e c i f yt h ed e t a i l e dp r o p e r t y o fe l e m e n t sw h i c ha r et h eb a s eo fc o n s t r u c t i n gr e u s e da r c h i t e c t u r a l e l e m e n t s l i b r a r y w ec o n s t r u c tad e v e l o p p i n ge n v i r o n m e n t b a s e do ns o f t w a r ea r c h i t e c t u r e r e u s ew h i c hi sap a r to fs o f t m a k e r ,as o f t w a r ed e v e l o p p i n ge n v i r o n m e n t w h i c h s u p p o r t s s o f t w a r er e u s e w ea n a l y z et h e l o g i c a l s t r u c t u r e a sw e l la st h e d e v e l o p i n gm e t h o do ft h es y s t e m ,a n d i l l u s t r a t e f u n c t i o n s ,g e n e r a ld e v i s e , i m p l e m e n t a t i o no ft h es y s t e m t h es y s t e mc a nb r o w s e ,s e a r c h ,i n s t a n t i a t ea n d h 华中科技大学硕士学位论文 d e l e t ea r c h i t e c t u r a le l e m e n t s w et r yt oi m p l e m e n tt h ep r o c e d u r eo fs o f t w a r e a r c h i t e c t u r er e u s et h r o u g ht h es y s t e m a l lw eh a v ed o n ea i mt op r o m o t ep u t t i n g t h es o f t w a r ea r c h i t e c t u r er e u s ei n t op r a c t i c e k e yw o r d s :s o f t w a r er e u s e ;c o d e l e v e lr e u s e ;s o f t w a r ea r c h i t e c t u r e ;d e s i g n r e u s e ;s o f t w a r e a r c h i t e c t u r e r e u s e ;s o f t w a r e a r c h i t e c t u r e - b a s e d d e v e l o p p i n g m o d e l ;a r c h i t e c t u r a le l e m e n t s ;e l e m e n t sa t t r i b u t em o d e l 华中科技大学硕士学位论文 1 1 引言 1 绪论 由予微电子学技术的进步,计算机硬件性能有了很大的提高,而且质量也稳步 提高。然而,计算机软件成本却不断上升,质量也不尽人意,软件开发的生产率也 远远不能满足计算机应用的要求。软件已成为限制计算机系统进一步发展的关键因 素。 更为严重的是计算机系统发展早期所形成的一系列错误概念和做法,已经严重 地阻碍了计算机软件的开发,甚至有的大型软件根本无法维护,只能提前报废,造 成大量人力、物力的浪费,从而导致软件危机。软件危机指的是软件开发和维护过 程中遇到的一系列严重问题。2 0 世纪6 0 年代末至2 0 世纪7 0 年代初,“软件危机” 一词在计算机界广为流传。事实上,几乎从计算机诞生的那一天起,就出现了软件 危机,只不过到了1 9 6 8 年在原西德加密施( g a r m i s h ) 召开的国际软件工程会议上才 被人们普遍认识到。软件危机包含两方面的问题:如何开发软件,怎样满足对软件的 曰益增长的需求;如何维护数量不断膨胀的已有软件。软件危机主要表现在以下四个 方面2 “: 1 软件成本日益增长 在计算机发展的早期,大型计算机系统主要是被设计应用于非常狭窄的军事领 域。在这个时期,研制计算机的费用主要由国家财政提供,研制者很少考虑到研制 代价问题。随着计算机市场化和民用化的发展,代价和成本就成为投资者考虑的最 重要的问题之一。2 0 世纪5 0 年代,软件成本在整个计算机系统成本中所占的比例为 1 0 2 0 。但随着软件产业的发展,软件成本日益增长。相反,计算机硬件随着技 术的进步、生产规模的扩大,价格却不断下降。这样一来,软件成本在计算机系统 中所占的比例越来越大。到2 0 世纪6 0 年代中期,软件成本在计算机系统中所占的 比例已经增长到5 0 左右。而且,该数字还在不断地递增,下面是一组来自美国空 军计算机系统的数据:1 9 5 5 年,软件费用约占总费用的1 8 ,1 9 7 0 年达到6 0 ,1 9 7 5 年达到7 2 ,1 9 8 0 年达到8 0 ,1 9 8 5 年达到8 5 左右。 2 开发进度难以控制 由于软件是逻辑、智力产品,软件的开发需建立庞大的逻辑体系,这是与其他 华中科技大学硕士学位论文 产品的生产不一样的。例如:工厂里要生产某种机器,在时间紧的情况下可以要工 人加班或者实行“三班倒”,而这些方法都不能用在软件开发上。 在软件开发过程中,用户需求变化等各种意想不到的情况层出不穷,令软件开 发过程很难保证按预定的计划实现,给项目计划和论证工作带来了很大的困难。 b r o o k 曾经提出:“在已拖延的软件项目上,增加人力只会使其更难按期完成。” 事实上,软件系统的结构很复杂,各部分附加联系极大,盲目增加软件开发人员并 不能成比例地提高软件开发能力。相反,随着人员数量的增加,人员的组织、协调、 通信、培训和管理等方面的问题将更为严重。 3 软件质量差 软件项目即使能按预定日期完成,结果却不尽人意。1 9 6 5 年至1 9 7 0 年,美国范 登堡基地发射火箭多次失败,绝大部分故障是由应用程序错误造成的。程序的一些 微小错误可以造成灾难性的后果,例如,有一次,在美国肯尼迪发射一枚阿脱拉斯 火箭,火箭飞离地面几十英里高空开始翻转,地面控制中心被迫下令炸毁。后经检 查发现是飞行计划程序里漏掉了一个连字符,就是这样一个小小的疏漏造成了这支 价值1 8 5 0 万美元的火箭试验失败。 在“软件作坊”里,由于缺乏工程化思想的指导,程序员几乎总是习惯性地以 自己的想法去代替用户对软件的需求,软件设计带有随意性,很多功能只是程序员 的“一厢情愿”而已,这是造成软件不能令人满意的重要因素。 4 软件维护困难 正式投入使用的软件,总是存在着一定数量的错误,在不同的运行条件下,软 件就会出现故障,因此需要维护。但是,由于在软件设计和开发过程中,没有严格 遵循软件开发标准,各种随意性很大,没有完整的真实反映系统状况的记录文档, 给软件维护造成了巨大的困难。特别是在软件使用过程中,原来的开发人员可能因 各种原因已经离开原来的开发组织,使得软件几乎不可维护。 另外,软件修改是一项很“危险”的工作,对一个复杂的逻辑过程,哪怕做一 项微小的改动,都可能引入潜在的错误,常常会发生“纠正一个错误带来更多新错 误”的问题,从而产生副作用。有资料表明,工业界为维护软件支付的费用占全部 硬件和软件费用的4 0 7 5 。 从软件危机的种种表现和软件作为逻辑产品的特殊性可以发现软件危机的原因 m “: 华中科技大学硕士学位论文 1 用户需求不明确 在软件开发过程中,用户需求不明确问题主要体现在四个方面: f 1 ) 在软件开发出来之前,用户自己也不清楚软件的具体需求; f 2 ) 用户对软件需求的描述不精确,可能有遗漏、有二义性、甚至有错误; ( 3 ) 在软件开发过程中,用户还提出修改软件功能、界面、支撑环境等方面的要 求; ( 4 ) 软件开发人员对用户需求的理解与用户本来愿望有差异。 2 缺乏正确的理论指导 缺乏有力的方法学和工具方面的支持。由于软件不同于大多数其他工业产品, 其开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力 投入。由于过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件 产品的个性化,也是发生软件危机的一个重要原因。 3 软件规模越来越大 随着软件应用范围的增广,软件规模愈来愈大。大型软件项目需要组织一定的 人力共同完成,但多数管理人员缺乏开发大型软件系统和管理方面的经验。各类人 员的信息交流不及时、不准确、有时还会产生误解。软件项目开发人员不能有效地、 独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。 4 软件复杂度越来越高 软件不仅仅是在规模上快速地发展扩大,而且其复杂性也惫剧地增加。软件产 品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题。”所谓“复杂问题” 的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提高了软件开发 效率和能力,新的、更大的、更复杂的问题又摆在人们的面前。 人们在认真地研究和分析了软件危机背后的真正原因之后,得出了“人们面临的 不光是技术问题,更重要的是管理问题,管理不善必然导致失败。”的结论,便开始 探索用工程的方法进行软件生产的可能性,即用现代工程的概念、原理、技术和方 法进行计算机软件的开发、管理和维护。于是,计算机科学技术的一个新领域一软 件工程诞生了。 软件工程采用工程的概念、原理、技术和方法来开发与维护软件,强调使用生 命周期方法和各种结构分析、设计技术。软件工程方法的研究成果最终要转变为软 件开发工具和系统。1 。软件工程包括三个要素“2 ”: 3 华中科技大学硕士学位论文 1 方法软件工程方法为软件开发提供了“如何做”的技术,是完成软件工程 项目的技术手段; 2 工具软件工具是人类在开发软件的活动中智力和体力的扩展和延伸,为软 件工程方法提供了自动的或半自动的软件支撑环境; 3 过程软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、 及时地进行计算机软件开发的目的。 迄今为止,软件工程的研究与应用已经取得很大成就,它在软件开发方法、工 具、管理等方面的应用大大缓解了软件危机造成的被动局面。 1 2 软件复用 近年来,i t 行业发展迅速,软件的生产规模日益增大,控制软件开发的费用, 提高软件开发的效率,改进软件开发的质量,保证软件开发的一致性越来越难。造 成这种现象的一个主要原因就是软件开发组织对相同或相似系统做着大量的重复性 工作,以前的成果和经验没有得到充分的利用。要改变这种状况,软件复用是一条 现实可行的途径“3 。 1 2 1 软件复用的概念 软件复用是指在开发新的软件系统时,对已有软件的重新使用“3 。该软件可能是 已存在的软件,也可能是专门设计的可复用构件。从软件工程角度看,软件复用发 生在构造新的软件系统的过程中。例如,在一个程序的构造期间,对己存在的源代 码的使用就是软件复用,但在程序执行期间重复调用某段源代码,则不属于软件复 用。另外,程序的重复运行,为完成分布处理而进行的拷贝也不属于软件复用。 以下的模拟有助于进一步说明软件复用的概念。在软件演化的过程中,重复使用 的行为可能发生在三个维上。1 : l 。时间维使用以前的软件版本作为新版本的基础,加入新功能,适应新需求, 即软件维护; 2 平台维以某平台上的软件为基础,修改其和运行平台相关的部分,使其运行 于新平台,即软件移植; 4 华中科技大学硕士学位论文 3 应用维将某软件( 或其中构件) 用于其它应用系统中,新系统具有不同功能和 用途,即真正的软件复用。 这三种行为中都重复使用了现有的软件,但是,真正的复用是为了支持软件在应 用维的演化,使用“为复用而开发的软件( 构件) ”来更快、更好地开发新的应用系 统。 在软件工程的发展中,软件的复用性受到高度重视。当人们一次又一次地设计一 些相互雷同的程序时,很多劳动都花费在一些基本重复的工作上。软件复用的目的 就是为了减少人们在软件开发活动中的重复劳动,降低软件系统开发和维护的成本, 提高软件生产率,并通过复用严格开发并经过反复测试的高质量的软件构件,有望 较好地保证软件的可靠性。 软件复用包括各种不同的层次。实际上,从软件开发的各个阶段上细分,可以认 为软件复用包括领域分析、需求定义、概要设计、详细设计、程序模块和文件等各 种层次“3 。软件的规范说明、软件设计、软件代码甚至文件都可以作为软件复用的单 位。复用的层次越高,则复用的效果越好。 1 2 2 软件复用的宗旨 实施软件复用的目的是要使软件开发工作进行得“更快、更好、更省”。“更 快”是指在市场竞争环境中,软件开发工作能满足市场上时间方面的要求( 即在提供 产品的时间方面能赛过竞争对手) ;“更好”是指所开发出的软件在未来的运行中, 少出差错:“更省”是指在开发和维护软件期间,节省成本。 具体说,沿着软件开发过程,软件开发者欲将其冗余工作减到极小;欲增强其工 作结果的可靠性:并欲大幅度缩短软件开发周期,譬如说软件开发周期从数年减少 到数月,从数月减少到数周。 1 2 3 软件复用方式 依据对可复用信息进行复用的方式,可将软件复用分为黑盒复用和白盒复用“1 。 黑盒复用指对已有构件不需作任何修改,直接进行复用。这是理想的复用方式。白 盒复用指已有构件并不能完全符合用户需求,需要根据用户需求进行适应性修改后 华中科技大学硕士学位论文 = :;= ;i t = g z _ ;= i ;_ _ 自;= _ = 自;_ l = # = _ _ 一 才可使用。而在大多数应用的组装过程中,构件的适应性修改是必需的。 1 2 4 软件复用技术 软件复用技术一般可分为组装技术和生成技术两种类型川。组装技术是利用组装 方式来实现软件构件的复用,即对已有的软件构件不作修改或少作修改,直接将其 插装在一起,从而构成新的目标系统。常见的组装方式有子程序库技术和基于0 0 技术的软件i c 技术。生成技术由程序生成器完成对软件结构模式的复用。生成器导 出模式相当于种子,从中可生长出新的专用软件构件,如v i s u a lc + + 中的w i z a r d 等。 1 2 5 软件复用方法 根据抽象、选择、实例化和集成,可将软件复用方法分成八类“3 :高级语言形式、 设计和代码整理形式、源代码构件形式、软件模式形式、应用生成器形式、甚高级 语言形式、转换系统形式、以及软件体系结构形式。 高级语言中可复用的对象是汇编语言模式,高级语言是抽象规范,其对应的汇编 语言部分是抽象实现。 在设计和代码整理形式中,可复用对象是源代码片断,代码整理是从已存在的软 件代码系统整块地进行拷贝,设计整理是拷贝大块代码后,仅保留设计的全局样本, 而删除许多内部细节。 源代码构件形式通过构造可复用构件库来实现该形式的软件复用。可复用构件库 要提供描述复用构件行为的抽象规范说明,还要提供分类和检索可复用构件的模式, 可复用构件方法在专有领域,如数学分析中的i m s l 数学库,卓有成效,但在通用 领域收效甚微。 软件模式是可复用构件的形式化扩充。软件模式复用对象是算法和数据结构,软 件模式的抽象规范是算法或数据结构的形式化描述,而抽象实现对应于模式初始化 时产生的源代码。 应用程序生成器复用完整的系统设计,如专家系统生成器、编译器的编译器以及 面向结构的编辑器的生成器等。 甚高级语言即为可执行的规范语言,它适合于通用软件开发,而应用程序生成器 6 华中科技大学硕士学位论文 适合于特定领域。 转换系统复用方法的关键在于软件开发者只需维护和提供系统的规范说明,而不 用维护和提供实现;对规范进行修改时,通常可复用以前的大部分历史开发信息a 可复用的软件体系结构是大粒度的软件框架,以及软件系统全局的结构设计。如 在不同的领域实例化并且复用数据库子系统;将不同的词法分析器、语法分析器和 代码生成插入到一个编译器框架中;专家系统中的基于规则和黑板的结构;示波器 的设计框架等都是可复用的软件体系结构的实例。 i 2 6 软件复用历史、发展与展望 6 0 年代的软件危机导致了有关软件复用的研究。在1 9 6 8 年n a t o 软件工程会 议上,会议的邀请论文“m a s sp r o d u c e ds o f t w a r ec o m p o n e n t s ”首次提出可复用库的 思想,由于软件复用技术有助于提高软件开发的生产率,提高软件系统的可靠性, 减少软件维护的负担,因而大专院校、研究所、企业界和政府部门都很重视软件复 用的研究和实践“。 8 0 年代中期,人们认识到复用是优秀的软件设计的关键因素之一,并且软件复 用已在子程序库、报告生成器、编译器的编译器等方面取得进展,还认识到在软件 复用实施管理中管理因素非常重要,当时工业界复用软件的主要手段是复用整个软 件。 到9 0 年代初期,软件复用的实践有三个趋势,是在软件界将软件复用的实践 惯例化、用户化,不仅要考虑技术的因素,而且要考虑管理的因素:二是将复用技 术集成到软件开发过程中,并且研究软件过程形式化的问题:三是将领域分析标准 化,开发支持领域分析的方法和工具。 现在,有关软件复用的基本概念不断完善,软件复用的技术和方法也日渐成熟, 有些专有领域的可复用系统较为成功,通用领域的可复用系统则处于探索阶段“。 展望未来,可以预测到:软件复用的技术和活动可能变得系统化和形式化:会有更 多的组织使用复用程序;可能有支持复用和领域分析的软件开发环境和c a s e 工具 产生;可能出现特定领域的可复用软件构件工厂;可能形成支持领域或领域间的复 用软件的开发标准等;利于软件复用的面向对象软件开发技术将进一步形式化和实 用化。总之,软件可复用的观念将成为软件开发过程模型的主导思想之一,软件复 7 华中科技大学硕士学位论文 用技术和实践将变成系统化、形式化、标准化、惯例化和用户化的技术和活动。 1 3 课题背景 软件复用经过近3 0 年的发展,正逐步成为实现软件工程化、工业化的首选途径。 通过软件复用,在应用系统开发中可以充分利用已有的开发成果,避免了许多重复 劳动,从而提高了软件生产率。同时,通过复用经过检验的高质量的软件构件,避 免了重新开发可能引入的错误,从而提高了软件质量,减少了维护代价。 人们对小规模复用进行了长期的研究与实践,发现小规模的代码复用如类、数 据结构等的复用,并没有给软件工业带来人们所期望的软件生产率的大幅度提高、 软件产品质量稳定可靠的前景。对于代码复用,程序语言并不能很好地支持复杂软 件特性的描述。例如,软件组件可能被设计为通过不同的方式与外部环境的不同部 分进行交互,如通过到达实体的数据流交互、依赖系统库进行交互等。理想情况下, 需要分别标识每个交互的接口。但是对于描述更加复杂的包,例如涉及多个合作 对象的包,就很困难了。 随着软件系统规模和复杂度的日益升级,人们逐渐意识到,系统总体结构的设 计和规范说明比算法和数据结构重要得多,并认为软件体系结构复用的研究会成为 提高软件复用度的最有希望的途径”“。 1 4 课题主要研究工作 本文从基于软件体系结构的软件开发模型入手,探讨软件体系结构的描述模型 以及体系结构元素属性模型,并以此对基于软件体系结构的软件复用方法和过程进 行研究,力图促进基于软件体系结构的复用过程的实践化。 1 5 小结 本章首先介绍了当前的软件危机,指出了软件复用作为一种可行的有效解决办 法,并对软件复用的概念,宗旨、方式、技术以及方法作了基本介绍,然后介绍了 软件复用的历史及发展现状,并对软件复用的发展前景进行了展望,最后介绍了课 8 华中科技大学硕士学位论文 题来源和本文所作的主要工作。 9 华中科技大学硕士学位论文 2 基子体系螬构的软件复用模型 2 1 软件体系垴构的概念 2 1 i 软件体系鳍构的兴起 六十年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设 计的重点放在数据结构和算法的选择上随着软件系统规模越来越大、越来越复杂, 整个系统的结构和规范说明显得越来越重要。软件危机的程度日益加剧,现有的软 件工程方法对此显得力不从心。对于大规模的复杂软件系统来说对总体的系统结 构设计和规范说明比起对算法和数据结构的选择已经变得明显重要得多。在此种背 景下,人们认识到软件体系结构的重要性,并认为对软件体系结构的系统、深入的 研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。”1 。 自从软件系统首次被分成许多模块,模块之间有相互作用,组合起来有整体的 属性,就具有了体系结构。好的开发者常常会使用一些体系结构模式作为软件系统 结构设计策略,但他们并没有规范地、明确地表达出来,这样就无法将他们的知识 与别人交流“”。软件体系结构是设计抽象的进一步发展,满足了更好地理解软件系 统,更方便地开发更大、更复杂的软件系统的需要。 事实上,软件总是有体系结构的,不存在没有体系结构的软件。体系结构 ( a r c h i t e c t u r e ) 一词在英文里就是“建筑”的意思。把软件比作一座楼房。从整体上 讲,是因为它有基础、主体和装饰,即操作系统之上的基础设施软件、实现计算逻 辑的主体应用程序、方便使用的用户界面程序,从细节上来看每一个程序也是有结 构的1 。早期的结构化程序就是以语句组成模块,模块的聚集和嵌套形成层层调用 的程序结构,也就是体系结构。结构化程序的表达结构和计算的逻辑结构的一致性 及自顶向下开发方法自然而然地形成了体系结构由于结构化程序设计时代程序规 模不大,通过强调结构化程序设计方法学。自顶向下、逐步求精,并注意模块的耦 合性就可以得到相对良好的结构,所以,并未特别研究软件体系结构。 i o 华中科技大学硕士学位论文 我们可以作个简单的比喻,结构化程序设计时代是以砖、瓦、灰、沙、石、预 制梁、柱、屋面板盖平房和小楼,而面向对象时代以接面堵、整间房、一层楼梯的 预制件盖高楼大厦。构件怎样搭配才合理? 体系结构怎样构造容易? 重要构件有了 更改后,如何保证整栋高楼不倒? 每种应用领域需要什么构件( 医院、工厂、旅馆) ? 有哪些实用、美观、强度、造价合理的构件骨架使建造出来的建筑( 即体系结构) 更能 满足用户的需求? 如同土木工程进入到现代建筑学一样,软件也从传统的软件工程 进入到现代面向对象的软件工程,研究整个软件系统的体系结构,寻求构建最快、 成本最低、质量最好的构造过程“”。 软件体系结构虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网络 体系结构中很多宝贵的思想和方法,最近几年软件体系结构研究已完全独立于软件 工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支“”。软件体系 结构研究的主要内容涉及软件体系结构描述、软件体系结构风格、软件体系结构评 价和软件体系结构的形式化方法等。解决好软件的复用、质量和维护问题,是研究 软件体系结构的根本目的。 2 1 2 软件体系结构的定义 虽然软件体系结构已经在软件工程领域中有着广泛的应用,但迄今为止还没有 一个被大家所公认的定义。许多专家学者从不同角度和不同侧面对软件体系结构进 行了刻画。这里给出一个目前学术界广泛接受的重要定义。美国卡内基,梅隆大学的 d g a r l a n 和m s h a w 在1 9 9 3 年指出“”:软件体系结构是软件设计过程中的一个层次, 在计算过程中的算法设计和数据结构之上,处理总体系统结构设计和描述方面的一 些问题。包括总体组织与全局控制结构、通讯协议、同步、数据存取、设计元素的 功能分配、物理分布、设计元素的复合、设计方案的选择、评估和实现等。一般地, 软件体系结构由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模 式以及这些模式的约束组成。 一个特定的系统是用一些组件的集合和组件之间的交互来定义的,而这样的系 统又可以在大型的系统设计中作为一个复杂的元素“。客户机和服务器、数据库、 过滤器、层次系统中的层都是组件的实例。软件体系结构不仅指定了系统的组织结 构和拓扑结构,而且还显示了系统需求和构成系统的元素之间的对应关系,提供一 华中科技大学硕士学位论文 些设计决策的基本原理。一般来说,体系结构模型辨明了组件和组件交互中结构和 语义的差异。这些体系结构模型通常又被组合起来定义更大的系统。理想情况下, 不同的体系结构描述的元素是独立定义的,因此它们可以在不同的上下文中重复使 用。这样,体系结构建立的这些单独的元素规范说明就可以被建造成体系结构级的 子系统。 2 1 3 软件体系结构的重要属性 软件体系结构在软件体系结构规范的说明中重点在于捕捉系统的结构。体系结 构的重要属性包括“: 1 足够高层次上对系统进行抽象,使系统能作为一个整体来看待; 2 体系结构必须支持系统的功能需求,也就是说,系统的动态行为必须在设计 结构时考虑进去; 3 同时,体系结构必须受限于系统的性质( 指非功能上的需求) ,包括与当前功能 需求相关的性能、安全性与可靠性的需求以及以后功能上改动的灵活性和可扩展性 的要求( 最少的改动成本) 。这些需求可能会有冲突,因此在体系结构设计时应对它 进行权衡分析; 4 体系结构上,所有的实现细节应该被隐藏; j 组件和连接器:组件是可识别的,并且赋予一定的任务,客户端的组件通过 已定义好的接口进行交互作用;组件间的连接器详细描述了通信和控制机制,支持 所有的组件间的交互作用,以实现系统的行为。 2 1 4 软件体系结构的核心模型 体系结构的核心模型由5 种元素组成:组件、连接器、配置、端口和角色“。其 中组件、连接器和配置是最基本的元素。 1 组件组件是具有某种功能可复用的软件模扳单元,表示了系统中主要的计算 元素和数据存储。组件有两种:复合组件和原子组件,复合组件由其它复合组件和 原子组件通过连接构成;原子组件是不可再分的组件,底层由实现该组件的类组成, 这种组件的划分提供了体系结构的分层表示能力,有助于简化体系结构的设计; 华中科技大学硕士学位论文 2 连接器表示了组件之间的交互; 3 。配置表示了组件和连接器的拓扑逻辑和约束。 此外,组件作为一个封装的实体,只能通过其接口与外部环境交互,组件的接口 由一组端口组成,每个端口表示了组件和外部环境的交互点。通过不同的端口类型, 一个组件可以提供多重接口。一个端口可以非常简单,如过程调用,也可以表示为 更为复杂的界面( 包含一些约束) ,如必须以某种顺序调用的一组过程调用。连接器作 为建模软件体系结构的主要实体,同样也有接口,连接器的接口由一组角色组成, 连接器的每一个角色定义了该连接表示的交互的参与者,二元连接有两个角色,有 的连接有多于两个的角色。体系结构的核心模型如图2 1 所示。 图2 - 1 软件体系结构核i l , 模型 2 1 5 软件体系结构的重要性 应用系统是提供给最终用户使用的;而构件系统中的诸多构件,则往往是提供给 应用系统开发者进行复用的。两者的开发过程及其具体规定又有所差异,但不论是 1 3 华中科技大学硕士学位论文 := i 一;= _ _ l = j _ 目= ;= = 目_ e i _ _ _ j ;_ 应用系统还是构件系统,通常每个系统均由一个开发团队,按照特定的软件开发过 程进行开发。 如果开发单位选择了良好的体系结构,各个开发团队的软件工程师们可以更有 效、更有预见地进行系统的设计和实现工作。工程师们可以在定义好的接口界面上 进行工作。在开发应用系统时,良好的体系结构的作用相当于选择构件的指南。如 果缺乏清晰定义的体系结构和接口,诸多构件很难协同工作,软件工程师们便难于 复用构件。 所以说,选择合适的体系结构,对于一个软件开发单位来说,是最重要的决策之 一。为了维护软件系统的完整性,以使得开发和维护工作不致于杂乱无章,体系结 构是很重要的。良好的软件体系结构还是简化软件系统复杂性的关键,让大规模的 开发单位能以并行方式开展工作。1 。 此外,修改需求和新增需求,这是常有的事。良好的体系结构使构件系统和应用 系统能有序地随时进行改进,体系结构的定义方式和描述方式,也应当使得人们易 于对系统进行修改和改进。为了建立允许变更的体系结构,重要的事是,辨清软件 的哪些部分是很可能变更的。哪些部分是不易变更的,即稳定部分。体系结构中最 为稳定的部分应当对软件的子系统和接口组织起着最具影响的作用。同时,体系结 构又要预见到可能的变更,与之相应的子系统和接口应当设计为可变更的。 2 2 常用软件开发模型 为了反映软件生存期各种工作应如何组织及软件生存周期各个阶段应如何衔接, 需要用软件开发模型给出直观的图示表达。软件开发模型是软件工程思想的具体化, 是实施于过程模型中的软件开发方法和工具,是在软件开发实践中总结出来的软件 开发方法和步骤“3 。总的说来,软件开发模型是跨越整个软件生存周期的系统开发、 运作、维护所实施的全部工作和任务的结构框架。下面简要地介绍一下常用的软件 开发模型。 1 瀑布模型 瀑布模型即生存周期模型,由b m d o e h e m 提出,是软件工程的基础模型“。“。 其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。采用 结构化的分析与设计方法,将逻辑实现与物理实现分开。瀑布模型规定了各项软件 1 4 华中科技大学硕士学位论文 工程活动,包括制定开发计划、进行需求分析和说明、软件设计、程序编码、测试 及运行维护,并且规定了软件生存周期的各个阶段如同瀑布流水、逐级下落、自上 而下,相互衔接的固定次序。 2 螺旋模型 1 9 8 8 年b b o e h e m 提出了螺旋模型,它加入了风险分析,通常用来指导大型软 件项目的开发“。”。“软件风险”是普遍存在于任何软件开发项目中的实际问题。对 于不同的项目,其差别只是风险有大有小而已。实践表明,项目规模越大,问题越 复杂,资源、成本、进度等因素的不确定性越大,承担项目所冒的风险也越大。总 之,风险是软件开发不可忽视的潜在不利因素,它可能在不同程度上影响软件开发 过程或软件产品的质量。软件风险分析的目标是在造成危害之前及时对风险进行识 别、分析、采取对策,进而消除或减少风险的损害。螺旋模型沿着螺线旋转,包括 四个方面的活动: ( 1 ) 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制 条件: ( 2 ) 风险分析:分析所选方案,考虑如何识别和消除风险; ( 3 ) 实施工程:实施软件开发: ( 4 ) 客户评估:评价开发工作,提出修正建议。 3 原型模型 原型模型是从需求分析开始,软件开发者和用户在一起定义软件的总目标,说 明需求,并规划出定义的区域“2 。“。然后快速设计软件中对用户可见部分的表示。快 速设计导致了原型的建造,原型由用户评估,并进一步求精待开发软件的需求,逐 步调整原型使之满足用户需要,这个过程是迭代的。 原型模型的开发步骤有以下四步: ( 1 ) 弄清用户设计者的基本信息需求 ( 2 ) 开发初始原型系统 ( 3 ) 用原型系统完善用户设计者的需求 ( 4 ) 修改和完善原型系统 i s 华中科技大学硕士学位论文 2 3 基于体系结构的软件开发方法 通过多年的研究与实践,人们发现软件体系结构的正确设计和选择往往是整个软 件系统最终成功的最关键的因素。正确的软件体系结构为软件开发和维护工作提供了 强有力的支持,主要体现在以下几个方面m 1 : 1 理解 软件体系结构是对系统整体结构的描述,注重全局而不是细节,从而避免了复杂、 多样、易变的细节描述,使开发人员在较高层次上更好地理解、把握系统。 2 复用 软件体系结构基于组件和连接器的分解方式以及系统通用结构的描述,不仅使得 软件体系结构可以在各个层次上支持软件复用,而且体系结构本身可作为一种较高级 别的、大粒度的构件进行复用。 3 演化 软件体系结构可以很好地勾画出一个软件系统将要演化的趋势和方向,通过对软 件系统的重要支撑部分的理解,维护人员可以在更深刻理解软件系统变化的基础上有 效估计出系统维护和修改的成本效益,而且体系结构设计可以把系统中的组件功能与 组件之间的交互区分开来,这使得开发人员可以在不影响组件功能的情况下,对构件 的连接机制进行诸如执行功能、互操作性、原型和复用方面的改变。 4 分析 体系结构描述使得软件开发人员在开发早期可以对系统的一些总体特性进行分 析,诸如系统高层一致性的检验、是否符合某种体系结构风格、是否符合质量要求等。 5 管理 选择一个良好的体系结构对软件开发至关重要它能够使开发人员考虑系统初期 的操作能力需求以及未来的发展变化,管理人员可以依据开发活动的发展趋势合理分 配系统资源。 图2 2 给出了基于体系结构的软件开发包含的几个主要阶段“”。 1 通过对特定领域应用软件进行分析。提炼出其中的稳定需求和易变需求,建立 可复用的领域模型依据领域模型和用户需求产生应用系统的需求规范说明: 华中科技大学硕士学位论文 2 在领域模型的基础上,根据需求规范说明提炼出特定领域的软件体系结构。 这是系统的高层设计,其目标是通过复用领域体系结构库中已有的高质量的体系结 构,生成最适合该用户需求的体系结构,并加以提炼入库,以各将来的复用。并在 此体系结构的指导下,把系统逐步分解成相应的组件和连接器,组件和连接器往往 不是简单的模块或对象,它们甚至还可能包含复杂的结构,因此可能需要多层次的 体系结构设计,直至组件和连接器可以被设计模式和面向对象方法处理为止; 3 低层设计主要解决具体组件和连接器的设计问题。通过复用可复用组件库中 存放的设计模式、对象和其他类型的可复用设计件,或重新设计新的组件,并提炼 入库;然后通过具体的编程实现,就可以得到可运行的程序。 图2 - 2 基于体系结构的软件开发 软件体系结构正成为实现更大粒度的软件复用最有希望的途径。通过特定领域 的体系结构的研究,可以实现组件的标准化,在软件开发的各个层次复用已有成果。 实践表明,分析特定领域的软件体系结构将极大提高领域应用系统的开发效率。 1 7 华中科技大学硕士学位论文 2 4 基于体系结构的软件复用方案 2 4 1 设计复用 过去,软件复用的研究重点放在代码级实体的复用上,例如类、子程序和数据结 构。虽然代码级复用技术和方法有明显改进,但是代码级实体并不是唯一能有效利用 的。 一般说来,设计复用至少由于三个原因而显得有利用前景。首先,由于设计阶段 是系统开发的早期阶段,很多先期的错误可以避免。其次设计复用能提高系统的可 理解性,使系统更易维护和升级。第三,设计复用促进代码复用,通常某种设计的应 用框架能被共享该设计的应用程序所使用。 目前,设计复用被成功地运用在三个领域。 首先,是应用框架领域,包括用户接口工具包( 例如x w i n d o w s 和m o t i f , m i c r o s o f t w i n d o w sa p i 以及m a c i n t o s h 工具箱) ,和应用程序生成器( 例如l o t u sn o t e s ,m i c r o s o f t v i s u a lb a s i c 。l e x 和 f a c e ) 。该领域的复用通过定义共享的实现基础以及特定软件应用 的共有的设计框架“ 其次,是特定领域的软件体系结构领域( d s s a ) 。一个d s s a 系统关心的是对于 某个应用领域的软件支持,例如航空系统、移动机器人、或者命令和控制“”。该系统 通常为特定的体系结构提供领域特定的规范说明,并且用工具由这些规范说明产生特 定系统的实现; 最后,是面向对象设计模式领域。这些模式力图勾勒出面向对象软件结构共有的 特征。例如s m a l l t a l k - 8 0 的模型视图控制器平台。目前大量的模式已被收集到出版的 手册上圳。 2 4 2 基于体系镑构的软件复用 软件体系结构是抽象的系统规范说明。是对软件系统的组成、系统结构及系统如 何工作较为宏观的描述“。通常。软件体系结构描述了一个系统中的组件和组件之问 的相互作用关系。基于体系结构的软件开发将开发的重心从代码转移到更大粒度 华中科技大学硕士学位论文 的体系结构元素以及这些元素之间的总体关联结构上,其开发的重点是构造

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论