admin管理员组

文章数量:1643281

第一章 软件体系结构概论

1 从软件危机谈起

1. 软件体系结构是具有一定形式的结构化元素,
    即构件的集合,
    包括处理构件、数据构件和连接构件。
​
2. 是指在计算机软件的开发及维护过程中所遇到的一系列严重问题。

1.1 软件危机的表现:

1. 软件成本日益增长
​
2. 开发进度难以控制
​
3. 软件质量差
​
4. 软件维护困难

1.2 软件危机的原因:

1. 用户需求不明确
​
2. 缺乏正确的理论指导
缺乏有力的方法学和工具方面的支持; 由于软件不同于大多数其他工业产品,其开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。(选择、判断)
​
3. 软件规模越来越大
​
4. 软件复杂度越来越高

1.3 如何克服软件危机:

1. 要提高软件开发效率,提高软件产品质量,
    必须采用工程化的开发方法与工业化的生产技术。
​
2. 在技术上,应该采用基于重用的软件生产技术;
​
3. 在管理上,应该采用多维的工程管理模式。

2 构件与软件重用

1. 软件重用
    是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。
​
2. 软件元素
    包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。
​
3. 软件构件
    就是这种可重用的元素,通常简称为构件。
    可重用的软件元素越多,就说重用的粒度越大。
​
4. 使用软件重用技术可以减少软件开发活动中大量的重复性工作,
    这样就能提高软件生产率,降低开发成本,缩短开发周期。
​
5. 由于软构件大都经过严格的质量认证,
    并在实际运行环境中得到检验,
    因此,重用构件有助于改善软件质量。

2.1构建模型及实践:

1. 构件的定义

构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;在结构上,它是语义描述、通讯接口和实现代码的复合体。
​
简单的说,构件是具有一定的功能,能够独立工作或能同其他构件装配起来协调工作的程序体,构件的使用同它的开发和生产无关。(判断题)

2. 软件模型

构件模型是对构件本质特征的抽象描述,已成型的三个主要流派。
​
这些实现模型将构件的接口与实现进行了有效分离,提供了构件交互的能力,增加了重用的机会,适应了目前网络环境下大型软件系统的需要。

3. 国内构件模型研究

青鸟构件模型:由外部接口和内部结构组成
​
构件实现是指具体实现构件功能的逻辑系统,通常也称代码构件。

2.2 构件获取

在建立基于构件的软件开发中,构件获取有以下途径:
​
1. 从现有构件中获得符合要求的构件,直接使用或作适应性修改,得到可重用的构件;
​
2. 通过遗留工程,将具有潜在重用价值的构件提取出来,得到可重用的构件;
​
3. 从市场上购买现成的商业构件,即COTS(Commercial Off-The-Shell)构件;
​
4. 开发新的符合要求的构件。
​
进行决策时,必须考虑到不同方式获取构件的一次性成本和以后的维护成本,然后做出最优的选择。

2.3 构件管理

对大量构件进行有效的管理,以方便构件的存储、检索和提取,是成功重用构件的关键。构件管理的内容包括构件描述,构件分类,构件库组织,人员及权限管理,用户意见反馈等。

1. 构件描述

构件模型是对构件本质的抽象描述,主要是为构件的制作与构件的重用提供依据;

2. 构件分类与组织

目前已有的构件分类方法可以归纳为以下三大类:

关键字分类法

刻面分类法

主要思想来源于图书馆学。

在刻面分类机制中,定义若干用于刻画构件特征的“面”。每一个面包括若干概念。这些概念表述构件在面上的特征。刻面能够描述构件运行的功能,被操作的数据,构件应用的语境或任意其它特征。 描述构件的刻面的集合称为刻面描述符,通常,刻面描述被限定不超过8个刻面,当描述符中出现空的特征值时,表示该构件没有相应的面。
   青鸟构件库就是采用刻面分类方法对构件进行分类的,这些刻画包括:
◇ 使用环境:软硬件平台
◇ 应用领域:构件原来或可能被使用到的应用领域的名称。
◇ 功能:在原有或可能的软件系统中所提供的软件功能集合。
◇ 层次:构件相对于软件开发过程阶段中的抽象层次,如分析、设计、编码。
◇ 表示方法:用来描述构件内容的语言形式或媒体,如源代码构件所用的编程语言、环境等。

超文本组织方法

其主要思想是:全部构件必须辅以详尽的功能或行为说明文档;说明中出现的重要概念或构件以网状链接方式相互连接;
​
检索者在阅读文档的过程中可依照人类的联想思维方式随意跳转到包括相关概念或构件的文档;全文检索系统将用户给出的keyword说明文档中的文字进行匹配,实现构件的浏览式检索。
​
超文本组织法是基于全文检索的技术,超文本是一种非线性的网状信息组织方法,以结点为基本单位,链作为结点之间的联想式关联。

3. 人员及权限管理

一般来讲,构件库系统可包括五类用户,即注册用户、公共用户、构件提交者、一般系统管理员和超级系统管理员。

2.4 构件重用

构件开发的目的是重用,为了让构件在新的软件项目中发挥作用,库的使用者必须完成以下工作:

1. 检索与提取构件

1)基于关键字的检索
​
2)刻面检索法:易于实现相似构件的查找,但用户在**构造查询**时比较麻烦
​
3)超文本检索法
​
4)其他检索方法(语义匹配)

2. 理解与评价构件

3. 修改构件

