第六章 面向对象分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国石油大学胜利学院
currentSchedule 0..1 <<entity>> Schedule 0..* 0..*
primaryCourses 0..4
<<entity>> CourseOffering
6.2.3建立对象—关系模型
Logo 分析类的合并:选课和关闭课程用例中相同分析类的合 并。
模
中国石油大学胜利学院
面向对象分析模型P139
OOA的模型(组成结构)
需求模型(以用例模型为主体,第五章) 类/对象模型(全部的类和对象) 对象-关系模型(对象之间的静态关系) 对象-行为模型(系统的动态行为)
属性、操作、协作者
Logo
类/对象 模型
以用例模 型 为主体的 需求模型
中国石油大学胜利学院
三种分析类
边界类
Logo
实体类 系统边界 系统信息
控制类
协调用例行为
中国石油大学胜利学院
查找分析类——边界类
Logo
怎么划分:为每对参与者/用例确定一个边界类 作用:将系统和外界隔离开,外界的变化不影响 内部元素。(对系统依赖于环境的那部分进行建 模)
学生 课程注册 课程目录系统
Logo
协作图
:Client
:Supplier
链
Client Supplier
类图
Client
0..* 0..* Prime suppliers
Supplier
PerformResponsibility()
关联
中国石油大学胜利学院
6.2.3建立对象—关系模型
例:选课用例的参与类图 显示了类的实例之间的数量关系
用例行为比较复杂,并且分散到不同的事件序列中, 这时就需要为这个类创建一个状态图 针对一个类的状态变化 研究该类的动态行为
中国石油大学胜利学院
步骤三:建立对象—关系模型
为类确定属性(在分析阶段,属性是粗略的) 为类确定关联? 协作图中对象间的链接就是类图中类间的关联。
PerformResponsibility
RegistrationController
中国石油大学胜利学院
查找分析类——实体类
确定相关的各个实体(包括属性与方法),是系 统存储和管理的信息,通常来源于参与者。
Logo
学生
课程表
课程目录
中国石油大学胜利学院
步骤二: 建立对象-行为模型-时序图(p96)
打印文件 计算机 打印服务器 打印机 打印队列
构件视图
展示系统实现的结构和行为特征
显示系统的实现环境和构件被部署到物理结构中的映射
部署视图
中国石油大学胜利学院
6.1.1 面向对象软件分析
OOA的主要任务
理解用户需求
全面地理解和分析用户需求
明确所开发的软件系统的职责 形成文件并规范地加以表述
Logo
进行分析,提取类和对象,并结合分析进行建
中国石油大学胜利学院
步骤一:识别与确定分析类
为什么叫分析类? 用例分析阶段定义的类叫分析类。 分析类由何而来? 第五章需求模型的用例模型而来。 为什么给分析类划分类型? 有助于建立一个稳固的系统,分类后,对于需求 变更只影响一部分类。 划分为哪几类?分别代表什么? 边界类:系统与外部环境交互的边界 控制类:系统运行中的控制逻辑 实体类:系统要存储的信息
中国石油大学胜利学院
第四章 UML的组成
图
Logo
静态图
用例图、类图、对象图、构件图和部署图
动态图
状态图、时序图、协作图和活动图
视图
用例视图
从用户的角度看到的系统应有的外部功能 描述系统的静态结构和对象间的动态协作关系 展示系统的动态行为及其并发性
逻辑视图
进程视图
OOA建模步骤
需求理解 定义类和对象 标识对象的属性和操作 标识类的结构和层次 建立对象---关系模型 建立对象---行为模型 评审OOA模型
中国石油大学胜利学院
6.2 面向对象分析建模
基于用例的面向对象分析方法
Logo
1、建立类和对象 2、建立对象-行为模型 3、建立对象-关系模型 回顾需求阶段产生的用例规约,补充必要的详细信息; 研究用例的事件流,将用例的职责分配给若干分析类; 基于这些职责分配以及分析类之间的协作,即可开始为分 析类间的关系建模了 一旦分析了用例,就需要查看确定的类,确保它们被详尽 地描述。 并确保分析模型各个部分之间的一致
软件工程
六、面向对象分析
OOA方法及示例
中国石油大学胜利学院
问题讨论式学习——带着问题去学
Logo
第五章介绍的面向对象需求模型和第六章面向对 象分析有什么区别和联系?(第四章?) 简述面向对象分析模型的组成结构? 为什么叫分析类? 为什么把分析类划分类型?划分为哪几种类型? 分别代表什么? 用哪几种UML图可以表示对象之间的交互? 分析模型中的静态结构模型和动态行为模型之间 有什么联系?
Logo
交互图
在动态图中, 分析类的职责 可以从交互提 供的消息中得 到。P146
:Client // PerformResponsibility
:Supplier
类图
Supplier // PerformResponsibility
中国石油大学胜利学院
6.2.2 建立对象—行为模型
Logo
绘制状态图
在这一点,提交课程表子事件流被执行
对象-行为模型-协作图(P96)
协作图用于描 述相互协作的 对象间的交互 和链接,体现 对象之间的静 态链接。P95
计算机
Logo
打印队列
[打印机忙] 2.2:保存文件
1:打印文件
[打印机就绪] 2.1:打印文件
打印服务器
打印机
中国石油大学胜利学院
6.2.2建立对象—行为模型-协作图
: RegistrationController
10: // add schedule(Schedule) : Student 9: // create with offerings( ) : Schedule : Student
中国石油大学胜利学院
Βιβλιοθήκη Baidu
6.2.2 建立对象—行为模型
为分析类分配职责(为类确定操作) 为消息的接受者一方的类分配操作,以消息名称命名。
RegisterFor CoursesForm Registration Controller Course Catalog System RegisterFor CoursesForm
Registration Controller
Register for Courses
Student Course Offering
对象-行为模型
对象关系模型
中国石油大学胜利学院
6.1.1 面向对象分析
Logo
OOA与SA相比较的优点?
(1)同时加强了对问题域和软件系统的理解;加强理解 (2)改进包括用户在内的与软件分析有关的各类人员之 间的交流;改进交流
(3)对需求的变化具有较强的适应性;适应变化
(4)很好地支持软件复用;支持复用
7: // select 4 primary and 2 alternate offerings( ) 8: // create schedule with offerings( ) 9: // create with offerings( ) 10: // add schedule(Schedule)
Logo 绘制出选课用例创建课表事件流的协作图(时间和空间)
5: // display course offerings( ) 6: // display blank schedule( ) : Course Catalog
4: // get course offerings( ) : RegisterForCoursesForm : CourseCatalogSystem
中国石油大学胜利学院
第6章 面向对象分析
软件分析概述 面向对象分析建模 面向对象分析示例
Logo
中国石油大学胜利学院
回顾第五章 面向对象需求模型
用例模型 补充规约 全局性功能、非功能需求
Logo
参与者 用例图 术语表
用例规约
中国石油大学胜利学院
6.1 软件分析概述
Logo
软件需求与软件分析之间的区别和联系? 软件需求:用户角度,注重软件外在表现 软件分析:开发者角度,注重软件内部逻辑结构 第四章UML与第五章第六章的关系? 介绍了面向对象需求与分析的工具
2: // get course offerings( ) 8: // create schedule with offerings( )
1: // create schedule( ) 7: // select 4 primary and 2 alternate offerings( )
3: // get course offerings(forSemester)
(5)确保从需求模型到设计模型的一致性。 确保一致
中国石油大学胜利学院
6.1.2 面向对象分析模型
分析模型的特点
Logo
全面覆盖软件的功能需求 分析模型与软件的实现无关 分析模型的表述方法与所采用的分析技术有关
OOA共同特征
类和类层次的表示 建立对象-关系模型 建立对象-行为模型
Logo
学生注册课程1次,对应1个注册控制类; 1个注册控制类对应1个课表,1个课表包括4门主课
<<boundary>> RegisterForCoursesForm 1 1 0..1 <<control>> RegistrationController
<<entity>> Student 1
Logo
打印文件
[打印机就绪] 打印文件
时序图用来描述对 象之间的动态交互, 着重体现对象间消 息传递的时间顺序。 P95
[打印机忙] 保存文件
文档打印系统的时序图
中国石油大学胜利学院
6.2.2建立对象—行为模型P145
绘制出选课用例创建课表事件流的时序图 确定对象:参与者-边界类对象-控制类对象-实体类对象 流程: (1)新建一个课程表 学生申请,注册课程表边界类对象接收,调用控制类获取开课 信息,调用课程目录系统之间的边界类,找出课程信息。 (2)显示本学期有效的课程清单 边界类对象调用自己的方法向学生显示课表信息。 (3)显示空的课表 边界类对象调用自己的方法向学生提供空白课表。 (4)学生选课 学生选4门主课,边界类对象创建课程表,控制类对象创建课程 表,将数据信息加入实体类(学生、课表)。
中国石油大学胜利学院
Logo
识别与确定分析类
三种分析类
Logo
边界类<<boundary>> (系统与外界交互的边界) 用户界面 系统接口 硬件接口 控制类<< control>>(系统运行中的控制逻辑) 封装用例所特有的控制行为 实体类<<entity>>(系统要存储和维护的信息) 系统存储的信息及其相关行为
RegisterForCoursesForm
CourseCatalogSystem
中国石油大学胜利学院
查找分析类——控制类
Logo
怎样设计:为每个用例设置一个控制类(事件流) 作用: 封装用例中的流程控制行为,建立系统的 动态行为模型。 与实体类分开,使实体类可以复用
学生 课程注册 课程目录系统
新建一个 课程表 显示本学期有效的 课程提供的清单 显示空的课程 表让学生选择 课程
3: // get course offerings(forSemester) 4: // get course offerings( ) 5: // display course offerings( )
6: // display blank schedule( )
Student Course Offering Course Catalog System
Schedule
CloseRegistration Form
Course Catalog System
Schedule CloseRegistration Controller
Close Registration
中国石油大学胜利学院
Logo
: Student
: RegisterForCoursesForm
: RegistrationController
: CourseCatalogSystem
: Schedule
: Student
: Course Catalog
1: // create schedule( ) 2: // get course offerings( )
currentSchedule 0..1 <<entity>> Schedule 0..* 0..*
primaryCourses 0..4
<<entity>> CourseOffering
6.2.3建立对象—关系模型
Logo 分析类的合并:选课和关闭课程用例中相同分析类的合 并。
模
中国石油大学胜利学院
面向对象分析模型P139
OOA的模型(组成结构)
需求模型(以用例模型为主体,第五章) 类/对象模型(全部的类和对象) 对象-关系模型(对象之间的静态关系) 对象-行为模型(系统的动态行为)
属性、操作、协作者
Logo
类/对象 模型
以用例模 型 为主体的 需求模型
中国石油大学胜利学院
三种分析类
边界类
Logo
实体类 系统边界 系统信息
控制类
协调用例行为
中国石油大学胜利学院
查找分析类——边界类
Logo
怎么划分:为每对参与者/用例确定一个边界类 作用:将系统和外界隔离开,外界的变化不影响 内部元素。(对系统依赖于环境的那部分进行建 模)
学生 课程注册 课程目录系统
Logo
协作图
:Client
:Supplier
链
Client Supplier
类图
Client
0..* 0..* Prime suppliers
Supplier
PerformResponsibility()
关联
中国石油大学胜利学院
6.2.3建立对象—关系模型
例:选课用例的参与类图 显示了类的实例之间的数量关系
用例行为比较复杂,并且分散到不同的事件序列中, 这时就需要为这个类创建一个状态图 针对一个类的状态变化 研究该类的动态行为
中国石油大学胜利学院
步骤三:建立对象—关系模型
为类确定属性(在分析阶段,属性是粗略的) 为类确定关联? 协作图中对象间的链接就是类图中类间的关联。
PerformResponsibility
RegistrationController
中国石油大学胜利学院
查找分析类——实体类
确定相关的各个实体(包括属性与方法),是系 统存储和管理的信息,通常来源于参与者。
Logo
学生
课程表
课程目录
中国石油大学胜利学院
步骤二: 建立对象-行为模型-时序图(p96)
打印文件 计算机 打印服务器 打印机 打印队列
构件视图
展示系统实现的结构和行为特征
显示系统的实现环境和构件被部署到物理结构中的映射
部署视图
中国石油大学胜利学院
6.1.1 面向对象软件分析
OOA的主要任务
理解用户需求
全面地理解和分析用户需求
明确所开发的软件系统的职责 形成文件并规范地加以表述
Logo
进行分析,提取类和对象,并结合分析进行建
中国石油大学胜利学院
步骤一:识别与确定分析类
为什么叫分析类? 用例分析阶段定义的类叫分析类。 分析类由何而来? 第五章需求模型的用例模型而来。 为什么给分析类划分类型? 有助于建立一个稳固的系统,分类后,对于需求 变更只影响一部分类。 划分为哪几类?分别代表什么? 边界类:系统与外部环境交互的边界 控制类:系统运行中的控制逻辑 实体类:系统要存储的信息
中国石油大学胜利学院
第四章 UML的组成
图
Logo
静态图
用例图、类图、对象图、构件图和部署图
动态图
状态图、时序图、协作图和活动图
视图
用例视图
从用户的角度看到的系统应有的外部功能 描述系统的静态结构和对象间的动态协作关系 展示系统的动态行为及其并发性
逻辑视图
进程视图
OOA建模步骤
需求理解 定义类和对象 标识对象的属性和操作 标识类的结构和层次 建立对象---关系模型 建立对象---行为模型 评审OOA模型
中国石油大学胜利学院
6.2 面向对象分析建模
基于用例的面向对象分析方法
Logo
1、建立类和对象 2、建立对象-行为模型 3、建立对象-关系模型 回顾需求阶段产生的用例规约,补充必要的详细信息; 研究用例的事件流,将用例的职责分配给若干分析类; 基于这些职责分配以及分析类之间的协作,即可开始为分 析类间的关系建模了 一旦分析了用例,就需要查看确定的类,确保它们被详尽 地描述。 并确保分析模型各个部分之间的一致
软件工程
六、面向对象分析
OOA方法及示例
中国石油大学胜利学院
问题讨论式学习——带着问题去学
Logo
第五章介绍的面向对象需求模型和第六章面向对 象分析有什么区别和联系?(第四章?) 简述面向对象分析模型的组成结构? 为什么叫分析类? 为什么把分析类划分类型?划分为哪几种类型? 分别代表什么? 用哪几种UML图可以表示对象之间的交互? 分析模型中的静态结构模型和动态行为模型之间 有什么联系?
Logo
交互图
在动态图中, 分析类的职责 可以从交互提 供的消息中得 到。P146
:Client // PerformResponsibility
:Supplier
类图
Supplier // PerformResponsibility
中国石油大学胜利学院
6.2.2 建立对象—行为模型
Logo
绘制状态图
在这一点,提交课程表子事件流被执行
对象-行为模型-协作图(P96)
协作图用于描 述相互协作的 对象间的交互 和链接,体现 对象之间的静 态链接。P95
计算机
Logo
打印队列
[打印机忙] 2.2:保存文件
1:打印文件
[打印机就绪] 2.1:打印文件
打印服务器
打印机
中国石油大学胜利学院
6.2.2建立对象—行为模型-协作图
: RegistrationController
10: // add schedule(Schedule) : Student 9: // create with offerings( ) : Schedule : Student
中国石油大学胜利学院
Βιβλιοθήκη Baidu
6.2.2 建立对象—行为模型
为分析类分配职责(为类确定操作) 为消息的接受者一方的类分配操作,以消息名称命名。
RegisterFor CoursesForm Registration Controller Course Catalog System RegisterFor CoursesForm
Registration Controller
Register for Courses
Student Course Offering
对象-行为模型
对象关系模型
中国石油大学胜利学院
6.1.1 面向对象分析
Logo
OOA与SA相比较的优点?
(1)同时加强了对问题域和软件系统的理解;加强理解 (2)改进包括用户在内的与软件分析有关的各类人员之 间的交流;改进交流
(3)对需求的变化具有较强的适应性;适应变化
(4)很好地支持软件复用;支持复用
7: // select 4 primary and 2 alternate offerings( ) 8: // create schedule with offerings( ) 9: // create with offerings( ) 10: // add schedule(Schedule)
Logo 绘制出选课用例创建课表事件流的协作图(时间和空间)
5: // display course offerings( ) 6: // display blank schedule( ) : Course Catalog
4: // get course offerings( ) : RegisterForCoursesForm : CourseCatalogSystem
中国石油大学胜利学院
第6章 面向对象分析
软件分析概述 面向对象分析建模 面向对象分析示例
Logo
中国石油大学胜利学院
回顾第五章 面向对象需求模型
用例模型 补充规约 全局性功能、非功能需求
Logo
参与者 用例图 术语表
用例规约
中国石油大学胜利学院
6.1 软件分析概述
Logo
软件需求与软件分析之间的区别和联系? 软件需求:用户角度,注重软件外在表现 软件分析:开发者角度,注重软件内部逻辑结构 第四章UML与第五章第六章的关系? 介绍了面向对象需求与分析的工具
2: // get course offerings( ) 8: // create schedule with offerings( )
1: // create schedule( ) 7: // select 4 primary and 2 alternate offerings( )
3: // get course offerings(forSemester)
(5)确保从需求模型到设计模型的一致性。 确保一致
中国石油大学胜利学院
6.1.2 面向对象分析模型
分析模型的特点
Logo
全面覆盖软件的功能需求 分析模型与软件的实现无关 分析模型的表述方法与所采用的分析技术有关
OOA共同特征
类和类层次的表示 建立对象-关系模型 建立对象-行为模型
Logo
学生注册课程1次,对应1个注册控制类; 1个注册控制类对应1个课表,1个课表包括4门主课
<<boundary>> RegisterForCoursesForm 1 1 0..1 <<control>> RegistrationController
<<entity>> Student 1
Logo
打印文件
[打印机就绪] 打印文件
时序图用来描述对 象之间的动态交互, 着重体现对象间消 息传递的时间顺序。 P95
[打印机忙] 保存文件
文档打印系统的时序图
中国石油大学胜利学院
6.2.2建立对象—行为模型P145
绘制出选课用例创建课表事件流的时序图 确定对象:参与者-边界类对象-控制类对象-实体类对象 流程: (1)新建一个课程表 学生申请,注册课程表边界类对象接收,调用控制类获取开课 信息,调用课程目录系统之间的边界类,找出课程信息。 (2)显示本学期有效的课程清单 边界类对象调用自己的方法向学生显示课表信息。 (3)显示空的课表 边界类对象调用自己的方法向学生提供空白课表。 (4)学生选课 学生选4门主课,边界类对象创建课程表,控制类对象创建课程 表,将数据信息加入实体类(学生、课表)。
中国石油大学胜利学院
Logo
识别与确定分析类
三种分析类
Logo
边界类<<boundary>> (系统与外界交互的边界) 用户界面 系统接口 硬件接口 控制类<< control>>(系统运行中的控制逻辑) 封装用例所特有的控制行为 实体类<<entity>>(系统要存储和维护的信息) 系统存储的信息及其相关行为
RegisterForCoursesForm
CourseCatalogSystem
中国石油大学胜利学院
查找分析类——控制类
Logo
怎样设计:为每个用例设置一个控制类(事件流) 作用: 封装用例中的流程控制行为,建立系统的 动态行为模型。 与实体类分开,使实体类可以复用
学生 课程注册 课程目录系统
新建一个 课程表 显示本学期有效的 课程提供的清单 显示空的课程 表让学生选择 课程
3: // get course offerings(forSemester) 4: // get course offerings( ) 5: // display course offerings( )
6: // display blank schedule( )
Student Course Offering Course Catalog System
Schedule
CloseRegistration Form
Course Catalog System
Schedule CloseRegistration Controller
Close Registration
中国石油大学胜利学院
Logo
: Student
: RegisterForCoursesForm
: RegistrationController
: CourseCatalogSystem
: Schedule
: Student
: Course Catalog
1: // create schedule( ) 2: // get course offerings( )