当前课程知识点:软件理论与工程 >  第3章 软件设计 >  3.4 体系结构概述 >  3.4 体系结构概述

返回《软件理论与工程》慕课在线视频课程列表

3.4 体系结构概述在线视频

下一节:3.5 体系结构风格

返回《软件理论与工程》慕课在线视频列表

3.4 体系结构概述课程教案、知识点、字幕

大家好

今天我们来一起学习一下

软件设计章节当中的体系结构设计

体系结构设计

听上去比较抽象

让我们来做一个比喻

如果客户要盖一个房子

他有这样的需求

说我的房子里面要有四个卧室

三个浴室

和大量的玻璃

那么当我们看到这样的需求的时候

可能就会产生一个

框架的概念在你的脑海里

那么这样的框架概念

对于我们软件设计来说

就是我们体系结构设计要解决的问题

那么什么是体系结构设计呢

体系结构设计表示

建立计算机系统所需的

数据结构和程序结构

它需要考虑系统采取的体系结构风格

系统组成的构件的结构和属性

以及系统中所有体系结构构件之间的相互关系

那么简单来说

体系结构设计就是构建软件的初始蓝图

Bass

Clements

and Kazman

对于这个难懂的概念

给出了如下的一个定义

程序

或计算系统的软件体系结构

是指系统的一个或者多个结构

它包括软件构件

构件的外部可见属性

以及它们之间的相互关系

体系结构并非是可运行的软件

确切的说

它是一种表达

这种表达

使得

在满足既定需求方面下

分析设计的有效性

因为我们说体系结构

解决了在软件设计当中的一个

框架性的问题

所以

如果我们的框架设计是否有效

可以在体系结构设计阶段

就可以进行讨论

第二

它解决了在设计变更相对容易的阶段

考虑体系结构可能的选择方案

因为在最开始

我们有了这个框架

那么这个框架还没有添加具体的内容

所以在这个框架的阶段

如果想做一些变更

是相对比较容易的

那么在这个阶段

我们可以考虑

用这个体系结构或者是另外一种体系结构

哪一种更加合理

第三

体系结构可以降低与软件构造相关的风险

我们在建造体系结构的时候

如果我们把结构建造的合理

那么未来出错的可能性就会小

那我们把体系结构建的更加的有效实用

我们后期的软件构造

方法

实现的风险就会低

所以我们的体系结构虽然不是可运行的软件

但是它可以帮助我们分析设计的有效性

可以考虑体系结构可能的选择方案

而且可以帮助我们降低与软件构造相关的风险

那么体系结构为什么这么重要呢

首先

我们在进行软件设计的时候

最开始我们就要先把体系结构设计好

因为它很重要

为什么呢

因为软件体系结构的表示

有助于对计算机系统开发感兴趣的

相关利益方开展交流

和沟通

而且体系结构突出了早期的设计决策

这些决策对随后

所有的软件工程工作都有着深远的影响

就像我们建造一个楼房

我们把框架打好了之后

后期就会有很好的基础

那我们的软件体系结构也是这样

它的正确决策

对随后所有软件工程的工作

都有深远的影响

同时

体系结构对系统

作为一个可运行的实体的最后成功

是有着至关重要的作用

体系结构构建了一个相对小的

容易理解的模型

该模型描述了系统如何构成

以及

其组成的构件是如何一起协同工作的

下面看一下体系结构的类型

类型隐含了整个软件领域的一个

特定的类别

那么体系结构的类型

有点不好理解

我们再看一下关于建筑房屋的例子

我们在体系结构的每种类别当中

都会有很多的子类别

就像我们在建造房屋的时候

我们会有以下几种通用的风格

比如

我们的房屋是住宅房

单元楼

还是公寓

办公楼

工厂的厂房

还是仓库

那么这些不同风格的选择

就决定了

它的结构有着很大的差别

在每一种通用风格中

也会运用更多具体的风格

每种风格都有一个结构

这个结构可以由一组可预测的模式

来进行描述

那么大家可以想象

