对软件体系结构的认识

.

软件体系结构(架构)

软件体系结构的定义

通常,软件体系结构通常被称为架构,指能够预制和可重构的软件框架结构。架构尚处在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度
的视点也会造成软件体系结构的不同理解。比方,
ANSI/IEEE
610.12-1990软件project标准词汇对于体系结构定义是“体系架构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织结构以
及知道上述内容设计与演化的原理
(principle)”;而
Garlan
&
Shaw模型的基本思想是:软件体系结构
={构件
(component),连接件
(connector),约束
(constrain)}。

对于软
件项目的开发来说,一个清晰的软件体系结构是首要的。传统的软件开发过程能够划分为从概念到实现的若干个阶段,包含问题定义、需求分析、软件设计、软件实
现及软件測试等。软件体系结构的建立就位于需求分析之后,软件设计之前。在建立软件体系结构时系统设计师主要从结构的角度对整个系统进行分析,选择恰当的
构件(
Component)、构件间的相互作用以及它们的约束,最后形成一个系统框架(
Framework)以满足用户的需求,为软件设计奠定基础。

软件体系结构风格

软件体系结构设计的一个核心问题是是否能使用反复的体系结构模式,即是否能达到结构级的软件重用。也就是说,是否能在不同的软件体系中,使用同一体系结构。基于这个目的,学者们開始研究和实践软件体系结构的风格问题。

软件体系结构风格是描写叙述某一特定应用领域系统组织方式的惯用模式。它反映了领域中众多系统全部的结构和语义特性,并指导怎样将各个模块和子系统有效地组织成一
个完整的系统。对软件体系结构风格的研究和实践促进了对设计的复用,一些经过实践证明的解决方式也能够可靠地用于解决新的问题。体系结构风格的不变部分使不同的系统能够共享一个实现代码。仅仅要系统是使用经常使用的、规范的方法来组织,就可使别的设计者非常easy地理解系统结构。

Garlan和
Shaw对通用体系结构风格进行例如以下分类:


1)数据流风格:批处理序列、管道
/过滤器等;


2)调用
/返回风格:主程序
/子程序、面向对象风格、层次结构等。


3)独立构件风格:进程通讯、事件系统等;


4)虚拟机风格:解释器、基于规则的系统等;


5)仓库风格:数据库系统、超文本系统、黑板系统等。

近年来,出现了很多新的体系结构风格,比如客户
/server(
Client
/Server)结构、浏览器
/server(
Browser/Server)结构、正交(
Orthogonal)结构、三层
C/S结构等。

软件体系结构的建模研究

研究软件体系结构的首要问题是怎样表示软件体系结构,即怎样对软件体系结构建模。依据建模的側重点的不同,能够将软件体系结构的模型分为
5种:结构模型、框架模型、动态模型、过程模型和功能模型。当中,最经常使用的是结构模型和动态模型。

研究热点

当前,体系结构仍是一个很新的研究领域,其概念还相当模糊。但软件体系结构作为软件project领域中的一个组成部分,已经取得了长足的发展,受到大多数软件系统设计和研究人员的重视。

软件体系结构眼下较活跃的研究方向包含:(
1)软件体系结构形式基础的研究;(
2)针对软件体系结构描写叙述中特有的问题研究新的专门的高级语言;(
3)建立用于度量和评价软件体系结构的模型和方法;(
4)建立面向专门领域的软件体系结构范型库。(
5)把软件体系结构从眼下的直觉和经验状态过渡到理论。

二.模式


式(
Pattern)的概念最早由建筑大师
Christopher
Alexander于二十世纪七十年代提出,应用于建筑领域,八十年代中期由
Ward
Cunningham和
Kent
Beck将其思想引入到软件领域,
Christopher
Alexander将模式分为三个部分:

(1)周境(
Context,也能够称着上下文)
,指模式在何种状况下发生作用;

(2)动机(
System
of
Forces)
,意指问题或预期的目标;

(3)解决方式(
Solution)
,指平衡各动机或解决所阐述问题的一个构造或配置(
Configuration)。

他提出,模式是表示周境、动机、解决方式三个方面关系的一个规则,每一个模式描写叙述了一个在某种周境下不断反复发生的问题,以及该问题解决方式的核心所在,模式
即是一个事物(
thing)又是一个过程
(process),不仅描写叙述该事物本身,并且提出了通过如何的过程来产生该事物。这一定义已被软件界广为接受。

软件模式的应用对软件开发产生了重大的作用,主要表如今:


