当前课程知识点:面向对象分析与设计 >  分析与设计概述 >  分析与设计概述 >  分析与设计概述

返回《面向对象分析与设计》慕课在线视频课程列表

分析与设计概述在线视频

下一节:架构分析基本概念

返回《面向对象分析与设计》慕课在线视频列表

分析与设计概述课程教案、知识点、字幕

同学们 今天我们介绍第九课

分析与设计概述

在这一讲 我们首先回顾一下分析与设计的一些基本概念

然后我们介绍一下分析与设计的过程以及它们之间的区别

如图所示 面向对象分析与设计是在需求活动之后在实现之前

所以分析设计活动主要有三个目标

首先是把软件的需求转换为系统设计

其次在分析过程中我们要构建一个健壮的软件体系架构

最终使我们的软件设计能够和实现环境相匹配或者适应

在分析设计活动中我们的输入主要是前一个阶段的输出

也就说需求活动的输出

我们之前介绍软件面向对象分析的输出主要有三个

一个是用例模型 第二个是附加规格说明书 第三个是术语表

那么它的输出主要是软件体系架构 我们描述在架构文档中

其次是软件的设计 定义在软件的设计模型中

对有一些系统需要进行数据的持久化

比如说会用到数据库 会用到数据的保存

这样我们还需要设计一个数据模型

下面我们首先介绍分析设计的基本概念

我们首先对比下分析和设计的区别

面向对象的软件分析主要是尝试用软件的方法去理解我们所要解决的问题

我们前面的软件的需求分析是从用户的角度

描述我们所要开发的系统解决的问题

到了分析阶段我们就要尝试着用软件的方法去理解我们所要解决问题

到了设计阶段我们则要给出针对这个问题的 具体可行的设计方法

分析阶段我们给出的设计只是一种参考

只是一种理想化的设计

它主要关注系统行为是如何在软件中实现的

在分析阶段我们主要定义软件系统的结构

也就是系统有哪些组成部分

重点集中在系统的功能需求上面

到了设计阶段我们要关注很多设计细节

我们需要考虑对每个类它的操作和属性

我们不仅考虑功能需求 在设计阶段还要解决

例如安全性 可靠性这样一些非功能性需求

另外我们的设计要能指导实现

所以我们的设计要和实现环境

和真实采用的开发语言等相匹配

在设计阶段我们要考虑更多的细节

我们不仅要定义类 对象

我们还要给出每个对象的生命周期

所以呢 分析阶段我们给出的分析模型是一个比较小的模型

它所包含的分析元素 数量比较少

到了设计阶段我们整个设计需要考虑更多的问题 考虑更多的因素

最终的设计模型也是一个大的 相对分析模型来说比较大的模型

同学们 我们知道传统的结构化软件的设计分析方法

或者是自顶向下 逐层分解的

或者是自顶向上的 两种方式

但是面向对象的软件分析设计过程它既不是自顶向上也不是自顶向下

如图所示 在面向对象分析与设计中

我们针对用例 用例描述了系统的功能需求

首先进行用例分析 定义分析类

分析类的大小比子系统要小 又比一般的设计类要大.

所以我们首先设计完分析类之后

我们向上定义整个软件相关的子系统 向下定义它的设计类

所以整个面向对象的软件分析设计方法

既不是自顶向下也不是自顶向上的

软件分析设计最重要的是首先要定义构建一个健壮的软件体系架构

什么是软件体系架构 软件体系架构描述了软件分析设计中一些

最重要最基本最核心的一些设计决策

比如说我们建楼房

软件体系架构就类似于我们盖楼房时地基 框架

它决定了整个楼房的里面的空间 决定了楼房的抗地震性等等

那么同样的 软件架构决定了软件的最基本最重要的设计决策

它决定了整个软件系统的性能 扩展性 安全性等重要的特性

在软件体系架构中 我们要选择和确定整个软件系统中

包含哪些设计元素 以及它们的接口

我们还要描述这些设计元素是怎么样相互合作

来实现系统的行为的

我们要用元素之间的协作关系来描述系统行为

另外我们还需要描述在系统中我们是如何将这些元素组织起来的

在软件架构中

