分享

软件体系结构研究与发展

 昵称10504424 2013-02-19

声明:此文来自于软件体系结构课程PPT

1

  软件体系结构已经成为国内外软件研究的热点,人们已经把解决复杂软件设计的难题,以及提高软件设计的效率和质量寄托在软件体系结构研究的突破上。然而,软件体系结构的技术研究从理论到实践还处在发展时期。主要研究包括:

1)软件体系结构形式化

2)软件体系结构的描述语言、工具和环境

3)软件体系结构经典风格、应用框架和设计模式的总结

 

1)软件体系结构形式化

形式化方法的两方面研究:

用形式化体系解释体系结构

抽象定义体系结构的精确语义,证明某种体系结构运用的必然性和充分性,进而扩展证明它的使用性,并且,作为验证结构合理性的基础,用于系统设计中的结构选取。 

软件体系结构的主要形式化体系:

等等

 

②体系结构描述语言ADL(Architecture DescriptionLanguage)

用形式化的符号表示体系,进行建模和结构分析。形式描述结构,便于掌握系统全局和特征,便于分析系统的构成角色和特性,便于复用和继承已有结构,目标是体系结构自动化。

研究进展:

ACME:  描述系统结构的交互机制

Aesop:对体系结构特定风格的规范性描述

C2:    描述分布式可延展动态系统的结构

MetaH:用于描述导引和控制体系结构

Rapide:对体系结构描述中的动态行为建模并模拟运行

SADL:  用形式化对体系结构层次及不同层次的细节描述

Unicom:用公共接口协议连结构件,粘合生成系统的方式

Wright:用于并发性系统建模,对死锁等动态行为分析

 

2)软件体系结构的工具和环境

描述语言和工具环境的关系:

描述语言的可用性,直接反映在工具所提供的环境中

 

软件体系结构工具环境应该具备的基本功能:

 

2 软件体系结构语言ADL

ADL研究现状:

ADL具备的共同点:

 

各种ADL目前存在的问题:

 

IEEEP1471规定了应用体系结构的描述标准:(2000.9)

体系结构的存档要求

能区别个体及其关系

体系结构视点

体系结构视点的选择

体系结构视点之间的一致性

体系结构原理

 

ADL应该具备的基本特点:

能使用较小的独立体系结构元素来建造软件系统;

关注的是构件和连接件描述,而无需关注实现;

构件和连接件以及体系结构都是开发设计的重用部件;

描述的每个元素都有自己局部的结构,支持动态变化组合;

可描述不同体系结构的关联;

可对描述的体系结构进行性能及功能的分析。

 

2.1 ADL核心模型

所有ADL都围绕着被称为软件体系结构核心模型而设计的。软件体系结构核心模型由五个基本元素:构件、连接件、配置、端口和角色。

构件:是软件结构的构造块,是计算与状态存在的场所

构件的大小:可小到只有一个过程或大到整个应用系统

构件的存储:有自己的或与其它成分共享的存储和执行空间

构件的属性:如类型、语义、状态,等

构件接口(端口):构件与外部交互的端口点。

构件类型:构件是按照指定的类型实例化的,类型可参数化。ADL应具有构件类型保证机制。

构件演化:构件通过子类型形成特性细化的特殊构件。目前只有少数几种ADL部分地支持构件演化。

连接件:软件结构的构造块。建立构件交互的规则。

与构件的区别:不直接对应编译单元。

连接件包括

消息路由兼容设备、共享变量、入口表、缓冲区、指令连接器、动态数据结构、内嵌在代码中的远程过程调用序列、初始化参数、客户服务协议、管道、数据存储、应用程序之间的查询语言,等。

连接件接口(角色):由一组角色组成,参与者对应交互的角色。例如:二元消息传递连接件有两个角色,发送者和接收者。而广播连接件有多个角色,一个发送者角色,多个接收者角色。

连接件协议:提供规定类型的通信交互的规范。协议可以是独立的或是内嵌在交互机制中实现的。

ADL应提供协议的交换语法,能够规划交互协议,建立内部连接件的依赖关系以及用途边界。通过强制风格和角色限制来保证连接约束。

体系结构配置---是用来描述体系结构的构件与连接件的连接图。配置信息可以用来确定构件的连接、接口的匹配,通信的正确性以及实现的组合行为语义。

文本和图形说明---ADL应该以简单的、可理解的语法来配置结构化信息。除了文本形式外,还提供图形说明形式,并且它们之间可以互换。多视图、多场景的体系结构方法成为研究方向。

复合及合成---复合是包括将一个整体作为另一个的部分构成更大的配置。这样可以适应异构和不断变化的结构

 

目前在软件体系结构研究领域出现多种体系结构描述语言,既有针对特定领域的ADL,也有以通用性为目标的ADL。不同的ADL描述体系结构的侧重点不尽相同。

UniConCaregie Mellon 大学的 Mary Shaw 等人研究的成果。它主要的目标是支持对体系结构的描述,针对构件连接器模型,区分不同需要的构件,支持构件打包、定位、交互模式描述和编码。

UniCon语言构件描述示例

ComponentReal_Time_System

  interface istypeGeneral

  implementation is

      uses client interface RTclient

        PRIORITY(10)

       

      end client

      uses server interface RTserver

        PRIORITY(10)

       

      end server

     establish RTM-realtime-sched with

        client?applicetion1 as load

        server?applicetion2 as load

        server?services as load

        ALGORITHM(rate_monotonic)

       

      end RTM-realtime-sched

     establish RTM-remote-proc-call with

        client?timeget as caller

        server?timeget as definer

        IDLTYPE(Mach)

      end RTM-remote-proc-call

       

  end implementation

