软件体系结构的特点与研究进展
- 格式:pdf
- 大小:197.96 KB
- 文档页数:6
软件体系结构的现状及发展方向由于在软件业迈向组件装配工业(software component industry) 的过程中﹐不断发现组件设计者对其组件之应用场合的预想环境与应用软件师的软体结构常无法完美地整合起来﹐导致应用软件师难以灵活地再使用(reuse) 他人设计之组件,造成软件组件工业成长上的瓶颈。
OO软件专家也逐渐认识到其问题是来自于软件主架构的不相合(mismatch)。
软件主架构的重要性并非今天才呈现出来﹐20多年前软件大师Fred. P. Brooks 就提到﹕软件设计的参与者之间﹐其设计的概念必须一致(conceptual integrety)才能共同创造出简单亲切的软件﹐同时他也强调软件主架构在达到概念一致的过程中,居于核心角色。
这个20多年来的老问题﹐仍是今天OO软件师必须努力去克服的。
要想追上它,必须知道它是什么。
因此我先介绍一下相关知识的一些概念:一.概念1.体系结构(Architecture)体系结构亦可称为架构,所谓软件架构﹐根据Perry 和Wolfe之定义:Software Architecture = {Elements,Forms,Rationale / Constraint},也就是软件主架构 = {组件元素,元素互助合作之模式,基础要求与限制}。
Philippe Kruchten采用上面的定义﹐并说明主架构之设计就是:将各组件元素以某些理想的合作模式组织起来﹐以达成系统的基本功能和限制。
体系结构又分为多种样式,如Pipes and Filters等。
2.框架(Framework)框架亦可称为应用架构,框架的一般定义就是:在特定领域基于体系结构的可重用的设计。
也可以认为框架是体系结构在特定领域下的应用。
框架比较出名的例子就是MVC。
3.库(Library)库应该是可重用的、相互协作的资源的集合,供开发人员进行重复调用。
它与框架的主要区别在于运行时与程序的调用关系。
软件开发中的软件体系结构和设计研究和应用软件开发中的软件体系结构和设计研究和应用1. 引言软件体系结构和设计是软件开发过程中的重要环节,它们起着指导和规范开发过程、减少系统错误和故障的作用。
本文将介绍软件体系结构和设计的概念、研究内容和应用情况。
2. 软件体系结构软件体系结构是软件系统的整体结构和组件之间的关系,它包括了系统的组织方式、组件的职责和关系、系统的行为和性能特性等。
软件体系结构的设计需要考虑系统的可扩展性、灵活性、可维护性、可重用性等方面的要求。
常见的软件体系结构模式有分层结构、客户端-服务器结构、发布订阅结构等。
3. 软件设计软件设计是指根据软件功能和需求对软件进行分析、概念化、详细设计和建模的过程。
在软件设计阶段,开发人员需要确定系统的模块划分、接口设计、算法设计等。
良好的软件设计能够提高系统的可维护性、可理解性和可扩展性。
常用的软件设计方法有结构化设计、面向对象设计和面向服务设计。
4. 软件体系结构和设计的研究内容软件体系结构和设计的研究内容主要包括以下几个方面:(1) 组织和管理软件系统:研究如何将系统划分为若干模块,并定义模块之间的关系和接口。
(2) 软件体系结构模式:研究常用的软件体系结构模式,如面向对象、分布式、并行等,以及它们的特点和适用领域。
(3) 软件设计原则和方法:研究通用的软件设计原则和方法,如高内聚低耦合、单一职责原则、开闭原则等,以及如何根据具体需求选择合适的设计方法。
(4) 软件设计模式:研究常用的软件设计模式,如单例模式、工厂模式、观察者模式等,以及它们的应用场景和使用方法。
(5) 软件质量保证:研究如何通过软件体系结构和设计来保证系统的质量,包括性能、可靠性、安全性等方面的要求。
5. 软件体系结构和设计的应用情况软件体系结构和设计的研究成果在实际软件开发中得到了广泛应用。
它们对于大型软件系统的开发和维护起到了重要的指导作用。
比如,在分布式系统开发中,研究人员通过软件体系结构和设计的方法来解决系统的可扩展性、容错性等问题;在移动应用开发中,研究人员通过软件设计模式和原则来提高应用的用户体验和性能。
软件体系结构的研究与发展
软件体系结构是在现代软件开发中越来越重要的一个话题,它是一个跨越软件开发、测试、部署和运行的重要跨学科技术。
本文将从历史、基础知识、软件体系结构的特点、软件体系结构技术等几个方面对软件体系结构进行深入探讨,以便对软件体系结构的研究和发展做出更好的贡献。
软件体系结构开始于上世纪60年代,当时科学家为了更好地理解计算机系统中的架构而开始采用系统结构的概念。
从那时起,软件体系结构一直是软件开发的核心,也是软件工程的基础。
在过去的几十年里,随着软件开发的发展,软件体系结构也发展得越来越复杂,形成了现代软件体系结构。
软件体系结构被称为软件的结构框架,是一种把软件开发过程中的各个环节(如需求分析、软件架构设计、程序编码、测试和部署)组织起来的方法,其目的是使软件在开发过程中获得最优效果,并能够运行在不同的平台上。
软件体系结构的主要特征是,它将现有的软件系统拆解成不同的模块,以便更加有效地实施、监控和维护,并能够实现灵活的应用。
软件体系结构设计与优化研究在当今的数字化时代,软件正在越来越多地渗透进入我们的生活。
从个人电脑操作系统到移动设备应用,从企业管理软件到机器人控制程序,软件已经成为了现代化社会必不可少的一部分。
然而,随着软件规模的不断扩大,软件体系结构也变得越来越复杂。
因此,软件体系结构的设计和优化已成为软件开发的重要领域。
本文将探讨软件体系结构设计与优化的相关问题,并提出一些解决方案。
1. 软件体系结构的定义和特征软件体系结构是指软件系统的总体结构,它描述了系统中各个组件之间的关系和交互方式。
软件体系结构的设计应该遵循一些基本原则,例如模块化、可复用性、可扩展性、灵活性、稳定性等。
模块化可以将软件系统分解成若干互不干扰的独立模块,从而提高软件的可维护性和可扩展性;可复用性可以使开发人员重复使用已有的模块,从而提高开发效率和代码质量;可扩展性可以根据需求变化增加或减少系统的功能,从而适应不断变化的市场需求;灵活性可以使软件系统具有适应性,从而应对不同的操作环境和用户需求;稳定性可以使软件系统具有健壮性,从而保证系统的安全性和可靠性。
2. 软件体系结构设计的方法和工具软件体系结构设计的方法有很多种,包括面向对象方法、面向服务方法、面向组件方法、面向模型方法等。
其中,面向对象方法是目前应用最广泛的方法之一。
它强调系统中的对象和对象之间的关系,从而构建了一个基于类的层次结构,使得系统的结构更加清晰明了。
面向服务方法则是将系统分解成若干个服务,每个服务都提供某种特定的功能。
面向组件方法则是将系统分解成若干个独立的组件,每个组件都可以独立开发和测试,从而提高系统的可维护性和可扩展性。
面向模型方法则是将系统的设计和建模过程分解成若干个阶段,每个阶段都有一个特定的模型,从而让系统的设计更加清晰明了。
在软件体系结构设计的过程中,应该使用一些工具来辅助设计和分析。
常用的工具包括UML(统一建模语言)、ARIS(企业建模框架)、AD(结构体系分析法)等。
软件体系结构研究报告软件体系结构是指软件系统中各个组件之间的关系和交互方式,它是软件开发过程中的重要环节。
本文将对软件体系结构的研究进行分析和总结。
软件体系结构的研究旨在设计一个符合系统需求的结构框架,以便于软件系统的开发和维护。
软件体系结构研究的主要内容包括:系统需求分析、软件架构设计、模块划分和数据流程等。
首先,系统需求分析是软件体系结构研究的基础。
通过对系统需求的分析,可以确定系统的功能、性能、安全等要求,从而为软件架构设计提供指导。
其次,软件架构设计是软件体系结构研究的核心。
软件架构设计是指在系统需求的基础上,根据系统性能、可靠性等因素,设计出系统的组件、接口和关系。
常见的软件架构设计模式有层次结构、管道-过滤器、客户端-服务器等。
接着,模块划分是软件体系结构研究的关键。
模块划分是将系统拆解成多个模块,每个模块负责特定的功能。
模块划分可以按照功能划分、数据划分等多种方式进行。
合理的模块划分可以提高系统的可维护性和可复用性。
最后,数据流程是软件体系结构研究的重要内容。
数据流程是指系统中数据的流动方式和路径。
合理的数据流程可以提高系统的效率和响应速度。
在软件体系结构的研究中,还需要考虑系统的可扩展性、可移植性和安全性等因素。
可扩展性是指系统的容量和性能可以随着需求的增加而增加。
可移植性是指系统可以在不同的平台和环境下运行。
安全性是指系统能够保护用户的隐私信息,防止数据泄露和攻击。
综上所述,软件体系结构研究是软件开发过程中的重要环节,它可以帮助系统设计者设计出符合需求的软件系统。
通过对系统需求的分析、软件架构的设计、模块的划分和数据流程的设计,可以提高软件系统的可维护性、可复用性和可靠性。
软件体系结构研究还需要关注系统的可扩展性、可移植性和安全性等因素,以提高软件系统的性能和安全性。
总之,软件体系结构研究对于软件开发和系统维护都具有重要意义。
软件体系结构重构技术研究在现代软件开发中,软件体系结构体现了软件系统的总体架构。
一个优良的软件体系结构可以大大提升软件系统的可理解性、可维护性和可扩展性。
而随着软件开发的快速演进,当软件变得越来越复杂时,软件体系结构重构变得越来越重要。
那么什么是软件体系结构重构技术?本文将对其进行探究和研究。
一、软件体系结构重构的概念和目标软件体系结构重构是指在不改变软件外部行为的前提下,通过优化所涉及的代码和模块之间的关系来提升软件的质量。
通常,重构的目的在于使软件更易于理解和修改,更符合软件设计原则,最终提高软件的可维护性和可扩展性。
软件体系结构重构是在已有软件体系结构的基础上,对软件体系结构进行重新设计、调整和优化,使得软件系统的性能、可维护性和可扩展性得到提升。
通常,重构的主要目标在于改善软件的质量,使软件更稳定、更安全、更灵活和更易于维护。
所以,软件体系结构重构是一种非常实用且有价值的软件技术。
二、软件体系结构重构的技术分类软件体系结构重构可以分为三个方面:(1)模块化重构模块化重构是指将代码或数据根据其内在关系重新组织,从而增强模块的内聚性,减弱模块之间的耦合性。
通过模块化重构,可以使代码的结构更清晰,易于维护,同时也可以方便进行代码重用。
(2)层次重构层次重构是指将软件系统模块化,将模块分层,统一模块间的接口规范。
通过层次重构,可以将不同领域、模块之间的耦合性降低,从而更方便进行扩展和修改。
(3)组件化重构组件化重构是指将软件模块变成独立的组件,每个组件具有可重复使用的功能,可以随意组合使用。
通过组件化重构,可以提高软件的可重用性,使软件更加灵活。
三、软件体系结构重构的实现方法软件体系结构重构的实现可以通过以下步骤:(1)了解软件系统的整体架构在重构之前,需要首先了解软件系统的整体架构。
只有明确了软件系统的结构,才能更好地进行重构和优化。
(2)评估软件系统的质量通过评估软件系统的质量,可以了解软件系统存在的问题和需要重构的地方,从而确定重构的重点。
软件体系结构研究报告软件体系结构研究报告一、背景:随着计算机技术的不断发展和应用程序的复杂化,软件体系结构的研究日益受到关注。
软件体系结构是指软件系统中各个组件之间的关系和交互方式。
它是指导软件开发的重要依据,对于提高软件的可维护性、可扩展性和可重用性具有重要意义。
二、研究目标:本研究旨在探讨软件体系结构的相关理论和方法,为软件开发提供指导和支持。
三、研究内容:1. 软件体系结构的基本概念和分类:软件体系结构是指软件系统的组成部分以及它们之间的关系和相互作用。
根据软件体系结构的复杂程度和应用特点,可以将软件体系结构分为单体应用、分布式应用、面向服务的应用等。
2. 软件体系结构的设计原则:软件体系结构的设计需要考虑软件系统的需求和约束条件。
常用的设计原则包括模块化、层次化、松耦合、高内聚等。
3. 软件体系结构的建模方法:常用的软件体系结构建模方法包括结构化方法、面向对象方法、面向组件方法等。
这些方法通过图形化表示和描述软件系统的组成部分以及它们之间的关系。
4. 软件体系结构的评估与验证:软件体系结构的评估和验证是确保软件系统具备预期的属性和行为的重要途径。
常用的评估和验证方法包括可行性分析、模拟测试、形式化验证等。
四、研究方法:本研究采用文献综述和案例分析的方法,以系统地了解和总结软件体系结构的相关理论和方法,并结合实际应用案例,探讨软件体系结构的设计和评估方法。
五、研究结果:1. 通过对相关文献的综述,分析了软件体系结构的基本概念和分类;2. 总结了软件体系结构的设计原则,为软件开发提供了指导;3. 研究了软件体系结构的建模方法,包括结构化方法、面向对象方法和面向组件方法;4. 探讨了软件体系结构的评估与验证方法,并介绍了常用的评估和验证工具。
六、结论:软件体系结构是软件开发的重要环节,它能够有效提高软件的可维护性、可扩展性和可重用性。
通过本研究,我们对软件体系结构的相关理论和方法有了更深入的了解,为软件开发提供了指导和支持。
软件体系结构和设计模式的研究与应用一、引言软件体系结构是软件系统中最重要且最具决定性的设计决策之一,它是对系统的整体把握,呈现出软件系统元素组合的方式。
软件设计模式则是在设计领域中常见的概念,是指针对具有相似问题的设计、结构和行为问题的解决方案。
本文旨在探讨软件体系结构和设计模式的研究与应用。
二、软件体系结构的分类1.层次结构层次结构是将软件系统分成几个层次进行设计,从而达到将复杂软件系统分解为较小易处理的部分的目的。
每层都有一致的接口,上下层之间的协作是通过这些接口完成的。
2.客户/服务端结构客户/服务端结构是一种单一任务多用户的结构,客户端处理用户的输入,然后将请求传输到服务器端进行处理,最后将结果返回到客户端。
这种结构适用于大量并发用户操作情况。
3.管道/过滤器结构管道/过滤器结构是一个整体处理的体系结构,它采用一个包含许多过滤器的管道,数据由一端进入管道流经一系列过滤器后在另一侧出来。
三、软件设计模式的分类1.创建型模式创建型模式是指通过使用各种方法来创建对象的模式,包括简单工厂模式、工厂模式、抽象工厂模式、单例模式和生成器模式。
2.结构型模式结构型模式是指使用继承机制来组合类和对象以形成更大结构的模式,包括代理模式、适配器模式和桥接模式等。
3.行为型模式行为型模式是指关注对象之间的互动及其分配职责的模式,包括命令模式、责任链模式、观察者模式和状态模式等。
四、软件体系结构和设计模式的应用1.使用层次结构模式在面对较大/大型软件系统的时候使用层次结构能够将代码分为多层,使得代码更加透明和易于维护。
将软件组成部分划分清楚后,你就能很好地区分它们的任务和实现细节。
2.使用工厂模式在需要创建多个相似对象或需在更改代码时调整创建新实例的地方,工厂模式是一个很好的解决方案。
使用工厂模式,你可以将具体的类名完全隔离,从而避免构建时引用过多代码。
3.使用观察者模式观察者模式是一种数据模型,在数据发生变化时会通知已经订阅该数据的观察者对象。
软件体系结构设计方法的特点软件体系结构设计方法是指在软件开发过程中,通过对软件系统的结构和组织方式进行规划和设计的方法。
它是软件工程中的重要环节,直接影响软件系统的稳定性、可维护性和可扩展性。
软件体系结构设计方法具有以下特点:1.模块化设计:软件体系结构设计方法注重对软件系统的模块化划分。
将系统划分为多个模块,每个模块负责特定的功能或任务。
模块化设计可以提高开发效率、降低开发难度和维护成本。
同时,模块之间的接口定义清晰,便于模块之间的协作与集成。
2.分层设计:软件体系结构设计方法通过分层设计将系统划分为若干层次。
每一层次负责不同的功能或服务,并通过明确定义的接口与其他层次进行通信。
分层设计可以提高系统的可扩展性和可重用性。
同时,各层次之间的依赖关系清晰,每一层次的实现对上层是透明的,便于功能的修改和扩展。
3.面向对象设计:软件体系结构设计方法倾向于采用面向对象的设计方法。
面向对象设计将系统划分为多个简单的对象,并通过对象间的继承、组合和关联等关系来描述系统的结构和行为。
面向对象设计具有易于理解、易于维护、易于扩展等优点,适用于复杂系统的设计和实现。
4.客户与服务的解耦:软件体系结构设计方法注重将客户端与服务端解耦。
客户端只需要关注所需的服务,而不需要关心服务的具体实现。
服务端负责提供服务并处理客户端的请求。
这种解耦可以提高系统的灵活性和可扩展性,允许系统的不同部分以不同的速度进行开发和演化。
5.弹性设计:软件体系结构设计方法强调系统的弹性设计。
系统应该具有适应性和容错性,能够在面对不同的环境和需求变化时进行调整和自适应。
弹性设计可以提高系统的稳定性和可靠性,降低系统运行的风险。
6.可视化设计:软件体系结构设计方法倾向于采用可视化的设计方法。
通过绘制各种图表、图形和图示,将系统的结构、组织和功能可视化,便于设计人员和开发人员之间的沟通和理解,促进团队的合作和协作。
7.迭代与重构:软件体系结构设计方法倡导迭代与重构。
软件体系结构方法研究报告《软件体系结构方法研究》报告摘要本文将介绍软件体系结构方法的定义、分类和主要研究内容。
软件体系结构(Software Architectures)是软件系统的抽象概念,描述了软件的结构、组成部分和相互作用。
软件体系结构的研究包括软件体系结构识别、软件体系结构建模、软件体系结构分析和软件体系结构优化。
本文还讨论了软件体系结构的代表性框架和语言以及软件体系结构框架的设计方法。
关键词:软件体系结构;分类;建模;优化1 引言软件体系结构(Software Architectures)是描述软件系统的抽象概念,它涉及到软件的结构、组成部分和它们之间的相互作用。
软件体系结构的研究可以着重于软件体系结构的定义、发现、建模和优化,以实现构建高质量的软件系统。
近几年,软件体系结构的研究受到了重视,越来越多的研究者和企业开始更加注重软件体系结构的研究和实践。
本文讨论了软件体系结构的定义、分类和主要研究内容。
文章的结构如下:第2节介绍了软件体系结构的定义和分类。
第3节介绍了软件体系结构的研究内容,包括软件体系结构识别、软件体系结构建模、软件体系结构分析和软件体系结构优化。
第4节讨论了软件体系结构的代表性框架和语言,以及软件体系结构框架的设计方法。
第5节给出了总结和展望。
2 软件体系结构的定义和分类2.1 软件体系结构的定义软件体系结构(Software Architectures)是描述软件系统框架和模块之间的大型图案的抽象概念[1]。
它表示软件系统的显式和隐式结构,以及组件和它们之间的相互作用方式。
软件体系结构可以用来描述软件系统的功能、性能、可扩展性、可重用性和可维护性。
2.2 软件体系结构的分类软件体系结构可以按照不同的分类标准进行分类,如架构风格分类、框架类型分类和组成元素分类。
(1)根据架构风格分类,软件体系结构可以分为组件、客户-服务器、分层、Pipe-Filter、面向对象和嵌入式等6种风格。
第19卷第4期 重庆师范学院学报(自然科学版) 2002年12月Vol.19No.4 Journalof Chongqing NormalUnivers ity(Natural Science Edition) Dec.2002软件体系结构的特点与研究进展张广泉1,2(1.重庆师范学院数学与计算机科学系,重庆400047;2.中国科学院计算机科学国家重点实验室,北京100080)摘 要:软件体系结构是软件工程的一个重要研究领域,它提供了软件系统的高层抽象。
文章阐述了软件体系结构的产生背景和基本概念,以及体系结构描述语言(ADL)、求精方法和特定领域体系结构(DSSA)等主要研究内容;分析了软件体系结构与传统开发方法、O-O方法、设计模式、软件复用、净室技术以及统一建模语言(UML)等其它软件工程技术方法的联系和区别。
关键词:软件体系结构;体系结构描述语言;求精;特定域体系结构;设计模式;复用;净室;UML中图分类号:TP311 文献标识码:A 文章编号:1001-8905(2002)04-0001-06 The C haracteristics of Software Architecture and the Progress of Its StudyZHA NG Guang-quan1,2(1.Dept.of Mathematics and Computer Science,Chongqing Normal University,Chongqing400047;2.State Key Lab.of Computer Science,The Chinese Academy of Sciences,Beijing100080,China)A bstract:Software architecture is an important research area in software engineering.It provides a high-level abstraction of a soft-ware system.In this paper,first,the background and fundamental conception of soft ware architecture are introduced.Several main topics,such as architecture description languages(ADL),refinement methods and domain-specific soft ware architecture(DSSA) and so on,are discussed.Finally,the relation and distinction bet ween software architecture and other soft ware en gineering technolo-gies,such as traditional development methods,O-O methods,design pattern,software reuse;clean room technology,and unified modeling language(U M L),are analyzed.Key words:soft ware architecture;architecture description lan guage;refinement;domain-specific software architecture;design pat-tern;reuse;cleanroom;unified modeling language20世纪60年代,随着计算机在工业、商业、科研和国防等领域的广泛应用,计算机程序的规模愈来愈大,其复杂性也急剧增加,软件开发和维护过程遇到了一系列难以解决的严重问题,如软件价格高、难以控制开发进度、工作量估计困难、软件质量低、错误多、且修改和维护十分困难等等;针对这种所谓的“软件危机”现象,1968年在德国Gar mish召开的NATO(北大西洋公约组织)计算机科学会议上,F.Bauer首先提出“软件工程”概念,其目标是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术和方法结合起来,从而解决或缓解软件危机。
在另一方面,软件危机也促使人们深入探讨程序和程序开发过程的规律,建立严密的理论,以期能用来指导软件开发实践,从而促进了软件方法学特别是形式化方法的研究[1]。
软件工程与软件方法学二者密切相关,既有联系、又有区别,一方面它们研究的侧重点不同,软件工程研究侧重传统工程学科,最终目的是把软件生产变成一门制造工程,而研究软件方法学的目的是寻求科学方法的指导,把软件开发活动置于坚实的理论基础上。
另一方面,它们之间又相互影响、相互渗透,软件工程需要方法学的依据和指导,而方法学也依赖软件工程特别是环境工具来发挥实际效用。
三十多年来,人们不断从收稿日期:2002-08-08资助项目:国家自然科学基金(60073020);国家“十五”863高科技计划(2001AA113200);重庆市应用基础研究项目;中国科学院计算机科学国家重点实验室、运筹学与控制论市级重点实验室资助项目。
作者简介:张广泉(1965-),男,江苏连云港人,重庆师范学院数学与计算机科学系副教授,博士后。
主要从事软件工程与形式化方法研究。
上述两方面探索新的软件开发方法和技术,期望通过好的方法和工具来提高软件生产率和质量,软件体系结构即是20世纪90年代软件工程领域出现的一个新的研究分支。
软件设计在相当大的程度上可与建筑设计相类比,在古今中外建筑设计中,有诸多如欧洲的“歌特式”、“巴洛克式”、“维多利亚式”,中国的“园林式”、“宫廷式”等不同结构风格的建筑。
同样在软件设计上,经过多年的理论探索和工程实践,也逐渐形成了一系列不同结构风格的软件体系结构。
如UNIX 操作系统中的管道-过滤器(pipes -filters )风格、分布式系统中典型的客户 服务器(client -server )风格以及通信系统中的分层(layer )结构等[2]。
根据1999年IE EE AW G P1471的定义,所谓软件体系结构,它是软件系统的高层抽象,描述整个系统的结构和行为模型,标识了主要的系统组件、组件之间的交互———连接件、组件和连接件如何结合在一起的约束与配置关系(见图1)。
图2描述了客户 服务器(C S )风格的体系结构,其中组件Client 与Sever 通过连接件RPC (远程过程调用)协议通信。
图1 软件体系结构示意图 图2 客户 服务器体系结构软件体系结构可看作是软件结构研究的继续,最早可追溯到20世纪60年代操作系统大师们对OS 和其它复杂软件系统的论述(如T .H .E 和Unix 的论述),如Dijkstra 和Parnas 等对软件的组织和结构的研究,F .Deremer 和H .Kron 认识到编写大型程序和编写小型程序的活动是不同的,提出用模块互连语言(module inter -connection language )来表示程序的总体结构。
后来,Parnas 、B oehm 等人对兆程序设计(mega -programming )和程序族(progra m family )的讨论再次引发有关软件体系结构的讨论。
真正展开对软件体系结构的一般理论的研究则是始于D .E .Perry 和A .L .W olf 于1992年在AC M SI GSOFT Software Engineering Notes 发表“Foundations for the Study of Software Architectur e ”一文后。
从那时起,在每年一届的国际软件工程会议上基本都有关于软件体系结构的研究文章。
1 软件体系结构主要研究内容目前软件体系结构已发展为软件工程领域的一个独立的分支,是软件工程的一个新的研究方向。
其主要研究内容如下。
1.1 软件体系结构描述语言(ADL )体系结构描述是软件体系结构研究的一个核心问题[3]。
目前体系结构描述方法可分为非形式化、半形式化和形式化三类方法。
图表法是一种典型的非形式方法,它采用矩形框和连线来表示体系结构(如图1、图2)。
该方法虽然直观、易理解,但没有分析工具,无法对系统进行各种特性分析。
半形式方法有模块互连语言(MIL )、软构件描述法等;MIL 用模块接口来描述系统交互,它将系统的配置描述与系统的组成分解开,这一点比模块化编程语言更能满足组装和配置的某些特性。
MIL 对于模块化程序设计和分段编译等效果明显,由于它仅支持编程中的块间交互,对高层次的体系结构的描述和处理能力有限。
体系结构描述语言(ADL )采用形式化方法描述体系结构,通常以一形式化语言(如CSP 、Z 、时序逻辑等)作为它的底层语义模型,并为软件系统的概念体系结构建模提供了具体语法和概念框架,还有一系列基于底层语义的工具支持体系结构的表示、分析、演化和设计。
由于ADL 不但是形式化描述体系结构的基本工具,而且也是对体系结构进行求精、验证、演化和分析的前提和基础。
因此,目前对软件体系结构的研究主要集中在体系结构描述语言方面[3,4]。
目前常见的一些ADL 有Wright 、Rapide 、Unicon 、Aesop 、Dar win 等。
1.2 软件体系结构求精ADL 是对软件体系结构的形式化描述,它只关心软件系统的高层结构,不关心实现细节。
因此在对系统抽象描述之后,一个十分重要的任务就是如何将其分层细化、逐步求精为具体的可实现的软件体系结构。
这里上层与下层之间存在一种形式上的抽象映射,低层通过这种映射应保留高层的属性。
2重庆师范学院学报(自然科学版) 第19卷这里体系结构的求精与早期的程序逐步求精不仅在实现细节的层次级别上不同,而且在实现方法上前者也要比后者复杂得多,这是因为抽象的软件体系结构(风格)通常是简单易理解的,而具体的软件体系结构因为要考虑实现的问题而很复杂,因而在不同抽象层次的软件体系结构之间的映射通常没有明确的规定,即使有,一般也是不完备的。
因此很难检查相邻两层体系结构之间求精过程的语义一致性,也难以对体系结构的性质(如连接的安全性、公平性)进行分析和验证。
传统的求精采用行为替换方法,Rapide 即采用此方法对体系结构进行求精:如果能找到一个有效的从系统X2到X1的抽象映射,则X2可以代替X1。
该方法的特点是下层的具体表示不应产生上层抽象表示不能表示的任何行为和性质,即求精不能破坏系统的基本结构。