版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1Software School of Xiamen University第三部分第三部分 细化迭代细化迭代1 基础(基础(1)2Software School of Xiamen University主要内容主要内容w 第8章 迭代1-基础w 第9章 领域模型w 第10章 系统顺序图w 第11章 操作契约3Software School of Xiamen University第第 8 章章 迭代迭代1-基础基础4Software School of Xiamen University8.1 迭代迭代1的需求和难点:的需求和难点: OOA/D技术的核心技术的核心w 细化阶段的迭代细化阶段的迭
2、代1强调的是强调的是:基础范围和在构建对象系统中所使用的常见基础范围和在构建对象系统中所使用的常见OOA/D技术技术.w 在迭代开发中在迭代开发中,我们并非一次就实现所有需求我们并非一次就实现所有需求迭代迭代1中的需求是所有需求或用例的子集中的需求是所有需求或用例的子集w 在多个迭代里对在多个迭代里对同一用例同一用例进行增量式开发进行增量式开发如图如图5Software School of Xiamen University6Software School of Xiamen University 迭代迭代1案例案例w 案例案例1: NextGen POSw 对于对于NextGen POS应用
3、,第一次迭代要处理的需求如下:应用,第一次迭代要处理的需求如下: 对对Process Sale用例实现其基本的、最关键的场景用例实现其基本的、最关键的场景 : 输入商输入商品条目并收取现金品条目并收取现金 为了支持迭代中的初始化需求必须实现为了支持迭代中的初始化需求必须实现Start Up 用例用例 在该阶段,并不处理那些复杂的和特殊的功能,而只是考虑在该阶段,并不处理那些复杂的和特殊的功能,而只是考虑容易实现的场景,并通过设计和实现来加以支持容易实现的场景,并通过设计和实现来加以支持 不考虑外部服务的协作,比如计税器或者产品数据库不考虑外部服务的协作,比如计税器或者产品数据库 不考虑应用复杂
4、的计价规则不考虑应用复杂的计价规则对对UI支持、数据库等内容的设计和实现也会在本次迭代中进行,支持、数据库等内容的设计和实现也会在本次迭代中进行,但是本书不会涵盖其中的细节但是本书不会涵盖其中的细节7Software School of Xiamen University迭代迭代1案例案例案例案例2 Monopolyw Monopoly应用在第一个迭代要处理的需求应用在第一个迭代要处理的需求如下:如下:实现实现Play Monopoly Game用例的基本和关键场用例的基本和关键场景:景:游戏者围绕棋盘四周的方格移动游戏者围绕棋盘四周的方格移动实现用于迭代初始化需要的实现用于迭代初始化需要的S
5、tart Up 用例用例支持支持28个游戏者。个游戏者。游戏通过一系列回合进行。每个回合中,每个游游戏通过一系列回合进行。每个回合中,每个游戏者轮得一次机会。在每一轮次中,游戏者根据戏者轮得一次机会。在每一轮次中,游戏者根据所抛掷的两个六面骰子的点数总和,在围绕棋盘所抛掷的两个六面骰子的点数总和,在围绕棋盘的方格上,按顺时针方向将棋子移动相应的格数。的方格上,按顺时针方向将棋子移动相应的格数。游戏只能进行游戏只能进行20回合。回合。8Software School of Xiamen University迭代迭代1案例案例案例案例2 Monopoly(2)抛掷骰子后,显示游戏者名字和抛骰子的结
6、果。抛掷骰子后,显示游戏者名字和抛骰子的结果。当游戏者移动并占据一个方格后,显示游戏者名当游戏者移动并占据一个方格后,显示游戏者名字和所占方格的名称。字和所占方格的名称。在迭代在迭代1中,不考虑金钱、输赢、买进和支付租中,不考虑金钱、输赢、买进和支付租金以及任何种类的特殊方格。金以及任何种类的特殊方格。每个方格都有相应的名称。游戏开始时,每个游每个方格都有相应的名称。游戏开始时,每个游戏者的棋子都在名为戏者的棋子都在名为“Go”的方格上。方格的名的方格上。方格的名称将依次为称将依次为Go、方格、方格1、方格、方格2、方格、方格39.除了游戏者的数量外,游戏以模拟的方式运行,除了游戏者的数量外,
7、游戏以模拟的方式运行,不需要任何用户输入。不需要任何用户输入。9Software School of Xiamen University8.2 过程:初始和细化过程:初始和细化细化(细化(elaboration)是一般项目最初的一系列迭代,)是一般项目最初的一系列迭代,其中包括:其中包括:对核心、有风险的软件架构进行编程和测试。对核心、有风险的软件架构进行编程和测试。发现并稳定需求的主体部分。发现并稳定需求的主体部分。规避主要风险。规避主要风险。w 一般,细化阶段由两到多个迭代构成一般,细化阶段由两到多个迭代构成w 每次迭代时间定量(每次迭代时间定量(26周)周)w 细化不是设计阶段,不是要完
8、成所有模型的开发细化不是设计阶段,不是要完成所有模型的开发w 细化不是要创建可以丢弃的原型,所产生的代码应细化不是要创建可以丢弃的原型,所产生的代码应该是最终系统的产品化子集该是最终系统的产品化子集10Software School of Xiamen University细化概述(细化概述(2)w 用一句话表达细化用一句话表达细化 构造核心架构,解决高风险元素,定义大部分需构造核心架构,解决高风险元素,定义大部分需求,以及预计总体进度和资源求,以及预计总体进度和资源w 关键思想和最佳实践关键思想和最佳实践实行短时间定量、风险驱动的迭代实行短时间定量、风险驱动的迭代及早开始编程及早开始编程对架
9、构的核心和风险部分进行适应性设计,实现对架构的核心和风险部分进行适应性设计,实现和测试和测试尽早,频繁,实际地测试尽早,频繁,实际地测试基于来自测试、用户、开发者的反馈进行调整基于来自测试、用户、开发者的反馈进行调整通过一系列讨论会,详细编写大部分用例和其他通过一系列讨论会,详细编写大部分用例和其他需求,每个细化迭代举行一次需求,每个细化迭代举行一次11Software School of Xiamen University细化概述(细化概述(3)细化阶段开始构件的制品细化阶段开始构件的制品领域模型概念模型的可视化,类似于领域实体的静态信息模型设计模型描述逻辑设计的一组图,包括软件类图、对象交
10、互图、包图等学习辅助工具,概括关键架构问题及其在设计中的解决方案。该文档是对重要设计思想及其在系统中动机的概要。软件架构文档数据模型包括数据库方案,以及在对象和非对象表示之间映射的策略描述用户界面、导航路径、可用性模型等 用例示意板,用户界面原型12Software School of Xiamen University8.4 计划下一次迭代计划下一次迭代w 通过风险、覆盖范围和关键程度组织需求和迭代。通过风险、覆盖范围和关键程度组织需求和迭代。w 风险风险技术复杂性技术复杂性其他因素:例如工作量或可用性的步确定性。其他因素:例如工作量或可用性的步确定性。w 覆盖范围覆盖范围在早期迭代中至少要
11、设计系统的主要部分。在早期迭代中至少要设计系统的主要部分。w 关键程度关键程度客户认为具有高业务价值的功能客户认为具有高业务价值的功能在每个迭代前将用例和特征进行排序在每个迭代前将用例和特征进行排序13Software School of Xiamen University第第 9 章章 领域模型领域模型14Software School of Xiamen UniversityUP制制品品样样例例的的影影响响(p 99)15Software School of Xiamen University 领域模型是可视化字典,表示领域的重要抽象,领域词汇和领域的内容信领域模型是可视化字典,表示领域的
12、重要抽象,领域词汇和领域的内容信息。表示的信息可以采用纯文本方式(息。表示的信息可以采用纯文本方式(UP词汇表),但是我们更擅长理词汇表),但是我们更擅长理解形象的元素和线条连接解形象的元素和线条连接部部分分领领域域模模型型9.1 示例示例16Software School of Xiamen University9.2 什么是领域模型什么是领域模型 领域模型领域模型(概念模型、领域对象模型和分析对象模(概念模型、领域对象模型和分析对象模型)是可视化字典,表示领域的重要抽象、领域词型)是可视化字典,表示领域的重要抽象、领域词汇和领域的内容信息汇和领域的内容信息 w 领域模型是对领域内的概念类或
13、现实世界中对象的领域模型是对领域内的概念类或现实世界中对象的可视化表示,而不是软件对象的表示。可视化表示,而不是软件对象的表示。w 领域模型用一套类图来表示,这些类没有操作。它领域模型用一套类图来表示,这些类没有操作。它可以显示:可以显示: 领域对象或者概念类领域对象或者概念类 概念类之间的关联概念类之间的关联 概念类的属性概念类的属性w 设计某些软件对象的灵感来源,几个制品的输入设计某些软件对象的灵感来源,几个制品的输入 17Software School of Xiamen University领域模型并非表示软件制品或类领域模型并非表示软件制品或类18Software School of
14、 Xiamen University什么是概念类什么是概念类什么是概念类?什么是概念类?w 概念类可以由符号,内涵和它的外延来表示概念类可以由符号,内涵和它的外延来表示符号符号代表概念类的词或者图像代表概念类的词或者图像内涵内涵概念类的定义概念类的定义外延外延概念类应用的例子集合概念类应用的例子集合19Software School of Xiamen UniversitySaledatetime概念符号“sale表示购买交易的事件,具有日期和时间”概念内涵sale-1sale-3sale-2sale-4概念外延20Software School of Xiamen University领域模
15、型和数据模型是一回事吗?领域模型和数据模型是一回事吗?w 领域模型不是数据模型领域模型不是数据模型w 不会排除需求中没有明确要求记录其相关信不会排除需求中没有明确要求记录其相关信息的类息的类w 不会排除没有属性的概念类。不会排除没有属性的概念类。 (包括纯行为角色而不是信息角色的概念类)(包括纯行为角色而不是信息角色的概念类)21Software School of Xiamen University9.3 动机动机: 为什么要创建领域模型为什么要创建领域模型w 它是一种可视化语言,传达了真实世界中的它是一种可视化语言,传达了真实世界中的概念或者该领域中的概念类概念或者该领域中的概念类w 在在
16、UP领域模型中,涉众对领域内重要概念的领域模型中,涉众对领域内重要概念的看法看法 影响设计者,降低差异影响设计者,降低差异w 降低与降低与OO建模之间的表示差异建模之间的表示差异领域层软件类的名称要源于领域模型中的名称,领域层软件类的名称要源于领域模型中的名称,减少我们的思维与软件模型之间的表示差异减少我们的思维与软件模型之间的表示差异22Software School of Xiamen University9.4 准则:如何创建领域模型准则:如何创建领域模型w以当前迭代中所要设计的需求为界:以当前迭代中所要设计的需求为界:寻找概念类寻找概念类将其绘制为将其绘制为UML类图中的类类图中的类添
17、加关联和属性添加关联和属性23Software School of Xiamen University9.5 准则:如何找到概念类准则:如何找到概念类w找到概念类的三条策略找到概念类的三条策略重用和修改现有的模型重用和修改现有的模型使用分类列表使用分类列表确定名词短语确定名词短语24Software School of Xiamen University寻找概念类寻找概念类重用和修改现有的模型重用和修改现有的模型w 库存、金融、卫生等很多领域都存在已经发布的、绘制精细的领域模型和数据模型w 以此为基础修改为领域模型25Software School of Xiamen University准则
18、:如何找到概念类准则:如何找到概念类w找到概念类的三条策略找到概念类的三条策略重用和修改现有的模型重用和修改现有的模型使用分类列表使用分类列表确定名词短语确定名词短语26Software School of Xiamen University寻找概念类寻找概念类使用分类列表使用分类列表w 通常制作概念类候选列表来开始创建领域模型27Software School of Xiamen University28Software School of Xiamen University准则:如何找到概念类准则:如何找到概念类w找到概念类的三条策略找到概念类的三条策略重用和修改现有的模型重用和修改现有的
19、模型使用分类列表使用分类列表确定名词短语确定名词短语29Software School of Xiamen University寻找概念类寻找概念类-通过识别名词短语寻找概念类通过识别名词短语寻找概念类w 语言分析语言分析 在对领域的文本描述中识别在对领域的文本描述中识别名词和名词短语名词和名词短语,将,将其作为候选的概念类或属性其作为候选的概念类或属性 注意力要放在下列方面注意力要放在下列方面: 业务对象业务对象 真实世界中的对象真实世界中的对象 事件事件使用这种方法必须小心使用这种方法必须小心不可能存在名词到类的映射机制,并且自然语言中的词不可能存在名词到类的映射机制,并且自然语言中的词语
20、具有二义性。语具有二义性。建议与概念分类列表技术一同使用。建议与概念分类列表技术一同使用。有些名词所指的概念类可能在本次迭代中忽略。有些名词所指的概念类可能在本次迭代中忽略。有些是概念类的属性。有些是概念类的属性。30Software School of Xiamen University31Software School of Xiamen University寻找概念类(示例:寻找概念类(示例:NextGen POS)StoreRegisterSaleItemCashPaymentSalesLineItemCashierCustomerProductCatalogProductDescri
21、ptionLedger备选概念类备选概念类32Software School of Xiamen University寻找概念类(示例:寻找概念类(示例:Monopoly)提倡绘制草图提倡绘制草图33Software School of Xiamen University9.7 准则:敏捷建模准则:敏捷建模绘制类图的草图绘制类图的草图w 让类框的底部和右侧呈开放状态让类框的底部和右侧呈开放状态34Software School of Xiamen University9.8 准则:敏捷建模准则:敏捷建模是否使用工具维护模型是否使用工具维护模型w 如果采用敏捷建模方法,创建领域模型的目的如果采用
22、敏捷建模方法,创建领域模型的目的是为了快速理解和沟通大致的关键概念。是为了快速理解和沟通大致的关键概念。w 没有理由去维护或更新这些模型,但也不意味没有理由去维护或更新这些模型,但也不意味着更新模型就是错误的。着更新模型就是错误的。w 建议用数码相机拍下来。建议用数码相机拍下来。35Software School of Xiamen University9.9 准则:准则:报表对象报表对象模型中是否要包括模型中是否要包括“票据票据”?以下是一些要考虑的因素:以下是一些要考虑的因素:一般来说,在领域模型中显示其它信息的报表并一般来说,在领域模型中显示其它信息的报表并没有意义,因为其所有信息都是源
23、于或者复制于没有意义,因为其所有信息都是源于或者复制于其它信息源的。其它信息源的。(也许它只是销售和支付数据的报表,是信息的重复)(也许它只是销售和支付数据的报表,是信息的重复)另外一方面,就业务规则而言,收据又有特殊的另外一方面,就业务规则而言,收据又有特殊的作用,在我们退货时,我们需要收据作为凭据。作用,在我们退货时,我们需要收据作为凭据。本次迭代中没有考虑退货,所以不应该包括票据。本次迭代中没有考虑退货,所以不应该包括票据。36Software School of Xiamen University9.10 准则:准则:像地图绘制者一样思考;使用领域术语像地图绘制者一样思考;使用领域术语
24、w 地图制作策略地图制作策略使用地域中现有名称使用地域中现有名称 如如“借书者借书者”排除无关或超出范围的特征排除无关或超出范围的特征 例如在例如在Monopoly领域模型中,没有使用卡片,领域模型中,没有使用卡片,所以在该迭代中不要使用所以在该迭代中不要使用Card。不要凭空增加事物不要凭空增加事物37Software School of Xiamen University9.11如何对非现实世界建模如何对非现实世界建模?有些软件系统的领域与自然领域几乎没有类似有些软件系统的领域与自然领域几乎没有类似之处。之处。需要高度抽象需要高度抽象认真汲取领域专家所使用的核心词汇和概念认真汲取领域专家所
25、使用的核心词汇和概念例如例如 电信电信: Message, Connection, Port, Dialog, Route, Protocol 中间件中间件: Service, Transaction38Software School of Xiamen University9.12 准则:属性与类的常见错误准则:属性与类的常见错误w 预防误将概念类表示为属性预防误将概念类表示为属性如果我们认为某概念类如果我们认为某概念类X不是现实世界中的数字不是现实世界中的数字或文本,那么或文本,那么X可能是概念类而不是属性。可能是概念类而不是属性。例如:例如:Store应该是应该是Sale的属性,还是单独
26、的概念类?的属性,还是单独的概念类?SaleStorephoneNumberSalestoreor. ?FlightAirportnameFlightdestinationor. ?如果有疑如果有疑问,可以问,可以将它列为将它列为概念类概念类商店不会商店不会被认为是被认为是数字或者数字或者文本文本例如:例如:Destination应该作为应该作为Flight的属性还是概念类:的属性还是概念类:Airport机场不会机场不会被看作是被看作是数字或者数字或者文本文本39Software School of Xiamen University9.13 准则:何时使用准则:何时使用“描述描述”类建模类
27、建模w 描述类:包含描述其它事物的信息描述类:包含描述其它事物的信息Itemdescriptionpriceserial numberitemIDProductSpecificationdescriptionpriceitemIDItemserial numberDescribesBetterWorse1*某个某个Item可可能拥有序列能拥有序列号,用于表号,用于表示其物理实示其物理实例例产品卖完,产品卖完,实例从计算实例从计算机存储器中机存储器中被删除,没被删除,没有办法回答有办法回答相关产品的相关产品的信息信息40Software School of Xiamen Universityw
28、准则:何时需要描述类准则:何时需要描述类需要有关商品或服务的描述,独立于任何商品需要有关商品或服务的描述,独立于任何商品或服务的现有实例。或服务的现有实例。删除其所描述事务(如删除其所描述事务(如Item)的实例后,导致)的实例后,导致信息丢失,而这些信息是需要维护的,但是被信息丢失,而这些信息是需要维护的,但是被错误地与所删除的事务关联起来。错误地与所删除的事务关联起来。减少冗余或重复信息。减少冗余或重复信息。w 描述性类用于描述描述性类用于描述 商品商品 产品产品 服务服务等的描述等的描述41Software School of Xiamen University示例:航空领域中的描述示例
29、:航空领域中的描述WorseFlightdatetimeFlightDescriptionnumberAirportnameDescribes-flights-toDescribed-byFlightdatenumbertimeAirportnameFlies-toBetter1*1*1*又如:移动电话的套餐,需要对套餐(一种服务计划,描述每分钟又如:移动电话的套餐,需要对套餐(一种服务计划,描述每分钟的速率,无线互联网内容、价格等等)的速率,无线互联网内容、价格等等) 加以描述,要独立于出售加以描述,要独立于出售的套餐的套餐42Software School of Xiamen Univer
30、sity应用应用UML表示概念类表示概念类PaymentamountSaledatetimePays-forPaymentamount: MoneygetBalance(): Money. . .Saledate: DatestartTime: TimegetTotal(): Money. . .Pays-forUP Domain ModelRaw UML class diagramnotation used in anessential modelvisualizing real-worldconcepts.UP Design ModelRaw UML class diagramnotati
31、on used in aspecification modelvisualizing softwarecomponents.111143Software School of Xiamen University降低表示鸿沟44Software School of Xiamen University9.14 关联关联w 关联是类(更精确地说,是这些类的实例)关联是类(更精确地说,是这些类的实例)之间的关系,表示有意义和值得关注的连接之间的关系,表示有意义和值得关注的连接SaleRegisterRecords-current11association在在UML中,关联被定义为中,关联被定义为“两个或
32、多个类元之间的语两个或多个类元之间的语义联系,涉及这些类元实例之间的连接义联系,涉及这些类元实例之间的连接45Software School of Xiamen University准则:准则:何时添加关联?何时添加关联?w 关联表示了需要持续一段时间的关系,根据语境,关联表示了需要持续一段时间的关系,根据语境,可能是几毫秒或数年。换言之,我们需要记录哪些可能是几毫秒或数年。换言之,我们需要记录哪些对象之间的关系?对象之间的关系?w 准则:准则:在领域模型中需要考虑如下关联在领域模型中需要考虑如下关联:如果存在需要保持如果存在需要保持一段时间一段时间的关系,将这种语义的关系,将这种语义表示为关
33、联(表示为关联(“需要记住需要记住”的关联)的关联)可以从常见关联列表中派生的关联可以从常见关联列表中派生的关联46Software School of Xiamen University举例:举例:需要记录:需要记录: 棋子在哪个方格上棋子在哪个方格上 某个游戏者使用的是哪个棋子某个游戏者使用的是哪个棋子 某个棋盘需要包括哪些方格某个棋盘需要包括哪些方格不用记录:不用记录: 指示移动到方格上的骰子点数指示移动到方格上的骰子点数 哪个收银员查询了哪个商品描述哪个收银员查询了哪个商品描述47Software School of Xiamen University准则:准则:避免加入大量关联避免加
34、入大量关联如果我们有如果我们有n 个类,将会有个类,将会有n(n-1)个关联个关联“视觉干扰视觉干扰”,使图变得混乱,使图变得混乱关注关注“需要记住需要记住”的关联的关联48Software School of Xiamen University观点:关联是否会在软件中实现?观点:关联是否会在软件中实现?w 关联不是数据流、数据库外键联系、实例变量或软关联不是数据流、数据库外键联系、实例变量或软件方案中的对象连接的语句;件方案中的对象连接的语句;w 关联声明的是针对现实领域从纯概念角度看有意义关联声明的是针对现实领域从纯概念角度看有意义的关系。的关系。w 添加关联是为了突出我们对重要关系的大致
35、理解,添加关联是为了突出我们对重要关系的大致理解,而而非记录对象或数据的结构非记录对象或数据的结构。49Software School of Xiamen University应用应用UML:关联表示法:关联表示法50Software School of Xiamen University准则:在准则:在UML中如何对关联命名中如何对关联命名w 以以“类名类名动词短语动词短语类名类名”的格式为关联命名,的格式为关联命名,其中的动词短语构成了其中的动词短语构成了可读的和意义可读的和意义的顺序。的顺序。w 诸如诸如”拥有拥有“ 或或”使用使用“这样的简单关联名称通这样的简单关联名称通常是拙劣的,因
36、为这种名称不会增强我们对领域的常是拙劣的,因为这种名称不会增强我们对领域的理解。理解。例如:例如:Sale Paid-by CashPayment 与与 Sale Uses CashPaymentPlayer Is-on Square 与与 Player Has Square关联名称应该使用首字母大写的形式:关联名称应该使用首字母大写的形式:Records-currentRecordsCurrent51Software School of Xiamen University应用应用UML:角色:角色w 关联的每一端称为一个角色,角色具有如下可选项:关联的每一端称为一个角色,角色具有如下可选项:
37、多重性,名称,导航多重性,名称,导航对象类对象类对象类对象类限定符限定符关联关联对象类对象类多重性多重性角色名:类角色名:类限定符限定符角色名:类角色名:类多重性多重性关联名关联名nameMultiplicity expressionnavigability52Software School of Xiamen University应用应用UML:多重性:多重性w 多重性多重性Multiplicity 定义了类定义了类A有多少实例可有多少实例可以和类以和类B的一个实例关联的一个实例关联ItemStoreStocks*multiplicity of the role153Software Sch
38、ool of Xiamen Universityzero or more;manyone or moreone to 40exactly 5TTTT*1.*1.405T3, 5, 8exactly 3, 5, or 8多重性的值多重性的值54Software School of Xiamen Universityw 多重性的值表示在多重性的值表示在特定的时刻特定的时刻(而不是在某个时(而不是在某个时间跨度内)有效关联的实例数量。间跨度内)有效关联的实例数量。 例如:某个时刻,一辆二手车只属于一个经销商例如:某个时刻,一辆二手车只属于一个经销商 多重性的值和建模者、软件开发者的关注角度有关多重性
39、的值和建模者、软件开发者的关注角度有关,因为它表达了将要或可能在软件中反映的领域约束,因为它表达了将要或可能在软件中反映的领域约束55Software School of Xiamen University应用应用UML:两个类之间的多重关联:两个类之间的多重关联FlightAirportFlies-toFlies-from*1156Software School of Xiamen University从从常常见见关关联联表表中中找找到到关关联联准则:准则:57Software School of Xiamen University9.15 示例:领域模型中的关联示例:领域模型中的关联案例研
40、究:案例研究: NextGen Posw 通过通过”需要记住需要记住“的标准和常见关联列表得到:的标准和常见关联列表得到:Register Records Sale与其他交易相关的交易:与其他交易相关的交易:Sale Paid-by Payment交易中的项目:交易中的项目:Sale Contains SalesLineItem交易(或项目)对应的产品:交易(或项目)对应的产品:SaleLineItem Records-sale-of Item58Software School of Xiamen UniversityPOS的部分领域模型的部分领域模型RegisterItemStoreSale
41、PaymentSalesLineItemCashierCustomerManagerProductCatalogProductSpecificationStocks*Houses1.*Used-by*Contains1.*Describes*Captured-onContained-in1.*Described-by*Records-sale-of0.1Started-byPaid-byInitiated-byLogs-completed* Records-sales-on111111.*111111111111Initiated-by1159Software School of Xiamen
42、 University60Software School of Xiamen University9.16 属性属性w 属性是对象的逻辑数据值属性是对象的逻辑数据值w 准则:何时展示属性准则:何时展示属性当需求(例如用例)建议或暗示需要记住信息时,当需求(例如用例)建议或暗示需要记住信息时,引入属性引入属性w 例如:在例如:在”处理销售处理销售“用例中票据通常含有用例中票据通常含有日期和时间、店名和地址以及收银员日期和时间、店名和地址以及收银员ID等等等等Sale需要需要dataTime属性属性Store需要需要name和和address属性属性Cashier需要需要ID属性属性61Softw
43、are School of Xiamen University应用应用UML:属性表示法:属性表示法w 完整语法: visibility name: type multiplicity default property-stringSaledatestartTime : TimeattributesSale- dateTime : Date- / total : MoneyPrivate visibility attributesMath+ pi : Real = 3.14 readOnlyPublic visibility readonly attribute with initializa
44、tionPersonfirstNamemiddleName : 0.1lastNameOptional value62Software School of Xiamen University导出属性导出属性导出属性:数量可以从关联的多重性的实际值计算出来导出属性:数量可以从关联的多重性的实际值计算出来63Software School of Xiamen University准则:什么样的属性类型是适当的准则:什么样的属性类型是适当的 在领域模型中,建议属性主要为在领域模型中,建议属性主要为数据类型数据类型,常,常见的数据类型包括:见的数据类型包括:Boolean、Date(或或DateTim
45、e)、Number、Character、String(Text)和和Time其他常见类型有:其他常见类型有:Address、Color、Geometrics(Point、Rectangle)、)、PhoneNumber、Social Security Number、University Product Code、SKU、ZIP 或者邮政编码、枚举类型。或者邮政编码、枚举类型。不应该是复杂的领域概念,例如不应该是复杂的领域概念,例如Sale或或Airport64Software School of Xiamen UniversityCashiernamecurrentRegisterCashie
46、rnameRegisternumberUsesWorseBetternot a simple attribute11FlightFlightdestinationWorseBetterFlies-toAirport11destination is a complexconceptCashier的的currentRegister属性是不合适的,属性是不合适的,Register不不是简单数据类型,表达是简单数据类型,表达Register的最有效方法是使用关的最有效方法是使用关联,而不是属性联,而不是属性准则:什么样的属性类型是适当的准则:什么样的属性类型是适当的65Software School
47、of Xiamen University数据类型数据类型w UML术语中的数据类型指的是一组值,而这组值的标识本身不术语中的数据类型指的是一组值,而这组值的标识本身不具有任何含义具有任何含义w 例如通常对以下内容进行区分没有意义:例如通常对以下内容进行区分没有意义:Integer 的单一实例,的单一实例,5String 的单一实例,的单一实例,”Car“Date 的单一实例,的单一实例,”Nov。13,1990”相反,比较相反,比较Person的名字实例是有意义的,即使具有相同的属性的名字实例是有意义的,即使具有相同的属性值,也可以通过比较其存储地址值,也可以通过比较其存储地址观点:领域模型中
48、建议属性是数据模型,不意味着代码中的属性观点:领域模型中建议属性是数据模型,不意味着代码中的属性只能是简单的只能是简单的基本数据类型。基本数据类型。66Software School of Xiamen University准则:何时定义新的数据类型类准则:何时定义新的数据类型类w 在下述情况下,在领域模型里,把最初被认为是数字在下述情况下,在领域模型里,把最初被认为是数字或字符串的数据类型表示为新的数据类型类:或字符串的数据类型表示为新的数据类型类:由不同的小节组成(如电话号码、人名、地址)由不同的小节组成(如电话号码、人名、地址)具有与之相关的操作,例如解析或校验(如社会安具有与之相关的操
49、作,例如解析或校验(如社会安全号)全号)具有其他属性(如促销价格有开始日期和结束日期)具有其他属性(如促销价格有开始日期和结束日期)单位的数量(如支付总额具有货币单位)单位的数量(如支付总额具有货币单位)具有以上性质的一个或多个类型的抽象(如商品标具有以上性质的一个或多个类型的抽象(如商品标识符)识符)67Software School of Xiamen University准则:何时定义新的数据类型类准则:何时定义新的数据类型类对对POS领域模型的属性应用这些准则,会产生以下分析:领域模型的属性应用这些准则,会产生以下分析:w 商品标识符商品标识符 为数据类型为数据类型ItemID类类w
50、price和和amount属性的数据类型应该是属性的数据类型应该是Money类因为类因为它们是货币单位的数量。它们是货币单位的数量。w address属性的数据类型应该是属性的数据类型应该是Address类,因为其类,因为其具有不同的小节。具有不同的小节。68Software School of Xiamen University应用应用UML:在何处描述这些数据类型类:在何处描述这些数据类型类OKOKItemIDProductSpecificationProductSpecificationid : ItemID1AddressStoreStoreaddress : Address111领域
51、模型是一种沟通工具,确定采用哪种解决方式领域模型是一种沟通工具,确定采用哪种解决方式都要考虑到这一点都要考虑到这一点69Software School of Xiamen University准则:任何属性都不表示外键准则:任何属性都不表示外键领域模型里的属性不应该用于表示概念类的关系。领域模型里的属性不应该用于表示概念类的关系。Cashier中的中的currentRegisterNumber目的是将目的是将Cashier和和Register联系起来,但是,联系起来,但是,应该使用关联而不是属性来将类型应该使用关联而不是属性来将类型关联关联70Software School of Xiamen
52、 University准则:对数量和单位建模准则:对数量和单位建模w 大部分用数字表示的数量不能表示为纯数字大部分用数字表示的数量不能表示为纯数字,如如:价格是价格是13w 一般情况下,可以把数量表示为单独的一般情况下,可以把数量表示为单独的Quantity类,并类,并且关联到且关联到Unit类。通常还可以对类。通常还可以对Quantity加以规格说明。加以规格说明。71Software School of Xiamen University9.17 示例:领域模型中的属性示例:领域模型中的属性 72Software School of Xiamen University案例研究:案例研究:M
53、onopoly73Software School of Xiamen University9.18 结论:领域建模是否正确结论:领域建模是否正确w 没有唯一正确的领域模型没有唯一正确的领域模型w 有效的领域模型捕获了当前需求情形下的本有效的领域模型捕获了当前需求情形下的本质抽象和理解该领域所需要的信息,并且可质抽象和理解该领域所需要的信息,并且可以有助于人们理解领域的概念、术语和关系以有助于人们理解领域的概念、术语和关系74Software School of Xiamen University9.19 过程:迭代和进化式领域建模过程:迭代和进化式领域建模准则:避免瀑布思维倾向,为完成详尽或准
54、则:避免瀑布思维倾向,为完成详尽或“正确正确”的的领域模型而进行大量的建模工作,这些方式都应避领域模型而进行大量的建模工作,这些方式都应避免,这种过量的建模工作反而会导致分析停滞,这免,这种过量的建模工作反而会导致分析停滞,这种投入几乎不会有什么回报。种投入几乎不会有什么回报。每次迭代的领域建模时间不超过几个小时每次迭代的领域建模时间不超过几个小时w 初始:初始: 不会发起领域模型不会发起领域模型w 细化:细化: 主要在细化阶段的迭代中创建,这时最需要理解那些重主要在细化阶段的迭代中创建,这时最需要理解那些重要概念,并且会通过设计工作将其映射为软件类要概念,并且会通过设计工作将其映射为软件类7
55、5Software School of Xiamen University第第 10 章章 系统顺序图系统顺序图76Software School of Xiamen University10.1 示例:示例:NextGen SSD通过阅读用通过阅读用例文本而总例文本而总结出来结出来SSD由用例由用例导出,若用导出,若用例很清楚,例很清楚,可以不用画可以不用画SSD,可以,可以以用例名命以用例名命名名SSD77Software School of Xiamen University处理销售场景的处理销售场景的SSD78Software School of Xiamen University10
56、.2 什么是系统顺序图什么是系统顺序图w 系统顺序图(系统顺序图(SSD)是为阐述与所讨论系统相关的是为阐述与所讨论系统相关的输入和输出输入和输出事件而事件而快速、简单地创建的制品。快速、简单地创建的制品。它展示了对一个它展示了对一个特定的用例,直接与系统交互的特定的用例,直接与系统交互的外部参与者、系统(作为黑盒)以及由参与者发外部参与者、系统(作为黑盒)以及由参与者发起的系统事件起的系统事件。准则:应为每个用例的主成功场景,以及频繁发准则:应为每个用例的主成功场景,以及频繁发生的或者复杂的替代场景绘制生的或者复杂的替代场景绘制SSD79Software School of Xiamen U
57、niversity10.3 动机:为什么绘制动机:为什么绘制SSD软件系统要对以下三种事件进行响应:软件系统要对以下三种事件进行响应:w来自于参与者(人或计算机)的外部事件来自于参与者(人或计算机)的外部事件w时间事件时间事件1. 错误或异常(通常源于外部)错误或异常(通常源于外部)在对软件应用将如何工作进行详细设计之前,最在对软件应用将如何工作进行详细设计之前,最好将其行为视为好将其行为视为“黑盒黑盒”来调查和定义。来调查和定义。系统行为描述的是系统做什么,而无需解释如何系统行为描述的是系统做什么,而无需解释如何做,这种描述的一部分就是系统顺序图。做,这种描述的一部分就是系统顺序图。80So
58、ftware School of Xiamen University10.4 应用应用UML:顺序图:顺序图UML没有定义所谓的没有定义所谓的“系统系统”顺序图,而只是顺序图,而只是定义了定义了“顺序图顺序图”。这一限定强调将系统。这一限定强调将系统的应用作为黑盒。之后,我们会在另一个的应用作为黑盒。之后,我们会在另一个语境下使用顺序图,阐述完成工作的交互语境下使用顺序图,阐述完成工作的交互软件对象的设计。软件对象的设计。81Software School of Xiamen University10.5 SSD和用例之间的关系和用例之间的关系SSD由用例导出,表示了一个场景;通常不在用例中显
59、示用例文由用例导出,表示了一个场景;通常不在用例中显示用例文本;若用例很清楚,可以不用画本;若用例很清楚,可以不用画SSD,可以以用例名命名,可以以用例名命名SSD82Software School of Xiamen University10.6 如何为系统事件和操作命名如何为系统事件和操作命名e n te rIte m (ite m ID , q u a n tity )sca n (ite m ID , q u a n tity ): C a sh ie rw o rse n a m eb e tte r n a m e:S yste mw 应该在意图的抽象级别而非物理的输入设备级别来应
60、该在意图的抽象级别而非物理的输入设备级别来表达表达w 提高清晰度,以动词开头(增加提高清晰度,以动词开头(增加,输入,输入,结,结束束,产生,产生)捕获操捕获操作意图作意图又保留又保留抽象性抽象性83Software School of Xiamen University10.7 如何为涉及其他外部系统的如何为涉及其他外部系统的SSD建模建模w SSD也同样可以用来阐述系统之间的协作,例如也同样可以用来阐述系统之间的协作,例如NextGen POS和外部信用卡支付授权系统之间的和外部信用卡支付授权系统之间的协助。协助。84Software School of Xiamen University
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 在日益动荡的世界中绘制全球能源趋势图 2026年《世界能源统计年鉴》第75版解读
- 2026年江西省井冈山市高二历史下册期末考试真题带答案(培优B卷)
- 初中历史教资面试文化专题及答案
- 2026下半年高中语文教资面试散文创作题库
- 2026年草编工职业技能等级认定(四级)操作技能试题
- 2026年中小学教师资格考试(高级中学)语文学科知识与教学能力历年真题
- 2026年折纸工艺师职业技能等级认定(五级)操作技能模拟试题
- 2026年卫生专业技术资格考试(康复医学专业)相关专业知识模拟试题
- 2026年拓印工职业技能等级认定(四级)理论知识高频考点试题
- 2026年广东省开平市高二历史上册期末考试自测卷(基础题)附答案
- 中证信用增进股份有限公司招聘笔试题库2026
- 2026年高校教师资格证考试题库附参考答案(满分必刷)
- 2026-2030年中国天文望远镜行业市场发展趋势与前景展望战略分析报告
- 2026-2027学年川教版(2024)小学信息技术四年级上册教学计划及进度表(第一学期)
- 混凝土工程中常见裂缝成因及预防措施培训
- 2026年秋苏科版(新版)初中信息技术七年级上册(全册)教学设计(附目录p100)
- 2027届新高考语文精准冲刺复习作文审题立意指导及范文
- 《无人机维护技术》全套教学课件
- 学堂在线 批判性思维-方法和实践 章节测试答案
- 1.2.2-全称量词与存在量词教学设计
- CNG加气机泄漏现场应急预案
评论
0/150
提交评论