endReal_Time_System

实时系统构件说明:

1.实时系统接口是通用类型

2.实时系统的实现,

  Client接口:优先级等

  Server接口:优先级等

  建立实时管理的实时调用程序

   ClientServer加载应用load

   和服务算法

  建立实时管理的远程调用程序

   ClientServer交互方式

 

 

C2支持事件风格的用户界面体系结构描述语言。配合有设计环境Argo系统。使用可替换、可重用的GUI构件开发体系结构。重点是构件的动态改变,以满足某些GUI特性。

   C2的连接件负责构件之间的消息传递, C2的构件只能通过连接件完成消息传递。消息要么是请求其它构件执行某项操作,要么是通知其它构件改变状态,请求消息只能向上层传递,通知消息只能向下层在内部构件间传递。

   C2的构件维持状态、执行操作并通过topbottom端口与其它构件交换信息。每个构件最多只能和一个连接件相连,而连接件可以和任意数目的构件相连。

Component_message_interface::=

       top_domain_interface

       bottom_domain_interface

top_domain_interface::=

       top_domain is

          out interface_requests

          in interface_notifications

bottom_domain_interface::=

       bottom_domain is

          out interface_ notifications

          in interface_requests

interface_requests::=

       {request;} | null

interface_notifications ::=

       {notification;} | null

request::=

       message_name(request_parameters)

request_parameters::=

      [to component_name][parameter_list]

notification::=

      message_name[parameter_list]      

 

Wright是一种特定的形式化体系结构描述语言。它的连接器针对离散的、异步的行为关系模型构件,并可限定配置。

ComponentSplitFilter

       port    Input [read data until end -of -data is reached ]

       port    Left [output data repeatly]

       Port    Right [output data repeatly]

       computation  [repeatly read from input,then output,

                            alternating betweenLeft and  Righ Ports]

 

ConfigurationCapitalize

      Component SplitFilter

       ……

      Component UpperCase

       ……

      Connector Pipe

      …….

   Instances      

      Split=SplitFilter;

      upper=UpperCase;

      Merge=MergrFilter;

      p1,p2,p3=Pipe

   Attachments

       Split.Left as p1.Source

       Upper.Input as p1.Sink;

       Split.Right as p2. Source;

       Merge.Left as p2. Sink;

       Upper.Output as p3. Source

       Merge.Right as p3. Sink;

EndCapitalize

配置中说明三部分内容:

1.定义各构件和连接件;

2.声明给定类型的不同实例;

3.附件说明了连接件及构件的组合约束。

 

 

从软件体系结构研究和应用的现状来看,当前对软件体系结构的描述,在很大程度上还停留在非形式化的基础上。软件体系结构设计依赖于设计人员的经验和技巧。人们对同一种结构的理解和表达差别很大,所使用的符号体系也相差很大,并且,对约定、术语和概念是分散的、缺乏严格性、一致性和系统性,没有形成对软件体系结构设计的一般性指导。这些都表明建立软件形式化和规范化结构描述的必要性。

要点:

形式地推论系统特征的方法

遵循给出的数学系统得出结论

数学系统的基础是公式逻辑,提供正确的思维规律,或推理规则,即结论和前提间的推断关系。

目的:

形式方法关注应用模型和计算机模型之间的逻辑关系。软件工程中的形式方法,即是依靠数学模型和计算,来描述和验证目标软件系统的行为和特性。

严格的形式化描述和验证技术,可实现自然地软件自动生成和自动验证的目的。

 

 

Z标记形式化描述语言

   Z标记语言是由英国牛津大学的Programming Research Group研究的。是一种以一阶谓词逻辑和集合论为基础的数学表示语言。它使用标准的逻辑操作符和集合操作符,以及标准的语义。由于描述的数学对象与程序对象有及其相似之处,可以直接对应软件工程问题,因此,Z语言被较广泛地运用在软件程序规格说明和软件体系结构的形式化描述上。

Z的规范由文字和数学描述两部分组成

数学描述使用类型集合的方式,每个类型是谓词真值的集合

Z提供了一些基本的类型,如自然数N、整数Z等等

Z也可以自行定义类型,用[]引出,并用英文大写字母

 例如:[CLIENTROOM]两个类型

Z的图解架构(schema)是一种类型结构的抽象,采用盒式图解结构。架构形式化地描述过程或结构。盒中线以上是状态描述变量,以下是变量关系式

一组构造类型的运算符:包括PXX Yseq XXYX+YXYX>YX>+Y、等等

      Z语言描述文件存储块结构以及处理文件存储块的行为特性。文件由固定长度的存储块BLOCKS构成,每个BLOCKS有起始地址、长度等信息,并由序号标识。系统的任务是根据需求,从BLOCKS序列中取出存储块并分配使用。

      事件系统中对EM事件管理器,只声明是事件与方法的对应,没有规定同一个事件是否可与多个不同方法的关联?或者可以不与任何方法关联?并且,也没有说明构件发布事件的条件,以及与事件对应方法的约束和限制。因此,对应隐式激发机制需要做必要的说明。

    MVCModel-View-Controller隐式激发机制,将视图和控制作为依赖者向模型注册,当模型对象发布changed事件时,视图和控制的update方法则隐式地被激发。因此,MVC事件系统应提供changed事件与update方法的依赖关联定义。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多