当前课程知识点:软件理论与工程 >  第3章 软件设计 >  3.1 设计概述 >  3.1 设计概述

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

3.1 设计概述在线视频

下一节:3.2 设计的概念

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

3.1 设计概述课程教案、知识点、字幕

大家好

这一章我们来讲一下软件设计

Mitch Kapor Lotus 的创始人

在《Dr. Dobbs》杂志上发表了软件设计宣言

他说

良好的设计

应该展示以下优秀的特征

首先这个软件必须要坚固

坚固的意思是说

程序应该展示

不含有任何妨碍其功能的缺陷

第二

这个设计要适用

适用的意思是

我们的程序应该符合开发的目标

第三个是我们的设计要愉悦

我们的程序设计出来

使用程序的人的体验应该是愉快的

这是在良好的设计上

应该展示的三个基本的特征

坚固

适用

和愉悦

我们在前面解释了软件分析相关的一些概念

那么在分析之后我们进入了设计的环节

在分析模型向设计模型转变的过程当中

我们涉及到一些转化的对应关系

在分析模型当中

我们看一下这张图

这张图上展示了分析模型当中的

基于场景的元素

基于类的元素

基于行为的元素

和面向流的元素

在基于场景的元素当中

我们用到了用例图

用例文本

还有活动图和泳道图

在基于类的元素当中

我们有类图

分析包

CRC模型

CRC模型的意思是

类 责任和合作

还有协作图

那么在面向流的元素当中

分析模型中有

数据流图

控制流图

还有处理描述

那么在分析模型的第四个部分

我们有一些行为元素

分析模型中的行为元素

我们通常会用状态图和顺序图来描述

那么刚才我们讲的这四个方面呢

都是分析模型当中的

重要的一些

分析成果

那么现在我们要把分析的模型

转化为设计的模型

分析的模型是站在用户的角度

来描述这个系统

应该有什么样的特征

什么样的行为

而我们的设计模型

应该是站在技术开发人员的角度

和测试人员的角度

来描述这个软件应该具有什么样的

实现这个软件的一些特征

那么在设计模型当中

我们会有数据或者是类的设计

还有体系结构的设计

以及接口的设计和构件的设计

我们说设计模型是

要展示这个软件如何去实现

那么在这个软件实现的过程当中

我们要有数据和类的实现

我们还要有体系结构的设计实现

和接口的设计

以及构件的设计

那我们在设计模型当中

如何去评价一个设计的质量呢

首先

我们要评价设计的质量的时候

第一

它一定要满足需求

设计必须实现

所有包含在需求模型当中的明确需求

而且必须满足利益相关者期望所有的

隐含的需求

那么第一个评价设计质量就是要

设计必须满足需求

第二个评价设计的质量的一个指标是

设计要作为一个可理解的指南

对于那些生成代码的人

和那些进行测试

以及随后要对软件进行维护的人而言

设计必须是可读的

可理解的指南

因为对于生成代码的人

进行测试的人

以及后期维护的人

他们可能并不是十分了解需求

他们所有的开发

和测试还有维护的基础

就是我们的设计成果

所以我们的设计必须是可理解的

可读的一个指南

这样可以很好的指导

代码开发人员

和测试人员

以及软件维护人员

第三个我们来评价设计质量的应该是

设计必须要提供软件的全貌

因为设计是站在技术人员的角度

对软件进行一个描述

而且我们要描述这个软件

如何去实现我们需求当中

所指出来的这些功能

所以

我们的设计必须能够从实现的角度

来说明我们的数据域

功能域和行为域

我们的设计包括数据相关的设计

功能相关的设计

以及这个软件将来展示出的行为

所以我们的设计

必须要全面的展示这个软件的数据域

功能域和行为域

设计应该展示出这样一种结构

第一

已经使用一些可识别的体系结构风格

和模式来创建

因为已经识别的体系结构风格和模式

是被经验证明了的

比较有效的

有用的

合理的

一些设计成果

那我们利用优秀的

合理的和有效的设计成果的基础上

进行我们软件的设计

这样我们就具有了一个良好的基础

第二

我们的设计

应该展示

良好的设计特征的构件

来构成

我们一个系统是由很多个构件来组成

那我们的所有的构件

应该展示出良好的设计特征

第三个

我们的设计应该展示出来

能够以演化的方式来实现

因为我们的设计应该是一种迭代的方式

从较高的抽象层次

较低的具体的细节进行转化

那么在最开始

我们可能只对一些个框架性的

概要性的

高层次抽象内容进行设计

那么随着我们对软件设计的不断的推进

那我们设计当中会融入越来越多的

具体化的设计内容

所以

我们的良好的设计

应该能够以演化的方式来实现

那么对于更小的系统而言

设计有时可以是线性的开发的

设计应该是模块化的

也就是说

我们应该将软件

逻辑的划分成

许多个组成的基本元素

或者是子系统

那我们的设计应该包含数据 体系结构

接口和构件的清晰表示

我们的设计内容主要就是涵盖了数据设计

体系结构设计

接口设计和构件设计

那么我们的设计必须要是我们的数据

体系结构

接口和构件的一个清晰的展示

我们的设计应该可以导出数据结构

这些数据结构适用于要实现的类

并从可识别的数据模式当中提取出来

我们的设计还应该可以导出

显示出独立功能特征的一些构件

构件是我们系统当中的基本的组成单元

所以我们的设计必须可以导出这些

独立功能特征的构件

设计还应该导出接口

这些接口

降低了构件之间以及

构件与外部环境之间连接的复杂性

我们把构件内部的实现细节

屏蔽在构件的内部

只有构件需要与外界进行交互的内容

我们才把它通过接口的方式暴露出来

所以我们的设计应该可以导出我们的接口

设计的导出

应根据软件需求分析过程中获取的信息

采用可重复的方法来进行

也就是说

我们的设计的基础

是软件需求分析的成果

那么基于软件需求分析的成果

我们可以通过一些重复的方法

导出相同或者是类似的设计成果

最后

我们应该用

能够有效地传达其意义的表示方法

来表达我们的设计模型

或者是设计成果

比如我们可以用UML建模语言

来表达我们的设计

这是我们的设计

质量的一个指导原则

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

课程概述

-课程概述

第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.1 设计概述笔记与讨论

也许你还感兴趣的课程:

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