软件体系结构定义:一个程序和计算系统软件体系结构是指系统的一个或多个结构。结构中包括软件的构件,构件的外部可见属性以及它们之间的相互关系。

体系结构不是可运行软件,而是一种表达,使工程师能:分析设计在满足规定需求方面的有效性;设计变更相对容易的阶段,考虑体系结构可能的选择方案;降低与软件构造相关联的风险。

体系结构重要有三个关键原因:

软件体系结构的表示有助于对计算机系统开发感兴趣的各方开展交流;体系结构突出了早期设计决策,这些决策对随后的所有软件工程工作有深远的影响,同时对系统作为一个可运行实体的最后成功有重要作用;体系结构构建了了一个相对小的,易于理解的模型,该模型描述了系统如何构成以及其构件如何一起工作。

数据设计

数据设计把分析模型中定义的数据对象转化成软件构件级的数据,并在必要时转化为应用程序级的数据库体系结构。

体系结构级的数据设计

当今时代,大大小小的业务充斥着数据,如何从这些庞大的数据环境中提取有用的信息,特别当需要的信息是功能交叉时。为解决这个挑战,IT界发出了数据挖掘技术,也叫数据库中的知识发现,knowledge discovery in databaseKDDKDD遍历现有的数据库以试图抽取合适的业务信息。另一种可选的解决方案称为数据仓库,data warehouse,该技术为数据体系结构增加了一个附加层。数据仓库是一个独立的数据环境,它不直接和日常的应用系统结合,但包含了某业务使用的所有数据。从某种意义上讲,数据仓库是一个庞大的,独立的数据库,它能够访问存在于数据库中的数据,为某项业务所需要的一组应用系统服务。

构件级的数据设计

构件级的数据设计关注于那些被一个或多个软件构件直接访问的数据结构的表示。

1)应用于功能和行为的系统分析原则也可应用于数据。

2)标识所有数据结构及其完成的操作。

3)应该建立定义数据对象内容的机制。

4)低层的数据设计决策应该延迟到设计过程的后期。

5)只有那些直接使用数据结构内部数据的模块才能够看到该数据结构的表示。

6)应该开发一个由有用的数据结构及其操作组成的库。

7)软件设计和程序设计语言应该支持抽象数据类型的规格说明和实现。

体系结构风格和模式

为计算机系统建造的软件展示了众多体系结构风格中的一种,每种风格描述一种系统类别,包括:一组构件完成系统需要的某种功能;一组连接器,它们能使构件间实现通信,合作和协调;约束,定义构件如何集成为一个系统;语义模型,它能使设计者通过分析系统的构成成分的性质来理解系统的整体性质。

体系结构风格的分类

以数据为中心的体系结构:数据存储驻留在这种体系结构的中心,其他构件会经常访问该数据存储,并对存储中的数据进行增删改查。

 

数据流体系结构:输入数据经过一系列计算和操作构件的变换形成输出数据,可应用数据流体系。管道和过滤器结构有一组被称为过滤器的构件,这些构件通过管道连接,管道将数据从一个构件传到下一个构件。每个过滤器独立于其上游和下游的构件而工作,过滤器的设计要针对某种形式的数据输入,且产生某种特定形式的数据输出。如果数据流退化成单线的变换,则称为批序列,这种结构接收一批数据,然后应用一系列连续的构件变换它。

 

 

调用和返回体系结构:此体系结构中存在两种子风格:

主程序/子程序体系结构:这种的程序结构将功能分解成一个控制层次,其中主程序调用一(1)组程序构件,这些程序构件又去调用别的程序构件。

2)远程过程调用体系结构:主程序/子程序体系结构的构件分布在网络的多个计算机上。

面向对象的体系结构:系统构件封装了数据和必须应用到该数据上的操作,构件间通过信息传递进行通信与合作。

层次体系结构:定义了一系列不同的层次,每个层次各自完成操作。最外层,构件完成用户界面的操作;最内层,构件完成与操作系统连接;中间层提供各种实用程序服务和应用软件功能。

 

体系结构模式

软件体系结构模式定义了处理系统某些行为特征的方法。并发性,持久性,分布性。

 

体系结构设计

1)系统的环境表示

系统环境图通过描述系统的出入信息流,用户界面和相关的支持处理等来实现这一需求。在体系结构设计层,通过体系结构环境图,architectural context diagramACD对软件与外部实体交互的方式进行建模。

 

与目标系统,即开发体系结构的系统,交互的系统可表示为:

上级系统:把目标系统作为某些高层处理方案的一部分

下级系统:被目标系统使用,并为了完成目标系统的功能提供必要的数据和处理

同级系统:在对等的基础上相互作用

参与者:通过产生和消耗必不可少的处理所需的信息,实现与目标系统交互的实体

每个外部实体都通过某一接口(小矩形表示)与目标系统进行通信

2)定义原始模型

原始模型,archetype,是一个类或一个模式,描述了一个目标系统体系结构设计的核心抽象。很多情况下,可通过检验作为分析模型一部分的分析类来获得原始模型。

