① 编译器采用什么软件体系结构风格
软件架构:整个软件系统的各个模块之间的结构设计,是软件工程范畴的概念,就象设计一栋房子由几个什么样的板块组成一样。
软件体系结构:是软件编程风格范畴的一个通俗概念,比如说用C++、PoworBuild、Delphi等来进行软件设计是面向对象的编程语言体系结构,而Basic、C、Foxbase的软件体系结构特点是面向任务流程的(不是面向对象的编程语言)。
② 软件工程中:体系结构和体系结构框架区别,体系结构框架和设计模式的区别.
简单说吧,体系结构指的是构成系统的组成元素及其之间的关系,是形而上的东西。体系结构框架相对于体系结构更加务实,有些时候已经是一个半成品,可以在此基础上进行定制开发或二次开发。设计模式不同于体系结构(甚至可以说没有可比性,虽然定义上有些容易混淆),因为它更加通用,是设计的通用解决方案和经验总结。举个例子来说,你可以说我们讨论一下某个系统的体系结构,但不能说讨论一下某个系统的设计模式,最多只能说其中用到了多少种设计模式及其变体。
③ 请问:关于软件架构风格和架构模式之间的区别,有什么论文、文献进行阐述和剖析中英文均可。
你这个问题可以在《软件工程》教材或者 软件工程师,软件架构设计师教材中得到完整的解释。下面做简单的解释,并附上关于软件体系风格和架构模式的PPT
体系结构风格:是描述某一特定应用领域中系统组织方式的惯用模式。
体系结构模式:是具体软件体系结构的模板,表示软件系统的基本结构化组织方式。它提供了一套预定义的子系统,规定他们的职责,并包含用于组织它们之间关系的规则和指南。
④ 请问软件架构与软件体系结构有什么关系
软件架构:整个软件系统的各个模块之间的结构设计,是软件工程范畴的概念,就象设计一栋房子由几个什么样的板块组成一样。
软件体系结构:是软件编程风格范畴的一个通俗概念,比如说用C++、PoworBuild、Delphi等来进行软件设计是面向对象的编程语言体系结构,而Basic、C、Foxbase的软件体系结构特点是面向任务流程的(不是面向对象的编程语言)。
⑤ 软件工程中的主要体系结构有哪些,并说明区别
20世纪60年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上,然而随着软件系统规模越来越大,对总体的系统结构设计和规格说明变得异常重要。随着软件危机程度的加剧,软件体系结构(software architecture)这一概念应运而生。软件体系结构着眼于软件系统的全局组织形式,在较高层次上把握系统各部分之间的内在联系,将软件开发的焦点从成百上千的代码上转移到粒度较大的体系结构元素及其交互的设计上。与传统软件技术相比,软件体系结构理论的提出不仅有利于解决软件系统日益增加的规模和复杂度的问题,有利于构件的重用,也有利于软件生产率的提高。面向方面软件开发(AOSD)认为系统是由核心关注点(corn concern)和横切关注点(cross-cutting concern)有机地交织在一起而形成的。核心关注点是软件要实现的主要功能和目标,横切关注点是那些与核心关注点之间有横切作用的关注点,如系统日志、事务处理和权限验证等。AOSD通过分离系统的横切关注点和核心关注点,使得系统的设计和维护变得容易很多。
Extremara大学的Navasa等人[1]在2002年提出了将面向方面软件开发技术引入到软件体系结构的设计中,称之为面向方面软件体系结构(aspect oriented software architecture,AO-SA),这样能够结合两者的优点,但是并没有给出构建面向方面软件体系结构的详细方法。
尽管目前对于面向方面软件体系结构这个概念尚未形成统一的认识,但是一般认为面向方面软件体系结构在传统软件体系结构基础上增加了方面构件(aspect component)这一新的构成单元,通过方面构件来封装系统的横切关注点。目前国内外对于面向方面软件体系模型的研究还相对较少,对它的构成单元模型的研究更少,通常只关注方面构件这一构成单元。方面构件最早是由Lieberherr等人[2]提出的,它是在自适应可插拔构件(adaptive plug and play component,APPC)基础之上通过引入面向方面编程(AOP)思想扩展一个可更改的接口而形成的,但它关于请求接口和服务接口的定义很模糊,未能给出一个清晰的方面构件模型。Pawlak等人[3]提出了一个面向方面的框架,该框架主要包含了一个方面构件模型———Java方面构件(Java aspect component,JAC),但该方面构件模型仅包含了切点(pointcut),并把AOP中装备(advice)集成到了切点的表达式中,它主要从实现的角度进行了阐述,并没有给出详细的方面构件模型。本文没有只关注面向方面软件体系结构中方面构件这一构成单元模型,还详细分析了它的另外两个构成单元,即构件和连接件,因为面向方面软件体系结构各部分之间是相互关联的。
1面向方面软件体系结构相关概念
面向方面软件体系结构涉及诸多概念,以下将分别介绍。软件体系结构在软件工程领域有着广泛的影响,但当前仍未形成一个统一的、标准的定义。目前国内外普遍认可的看法是软件体系结构包含构件、连接件和约束[4]。其中约束描述了体系结构配置和拓扑的要求,确定了体系结构的构件与连接件的连接关系。这样就可以把软件体系结构写成
软件体系结构(software architecture)=构件(components)+
连接件(connectors)+约束(constraints)
构件是软件体系结构的基本元素之一。一般认为,构件是指具有一定功能、可明确辨识的软件单位,并且具备语义完整、语法正确、有可重用价值的特点,然而目前对于构件的具体结构及构成并没有一个统一的标准[5],而且一些主要的构件技术也没有使用相同的构件类型。另外,当前被广泛接受的构件定义并不包含具体的软件构件模型(software component model)。例如,Szyperski等人[6]给出了软件构件一个很有名的定义:软件构件是一个仅带特定契约接口和显式语境依赖的结构单位,它可以独立部署,易于第三方整合。但是关于软件构件模型有一个被普遍接受的观点是:软件构件是一个具有服务提供和服务请求功能的软件单元[7]。
连接件是软件体系结构另一个基本的构成元素,是用来建立构件间交互以及支配这些交互规则的构造模块。连接件最先是由Shaw[8]提出来的,她建议把连接件作为软件体系结构中第一类实体,用来表示普通构件之间的交互关系。目前对于连接件尚未形成统一的认识,尽管在软件体系结构中强调了连接件存在的必要性,但是关于连接件模型的研究还很少,连接件的实际应用还不成熟。
面向方面软件体系结构在传统软件体系结构的基础上增加了方面构件单元。通常认为,方面构件是封装了系统横切关注点的一类特殊的构件。目前关于方面构件模型的研究还处于起步阶段。
2面向方面软件体系结构模型
由于传统软件体系结构模型包含构件、连接件和约束,而面向方面软件体系结构是在传统软件体系结构的基础之上扩展了方面构件,所以面向方面软件体系模型结构包含构件、连接件、方面构件和约束。其中约束描述了面向方面体系结构配置和拓扑的要求,确定了体系结构的构件、连接件和方面构件之间的连接关系,而构件、连接件、方面构件是它的三个基本的构成单元。以下对这三个构成单元的模型进行详细的设计。
⑥ 软件体系结构 内涵
软件体系结构(software architecture) : 软件总体结构的抽象表示,或以此为研究对象的学科。软件体系结构具有如下几种含义。
规定性含义软件体系结构由结构元集、结构形以及结构理三部分组成,即软件体系结构≡(结构元集,结构形,结构理) 其中,结构元集为一组构成软件的结构元。结构元有三类,即处理元、信息元和连接元。处理元为对信息元施行处理的构件,信息元为处理元的处理对象,连接元负责构件间的连接。结构形包括特性、联系以及权重。特性用以约束结构元的选取,联系则约束结构元间的交互与组织,权重表示特性及联系的重要程度。结构理刻画体系结构人员选取体系结构风格、结构元、结构形的动因与根据。体系结构风格是各种特定体系结构中结构元与结构形的抽象,它不如特定体系结构约束严格,亦不如特定体系结构完备。例如,有分布式风格,多进程风格等,它们强调的只是特定体系结构的某些方面。描述性含义软件体系结构由构件集、连件集、模式以及约束集四部分组成,即软件体系结构≡(构件集,连件集,模式,约束集) 其中,构件集表示构成软件的一组组成元素,连件集为一组连件,用以刻画各构件间的交互,模式为软件设计风格的描述,反映由构件及连件构成软件的构成原则,约束集中的约束表示对模式所加的限制条件。例如,在客户一服务器系统中,客户与服务器均为构件,构件间交互的描述(如过程调用、事件广播等)为连件,客户一服务器模式为模式,具体系统中对模式所加条件为约束。多视面含义软件体系结构为软件的一个或多个结构,每一结构反映一种视面,即软件体系结构;结构集结构≡(构件集,外部可见特性集,联系集) 其中,构件集表示构成软件的一组组成元素,外部可见特性反映为其他构件可利用该构件所作的假定,联系用以沟通相关构件。由于软件体系结构可有多个结构,从而可有多类构件、多种联系,故在定义中并不指明何类构件与何种联系。常用的结构类型有模块结构、进程结构和概念结构等。常用的视面有代码视面、模块视面、执行视面以及概念视面。其中惯常理解的软件体系结构反映了概念视面。学科含义以前述各种含义的软件体系结构为研究对象的学科或谓在研究与开发前述各种含义的软件体系结构中所涉及的理论、原则、方法、技术所形成的学科。软件体系结构发展不久,迄今未见被普遍接受的单一定义,然而,它对软件的后续开发过程以及品质量的影响举足轻重,已成为软件工程的重要研究方面,且其重要性将与日俱增。