我们通常是基于架构风格进行软件系统的元素之间的组织

软件架构描述了系统最重要最核心的基本设计决策

系统设计时 首先我们要设计完成体系架构

有了体系架构之后 以架构为基础

我们来约束后续的软件设计来实现一直到编程

从而我们可以看到软件架构是整个面向对象分析与设计里面最重要最基本的设计决策

它影响到后续所有的设计和实现活动

在面向对象中 我们通常把架构的描述采用这种4+1视图的方式

什么是视图 我们对一个物体站在不同的角度 不同的方向

我们看到的物体形状是不同的

软件系统架构同样非常复杂

所以我们需要从不同的视点 来观察描述体系架构

需要定义不同的视图

面向对象中我们对体系架构标准采用这种4+1视图

其中 最中间的我们称之为用例视图

用例视图实际上描述了系统的功能结构

每一个用例描述系统的一个行为一个功能

那么用例视图就描述了整个系统需要实现多少个用户功能

第二点比较重要的是逻辑视图

逻辑视图描述了体系架构中的主要组成部分以及它们之间的相互关系

比如说描述了软件系统的系统结构

第三部分是实现视图

实现视图描述了整个软件系统在开发完成以后系统的物理组成部分

比如说我们开发完成的软件的程序文件 头文件 配置文件等等

或者说第三方的库文件等等

这些都是软件开发完成之后的实现部分

它描述了它们之间的相互关系

对实现视图来讲 是程序员和软件管理员比较关注的

在软件交付用户时

我们需要把软件安装部署在用户的计算平台上或者说计算机上

这时候就需要定义一个部署视图

部署视图描述了所开发的软件组件

如何部署安装在哪一台计算机或者设备上去

所以部署视图主要是系统工程师比较关注

系统工程师的主要职责就是负责软件的安装配置维护等等

最后一个是进程视图

进程视图描述软件运行过程中

它的动态表现形式为进程或者线程等

进程视图定义了整个系统在执行过程中有多少个进程

有多少个线程 以及它们之间的相互关系

多进程或者多线程对于分析系统的性能 可伸缩性 吞吐量等非常重要

所以对于软件的集成工程师来讲 进程视图很重要

下面我们看一下分析设计的主要活动

在分析设计中我们可以分为两个阶段

在分析阶段我们首先要定义初始的软件体系架构

同时进行用例分析

通过用例分析 在设计阶段对体系架构进行进一步的精化

来定义它的进程视图和部署视图

同时在设计阶段对用例分析 用例分析出的分析类进一步进行组件设计和类的设计

如果系统还需要数据库来进行数据的持久化保存

还涉及到数据库的设计

在分析设计阶段 主要参与者主要有两个角色

一个是架构师 一个是设计师

架构师的主要工作是 首先要定义整个软件的参考体系架构

然后进行架构分析 识别相应的设计机制和主要的设计元素

然后构建一个体系架构

在体系架构中构建过程中还要考虑复用已有一些组件

同时要描述整个系统的运行式架构和分布式架构

设计师的主要职责是来做用例分析 用例设计

然后做子系统的设计 数据库的设计和类的设计等等

下面我们讲一下架构师的主要职责

在软件开发团队中架构师是整个项目团队的技术负责人

他负责协调组织整个的技术活动

对于架构师来讲 最重要的是定义软件系统的参考架构

撰写软件系统的架构设计书

在架构设计书中还要包括有部署架构的部署模型

和实现架构描述的实现模型

除此之外还要参与到用例分析

定义和架构相关的分析模型和设计模型

对于设计师来讲 他是针对每个用例

完成每个用例的用例分析与设计 完成类 子系统的设计

设计师的主要职责是通过对用例的分析设计给出用例的实现

在用例的实现中 定义相应的包和类或者子系统

面向对象的分析与设计是用例驱动的

用例定义了系统的基本功能和行为

所以用例在面向对象分析与设计中是核心 是重点

在面向对象中 通过用例我们可以使所有的参与者

无论是项目经理 架构师 设计师测试人员 用户等

对系统有一个一致的统一的理解

同时我们以用例作为一个中枢节点

