一
在业界,软件体系结构和建筑学的设计框架可以类比。如果把软件体系结构类比做建筑学的蓝图,那构件就可以比作一砖一瓦,或者更大概念如:庭院,花园等。软件体系结构之所以可以独立于软件的数据结构和软件的算法,是因为业界把软件的数据结构和算法看做了烧砖的方法,或设计庭院的思想。但没有扩展到整个软件系统。一个软件系统是庞杂的。但是分治之后的东西仍然用到了最基本的软件算法和数据结构思想。之所以也有些人说SA可以不用,是因为算法和数据结构的扩张有代替现在的SA的可能。完美的构件是可以进行黑箱复用的。不太完美的复用构件就是白盒复用,要在原来代码的基础上做些必要的改动。软件工程的思想正是体现在软件流程、软件模块和软件文档的复用之上。否则也就没有工程的说法。但是又有人提出软件体系结构复用的思想。这应该被认为是迄今为止最大粒度的复用。如果建筑师可以把自己以前的建筑蓝图拿来稍作修改就可以进行多次施工,那么软件架构师们为什么不能拿过去的系统设计方案稍作修改并实施到新的项目中去?但是很可惜,没有一个企业的业务流程和另一个企业是完全相同的。所以软件体系结构的复用起来比建筑蓝图的复用要复杂的多。软件体系结构直接决定了软件系统的运行框架,其优劣不但决定了软件系统是否可以满足针对此软件的功能需求,而且还决定了这些功能需求是否能被合理、高效地实现,即也决定了软件系统基本的非功能属性[1].每个用户的非功能属性多多少少的有所不同,也就决定着软件体系结构的复用的复杂性。软件体系结构是描述软件单元(element)、软件单元的属性(property)以及这些单元之间关系(relationship)的结构[2].这里的软件单元应该就是构件。软件体系结构是构建计算机软件实践的基础,与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样。没有蓝图就不能构建出雄伟的大厦。没有好的体系结构也就不能构造出庞大的系统。但是对于小型的系统,体系结构的思想似乎是一种多余。对于大厦,我们应该有建筑蓝图,但是对于建造小茅屋,似乎再画草图就是一种多余。软件体系结构表示了一个软件系统的高层结构,主要特点有:1)软件体系结构是一个高层次上的抽象,它并不涉及具体的系统结构(比如B/S还是C/S),也不关心具体的实现。2)软件体系结构必须支持系统所要求的功能,在设计软件体系结构的时候,必须考虑系统的动态行为。3)在设计软件体系结构的时候,必须考虑有现有系统的兼容性、安全性和可靠性。同时还要考虑系统以后的扩展性和伸缩性。所以有时候必须在多个不同方向的目标中进行决策。[3]抽象的东西之所以对我们有指导的意义。是因为我们可以运用这个抽象的东西对具体问题做具体分析。法无定法,也就是这个道理。
[1] Bass L, Clements P, Kazman R. Software Architecture in Practice. Addison-Wesley, 1998.
[2] Sun CA, Jin MZ, Liu C. Overviews on software architecture research. Journal of Software, 2002,13(7):1228−1237 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/13/1228.pdf
[3] http://www.itisedu.com/phrase/200602281725525.html
二
构件的概念类似于通用模块的定义。如同小时候我们玩的积木一样,可以松散连接,自由组合。但是业界还没有真正的这样的一个标准来制定构件,让它能同积木一样好用。实际上我们使用的“构件”还要进行一些修改之后才能满足一个系统的要求。构件应该是系统中实际存在的可更换部分,它实现特定的功能,符合一套接口标准并实现一组接口。【1】
软件复用一直被视为改善软件工程的重要手段,软件复用是将已有的软件及其有效成分用于构造新的软件或系统。它不仅是对软件程序的复用,还包括对软件生产过程中其它劳动成果的复用。因此,软件复用包括软件产品复用和软件过程复用两部分的内容。借此来提高生产率,改善产品的质量。软件复用一般又分为源码级复用和二进制级复用。【2】也就是白盒复用和黑盒复用
黑盒复用指对已有产品或构件不需作任何修改,直接进行复用,这是理想的复用方式。白盒复用指根据用户需求对已有产品进行适应性修改后才可使用。【3】
无论白盒复用还是黑盒复用,都需要花费一定的代价熟悉和掌握被复用的软件系统。作为经济上的考虑,要求复用的代价必须大大小于重新开发的代价,否则就不应该考虑。
之所以业界使用构件这个概念,也是为了扩大复用的粒度。因为曾经的函数和过程已经不能满足日益庞大的软件的需要。
【1】http://www.itisedu.com/phrase/200604161439595.html
【2】http://arch.pconline.com.cn/pcedu/empolder/life/0403/343931.html
【3】http://www.tongtech.com/jsqy/yqxwview.asp?id=209
分享到:
相关推荐
### 软件体系结构-构件与软件复用技术 #### 构件技术 **软件构件的概念** 软件构件是指可以被独立定义、实现、部署,并且能够通过标准接口与其他构件进行交互的基本软件单元。这些构件通常具有高度的内聚性和封装...
而软件体系结构的引入,为描述这些构件及其相互作用提供了框架和方法,进一步推动了构件复用技术的发展。 软件体系结构作为软件系统设计的高层次概念,专注于系统的总体结构和组织,它处理系统的组成元素、元素间的...
全书共4篇22章,第一篇“基础篇:软件体系结构的理论”,第二篇“软件复用与构件库的设计”,第三篇“软件规模的度量”,第四篇“软件的性能抗衰”。第一篇分为8章,介绍了软件体系结构的基础理论,包括软件体系结构...
此外,它还可以被复用和传递,促进了软件的标准化和模块化。 在软件体系结构建模方面,有五种主要模型:结构模型、框架模型、动态模型、过程模型和功能模型。其中,"4+1"视图模型是一种广泛应用的建模方法,包括...
这种方法强调软件构件的设计、开发、复用和管理。通过采用标准化的接口和协议,确保构件之间的互操作性,从而加速软件开发周期,并提高最终产品的质量。 #### 五、领域工程 **领域工程**是一种专注于特定业务领域...
【软件体系结构风格详解】 软件体系结构是软件开发的基础,它定义了软件系统的组织结构和交互方式,对软件系统的性能、可维护性、可扩展性等关键特性有着深远影响。本文将深入探讨几种经典的软件体系结构风格,以及...
当前,基于构件的软件复用和开发被认为是提高软件开发效率和质量的有效途径,并在分布式系统中得到了广泛的应用。然而,现有的软件构件技术大多关注于构件的实现模型和运行时互操作性,缺乏一套完整的系统化方法来...
### 软件复用和构件技术:提升开发效率与质量的关键 #### 一、软件复用概述 软件复用,作为现代软件工程的核心概念之一,旨在通过重复利用已有的软件资源来加速新软件系统的开发过程,从而显著提高开发效率,降低...
软件体系结构风格则描述了特定应用领域的系统组织模式,如数据流风格、调用/返回风格、面向对象风格、独立构件风格、虚拟机风格和仓库风格等,每种风格都有其特定的术语表和指导原则。 在实际应用中,软件体系结构...
**软件体系结构**是指具有一定形式的结构化元素的集合,主要包括处理构件、数据构件和连接构件。这些元素构成了软件的基本框架。 1. **处理构件**:负责对数据进行加工和处理。 2. **数据构件**:包含被加工的信息...
软件体系结构、规格说明和设计模型都是构件工程中的核心要素。 复用的过程模型通常包括领域分析、设计、系统构建等步骤,其中,领域模型和可重用软件组件的中心库是连接领域工程和软件工程的关键环节。通过不断记录...
软件体系结构的基本概念包括构件、外部可见属性和相互关系。构件是软件系统中的基本元素,外部可见属性是构件提供的服务、性能、使用特性、错误处理、共享资源使用等。相互关系是指构件之间的交互和协作。 软件设计...
软件体系结构是软件开发中的重要概念,它定义了软件系统的高级结构和组织方式,包括构件、连接件、配置、端口和角色等核心元素。软件重用是提高开发效率、降低成本的关键策略,通过复用已有的软件产品可以提升系统的...
软件体系结构作为20世纪90年代兴起的研究热点,它区别于传统的软件技术研究之处在于:它将从不同角度和观点出发建立的关于软件构成的分散、非系统化、非形式化的思想进行了研究分析和归纳综合,构建了一套用于软件...
然而,软件体系结构的研究和应用仍面临一些挑战,如概念不统一、体系结构描述语言(ADL)多样、缺乏统一理论模型、描述标准操作困难、体系结构性质研究不足、缺乏有效工具支持、复用方案不成熟以及体系结构发现方法...
软件体系结构是软件系统的基本组织,它体现在构件、构件间的相互关系以及构件与环境的关系中。软件体系结构设计的原则在大规模软件开发的过程中起着至关重要的作用,用它来指导整个开发过程,可以准确满足需求并充分...