软件工程-构建域模型

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.领域模型的作用 2.构建领域模型的过程
Software Engineering
Beyond Technology
软件工程
第十二章 构建模型
Software Engineering
第十二章 构建领域模型 12.1 过程模型 12.2 领域模型概念 12.3 创建过程
Software Engineering
领域建模是我们初探面向对象世界的开端。
Software Engineering
创建领域模型几个步骤
寻找(识别)类 筛选类 确定关系 识别类的属性
以当前迭代中的需求为界
Software Engineering
类的识别
领域对象类的最佳来源
高级问题陈述、低级需求和问题空间的专业知识。
寻找概念类的三条策略
1.重用和修改现有的模型
• 这是首要、最佳且最简单的方法。 • 在许多领域中,都存在已发布的、绘制精细的领域模型和 数据模型。这些领域包括库存、金融、卫生等等。
Software Engineering
图书信息 录入时间 添加藏书界面
书名 价格
作者
译者
出版社 数量 数据 图书列表
Baidu Nhomakorabea
推荐信息 喜爱程度 录入信息
图书名称 藏书者
图书的详细信息 系统
购买时间 类别
Software Engineering
筛选类
冗余
表示相同事物的两个名词就是冗余。 例如,“图书信息”和“图书的详细信息”,选择简洁的“图书信 息”作为候选类。再如,用户能够被藏书者、拣书者完全涵盖,故 删除用户;销售价格指名价格的含义,故删除价格。
2.使用分类列表
• 表中包含大量值得考虑的常见类别,其中强调的是业务信 息系统的需求。 • 该准则还建议在分析时建立一些优先级。
3.确定名词短语
Software Engineering
分类列表举例
概念类的类别 业务交易 准则:十分关键(涉及金钱),所以作为起点 交易项目 准则:交易中通常会涉及项目 与交易或交易相关的产品或服务 准则:(产品或服务)是交易的对象 交易记录在何处? 准则:重要 与交易相关的人或组织的角色;用例的参与者 准则:我们通常要知道交易所涉及的各方 交易的地点;服务的地点 重要事件,通常包含我们需要记录的时间或地点 物理对象 准则:特写是在创建控制软件或进行仿真时非常有用 事务的描述 类别:描述通常有类别 事务(物理或信息)的容器 容器中的事物 其他协作的系统 金融、工作、合约、法律材料的记录 金融手段 执行工作所需的进度表、手册、文档等 借阅,归还 预订 图书 借书证 借还记录 借还记录 资料管理员、拣书者、藏书者 院图书馆管理系统 资料室 借阅记录、归还记录、催还列表 条码扫描仪 图书介绍、图书评价 图书类别 资料室、个人藏书室 条目 院图书馆管理系统 图(藏)书列表,统计报表 晒书计划表、图书推荐表 示例
Software Engineering
关系 建立关联的方法
显式的关联可以从用例中找到 从事件表中找到关联的早期标志
注意
应该避免加入大量的关联
Software Engineering
添加关联的注意事项
立即给关联制定多重度,确保每个关联都有明确的多 重度 不对用例和时序图进行研究,就将操作分配给类 在确保已满足用户需求之前,对代码进行优化以提高 重用性 对于每个“……部分(part-of)”关联,就使用聚集还是组 合而争论不休 未对问题空间进行建模之前,就假定一种具体的建模 策略 在领域类和关系型数据库表之间建立一对一的映射 过早地执行“模式化”,这将导致根据同用户问题毫 无关系的模式创建解决方案
实现结构
描述硬件元素或算法的名词最好是删除或指派为某个类的操作。例 如,“打印机”和“复利叶算法”。
Software Engineering
候选类 图书信息 录入时间 藏书信息 添加藏书界面 图书的详细信息 书名 价格 图书名称 系统 作者 推荐信息 藏书者 购买时间 译者 喜爱程度 录入信息 类别 出版社 数量 数据 图书列表 冗余 图书信息 录入时间 藏书信息 添加藏书界面 图书的详细信息 书名 价格 图书名称 系统 作者 推荐信息 藏书者 购买时间 译者 喜爱程度 录入信息 类别 出版社 数量 数据 图书列表 价格 图书名称 系统 作者 推荐信息 藏书者 购买时间 译者 喜爱程度 录入信息 类别 出版社 数量 数据 图书列表 作者 推荐信息 藏书者 购买时间 译者 喜爱程度 录入信息 类别 出版社 数量 数据 类别 出版社 数量 作者 推荐信息 藏书者 购买时间 译者 喜爱程度 藏书者 藏书者 藏书者 藏书者 价格 图书名称 价格 图书名称 不相关 图书信息 录入时间 藏书信息 添加藏书界面 笼统 图书信息 录入时间 藏书信息 属性 图书信息 录入时间 藏书信息 藏书信息 藏书信息 藏书信息 藏书信息 操作 图书信息 角色 图书信息 事件 图书信息 实现结构 图书信息
Software Engineering
整理后的结果
藏书者
1
藏书信息
收藏 *
图书信息
Software Engineering
识别属性 1.在什么情况下我们需要属性
当需求建议或暗示需要记住信息时,引入属性
2.获取属性的渠道
查看用例文档,寻找事件流中的名词 查看需求文档,发现系统要搜集的信息 若已经定义了数据库结构,则数据库表中的字段就是 属性 选择属性时应考虑的因素 只有系统感兴趣的特征才包含在类的属性中 分析系统建模的目的,也会影响属性的选取
Software Engineering
什么是领域模型 定义
是对领域内的概念类或现实世界中对象的可视化表 示。领域模型也被称为概念模型、领域对象模型和 分析对象模型。
Software Engineering
理解
UP领域模型是UP业务对象模型(BOM)的特化, 专用于解释业务领域中重要的“事务”和产品。 领域模型可以被描述成一组没有定义操作的类图 (UML表示法)。它提供了概念透视图。
Software Engineering
细化
是一般项目中最初的一系列迭代。
• 对核心、有风险的软件架构进行编程和测试 • 发现并稳定需求的主体部分 • 规避主要风险
制品 领域模型 设计模型 软件架构文档 数据模型 用户界面原型 说明 领域概念的可视化,类似于领域实体的静态信息模型 描述逻辑设计的一组图,包括健壮图、软件类图、对象交互图、 包图等 学习辅助工具,概括关键架构问题及其在设计中的解决方案。该 文档是对重要设计思想及其在系统中动机的概要 包括数据库方案,以及在对象和非对象表示之间映射的策略 描述用户界面、导航路径、可用性模型等
不相关
名词与问题域没有关系 它可能是有效类,但不在当前项目的范围之内。 例如,“员工考绩标准”是个名词,但RP系统不会测量或跟踪员工 的工作实绩;电话和传真不是系统所关注的内容。
笼统
名词的描述覆盖面太大,以至于在对某个业务进行描述时,不得不 对该名词概念进行细分,单独拿出来根本不能说明问题。例如, “录入信息”包括“图书信息”和“藏书信息”两部分,在应用录 入信息进行描述时,必须加以额外说明。
Software Engineering
确定名词短语
1.
2. 3. 4. 5. 用例UC2.1:添加藏书 基本流程: 藏书者登记新购买图书的信息,包括书名、作者、译者、出版社、购买时间 (系统自动给出录入时间)、价格、对图书的推荐信息、喜爱程度,数量、 类别。 系统进行输入信息的有效性检查 系统根据图书名称进行重复图书检查 存储图书信息,并提示存储成功。 系统重新显示初始添加藏书界面,用户可以进行下一本图书的录入过程。 分支流程: 2.a、如果藏书者录入信息有误 1、系统提示藏书者此信息 2、返回刚才的添加藏书界面,界面保持原来填写数据 3.a、如果图书名称发生重复,系统将提示此信息,并给出相应图书列表,用 户可以查阅图书的详细信息,同时要求用户对此情况进行处理。 1、如果确认图书录入重复,则系统放弃对当前图书信息的存储 2 、如果只是同名不同书,则用户确认此情况后,系统对当前录入的图书 信息进行保存。
属性
实际上描述了另一个类的结构的名词是属性。
Software Engineering
操作
描述某个类职责的名词自身不是一个类,而是一个操作。如税额计 算。
角色
描述一个特定实体的状态或其分类的名词多半不是一个类。例如, “最佳顾客”是一个顾客在一定时间下的状态。
事件
描述特定时间频率的名词,通常表示了领域必须支持的一个动态元 素。例如,“每星期打印一次发票”中的“星期”就不是候选类。
1 收藏 *
藏书信息 购买时间 推荐信息 喜爱程度 类别 数量 借还记录 借阅时间 归还时间 拣书者 1..*
借阅
图书信息 ISBN 图书名称 出版社 作者 译者 价格 类别 册数
1
姓名 教研室 密码 E-mail 员工号
Software Engineering
总结
要求 了解 理解 掌握 具体内容
• 领域对象或概念类 • 概念类之间的关联 • 概念类的属性
Software Engineering
银行领域模型的例子
• 任何一个银行“账户”(这里没有详细分类)可能与多个“凭 证”相关; • 具体而言,凭证可以是银行卡、存折、存单等形式; • 任何凭证都有明确的生效起始日和终止日; • 但各种凭证的凭证号却不是统一的,比如存折和信用卡有不同 的编号格式。
Software Engineering
1. 2. 3. 4. 5.
用例UC2.1:添加藏书 基本流程: 藏书者登记新购买图书的信息,包括书名、作者、译者、出版社、购买时间 (系统自动给出录入时间)、价格、对图书的推荐信息、喜爱程度,数量、 类别。 系统进行输入信息的有效性检查 系统根据图书名称进行重复图书检查 存储图书信息,并提示存储成功。 系统重新显示初始添加藏书界面,用户可以进行下一本图书的录入过程。 分支流程: 2.a、如果藏书者录入信息有误 1、系统提示藏书者此信息 2、返回刚才的添加藏书界面,界面保持原来填写数据 3.a、如果图书名称发生重复,系统将提示此信息,并给出相应图书列表,用 户可以查阅图书的详细信息,同时要求用户对此情况进行处理。 1、如果确认图书录入重复,则系统放弃对当前图书信息的存储 2 、如果只是同名不同书,则用户确认此情况后,系统对当前录入的图书 信息进行保存。
Software Engineering
3.每条属性都能够回溯到用户的需求
不要盲目添加不必要的属性,造成系统混乱
4.类的属性要适当。
若某个类的属性太多,则可考虑分解成更小的类 若某个类的属性太少,可考虑将类进行合并
Software Engineering
完成分析模型
藏书者 姓名 教研室 密码 E-mail 员工号
Software Engineering
领域模型与数据模型的区别
领域模型不是数据模型。 数据模型的实体对象是通过对数据模型的定义,来 表示存储于某处的持久性数据。 在领域模型中,并不会排除需求中没有明确要求记 录其相关信息的类,也不会排除没有属性的概念类。 在领域模型中没有属性的概念类是合法的,或者在 领域内充当单纯行为角色而不是信息角色的概念类 也是有效的。
相关文档
最新文档