可以把我们不同阶段的设计模型通过用例关联起来 同步起来

所以说用例是整个分析设计的核心

是它驱动了我们整个分析设计的活动

我们给出一个概念 用例实现

用例和它的用例规约描述了系统的一个行为

那么系统行为最终要由软件系统内部的元素来实现

在面向对象中我们的元素就是类 对象 还有子系统等等

用例实现是指描述实现这个用例所需要的类

以及由类之间的关系所构建的一个类图

另外还要描述类的对象是如何相互协作 来实现用例的行为的

所以我们一般用时序图来描述

在介绍UML图的时候我们说时序图和通信图是等价的

每个时序图都可以转换到相应的通信图中去

对用例来说 它的用例实现通常情况下应该包括有一个类图

有若干个时序图或者通信图

每个用例中有多个事件流

比如说它有一个基本事件流 三个可选事件流

通常情况下 在它的用例实现中

就会有和一个基本流三个事件流分别对应的四个时序图或者通信图

第二点来讲 分析设计是一个迭代的开发过程

一个软件系统有很多的功能

我们在需求分析阶段会定义多个用例

到了分析设计阶段我们会迭代的进行分析设计

每一次迭代会选择一个用例或者多个用例

如果一个用例很复杂 一次迭代时只迭代它的一个剧情

也就是说我们是以用例为单位

迭代的进行每一次的软件分析设计

同学们 今天我们介绍了一下分析设计活动的过程

讲了分析设计活动的主要重点

介绍了软件体系架构的4+1视图

最后我们说明了分析设计活动是用例驱动的

谢谢大家

面向对象分析与设计课程列表:

面向对象概述

-软件开发过程中的主要问题和好的解决方法

--软件开发过程中的主要问题和好的解决方法

--软件开发过程中的主要问题和好的解决方法

统一软件开发(RUP)

-RUP软件开发模型的特点

--RUP软件开发模型的特点

--RUP软件开发模型的特点

面向对象建模

-四个基本原则

--四个基本原则

--四个基本原则

-对象和类

--对象和类

--对象和类

-类之间的关系

--类之间的关系

--类之间的关系

需求概述

-用例模型

--用例模型

--用例模型

-用例之间的关系

--用例之间的关系

--用例之间的关系

-用例建模

--用例建模

--用例建模

分析与设计概述

-分析与设计概述

--分析与设计概述

--分析与设计概述

架构分析

-架构分析基本概念

--架构分析基本概念

--架构分析基本概念

-定义模型的高层组织结构

--定义模型的高层组织结构

--定义模型的高层组织结构

-确定分析机制、确定关键概念、创建用例实现

--确定分析机制、确定关键概念、创建用例实现

--确定分析机制、确定关键概念、创建用例实现

用例分析概述

-用例分析概述

--用例分析概述

--用例分析概述作业

-控制类

--控制类

--控制类

-用例行为和类的关系

--用例行为和类的关系

--用例行为与类的关系

识别设计类

-识别设计元素概述

--识别设计元素概述

--识别设计元素概述

-识别子系统及接口

--识别子系统和接口

--识别子系统及接口

描述运行态软件体系架构

-描述运行态软件体系架构

--描述运行态软件体系架构

--描述运行态软件体系架构

描述分布式系统架构

-描述分布式系统架构概述

--描述分布式系统架构概述

--描述分布式系统架构概述

用例设计

-用例设计描述

--用例设计描述

--用例设计描述

子系统设计

-子系统设计概述

--子系统设计概述

--子系统设计概述

类设计

-创建初始设计类、定义类操作方法

--创建初始设计类、定义类操作方法

--创建初始设计类、定义类操作方法

-定义类状态

--定义类状态

--定义类状态

-定义类之间的依赖关系、关联关系以及多重性设计

--定义类之间的依赖关系、关联关系以及多重性设计

--定义类之间的依赖关系、关联关系以及多重性设计

-定义类的泛化关系、解决用例冲突、非功能性需求

--定义类的泛化关系、解决用例冲突、非功能性需求

--定义类的泛化关系、解决用例冲突、非功能性需求

分析与设计概述笔记与讨论

也许你还感兴趣的课程:

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