1)软件模式是人们在长期的设计软件、管理组织软件开发等实践中大量经验的提炼和抽象,是复用软件设计方法、过程管理经验的有力工具。模式相似于拳击中的组合拳,它提供了一系列软件开发中的思维套路。如,通过模式的使用,有利于在复杂的系统中产生简洁、静止的设计。

(2)
软件模式为我们提供了一套简洁通用的设计、管理、组织方面的词汇,同一时候模式也为我们提供了一个描写叙述抽象事物的规范标准,可大大促进软件开发过程中人与人之
间的交流,而软件开发中的交流是至关重要的,“软件项目失败的原因终于都可追溯到信息没有及时准确地传递到应该接收它的人”。

三.架构和模式的关系

架构
(Architecture)和模式
(Pattern)在当前的软件开发中常常地被提及,这两个术语很easy混淆,并且学术界也没有一个很统一的定义。

架构和模式应该是一个属于相互涵盖的过程,可是整体来说
Architecture更加关注的是所谓的
High-Level
Design,而模式关注的重点在于通过经验提取的“准则或指导方案”在设计中的应用,因此在不同层面考虑问题的时候就形成了不同问题域上的
Pattern。模式的目标是,把共通问题中的不变部分和变化部分分离出来。不变的部分,就构成了模式,因此,模式是一个经验提取的“准则”,而且在一次次的实践中得到验证,在不同的层次有不同的模式,小到语言实现
(如
Singleton)大到架构。在不同的层面上,模式提供不同层面的指导。依据处理问
题的粒度不同,从高到低,模式分为
3个层次:


1)架构模式
(Architectural
Pattern)、设计模式
(Design
Pattern)、实现模式
(Implementation
Pattern).架构模式是模式中的最高层次,描写叙述软件系统里的主要的结构组织或纲要,通常提供一组事先定义好的子系统,指定它们的责任,并给出把它们
组织在一起的法则和指南。比方,用户和文件系统安全策略模型,
N-层结构,组件对象服务等,我们熟知的
MVC结构也属于架构模式的层次。一个架构模式经常
能够分解成非常多个设计模式的联合使用。


2)设计模式是模式中的第二层次,用来处理程序设计中重复出现的问题。比如,《设计模式
--可复用面向对象软件的基础》一书中总结的
23个基本设计模式——
Factory
Pattern, Observer
Pattern等。


3)实现模式是最低也是最详细的层次,处理详细到编程语言的问题。比方,类名,变量名,函数名的命名规则;异常处理的规则等等。

相对于系统分析或者设计模式来说,体系结构从更高的层面去考虑问题,所以关注的问题就体如今“不变”因素上,比方系统部署中,更加关心应用程序的分层分级设计,而在这个基础之上提出的部署方案,才是架构考虑的重点。体系结构关心应用程序模式,更加体如今通过技术去解决这些业务差异带来的影响,关心是否是分布式应用程序,关心系统分层是怎样设计,也关心性能和安全,因此在这种情况之下,会考虑集群,负载平衡,故障迁移等等一系列技术。

总之,希望通过定义的方式来区分架构和模式是不太可能的,由于本来就是交互交叉和提供服务的,它实际上是架构模式,而不是设计模式。在大部份情况下,表现为以下几个设计
模式之中的一个:
Strategy模式、
Mediator模式、
Composite模式、
Observer模式。对于熟悉架构设计的系统架构师而言,似乎能够用
例如以下来解释架构和模式之间的关系:架构是
Hight-Level
Design,着眼于不同业务中共性的解决方式,而模式是
General
Principle(通用原理
)。

对软件体系结构的认识,布布扣,bubuko.com

时间: 2024-10-08 11:13:30

对软件体系结构的认识的相关文章

正交软件体系结构

正交软件体系结构由组织层和线索的构件构成.其中,层是由一组具有相同抽象级别的构件构成:线索是子系统的特例,它由完全不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能.每一条线索的实现与其他线索的实现无关或关联很少,在同一层中构件之间是不存在相互调用的.正交软件体系结构的特征如下: (1)正交软件体系结构由完成不同功能的n(n>1)个线索(子系统)组成. (2)系统具有m(m>1)个不同抽象级别的层. (3)线索之间是相互独立的(正交的). (4)系统有一

软件体系结构 实验一