为了减少构件修改的工作量,要求开发人员尽量使构件的功能、行为和接口设计更为抽象化、通用化和参数化。
​
通常用户需要借助设计信息和文档来理解、修改构件,因此,这些与构件有关的文档和抽象层次更高的设计信息对于构件的修改至关重要。

4. 构件组装

构件组装是指将库中的构件经适当修改后相互连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。组装技术大致可分为:

1)基于功能的组装技术

基于功能的组装技术采用子程序调用和参数传递的方式将构件组装起来。它要求库中的构件以子程序/过程/函数的形式出现,并且接口说明必须清晰。
​
当使用这种组装技术进行软件开发时,开发人员首先应对目标软件系统进行功能分解,将系统分解为强内聚、松耦合(选择题)的功能模块。然后根据各模块的功能需求提取构件,对它进行适应性修改后再挂接在上述功能分解框架中。

2)基于数据的组装技术

首先根据当前软件问题的核心数据结构设计出一个框架,然后根据框架中各结点的需求提取构件并进行适应性修改,再将构件逐个分配至框架中的适当位置。
​
此后,构件的组装方式仍然是传统的子程序调用与参数传递。
​
这种组装技术也要求库中构件以子程序形式出现,但它所依赖的软件设计方法不再是功能分解,而是面向数据的设计方法,例如Jackson系统开发方法。

3)面向对象的组装技术

如果从类库中检索出来的基类能够满足需求则直接应用,否则必须以类库中的基类采用构造法和子类法生成子类。
​
构造法:
为了在子类中使用库中基类的属性和方法,可以考虑在子类中引进基类的对象作为子类的成员变量,然后在子类中通过成员变量重用基类的属性和方法。
​
子类法:
将新子类直接说明为库中基类的子类,通过继承和修改基类的属性与行为完成新子类的定义。

3 体系结构的兴起和发展

随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。
​
事实上,软件总是有体系结构的,不存在没有体系结构的软件。解决好软件的重用、质量和维护问题,是研究软件体系结构的根本目的。

3.1 软件体系结构的定义

软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。1.处理构件负责对数据进行加工,2.数据构件是被加工的信息,3.连接构件把体系结构的不同部分组合连接起来。
​
软件体系结构有四个角度,它们从不同方面对系统进行描述:
​
概念角度描述系统的主要构件及它们之间的关系;
​
模块角度包含功能分解与层次结构;
​
运行角度描述了一个系统的动态结构;
​
代码角度描述了各种代码和库函数在开发环境中的组织。
​
......
​
软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
​
软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。

3.2 软件体系结构的意义

1)体系结构是风险承担者进行交流的手段

2) 体系结构是早期设计决策的体现

(1)软件体系结构明确了对系统实现的约束条件

(2)软件体系结构决定了开发和维护组织的组织结构

(3)软件体系结构制约着系统的质量属性

(4)通过研究软件体系结构可能预测软件的质量

(5)软件体系结构使推理和控制更改更简单

(6)软件体系结构有助于循序渐进的原型设计

(7)软件体系结构可以作为培训的基础

(8) 软件体系结构是可传递和可重用的模型

4 体系结构的现状

4.1 软件体系结构描述语言-规范化的体系结构描述

体系结构描述语言ADL提供了具体的语法与刻画体系结构的概念框架。

4.2 体系结构描述构造与表示

按照一定的描述方法,用体系结构描述语言对体系结构进行说明的结果则称为体系结构的表示,而将描述体系结构的过程称为体系结构构造

4.3 体系结构分析、设计与验证

1.体系结构分析的内容

可分为结构分析、功能分析和非功能分析。
​
非功能分析:定量分析方法、推断分析方法。

2.生成一个满足软件需求的体系结构的过程即为体系结构设计。

体系结构设计过程的本质在于:
将系统分解成相应的组成成分(如构件、连接件),
并将这些成分重新组装成一个系统。

3.体系结构设计有两大类方法

过程驱动方法和问题列表驱动方法。
​
1. 基于过程驱动的体系结构设计方法适用范围广,易于裁减,具备动态特点,通用性与实践性强。
​
2. 问题列表驱动法的基本思想是枚举设计空间。

4.体系结构模式分为两个大类

固定术语和参考模型

5.体系结构设计研究的重点内容之一就是体系结构风格或模式

体系结构模式在本质上反映了一些特定的元素、按照特定的方式组成一个特定的结构,该结构应有利于上下文环境下的特定问题的解决。
​
体系结构测试着重于仿真系统模型,解决体系结构层的主要问题。

4.4 体系结构发现、演化与重用

体系结构发现解决如何从已经存在的系统中提取软件的体系结构,属于逆向工程范畴

4.5 基于体系结构的软件开发方法

在引入了体系结构的软件开发之后,应用系统的构造过程变为“问题定义—>软件需求—>软件体系结构—>软件设计—>软件实现”,可以认为软件体系结构架起了软件需求与软件设计之间的一座桥梁。
​
软件开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系。
​
目前,常见的软件开发模型大致可分为三种类型:
​
(1)以软件需求完全确定为前提的瀑布模型。
​
(2)在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型,如螺旋模型等。
​
(3)以形式化开发方法为基础的变换模型。
​
在基于构件和基于体系结构的软件开发逐渐成为主流情况下,已经出现了基于构件的软件工程

4.6 特定领域的体系结构框架

4.7 软件体系结构支持工具

4.8 软件产品线体系结构

4.9 建立评价软件体系结构的方法

本文标签: 知识点体系结构基础软件