3)将体系结构精化为构件

4)描述系统实例

 

评估可选的体系结构设计

1)体系结构权衡分析方法

该方法建立了一个迭代的软件体系结构评估过程。

收集场景,从用户的角度描述系统;诱导需求,约束和环境描述。这些信息做为需求工程的一部分,用于保证所有共利益者的关注点都会涉及;描述那些已经被选用于解决场景和需求的体系结构风格/模式;通过孤立地考虑每个属性来评估质量属性,体系结构的设计评估的质量属性有:可靠性,性能,安全性,可维护性,灵活性,可测试性,可移植性,可复用性和互操作性;针对特定的体系结构风格,弄清质量属性对各种体系结构属性的敏感性;使用第5步中进行的敏感性分析鉴定候选体系结构。

2)体系结构复杂性

对体系结构的整体复杂性进行评估,一种很有用的技术是考虑体系结构中构件间的依赖关系,这些依赖关系是由系统中的信息/控制流驱动的。三种类型的依赖:

共享依赖:表示在使用相同资源的消费者间或为相同消费者生产的生产者之间的依赖关系。

流依赖:表示资源的生产者和消费者之间的依赖关系。

约束依赖:表示在一组活动间相关控制流上的约束。

3)体系结构描述语言

体系结构描述语言:architectural description languageADL,为描述软件体系结构提供了一套语义和语法。

 

映射数据流到软件体系结构

为了描述体系结构映射的方法,考虑调用和返回体系结构的映射技术。通过分析模型的数据流图,导出复杂的调用和返回体系结构。这种技术有时也称结构化设计。

1)变换流

信息沿各种将外部数据变换为内部形式的路径进入系统,这些路径被标识为输入流;输入数据通过变换中心,并沿着各种路径流出软件,这些流出的数据称为输出流。整个数据流动以一种顺序的方式沿着一条或很少几条直线路径进行,当一部分数据流图展现了这些特征时,就表明了变换流的存在。

2)事务流

信息流经常被描述为单个数据项,称为事务,它可以沿多条路径中的一条触发其他数据流,那么它就是事务流。

事务流通过数据沿某输入路径的移动来呈现其特征,该输入路径将外部信息转换成一个事务。对事务进行评估,且根据其值启动其中一条动作路径流。发射出很多动作路径的信息流中心被称为事务中心。

3)变换映射

变换映射是一组设计步骤,可以将具有变换流特征的DFD映射为某个特定的体系结构风格。为了将数据流图映射成体系结构,可以通过以下步骤进行:(以SafeHome安全功能为例)

步骤1:评审基本系统模型

基本系统模型或环境图把安全功能描述为一个单一的变换,描述了流入和流出安全功能的数据的生产者和消费者。

步骤2:评审和精化软件的数据流图

从分析模型获得信息进行精化,以获得更多细节。

步骤3:确定DFD是否含有交换流或事务流特征。

步骤4:通过确定输入和输出流的边界,分离出变换中心。

步骤5:完成第一级分解。

使用这个映射导出的程序体系结构导致了自顶向下的控制分布。分解的作用是得到一个程序结构,其中顶层模块做决策,低层模块完成大多数的输入,计算和输出工作,中层模块既完成一部分控制,又完成适量的工作。

步骤6:完成第二级分解

第二级分解将DFD中的每个变换(泡泡)映射到程序结构中的相应模块。从变换中心的边界开始,沿输入路径和输出路径向外,将变换依次映射到软件结构的从属层。

步骤7:使用提高软件质量的设计启发式方法,精化第一次迭代得到的体系结构。

以上七个步骤的目的是开发一个软件体系的体系结构表示,一旦结构被定义,就可以将其视为一个整体,并据此对软件体系结构进行评估和精化。

4)事务映射

单独的数据项会触发多条信息流中的一条,这些数据流将实现该数据项隐含的功能,这个数据项称为事务。

步骤1:评审基本系统模型

步骤2:评审和精化软件的数据流图

步骤3:确定DFD含有变换流还是事务流特征

步骤4:标识事务中心和每条动作路径上的流特征。

步骤5:将DFD映射到一个适合于进行事务处理的程序结构上。

步骤6:分解并精化事务结构和每条动作路径的结构。

步骤7:使用提高软件质量的设计启发式方法

5)精化体系结构设计

 

软件体系结构提供了待建造系统的整体视图,它描述软件构件的结构和组织,构件的性质以及构件之间的连接。

体系结构设计需要四个步骤:

第一步:系统须表示在相应的环境中,设计人员应该定义与软件交互的外部实体及其交互性质。一旦环境得到说明,设计人员应该确定一系列的顶层抽象,也就是原始模型,该原始模型可以表示本系统行为或功能的关键元素。定义完抽象后,设计开始向实现移动。在支持构件的体系结构环境中标识和描述这些构件。最后,开发体系结构的特定实例,在现实世界中验证所得设计。

posted on 2011-09-03 22:45  梅桦  阅读(2629)  评论(0编辑  收藏  举报