1.概念理解 (1)请根据你的理解和看法,给出"软件体系结构"的定义. 软件体系结构是指组成软件的各个构件.各构件间的关系以及软件设计的指导方向. (2)所谓"软件开发知识的半衰期",是什么含义?这个说法是否同样适用于"软件工程原则"?为什么? "软件开发知识的半衰期"是指随着软件开发技术的发展,经过一定的时间周期后,在软件开发领域将有一半的知识过时.这样的周期就是"软件开发知识的半衰期". 不适用,考虑&

软件体系结构C2风格

首先C2风格是最常用的一种软件体系结构风格.(下图为一个C2风格的架构图) C2是一种基于构件和消息的架构风格,可用于创建灵活的.可伸缩的软件系统.一个C2构架可以看成是按照一定规则由连接件连接的许多组件组成的层次网络:系统中的构件和连接件都有一个“顶部”和“底部”:一个构件的“顶部”或“底部”可以连接到一个连接件的“底部”或“顶部”:对于一个连接件,和其相连的构件或连接件的数量没有限制,但是构件和构件之间不能直接相连. C2风格具有以下特点: (1)系统中的构件可实现应用需求,并能将任意复杂度

软件体系结构原理、方法与实践总结

第1章:软件体系结构概论 什么是软件危机,软件危机的具体表现有哪些? 软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象. 软件危机的表现: 软件成本日益增长,开发进度难以控制,软件质量差,软件维护困难 产生软件危机的原因,如何克服软件危机? 产生软件危机的原因有用户需求不明确,缺乏正确的理论指导,软件规模越来越大,软件复杂度越来越高. 人们面临的不光是技术问题,更重要的是管理问题.要提高软件开发效率,提高软件产品质量,必须采用工程

EYES组——软件体系结构上机规划

EYES组——软件体系结构上机规划 考勤助手 第九周: 需求分析的详细撰写,并在此基础上讨论与完善,讨论软件的体系结构风格: 第十周: 选择合适的软件构架风格(暂定分层风格),确定整个项目的分层设计,做出“考勤助手”的软件体系结构图: 第十一周: 数据库设计,包括数据库需求分析,设计E-R图,数据库结构的实现: 第十二周: 组长分配任务,各自选择子系统合适的描述方式,所选内容随后在介绍: 时间允许情况下:“教务老师”功能模块的详细设计: 第十三周: 完成子系统的分层图和用例图后,汇总所有材料,讨

分布式软件体系结构风格(C/S,B/S)

分布式软件体系结构风格 1.  三层C/S结构 2.  三层B/S结构 了解很多其它软件体系结构 三层C/S结构(3-Tier C/S Architecture) §第1层:用户界面GUI-表示层--客户机 §第2层:业务逻辑-功能层--应用server §第3层:数据库-数据层--数据库server 基本组件: –数据库server ? 存放数据的数据库.负责数据处理的业务逻辑: –应用server ? 业务逻辑:对数据进行处理: –客户机应用程序 ? GUI:用户界面 §连接件:经由网络的调

软件体系结构的认识

软件体系结构,也就是软件架构.提到架构,我首先想到的是建筑行业的“架构”.在我们要盖一栋建筑物之前,会有专业的设计师设计图纸,分析建筑物的架构,保证建筑物的安全性.在软件行业也是如此,当我们开发一个软件之前,也需要有专业人士对软件进行分析,做出架构,这就是架构师. 要了解软件架构,首先得明白什么事架构. 架构就是: 根据要解决的问题,对目标系统的边界进行界定 并对目标系统按某个原则进行切分.切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间. 并对这些切分出

软件体系结构基本概念汇总

这门课与UML建模,程序设计方法学一样,都是站在比较高的角度来看整个软件结构.并不是对算法,或者语言的关注.如果以后有志于成为软件架构师,就应该好好学这门课.现在我把自己整理的这门课的资料与大家分享. 二.名词解释(每题2分,共20分) 1.B/S(期中) 答:浏览器/服务器风格,是三层应用结构的一种实现方式. 具体结构:浏览器/Web服务器/数据库服务器. 2.C/S(期中) 答:客户/服务器风格,是基于资源不对等,且为共享而提出来的,定义了工作站如何与服务器相连,以实现数据和应用分布到多个处

软件体系结构---软件体系结构之解释器风格

1.软件体系结构风格 软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能否达到体系结构级的软件重用.也就是说,能否在不同的软件系统中,使用同一体系结构.基于这个目的,学者们开始研究和实践软件体系结构的风格和类型问题. 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式.它反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统.按这种方式理解,软件体系结构风格定义了用于描述系统的术语表和一组指导构件系统的规则. 对软件体系结构风