`
ldb19890624
  • 浏览: 228249 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

章四 软件体系结构的形式化描述

 
阅读更多

章四 软件体系结构的形式化描述


一、软件体系结构的形式化描述的方法
1、随着软件系统规模和复杂性的不断增大,软件设计的核心已从“算法+数据结构=程序”的传统计算模式转向系统的总体结构,即软件体系结构的设计和规范。
着眼于软件系统的全局组织形式,在更高层次上把握系统各组件之间的内在联系,并且从全局的、整体的角度去理解和分析整个系统的行为和特性,有助于解决当前开发复杂的大型软件所存在的困难。
一个系统的软件体系结构通常可以用方框和线条图描述。这种方框和线条图可以对系统进行结构化。
软件体系结构提高了系统的抽象级别,使开发人员可以对系统进行推理。
一个系统的体系结构所提供的模型,其目的不在于系统的实现细节,而是要提高系统构件的独立性,使各种事件本地化。
2、体系结构的两个重要方面:体系结构的交互和体系结构的风格
(1)体系结构的交互
体系结构的一个关键问题是系统的组成。当一个系统被分解成多个构件时,它们必须可以重构成一个完整的系统的结构。
一个重要的组成类是基于离散行为的构件交互。
交互可以是非常简单的。
交互可以是非常复杂的。
每个构件都可以初始化通信、产生消息和响应其它构件的消息,并且需要考虑缓冲、可靠性和构件之间传递信息的认证问题。
同时,在一个给定的系统中,交互的特定模式通过不同但类似的系统总是会重现的。
不同的构件不断使用相同的交互行为而组成一个功能系统。
(2)体系结构的风格
软件体系结构的另一个重要方面是充分利用系统共性设计的扩展部分。
开发人员使用在所工作的领域里,最有效的特定模式和习惯用语。这些模式和习惯用语约束着设计空间,允许开发者忽略与系统无关的复杂方面。这样,开发者就可以进行最有效的选择,并且可以更容易地确定最好的解决方案。这些特定的模式和习惯用语就称为体系结构的风格。
如果一种体系结构的风格可以保证持有一个属性集合,那么它就可以具有通用体系结构所允许的更强大的分析能力。
3、软件体系结构描述存在的问题
许多软件体系结构是从体系结构的设计开始的,特别是大型的软件系统必须先进行体系结构的设计,且好的体系结构的设计是决定一个软件系统的关键因素。
通常使用非形式化的方框和线条图描述体系结构的配置,仅仅提供了诸如实际计算、接口和交互等极小量的信息。
开发者试图为体系结构提供更加精确描述的一个途径,是使用诸如对象或者共享的通讯机制等实现结构。
缺乏对一个层次中交互的抽象定义,意味着很难分析对一个体系结构的整体行为的描述,必须从底层基础中的许多细节中提取抽象的行为,只有这样才可以全面地考虑系统的行为。
如果对构件交互的描述是非形式化的,那么在其它系统中重用高层设计是很困难的。
有时,一个特定的符号可以支持一种风格。这些符号包括:从构件组成系统的方式或者指定一个构件或者连接器。
对于单一的风格,开放人员在结合支持体系结构级的符号和工具上取得了一定的进展。
但是风格在体系结构级上的实现缺乏精确的特征描述,这意味着与其它风格的交互变得困难。
通常,只有风格的建立者对风格有着深刻的理解。
缺乏对风格的形式化基础还限制了对风格的分析,而且不能肯定一个系统的实现是否对应于一个非形式化的体系结构的描述。
4、软件体系结构描述的部分解决方案
第一种解决方案是把现存的形式化方法应用到体系结构的设计中;
第二种方案是开发体系结构描述语言,用于代替非形式化的方框和线条图。
体系结构描述语言(Architecture Description Language,ADL)。
ADL根据结构配置方式分:
(1)隐式配置语言(Implicit Configuration Language)、
(2)嵌入式配置语言(Inline Configuration Languages)、
(3)显示配置语言(Explicit Configuration Languages)。
根据各ADL的研究范围,分为:
(1)研究软件体系结构配置结构的描述语言;
(2)研究软件体系结构实例的描述语言;
(3)研究软件体系结构风格的描述语言。
根据ADL与实现细节的关系,可分为:
(1)实现无关语言(Implementation Independent Languages);
(2)实现相关语言(Implementation Constraining Languages)。
5、体系结构描述的形式化基础——形式化与ADL的结合
两种各有优缺点。形式化方法提供了强有力的分析能力、抽象和与实现的细节无关性,但是形式化方法不能直接提供基本的体系结构的抽象和结构。ADL为构件和连接器定义了一系列符号,可以应用于实际的复杂系统的描述。
6、体系结构描述和分析的要求
(1)体系结构配置的描述
(2)体系结构风格的描述
(3)属性分析
(4)在实际问题中的应用
7、WRIGHT体系结构描述语言
(1)实现与交互
在系统设计级上,模块间的“实现”关系是指一个特定的模块在其它模块提供的功能上定义。
模块间的“交互”关系是指模块之间的通讯,系统描述成一系列计算组件和组件间的连接。
交互关系通常用Client/Server、管道过滤器组织或事件广播通讯等术语描述。
基于“实现”关系和基于“交互”关系的系统描述有三点不同:
(1.1)系统的推理方式;
(1.2)抽象要求;
(1.3)一致性检查。
(2)体系结构描述的WRIGHT模型
(3)体系结构描述的推理
8、软件体系结构的形式化语义基础——CSP语义学简介
(1)CSP模型:字母表、迹和拒绝集
CSP是基于字母表、迹和拒绝集的概念。从形式上看,CSP进程可以用一个3元组(A,F,D)表示,A表示字母表Alphabet,F表示失败Failures,D表示偏差Divergences。
进程的字母表是进程所参与的事件的集合。
进程的失败是迹与拒绝集组成的对。
每个迹表示事件的有限序列,每个拒绝集是一个事件集。
进程的迹是进程所允许的事件序列。
事件的拒绝集可以用进程的失败对表示。
一个失败是一个迹与一个事件集。
CSP进程的最后一个元素是偏差。
(2)细化
CSP进程描述了行为的模式,如果进程匹配某个行为模式,那么就可以用该行为替换原有的行为。
(3)符号和“;”操作符
9、软件体系结构的形式化描述的验证
一致性问题
(1)端口/计算一致性
(2)无死锁连接器
(3)无死锁角色
(4)单一激发器
(5)参数替换
(6)范围测试
(7)兼容性
(8)风格约束
(9)风格的一致性
(10)连接的完备性
二、软件体系结构的设计空间及规则
1、软件体系结构的设计开始于对事务所要满足的一系列属性和行为的特定描述。
当设计者能够向用户描述一个构件的集合、构件之间的联系以及使用模式的时候,该设计任务就完成了。
2、软件构件和框架的重用
体系结构的设计将蕴含在构件之间的依赖关系和框架的实现中,这对软件的重用至关重要。
3、设计空间的概念
4、扩展的设计空间
5、以体系为中心的软件开发

分享到:
评论

相关推荐

    软件设计模式与体系结构

    第一篇分为8章,介绍了软件体系结构的基础理论,包括软件体系结构的概念及演化、软件建模基础、软件体系结构的形式化、软件体系结构的风格、体系结构的描述语言、软件质量建模、设计模式等内容。第二篇分为4章,首先...

    软件工程(英文版 第8版) part1(共两部分)

    第10章 形式化描述 第3篇 设计 第11章 体系结构设计 第12章 分布式系统体系结构 第13章 应用体系结构 第14章 面向对象的设计 第15章 实时软件的设计 第16章 用户界面设计 第4篇 开发 第17章 快速软件开发 第18章 ...

    软件工程(英文版 第8版) part2(共两部分)

    第10章 形式化描述 第3篇 设计 第11章 体系结构设计 第12章 分布式系统体系结构 第13章 应用体系结构 第14章 面向对象的设计 第15章 实时软件的设计 第16章 用户界面设计 第4篇 开发 第17章 快速软件开发 第18章 ...

    【清华】 软件工程(完) 视频.txt

    12.5形式化描述 要点 进一步阅读材料 练习 参考书目 第13章可依赖性工程 13.1冗余性和多样性 13.2可依赖的过程 13.3可依赖的系统体系结构 13.3.1保护性系统 13.3.2自监控系统体系结构 13.3.3n-版本编程 13.3.4软件...

    软件工程完整ppt

     第15章面向对象的软件体系结构  151软件体系结构概述  152流程处理与客户机/服务器体系结构  1521流程处理  1522客户机/服务器体系结构  153三层和多层体系结构  1531三层体系结构  1532浏览器/服务器体系...

    软件工程卷3:领域、需求与软件设计

    在需求被形式化之前,人们必须理解应用领域,因此本卷首先介绍领域描述的原理和技术,然后介绍从领域模型导出需求规则的原理和技术,最后介绍细化需求到软件设计的原理和技术:体系结构和组件设计。. 这套丛书...

    软件工程 实践者的研究方法 (原书 中文版 第六版).part06

    ●第五部分 软件工程高级课题,专门讲述了形式化方法、净室软件工程、基于构件的方法及再工程。 -------------------------------------------------------------------------------- 编辑推荐 《软件工程实践者...

    软件工程 实践者的研究方法 (原书 中文版 第六版).part01

    ●第五部分 软件工程高级课题,专门讲述了形式化方法、净室软件工程、基于构件的方法及再工程。 -------------------------------------------------------------------------------- 编辑推荐 《软件工程实践者...

    软件工程 实践者的研究方法 (原书 中文版 第六版).part07

    ●第五部分 软件工程高级课题,专门讲述了形式化方法、净室软件工程、基于构件的方法及再工程。 -------------------------------------------------------------------------------- 编辑推荐 《软件工程实践者...

    软件工程 实践者的研究方法 (原书 中文版 第六版).part05

    ●第五部分 软件工程高级课题,专门讲述了形式化方法、净室软件工程、基于构件的方法及再工程。 -------------------------------------------------------------------------------- 编辑推荐 《软件工程实践者...

    软件工程 实践者的研究方法 (原书 中文版 第六版).part02

    ●第五部分 软件工程高级课题,专门讲述了形式化方法、净室软件工程、基于构件的方法及再工程。 -------------------------------------------------------------------------------- 编辑推荐 《软件工程实践者...

    软件工程 实践者的研究方法 (原书 中文版 第六版).part09

    ●第五部分 软件工程高级课题,专门讲述了形式化方法、净室软件工程、基于构件的方法及再工程。 -------------------------------------------------------------------------------- 编辑推荐 《软件工程实践者...

    软件工程 实践者的研究方法 (原书 中文版 第六版).part08

    ●第五部分 软件工程高级课题,专门讲述了形式化方法、净室软件工程、基于构件的方法及再工程。 -------------------------------------------------------------------------------- 编辑推荐 《软件工程实践者...

    软件工程 实践者的研究方法 (原书 中文版 第六版).part04

    ●第五部分 软件工程高级课题,专门讲述了形式化方法、净室软件工程、基于构件的方法及再工程。 -------------------------------------------------------------------------------- 编辑推荐 《软件工程实践者...

    软件工程 实践者的研究方法 (原书 中文版 第六版).part03

    ●第五部分 软件工程高级课题,专门讲述了形式化方法、净室软件工程、基于构件的方法及再工程。 -------------------------------------------------------------------------------- 编辑推荐 《软件工程实践者...

    设计模式:可复用面向对象软件的基础--详细书签版

     所有结构良好的面向对象软件体系结构中都包含了许多模式。实际上,当我评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的...

    计算机二级公共基础知识

    数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间...

    深入java虚拟机第二版

    第1章 Java体系结构介绍 1.1 为什么使用Java 1.2 网络带来的挑战和机遇 1.3 体系结构 1.3.1 Java虚拟机 1.3.2 类装载器的体系结构 1.3.3 Java class文件 1.3.4 Java API 1.3.5 Java程序设计语言 1.4 ...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

     本书共分20章,第1-4章解释了java虚拟机的体系结构,包括java栈、堆、方法区、执行引擎等;第5-20章深入描述了java技术的内部细节,包括垃圾收集、java安全模型、java的连接模型和动态扩展机制、class文件、运算及...

Global site tag (gtag.js) - Google Analytics