ch03_类图(域模型)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
候选的关键抽象—这个属性列包含了所有从软件需求 说明书中找出来的名词. 排除的原因—如果该名词被提取为关键抽象,则该空 格不需要填写;否则的话在此填写候选抽象被排除的 原因. 选定的名字—这列填写被提取出来作为关键抽象的类 名.
候选的关键抽象 排除的原因 选定的名字
软件需求说明书中的名词
设计
图9-1 UP制品样例的影响
3
需求是分析的源头
有好的材料才能 炒出好的菜
类图的角色
外观与机理
议程
什么是关键抽象 分析师必学元素
类图——分析类 类及类的关系
什么是域模型 如何建立域模型 事务模式 酒店订房系统
什么是关键抽象
“关键抽象”是一个类或对象,它是问题域词汇 表(Glossary)的一部分。又称:概念类或分析 类 什么是概念类
接口与实现
聚合
泛化与继承
分析阶段
设计阶段
关联关系
结构 说明 两个或多个类之间的一种关系,此关 系涉及类的各个实例之间的连接 语法
关联
识别类之后,需要识别关联 多重性(multiplicity)定义有多少对象参与 了某个关系 各个类都可能与自身有关联
雇员 部门
示例:“雇员为公司工作” 准则:关联表示了需要持续一段时间的关系,根据语境,可能是几毫秒或数年
订单明细
+订单编号 +房间 +房型 +大小 +面积
用能说的通:什么的什么
审查属性
是否存在冗余
会员
+姓名 +性别 +配偶 +出生年月 +年龄
审查属性
是否有复杂结构的属性
会员
+姓名 +性别 +配偶 +出生年月 +年龄 +联系地址
联系地址包括:省, 市,街道,邮编等
1:1-可以在原类里面展开 1:N-需要关联类
是一种收集并整理卡片的开发方式 是一种面向文本建模技术,是由Kent Beck和Ward Cunningham 1989)创建的具有影响力的敏捷思想 类代表了一组“候选关键抽象” 职责是类知道或者做的任何事情 协作者包含一至两个方面:需要的信息或者需要的事务。
具体来说:
用CRC分析法识别关键抽象
小提示:通过你自己的练习,要能够跳过那些明 显不在系统域范围内的名词,但是现在你得对软 件需求规格说明书进行彻底的查找。
使用这种方法时必须小心。不可能存在名词到“关键抽象”(类或对象) 的映射机制,并且自然语言中的词语存在二义性。
候选的关键抽象表格
用来记录提取的候选关键字的表格由三个属性列 组成:
更新候选关键抽象表格
候选的关键抽象 排除的原因 选定的名字
订单 酒店 商务酒店
客人 房间 信用卡验证系统 姓名 地址
订单 酒店
酒店的子类 客人 房间 一个外部系统 客户的属性
如何判断是属性还是类?
Guideline: If we do not think of some conceptual class X as a number or text in the real world, X is probably a conceptual class, not an attribute.(P109)
分析师必学元素
类图 类 关联关系 聚合关系 组合关系
类图
类图(class diagram)用来表达系统内部的静态结 构(static structure)。 具体来说,开发人员可以通过类图的设计,来将 数以万行的程序代码分门别类,构成了系统内部 的静态结构。
类图
新术语——模块变类(class)、功能变操作 (operation)、变量变属性(attribute)。新术语 并不是旧酒换新瓶,而是分类、定操作、定义属 性上头,有新的划分方法。
公司
关联关系
-"阅读方向箭头" -没有其他含义,只是表示阅读关联标记的方向 -通常省略(缺省:从左到右,从上到下)
Register
Records-current 1 0..1
Sale
关联名称
关联关系 关联的UML标识法
多重性
关联关系
实体关联图(关系型数据库)
数据表(Entity) 记录(record) 字段(field)
审查属性
是否有复杂结构的属性
会员
+姓名 +性别 +配偶 +出生年月 +年龄 +联系地址 +账号 +账号密码 +账号状态 +账号余额
保留在原类 中
抽取出来独 立成类
审查属性
根据对需求的理解进行细化
联系地址
+省 +市 +街道 +...
会员
+姓名 +性别 +出生年月 +...
账号
+账号 +密码 +状态 +余额 +...
用CRC卡记录关键抽象
订
职 责
预定一个房间
房间 状态 (空房,已入住,预留房间) 入住日期 离住日期 付帐方式 订单编号 客人
单
协作者
更新候选关键抽象表格
如果你选择的这个候选关键抽象有职责关系,则把 这个关键抽象的名字 (从CRC分卡中)填写到”选 定的名字”属性列中. 否则填写这个候选关键抽象为何没有被选中为关 键抽象的原因.
选择一个候选关键抽象主要靠直觉,但也有一些小 窍门:
向该领域的专家咨询 从用例名中提取候选关键抽象 从需求说明书中的范围部分提取候选关键抽象
识别一个相关用例
要识别一个候选关键抽象是否是一个真正的关键 抽象,您应该先确定这个候选关键抽象是否担负着 职责同时是否有协作关系. 首先找出一个包含了候选关键抽象的用例,然后识 别出它的职责和协作关系:
识别出候选的关键抽象集合
通过软件需求文档的以下部分,识别出所有的唯 一名词,从而来开始这个提取过程。
系统范围和上下文部分( Vision ) 功能需求部分( Use-case model )
用பைடு நூலகம்、用例描述和场景 明确的功能需求
补充规约( Supplementary specification ) 项目术语表部分( Glossary )
从描述中标识出候选关键抽象,并识别关键抽象? 候选的关键抽象 排除的原因 选定的名字
实践-识别关键抽象
CST公司开发一个用于管里软件开发项目的系统 ,系统可对多个项目进行管理,一个项目由若干 个阶段组成,而每个阶段又由许多活动( UP中 称科目,Discipline)组成,一项活动消耗若干 资源,并产生若干工件(UP中称制品,Artifacts )。工件有代码、模型、文档等,资源有工人、 时间、设备等。
候选的关键抽象表格(示例)
候选的关键抽象 预定 酒店 商务酒店 排除的原因 选定的名字
客人
房间 小型商业会议 信用卡验证系统 姓名
地址
CRC分析法
在完成了所有候选关键抽象列表之后,需要进行一个 过滤,确定关键抽象。 什么是CRC(Class-Responsibility-Collaborator)
Sale date time 概念符号:表示概念类的词语或图形
概念类是思想、事物或对象。概念类可以从其符号、 内涵和外延来考虑。 概念内涵:概念类的定义 “Sale表示购买交易的事件、 具有日期和时间”。 符号:表示概念类的词语或图形 内涵:概念类的定义 外延:概念类所适用的一组示例
sale-1 sale-3 sale-2
类图 --分析者必备
浙江大学软件学院 程学林
1
开发流程
UP制品关系示例 域模型 Sale date ... 1 1..* Sales LineItem quantity ... ...
业务建模
概念类、术语、概念、 属性、关联
用例模型 Process Sale 1. Customer arrives ... 2. ... 3. Cashier enters item identifier. 4.... 用例文本
新的划分方法——拿用户的领域术语当类,然后 确定相关的操作和属性,封装在同一个类中。
确定类图中的元素
UML的类图由以下元素组成:
类
它们可以代表: •概念性实体,如关键抽象 •软件组件
类
分析师不能自己随意定义类,必须寻找领域术语 做为类名称。
房间—真正住进去,特定房号的房间。 房型—顾客在订房时,通常是预订某个房型的房 间。
(概念)类图(面向对象)
类(class) 对象(object) 属性(attribute)
无
关系(relationship)
操作(operation)
关联(association)
经历状态变化的领域对象、 属性和关联
领域模型中某 些术语的细化
Operation: enterItem(…) Post-conditions: -... 操作契约
Cashier: … Item ID: … ... 词汇表
需求
领域中的 概念类会 给某些设 计中软件 类的名称 带来启示
设计模型 : Register enterItem (itemID, quantity) spec = getProductSpec( itemID ) addLineItem( spec, quantity ) ... : ProductCatalog : Sale
概念外延:概念类所适用 的一组示例
sale-4
确定关键抽象的方法
从软件需求规格说明书或用例及用例描述中将 所有名词抽取(发现)出来,填入“候选关键抽 象”表格,从而识别出所有的关键抽象。 用CRC(Class-Responsibility-Collaborator)分 析法确定最基本的一组关键抽象。
使用的一个技术就是CRC分析法:
1.选择一个候选的关键抽象 2.确定一个与该候选关键抽象显著相关的用例. 3.查看用例描述(场景)和系统的功能需求来确定 职责和协作关系. 4.用CRC卡记录抽取出来的关键抽象 5.基于以上的工作,更新候选关键抽象表格.
用CRC卡记录关键抽象
类 名
职责
协作者
选择一个候选关键抽象
实践-识别关键抽象
CST公司开发一个用于管里软件开发项目的系统 ,系统可对多个项目进行管理,一个项目由若干 个阶段组成,而每个阶段又由许多活动( UP中 称科目,Discipline)组成,一项活动消耗若干 资源,并产生若干工件(UP中称制品,Artifacts )。工件有代码、模型、文档等,资源有工人、 时间、设备等。
1.查看用例名 2.查看用例描述 3.查看用例场景 4.查看用例场景描述,看该候选关键抽象是否在文中提 及,如果找到了,则说明该用例场景与之相关.
识别一个相关用例
基于以上所述,这里有两个用例与”订单”这个关 键抽象相关:
E1:管理订单 E5:管理在线订单
明确职责和协作者
查看相关用例对应的场景和需求,找到他们的职责 和需求,以及与他有协作关系的对象. 如果你找不到任何职责关联,那么你就可以将这个 候选从候选关键抽象中删除.
类
类(Class)
属性 (attribute)
操作 ( operation )
类
类的组成
名字 属性 操作 可见性
私有 公有
类关系
类不是孤立存在的 依赖 关联 因此,类与类之间创建了一种关系:
类关系可能指明某种共享关系 类关系可能指明某种类型的语义连接
组合
类关系
从描述中标识出候选关键抽象,并识别关键抽象? 候选的关键抽象 排除的原因 选定的名字
审查属性
是否在系统责任之内 是否描述类对象的特征 是否存在冗余 是否有复杂结构的属性 根据对需求的理解进行细化
审查属性
是否在系统责任之内
会员
+姓名 +性别 +配偶
经理
+姓名 +个人兴趣
审查属性
明确职责和协作者
以下是一些相关的功能需求:
E1-1--系统允许预定代理商来创建,更新和删除一条 预定订单.一条预定订单包括入住日期,离住日期,还 有订单ID号. E1-2—在特定的时间段里(入住到离住期间),可以预 定一个到多个房间. E1-3—预定只与一个客人相关. E1-4—只能在有空房的情况下进行预定.
以下是从酒店预定系统的需求说明书中摘录的一 部分,名词用红色标记.
“酒店预定系统负责管理多种类型的酒店 预定, 包括 一些商务酒店预定。这个系统同时也包含了一个web应 用,允许客人随时查看房间和酒店,查看当前和过去 的预定订单,或者进行新的预定。 “这个酒店预定系统主要有三个涉及点:用于数据存 储的中心数据库管理系统,外部的信用卡验证系统, 还有一个本地的,将电影传输到每个房间的电视信号 上的电影点播系统”。 “系统也必须收集客人的以下一些信息:姓名,地址 ,联系电话,信用卡(类型,号码还有到期日期)