如果我们要建造房屋建造一个办公楼

和我们见到一个仓库

它的风格一定是不一样的

那么它的结构

和它可用的一些个可预测的模式

也一定是不一样的

那么体系结构有它的复杂性

我们通过考虑体系结构中的构件间的依赖关系

对建议的体系结构的整个复杂性

要进行评估

构件之间的依赖关系有多种

比如它有共享依赖

共享依赖表示

使用相同资源的消费者之间

或者相同的消费者

生产的生产者之间的依赖关系

那么我们还有流依赖

流依赖表示

资源的生产者和消费者之间的依赖关系

也就是前边是资源的生产者

后面是资源的消费者

它们之间有这样子

数据流的依赖关系

那么我们还有一种依赖是

约束依赖

约束依赖表示在一组活动间

相互控制流上的约束关系

那么这些不同的依赖

使得我们的体系结构

有很高的复杂性

我们的体系结构有一种体系结构描述语言

ADL 

architectural description language

这种描述语言提供了一种

描述软件体系结构的语义

和相关的语法

体系结构描述语言

可以为设计者提供

分解体系结构构件的能力

还可以提供将单独的构件

组合成大的体系结构块的能力

而且体系结构描述语言

还可以表现构件之间的接口

或者说是构件之间的连接机制

那么这种体系结构描述语言

可以帮助我们描述

这样

结构

和接口等等体系结构要设计的相关的要素

这就是我们以上关于体系结构设计

要跟大家一起探讨的内容

谢谢大家

软件理论与工程课程列表:

课程概述

-课程概述

第1章 软件与软件工程

-1.1 软件的本质

--1.1 软件的本质

-1.2 软件工程

--1.2 软件工程

-1.3 软件过程结构

--1.3 软件过程结构

-1.4 过程模型

--1.4 过程模型

-1.5 敏捷开发方法

--1.5 敏捷开发方法

-第1章 习题

--第1章 习题

第2章 需求分析

-2.1 需求工程过程

--2.1 需求工程过程

-2.2 需求获取

--2.2 需求获取

-2.3 需求分析

--2.3 需求分析

-2.4 过程建模

--2.4 过程建模

-2.5 面向对象建模

--2.5 面向对象建模

-第2章 习题

--第2章 习题

第3章 软件设计

-3.1 设计概述

--3.1 设计概述

-3.2 设计的概念

--3.2 设计的概念

-3.3 设计模型元素

--3.3 设计模型元素

-3.4 体系结构概述

--3.4 体系结构概述

-3.5 体系结构风格

--3.5 体系结构风格

-3.6 构件级设计

--3.6 构件级设计

-3.7 UI设计

--3.7 UI设计

-3.8 基于模式的设计

--3.8 基于模式的设计

-第3章 习题

--第3章 习题

第4章 UML方法

-4.1 UML概述

--4.1 UML概述

-4.2 UML 及UML中的事物

--4.2 UML 及UML中的事物

-4.3 UML关系和图

--4.3 UML关系和图

-4.4 UML 图细节(上)

--4.4 UML 图细节(上)

-4.4 UML 图细节(下)

--4.4 UML 图细节(下)

-第4章 习题

--第4章 习题

第5章 软件测试

-5.1 软件测试策略

--5.1 软件测试策略(上)

--5.1 软件测试策略(下)

-5.2 测试传统的应用系统

--5.2 测试传统的应用系统

-5.3 测试面向对象的应用系统

--5.3 测试面向对象的应用系统

-5.4 测试web应用系统

--5.4 测试web应用系统

-5.5 测试移动应用系统

--5.5 测试移动应用系统

-第5章 习题

--第5章 习题

第6章 项目管理

-6.1 软件项目估算

--6.1 软件项目估算

-6.2 软件过程管理

--6.2 软件过程管理

-6.3 软件配置管理

--6.3 软件配置管理

-6.4 项目版本控制及调试

--6.4 项目版本控制及调试

-第6章 习题

--第6章 习题

3.4 体系结构概述笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。