• 1. OOA/D与UMLPart02
  • 2. Agenda软件架构基础与架构模式 类模型基础(续) 领域建模 需求分析基础知识 用例建模 中程在线信息产业培训网
  • 3. Agenda软件架构基础与架构模式 类模型基础(续) 领域建模 需求分析基础知识 用例建模 中程在线信息产业培训网
  • 4. 讨论你心目中的软件架构是什么意思? 软件架构与框架之间有什么区别? 软件架构的作用是什么? 中程在线信息产业培训网
  • 5. 什么是软件架构典型误用:架构更多被作为一种销售工具而非技术蓝图来使用 以架构为中心的开发的目标:高质量、灵活的软件 软件架构的流派: > Zachman框架:IBM,non-OO,写作要素(谁、什么、何时、为什么、在哪里、如何)+构造者(计划者、业主、营造商、设计者和转包商) > 开放分布式处理:ISO/ITU制定,企业、信息、计算、工程和技术5个视点 > 领域分析:支持软件复用的系统的管理过程,通用功能作为水平框架和可复用软件架构的基础 > Rational公司的4+1视图:逻辑、实现、进程、部署、用例 > 学术派软件架构 > 厂商派软件架构:Netscape ONE、Sun EJB、MS BackOffice 中程在线信息产业培训网
  • 6. ODP的5个视点企业视点:包含了业务对象和政策的模型 信息视点:包含了用信息图式对对象的定义 计算视点:包括对大粒度对象封装(包括子系统接口及其行为)的定义 工程视点:系统分布式特性 技术视点:技术实现 中程在线信息产业培训网
  • 7. 软件的逻辑架构软件逻辑架构是软件类的宏观组织结构,它将软件类组织为包(或命名空间)、子系统和层等。称之为逻辑架构,是因为并未决定如何在不同的操作系统进程或网络中物理的计算机上对这些元素进行部署。 最常见的逻辑架构模式: > 层 > MVC > 管道和过滤器 > 代理者 > 微内核 > 映像 中程在线信息产业培训网
  • 8. 层模式例子:ISO 7层模型 语境:适用于一个需要 分解的大系统 解决方案:从高层看解 决方案是非常简单的, 将系统分成适当的层次, 按适当次序放置。从最 低抽象层开始,这是系 统的基础,以梯状把抽 象层J放在J-1层的顶部, 直到顶层功能 中程在线信息产业培训网
  • 9. 层模式的结构 中程在线信息产业培训网
  • 10. 实现策略为把任务分组成层而定义抽象准则。这个准则往往是来自平台的概念上的间隔。 根据抽象准则定义抽象层数。 给每个层命名并指定它们的任务。 指定服务,应把较多的服务放在高层。 细化分层,也就是重复前述4个步骤。 为每个层指定一个接口 构建独立层 指定相邻层间的通信 分离邻接层 中程在线信息产业培训网
  • 11. 优缺点优点: > 复用性更高 > 提供了标准化支持 > 局部依赖性 > 可替换性 缺点: > 更改行为的重叠 > 降低了效率 > 增加了不必要的工作 > 难以认可层的正确粒度 中程在线信息产业培训网
  • 12. 讨论Layer与Tier的区别与联系? 在你的项目中如何应用层模式的? 中程在线信息产业培训网
  • 13. MVC模式例子:采用比例表示的用于政治选举的一个简单信息系统,它提供了一个输入数据的电子数据表和表示当前结果的几种图表。用户可以通过图形接口与系统交互。所有信息显示必须立即反映出选举数据的变化 中程在线信息产业培训网
  • 14. MVC模式语境:具有灵活人-机接口的交互式应用程序 问题:用户接口尤其容易改变需求,不同的用户对用户接口提出了相互冲突的要求 解决方案: > 将应用程序分为处理、输出和输入三个区域 > 模型组件封装的内核数据和功能,独立于输入输出 > 视图组件向用户显示信息,从模型获取数据,一个模型可以有多个视图 > 每个视图都有一个相关的控制器组件,负责接受输入,并将其翻译成模型或视图的服务器请求 中程在线信息产业培训网
  • 15. 用CRC表述MVC模式 中程在线信息产业培训网
  • 16. 实现策略人机交互从核心功能中分离出来 实现变更-传播机制 设计并实现视图 设计并实现控制器 设计并实现视图-控制器关系 实现MVC的准备 创建动态视图 层次化视图和控制器的基础结构 进一步去除系统依赖性 中程在线信息产业培训网
  • 17. 优缺点优点: > 同一模型的多视图 > 视图同步化 > “可插入”的视图和控制器 > ”式样和感觉”的可交替性 > 可以用于框架的实现 缺点: > 增加了复杂性 > 潜在过多的更新因素 > 视图和控制器之间的紧密连接 > 视图和控制器与模型的紧密耦合 > 视图中数据访问的低效率 > 移植时对视图和控制器更改是不可避免的 中程在线信息产业培训网
  • 18. 讨论MVC模式与层模式有什么区别和联系? 在你的项目中如何MVC模式的? 中程在线信息产业培训网
  • 19. 管道和过滤器模式例子:编译过程 语境:适用于处理数据流 解决方案:把系统任务分成几 个序贯的处理步骤,这些步骤 采用通过系统的数据流连接, 一个步骤的输出就是下一个步 骤的输入 中程在线信息产业培训网
  • 20. 管道和过滤器模式的结构 中程在线信息产业培训网
  • 21. 管道和过滤器模式的应用实例 中程在线信息产业培训网
  • 22. 实现策略把系统任务分成一系列处理阶段 定义沿每个管道传输的数据格式 决定如何实现每个管道连接 设计和实现过滤器 设计出错处理 建立处理流水线 中程在线信息产业培训网
  • 23. 讨论管道和过滤器模式有什么应用方面? 中程在线信息产业培训网
  • 24. 黑板模式黑板架构模式对于无确定性求解策略的问题比较有用。在该模式中有几个专用子系统收集其知识以建立一个可能的部分解或近似解。 语境:是针对一个不成熟的领域,其中没有相近的已知方法或可行的方法。 解决方案:黑板模式背后的思想是合作工作于一个公共数据结构上的独立程序集。每个程序专用用来解决整个任务中的一个特定部分,所有的程序一起工作以解决问题。这些专用程序彼此独立,彼此不相互调用,它们的活动也没有预先确定顺序。 中程在线信息产业培训网
  • 25. 代理者模式思想:代理者(Broker)模式可以用于构建带有隔离组件的分布式软件系统,该软件通过远程服务调用进行交互。代理者组件负责协调通信,诸如转发请求,以及传送结果和异常。 例子:一个城市信息系统(CIS),它计划运行于广域网上。网络上有些计算机负责一项或多项支持有关事件、餐厅、宾馆、历史纪念馆或公共运输信息的服务。计算机终端与网络相连接。城市的游客可以在计算机终端上通过使用万维网浏览器检索他们感兴趣的信息。这种前端软件支持从适当的服务器以在线方式检索信息并显示在屏幕上。数据分布在网络上,并不是都在终端上维护 中程在线信息产业培训网
  • 26. 代理者模式语境:带有独立协作组件的分布式的并可能是异构的系统 解决方案:引入代理者组件可以较好地做到客户机和服务器的隔离。服务器向代理者注册自己并使用其服务通过方法接口能为客户机所使用。客户机通过代理者发送请求访问服务器功能。代理者的任务包括定位合适的服务器,将请求转发到服务器并向客户机回送结果和异常。通过使用代理者模式,应用程序能够简单地通过向合适的对象发出消息调用访问分布式服务,而不是把重点放在低级进程间通信 中程在线信息产业培训网
  • 27. 代理者模式的结构 中程在线信息产业培训网
  • 28. 微内核模式思想:微内核架构模式应用于必须能够适应变更系统需求的软件系统。这种模式把最小功能核心同扩展功能和特定客户部分分离开来 语境:微内核模式使用类似的编程接口的几个应用程序的开发建立在相同核功能上 常见应用:操作系统、图形用户界面等,要能够适应宽谱的相似标准的技术 解决方案:将应用程序平台上的基本服务封装到一个微内核组件之中。该微内核包含使独立进程中运行的其他组件之间相互通信的功能。它也负责维护诸如文件或进程那样的系统范围内的资源。此外,它提供了使其他的组件存取其功能的接口 中程在线信息产业培训网
  • 29. 映像模式思想:一个应用程序可分成两部分。一个元层次提供所选系统属性的相关信息并使软件含自述信息 语境:用来建立一个支持它们自己对先验信息修改的系统 解决方案: > 使软件系统自明,并且可以适应和更改的系统的结构和行为。这导致一个架构分成两个主要部分:一个元层次和一个基本层次 > 元层次提供了一个软件的自表示来给出软件自身结构和行为的知识,元层次由所谓的元对象组成 > 基本层次定义了应用程序逻辑,其实现使用元对象来保存这些可能要更改的方面的独立性 中程在线信息产业培训网
  • 30. 讨论架构对于软件开发有什么意义? 架构模式处于什么层面上? 中程在线信息产业培训网
  • 31. Agenda软件架构基础与架构模式 类模型基础(续)—如何绘制 领域建模 用例模型基础 需求分析基础知识 用例建模 中程在线信息产业培训网
  • 32. 需求概述小王是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计 中程在线信息产业培训网
  • 33. 发现类的策略—名词动词法“名词动词法” 是“寻找类”最基本、也是出现得最早的方法 名词/动启法是非常主观的,它存在着很多不足,但它简单、明了,所以到现在还是一个有价值的方法 主要特性: > 十分简单,上手容易,易于使用; > 完全基于自然语言,而且分析全面,可以为系统分析员的工作奠定一个良好的基础。 主要缺点: > 基于主观因素较大,不容易产生客观的结果; > 对大项目,工作量太大,容易产生分析崩溃。 中程在线信息产业培训网
  • 34. 适用场景采用面向对象分析与设计技术的软件开发项目 它是在需求捕获之后,开始建立概念模型之时,需要寻找最基础的类时 是一个功能很简单、周期很短的技术,也是一个过渡技术,不应过渡地沉溺,否则容易产生分析崩溃 中程在线信息产业培训网
  • 35. 选取规则名词与名词短语将作为对象(从对象中抽取类)与属性的候选项; 动词与动词短语将作为类的操作与关联的候选项; 所有格短语表明名词应该是属性而不是对象 中程在线信息产业培训网
  • 36. 应用过程第一步,通读相关的资料(包括问题描述、需求描述、问题领域的专业知识文档与资料等),从描述上找出所有的名词、名词短语以及动词和动词短语,其中名词和名词短语将作为类的“备选项”。 接下来,将名词和名词短语分为三类:明显的类、明显无关、待确定的三类,然后逐渐根据其它的一些因素来进行判断,确定候选类。 最后,在类的基础上添加属性(其它的一些名词和名词短语)、关联(其中的一些动词和动词短语)以及操作(另外的一些动词和动词短语)。 中程在线信息产业培训网
  • 37. 应用技巧过度使用,从而陷于语法检查之中。这种分析是很耗费时间的,,花费于此的时间通常应该在几个小时之内,超过半天以上都是不合适的,因为那样容易引发分析崩溃。 过早地争论类是否合适。许多人喜欢在例举这些名词之时,就马上开始争论是否是合适的备选类,但这样容易太早地进行无谓的、甚至是没有结果的争论,而这些应该随着分析与设计的深入来完成的。 只采用名词/动词法。这也是十分常见的错误,名词动词法只是提供了一个良好的基础,光光靠该技术是无法完成所有的工作的,因此还应该结合Robustness分析、CRC卡、用例分析等方法不断完善类模型。 中程在线信息产业培训网
  • 38. 发现类小王是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计 中程在线信息产业培训网
  • 39. 筛选候选类“小王”、“人”、“家里”很明显是系统外的概念,无须对其建模; 而“个人图书管理系统”、“系统”指的就是将要开发的系统,即系统本身,也无须对其进行建模; 很明显“书籍”是一个很重要的类,而“书名”、“作者”、“类别”、“出版社”、“书号”则都是用来描述书籍的基本信息的,因此应该作为“书籍”类的属性处理,而“规则”是指书号的生成规则,而书号则是书籍的一个属性,因此“规则”可以作为编写“书籍”类构造函数的指南。 “基本信息”则是书名、作者、类别等描述书籍的基本信息统称,“关键字”则是代表其中之一,因此无需对其建模; “功能”、“新书籍”、“信息”、“记录”都是在描述需求时使用到的一些相关词语,并不是问题域的本质,因此先可以将其淘汰掉; 中程在线信息产业培训网
  • 40. 筛选候选类“计算机类”、“非计算机类”是该系统中图书的两大分类,因此应该对其建模,并改名为“计算机类书籍”和“非计算机类书籍”,以减少歧义; “外借情况”则是用来表示一次借阅行为,应该成为一个候选类,多个外借情况将组成“外借情况列表”,而外借情况中一个很重要的角色是“朋友”—借阅主体。虽然到本系统中并不需要建立“朋友”的资料库,但考虑到可能会需要列出某个朋友的借阅情况,因此还是将其列为候选类。为了能够更好地表述,将“外借情况”改名为“借阅记录”,而将“外借情况列表”改名为“借阅记录列表”; “购买金额”、“册数”都是统计的结果,都是一个数字,因此不用将其建模,而“特定时限”则是统计的范围,也无需将其建模;不过从这里的分析中,我们可以发现,在该需求描述中隐藏着一个关键类—书籍列表,也就是执行统计的主体。 中程在线信息产业培训网
  • 41. 得到候选类书籍 计算机类书籍 非计算机类书籍 借阅记录 借阅记录列表 书籍列表 中程在线信息产业培训网
  • 42. 关联分析/建模,多重性分析/再建模 中程在线信息产业培训网
  • 43. 职责分析书籍类:从需求描述中,可找到书名、类别、作者、出版社;同时从统计的需要中,可得知“定价”也是一个关键的成员变量。 书籍列表类:书籍列表就是全部 的藏书列表,其主要的成员方法 是新增、修改、查询(按关键字 查询)、统计(按特定时限统计 册数与金额)。 借阅记录类:借阅人(朋友)、 借阅时间。 借阅记录列表类:主要职责就是 添加记录(借出)、删除记录 (归还)以及打印借阅记录 中程在线信息产业培训网
  • 44. 限定与修改导航性分析:Book与BookList之间、BorrowRecord和BorrowList之间是组合关系均无需添加方向描述,而Book与BorrowRecord之间则是双方关联,也无需添加 约束:Book对象创建后就不能够 被删除只能被修改,因此在Book 类边上加上用自由文本写的约束 ; 一本书要么属于计算机类,要么 属于非计算机类,因此在ItBook 和OtherBook间加了 “{Xor}”约束 限定符:一本书只有一册,因此 只能够被借一次,对于一本Book 而言只能有一个RecordId与其对应 中程在线信息产业培训网
  • 45. Agenda软件架构基础与架构模式 类模型基础(续)—如何绘制 领域建模 需求分析基础知识 用例建模 中程在线信息产业培训网
  • 46. 3-1 域建模概述 中程在线信息产业培训网
  • 47. 概述软件复用是当前软件工程研究的重要课题。如何正确地识别和组织可复用信息,使得它们在软件开发中能够被复用,并且易于被复用是一个重要的问题,也是软件复用的一个难点。 领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它覆盖了建立可复用的软件构件的所有活动。 中程在线信息产业培训网
  • 48. 关于域建模“问题域”是指一个包含现实世界事物与概念的领域,这些事物和概念与所设计的系统将要解决的问题有关; 域建模的任务:找到那些事物与概念的“对象”,也就是“类”。 域建模包含来自数据需求的外部工作,它建立与计划系统有关的问题域的静态模型; 它采用的是一种“自内向外”的方法,而“用例建模”则是采用一种“自外向内”的方法,我们可并行执行这些工作; 域模型可以作为一个“术语表”。 中程在线信息产业培训网
  • 49. 域建模要素建立系统的静态模型时,首先需要确定合适的类,它们表示问题域中的实际抽象。如果这个工作完成得很好,不但为构建系统打下了坚实的基础,还将使最终设计和创建的系统有很好的重用前景。 中程在线信息产业培训网
  • 50. 域建模步骤发现类(问题领域的类); 建立“泛化/继承”关系; 建立其它关联关系; 寻找“关联类”; 从旧文档中挖掘问题领域相关类; 绘制分析层类图; 继续重复与细化。 中程在线信息产业培训网
  • 51. 发现类类:对一组具有相同属性、共同行为、共同关系和共同语义的对象的描述; 类从哪来?:问题描述、需求描述、问题领域的专业知识; 寻找的方法:名词/动词法 > 名词与名词短语成为对象与属性; > 动词与动词短语成为操作与关联; > 所有格短语表明名词应该是属性而不是对象。 注意:这种分析所花费的时间不要太长,否则将带来分析崩溃! 中程在线信息产业培训网
  • 52. 实例 这是一个“碟片出租店”使用的系统,它将用于计算 每一位顾客的消费金额并打印报表。操作者告诉程序: 顾客租了哪些影片、租期多长,程序便根据租凭时间和 影片类型算出费用。 影片分三类:普通片、儿童片和新片。除了计算费 用,还要为常客计算机点数;点数会随着“租片种类是 否为新片”而有所不同。 中程在线信息产业培训网
  • 53. 实例 这是一个“碟片出租店”使用的程序,它将用于计算 每一位顾客的消费金额并打印报表。操作者告诉程序: 顾客租了哪些影片、租期多长,程序便根据租期和影片 类型算出其消费金额。 影片分三类:普通片、儿童片和新片。除了计算消 费金额,还要为常客计算累积点数;累积点数会随着“租 片种类是否为新片”而有所不同。 中程在线信息产业培训网
  • 54. 实例 这是一个“碟片出租店”使 用的程序,它将用于计算每一 位顾客的消费金额并打印报表。 操作者告诉程序:顾客租了哪 些影片、租期多长,程序便根 据租期和影片类型算出其消费 金额。 影片分三类:普通片、儿 童片和新片。除了计算消费金 额,还要为常客计算累积点数; 累积点数会随着“租片种类是否 为新片”而有所不同。碟片出租店 程序 消费金额 报表 操作者 顾客 影片 租期 影片类型 普通片 儿童片 新片 累积点数 中程在线信息产业培训网
  • 55. 实例碟片出租店 程序 消费金额 报表 操作者 顾客 影片 租期 影片类型 普通片 儿童片 新片 累积点数在系统外系统本身应该是每次“交易”属性类!在系统外在系统外,但需记录,类!类!属性影片的属性类!类!类!顾客的属性报表顾客影片普通片儿童片交易新片 中程在线信息产业培训网
  • 56. 建立“泛化/继承”关系泛化与继承是最常见的类之间的关系,它们互为反关系,即:“父类”是“子类”的泛化,“子类”继承了“父类”; 子类继承了父类中定义的属性和方法,以及那些涉及父类的关联; 子类可以使用父类的特征,或者为了更具体的目的,它可以修改这些特征。 中程在线信息产业培训网
  • 57. 实例 中程在线信息产业培训网
  • 58. 建立其他关联关系“关联”是指两个类之间的静态关系; 关联显示了类间的相关性,但它不是动作(即便是动词短语); 关联性中,有一对一关系、一对多关系,这称为“关联”的多重性。 注意:不要太早处理关联的多重性。 中程在线信息产业培训网
  • 59. 实例 中程在线信息产业培训网
  • 60. 关联关系:组合/聚合DepartmentCompanyFrameWindow组合关系聚合关系在详细设计之前,无须担心聚合与组合 中程在线信息产业培训网
  • 61. 寻找关联类CompanyPersonJobdescription dateHired salary 中程在线信息产业培训网
  • 62. 从旧文档中挖掘类例如:如果正在重新设计一个使用关系型数据库的旧系统,该数据库中的表将成为挖掘与问题领域相关的类的好资源。 中程在线信息产业培训网
  • 63. 绘制分析层类图已经介绍了分析层上构成类图的每个元素以及用来表现这些元素的不同符号; 前期工作成果:找到类、建立关联; 现在是把各个部分放置在一张图里的时候了; 您设计的图应该包括在这一阶段中任何已经决定的东西,在该过程的后续设计与实现层中,分析层类图将用作扩展类的基础。 中程在线信息产业培训网
  • 64. 实例 中程在线信息产业培训网
  • 65. 继续重复与细化“重复与细化”让你不会忘记用户的需求与愿望是项目小组存在的理由; 前期分析投入的时间越多,系统“完成”后花费在修补上的时间可能会越少; 我们的目标是建立一张类名词汇表,在用例文本中作为正确的名词集; 为了创建初始域模型,应该建立一个时间预算,在Robustness分析和整个项目期间,应对分析层类作必要调整; 在这阶段,无论所绘的图多么详细,也仍然是对象模型的草图 中程在线信息产业培训网
  • 66. 就对象关系进行决策—总结绘制类图时,也可以就泛化关系(类之间的“……类型(kindof)”或“是一种(is a)”关系)做一些初步决策。 如果在该阶段,您需要并且也可以得心应手地完成这项工作,将可以归纳出多层子类。 请考虑在真实世界中正确的“……类型”陈述。在域建模阶段,也可以就类间的聚集(“……部分(part of)”或“有(has)”关系)进行决策。 最后,将得到一个实体一关系图(ERD),即域模型,其中列出了关联(类之问的静态关系),这些关联是对问题空间的正确陈述,且不因时间而改变,也就是说是静态的。该模型是静态类模型的基础。 建议您规定用于建立初步域模型的时间。无论如何,您都无法使其十全十美,因此应快速建立域模型,并期望在以后的工作中将其逐步完善。应根据健壮性分析和整个项目完成中发现的情况,对分析级类模型做必要的调整。 中程在线信息产业培训网
  • 67. 3-2 域建模的10大错误 中程在线信息产业培训网
  • 68. 最常见的域建模错误 10立即给关联指定多重度(multiplicity),确保每个关联都有明确的多重度。 类图上的有些关联表示的是一对一的关系,而其他关联表示的是一对多的关系。这两种关系都被称为多重度。然而,不应在域建模期间就确定多重度——这将占用大量的时间,是导致分析瘫痪的主要原因之一 中程在线信息产业培训网
  • 69. 最常见的域建模错误 9对名词和动词做过度的分析,而背离初衷。 将很可能处于过低的抽象层次上,同时有神经崩溃的危险。可以使用一些技巧来发现对象,但绝不要沉溺其中。 中程在线信息产业培训网
  • 70. 最常见的域建模错误 8不对用例和时序图进行研究,就将操作分配给类。 我们提倡在域建模过程中使用要求最低的方式。事实上,我们是想告诉您,不应在域建模期间将任何操作分配给类。 因为,在项目的该阶段还没有足够的信息,无法就操作做出正确的决策。进入交互建模后,您将拥有足够的信息(至少我们希望如此)。在确保已满足用户需求之前,对代码进行优化以提高重用性。 中程在线信息产业培训网
  • 71. 最常见的域建模错误 7对象和类的通用程度越高,在其他项目中重用它们的可能性就越大。 一个完整的类在理论上是可以在任意数目的环境(context)中重用的,然而要实现完整性和重用性,必须考虑属性和操作,而前面已经指出了不应在域建模期间将操作分配给类的原因,因此在完成高级类图期间,将过多的精力用于提供类的可重用性是不明智的。 应快速完成域建模工作,以便有时问确保您要构建的系统正是客户所需要的。 中程在线信息产业培训网
  • 72. 最常见的域建模错误 6对于每个“…一部分(part-of)”关联,就使用聚集还是组合(composition)而争论不休。 在UML中,最初描述的“按引用拥有(has by reference)”关系是聚集,而“按值拥有(has by value)”关系是一种被称为组合的“强”形式的聚集,在这种关系中,“部分(piece)”类归父类“所有”:父对象被删除后,其所有的子对象实例将自动被删除。 在域建模期间试图区分聚集和组合无疑是费力不讨好的。在域建模期问,我们喜欢使用简单的聚集。使用聚集还是组合是一个详细设计方面的问题。 中程在线信息产业培训网
  • 73. 最常见的域建模错误 5未对问题空间进行建模之前,就假定一种具体的实现策略。 改进域模型时,应删除所有明显陈述动作而不是依存性的内容以及同实现相关的内容。 在高级类图中,不应引入涉及到具体技术的内容,如关系型数据库或特定的服务器。将实现问题留待实现阶段解决,首先对问题域进行建模。 中程在线信息产业培训网
  • 74. 最常见的域建模错误 4将类命名为难以理解的名称cPortMgrIntf),而不是直观的名称(如PortfolioManager)。 首先建立域模型的重要原因之一,是促使每个小组成员就关键抽象的名称达成一致。类名越简明,这项任务就越容易。应等到实现时再使用首字母缩写和各种缩略语(如果您一定要这样做) 中程在线信息产业培训网
  • 75. 最常见的域建模错误 3直接进入到实现结构,如友元关系和参数化类。 UML提供了大量将我们称作“解决素材”的东西添加到类图中的机会。这包括直接来自C++的结构,如参数化类和友元关系。这些东西与解决方案空间相关,而与问题空间不相关,因此域建模绝对是属于问题空间的。 中程在线信息产业培训网
  • 76. 最常见的域建模错误 2在域类和关系型数据库表之间建立一对一的映射。 对使用关系型数据库的遗留系统进行重构时,数据库中的表可能是很好的域类名称来源。然而,决不要将它们完全照搬到静态模型中。 关系型表中的很多属性不能照搬到对象模型环境中,应尽可能通过聚集,将属性组转换为“助手(helper)类。这种类包含的属性和操作可被组合成更小的“部分(piecepart)”类。 中程在线信息产业培训网
  • 77. 最常见的域建模错误 1过早地执行“模式化”,这将导致根据同用户问题毫无关系的模式创建解决方案。 模式通常在健壮性分析时才能发现。有两种策略可用于发现同用例相关的模式:“屏幕控制”和“用例控制器”。设计模式对时序图和设计级类图很有用,但域建模期问不应考虑模式的问题。 中程在线信息产业培训网
  • 78. 练习一3过早考虑 实现阶段 的内容 中程在线信息产业培训网
  • 79. 练习二48LoginManager4.名字不直观 8.太早定义类 的操作 中程在线信息产业培训网
  • 80. 练习三4564.名字不直观 5.指定实现方 式—EJB 6.过早考虑聚 合或组合Shopping Cart 中程在线信息产业培训网
  • 81. 练习四28102.与数据库表 一一对应 8.过早分配类 的操作 10关联多重性Order 中程在线信息产业培训网
  • 82. 练习五1251.使用了设计模 式:Proxy; 2.price、quan… publisher可能 成为关联类; 5.用了Java中 的Vector 中程在线信息产业培训网
  • 83. 练习五 中程在线信息产业培训网
  • 84. 练习六585.使用了构造 型 8.过早分配类 的操作Candldate OrderCustomer Review 中程在线信息产业培训网
  • 85. 全局:在线书店的领域模型 中程在线信息产业培训网
  • 86. 3-3 域建模练习与讨论 中程在线信息产业培训网
  • 87. 讨论域建模的作用? 何类系统需要域建模? 如何在自己的实践中引入域建模 中程在线信息产业培训网
  • 88. 练习:会议管理系统有一个对外界开放的会议中心,它拥有若干间不同规格的会议室。使用者可以去该会议中心预订房间召开一个会议或一系列会议,当然用户必须确定开会的时间、日期以及到会的大概人数以确定一个合适规格的会议室。如用户可以申请在某周五下午1:00到3:00召开一个大约100人参加的主题会议。 另外,如果用户需要定期召开一个会议(如某种论坛会议,每月开一次),那么用户可以方便地向会议中心一次性地申请几次会议的使用。 同时,在任何一个会议开始之前,用户可以修改会议的时间,添加或减少预期到会的人数,直到取消某次会议。 中程在线信息产业培训网
  • 89. 练习:会议管理系统确定了一个会议后,用户负责提供与会者的信息给会议中心,会议中心负责进行会务人员的管理,制作会务代表证明并通知每位参加者有关会议的信息。 当然,如果会议作了变更(包括取消),会议中心也要通知由用户确定的预定会议的每位参与者。会议中心可以采用电子的方式或寄会议通知的方式通知每位与会者,这要视用户提供给会议中心的每位与会者的联络而定。 本系统要求用户首先定义一个会议,然后再根据该会议,要求用户申请相应的时间段内使用的会议室。如果一个会议已经定义(如已经申请过的会议),则用户可以直接根据参加的人员、会议召开的时间来申请一个合适的会议室。 中程在线信息产业培训网
  • 90. 练习:会议管理系统另外,系统可以根据会议室的使用情况来更改用户申请使用的时间限制,如最多只能提前一个月预订。同时,允许用户把某些与会人员定义为一个组,这样用户在以后申请时就可以简化操作了。 中程在线信息产业培训网
  • 91. 参考答案 中程在线信息产业培训网
  • 92. Agenda软件架构基础与架构模式 类模型基础(续)—如何绘制 领域建模 需求分析基础知识 用例建模 中程在线信息产业培训网
  • 93. 需求—导致项目失败的罪魁祸首根据Standish Group对23000个项目进行的研究结果表明,28%的项目彻底失败,46%的项目超出经费预算或者超出工期,只有约26%的项目获得成功。 而在于这些高达74%的不成功项目中,有约60%的失败是源于需求问题。 也就是说,有近45%的项目最终因为需求的问题最终导致失败。对不知道航行目的地的人来说,没有顺风! 中程在线信息产业培训网
  • 94. 我们在哪里重重摔了一跤在Standish Group的报告中总结了导致项目失败的最重要的8大原因中,有5个与需求相关: 不完整的需求(13.1%); 缺乏用户的介入(12.4%); 不实际的客户期望(9.9%); 需求和规范的变更(8.7%); 提供了不再需要的(7.5%) 缺乏资源(10.6%),没有执行层支持(9.3%),缺少规划(8.1%) 中程在线信息产业培训网
  • 95. 项目成功的因素用户的参与:15.9% 管理层支持:13.9% 清晰的需求描述(13.0%); 合适的规划(9.6%); 现实的客户期望(8.2%); 较小的里程碑(7.7%); 有才能的员工(7.2%) 中程在线信息产业培训网
  • 96. 软件需求曾经让我们如此狼狈 中程在线信息产业培训网
  • 97. 问题的根源是什么?用户说的不是他想的:客户提供(陈述的需求)的需求并不是真实的需求,还需要作进一步的分析,以确定客户的真正需求和期望,接下来需要澄清并重新描述。可以这么说客户在理解基础业务过程和描述自己的需求方面有很大的差异。 需求分析方法有问题:系统开发人员 使用低效的需求分析和项目管理方法。 共同责任强调不足:对客户和提供商 在项目成功的共同责任方面强调不够。 中程在线信息产业培训网
  • 98. 我们应该怎么办?对“需求”建立正确的认识; 客户和供应商—一根绳子上的两个蚂蚱; 和客户一起建立起“共同的目标”; 寻找并使用正确的、有效的需求捕获、描述(建模)、管理方法; 动态、持续地适应需求的变化; 中程在线信息产业培训网
  • 99. 需求是什么? 中程在线信息产业培训网
  • 100. 功能需求功能需求是需求的主体,是需求的本质 功能需求定义了:系统必须完成的那些事,即为了向它的用户提供有用的功能,产品必须执行的动作 零散(需求项)整理(特性、用例) 敏捷方法:用户故事 中程在线信息产业培训网
  • 101. 质量属性产品必须具备的属性或品质 可靠性:成熟性、容错性、易恢复性 易使用性:易理解性、易学习性、易操作性 效率:时间特性、资源特性 可维护性:易分析性、易更改性、稳定性、易测试性 可移植性:适应性、易安装性、一致性、易替换性 McCall体系:运行(正确性、可靠性、效率、 完整性、使用性)、修正(维护性、测试性、 灵活性)、转移(移植性、复用性、共运行性) 中程在线信息产业培训网
  • 102. 设计约束也称为限制条件、补充规约,这通常是对解决方案的一些约束说明。 例如:必须采用国有自主知识版权的数据库系统… 再如:必须运行在UNIX操作系统之下 中程在线信息产业培训网
  • 103. 优秀的需求完整性:完整描述即将交付使用的功能,发现缺少某项信息,可以采用TBD来标注 正确性:经过用户或用户信任的代理人审阅 可行性:在已知能力和约束条件中实现 必要性:每项需求记录的功能都应是用户真正需要的 有优先次序:提供了实现优先级 无歧义:对所有读者只有一种一致的解释 可验证性:可以设计测试方法来检查 中程在线信息产业培训网
  • 104. 需求开发与管理 中程在线信息产业培训网
  • 105. 需求开发活动 中程在线信息产业培训网
  • 106. 需求分析—何时进行应该在“业务需求”充分理解,并且收集了最本质的“用户需求”之后就开始需求分析,但并不是等到需求捕获完全做完之后 交替进行,先把握用户需求主要部分,然后在分析的基础上引入系统级的需求(系统的设计与实现角度),并且分析模型,成为开发人员之间、开发人员与客户之间达成共识的一个平台 分析的基础上,就会发现更多的不明确项, 更多待捕获的信息,这时就可以生成第二次 的需求调研的计划、问题、素材 中程在线信息产业培训网
  • 107. 需求分析—何时结束需求捕获、分析与建模、规格说明书的编写、需求的验证这个需求开发的循环,是在整个软件开发生命周期中存在的 每一次的循环,都将在需求开发的工作要点与份量上有所不同,它们应该遵循以下: > 从本质到边缘:本质、重要、次重要、一般、镶金 > 细化阶段是需求开发最密集的阶段 > 构建阶段需求开发逐渐减少 中程在线信息产业培训网
  • 108. 需求分析—内容与形式需求分析与建模不应该是孤立的行为 ,产生的结果也不一定非得是规范度很高的标准文档,而应该重在分析、重在方法、重在交流、重在解决问题 团队聚在一起,利用白板甚至是纸张,在充分的合作下进行分析与初步建模是成本最低、效率最高、实用性最强的方法 对于这些活动所产生的结果,可以利用数码相机、扫描仪进行文档化 ,“直到你一定要用时,再写文档” 对于比较重要、核心的内容,再采用Rose、 Together这样的工具进行文档化 中程在线信息产业培训网
  • 109. 需求开发与需求管理的分界 中程在线信息产业培训网
  • 110. 需求过程 中程在线信息产业培训网
  • 111. 功能需求的形式 1人、机职责划分:可采用DFD、UML表示 > 域模型:人、机结合的模型 > 物理模型:人、机各自的职责 > 产品层需求:人、机职责划分 中程在线信息产业培训网
  • 112. 功能需求的形式 2上下文图:说明产品及其环境的图示 > 为开发人员概括了所有接口 > 大多数客户能不费力地理解上下文图 中程在线信息产业培训网
  • 113. 功能需求的形式 3事件列表与功能列表:产品要处理的事件,人、机合作处理的事件 域事件实例: > 客人预订 > 客人入住 > 客人退房 > 换房 > 提交服务记录 产品事件实例 > 查找空闲客房 > 记录客人信息 > 查找客人数据 > 记录预订数据 > 打印预订确认 > 记录入住数据 > 退房 > 记录服务 中程在线信息产业培训网
  • 114. 功能需求的形式 4特性需求:文字形式,该产品应记录/显示/计算…,很多人认为这是惟一可以接受的需求形式可能给用户及分析人员造成错觉 实例: > 该产品应能将客户在某一期限内设为维修状态 > 该产品应能够显示、打印下两周的人员配置表。该配备应以客房占用的历史数据为依据。 > 该产品也应支持根据客户类型,而不是客房号的预订。客人入住时才分配实例客房 中程在线信息产业培训网
  • 115. 功能需求的形式 5屏幕显示及原型:包括屏幕图像及”按钮“的功能,若经仔细测试可以作为很好的设计层需求 实例: 中程在线信息产业培训网
  • 116. 功能需求的形式 6任务说明:结构化的文字说明,用于描述用户任务;便于客户、开发 人员理解;便于说明 任务变体以及复杂的 任务 实例: 中程在线信息产业培训网
  • 117. 功能需求的形式 7由任务说明到产品特性:用任务说明解释产品特性;有助于理解、确认特性 任务及支持:结 构化的文字说明, 描述任务、域问 题,提出可能的 方案。 中程在线信息产业培训网
  • 118. 功能需求的形式 8场景说明:说明一项或多项用户任务,或要测试的一个特殊情况,有助于增进开发人员的直觉,通常不作为需求。 实例:夜班 由于学习了一整个下午,张三在下午6点开始值夜班时,已感觉到有些疲倦。他的第一项任务是为将在7点钟抵达的客人团做准备,他打印了所有的入住登录表,并将它们同各自的客房钥匙放在一起。 在处理这项任务时,来了一个家庭询问客户的情况。他们想讨价还价,这是张三最不擅长的工作。是否应该给他们提供折扣呢?正好李四从办公室里出来,她微笑地告诉他们:可以为小孩的房间提供10%的折扣。他们接受了,于是张三为他们安排房间,他们希望挨着的两间客户,但是张三总是记不住哪些客遍及是挨着的。 中程在线信息产业培训网
  • 119. 功能需求的形式 9用例 数据流图 以“标准”作为需求 以“开发过程”作为需求 中程在线信息产业培训网
  • 120. 非功能需求的形式 1开放尺度与开放目标:通常要求达到某个数字目标。 实例: > 该产品应能检测超速,并在0.5秒内完成拍照 > 该产品应能够2分钟内计算并显示客户占用情况的预报表 Planguage表示法: 中程在线信息产业培训网
  • 121. 非功能需求的形式 2能力及准确度需求 中程在线信息产业培训网
  • 122. 非功能需求的形式 3性能需求 中程在线信息产业培训网
  • 123. 需求规格说明书规格描述的形式 > 文档:用结合合理的自然语言精心编写 > 图形化模型:描述转换过程、系统状态以及变化、数据关系、逻辑流或者对象类及其关系 > 形式化规格说明:逻辑语言(伪码、决策表、决策图) 常用模板 > ISO/GB版:面向结构化分析方法的,较陈旧 > RUP版:以面向对象分析方法,用例驱动 > Volere版:很实用的一个第三方公司版本 Atlantic System Guild(www.atlsysguild.com)公司 中程在线信息产业培训网
  • 124. 1.引言 1.1编写的目的 1.2背景 1.3定义 [列出本文件中用到的专门术语的定义和外文首字母组词的原词组。] 1.4参考资料 [列出用得着的参考资料。] 2.任务概述 2.1目标 [叙述该系统开发的意图、应用目标、作用范围以及其他应向读者说明的有关该系统开发的背景 材料。解释被开发系统与其他有关系统之间的关系。] 2.2用户的特点 [列出本系统的最终用户的特点,充分说明操作人员、维护人员的教育水平和技术专长, 以及本系统的预期使用频度。] 2.3假定和约束 [列出进行本系统开发工作的假定和约束。] 3.需求规定 3.1对功能的规定 [用列表的方式,逐项定量和定性地叙述对系统所提出的功能要求,说明输入什么量、 经怎么样的处理、得到什么输出,说明系统的容量,包括系统应支持的终端数和应支 持的并行操作的用户数等指标。] 3.2 对性能的规定 3.2.1精度 3.2.2时间特性要求 3.2.3灵活性 3.3输入输出要求 3.4数据管理能力要求(针对软件系统) 3.5故障处理要求 3.6其他专门要求 4.运行环境规定 4.1设备 [列出运行该软件所需要的硬设备。说明其中的新型设备及其专门功能,包括: 4.2支持软件 [列出支持软件,包括要用到的操作系统、编译程序、测试支持软件等。] 4.3接口 [说明该系统同其他系统之间的接口、数据通信协议等。] 4.4控制 [说明控制该系统的运行的方法和控制信号,并说明这些控制信号的来源。] 中程在线信息产业培训网
  • 125. RUP版需求规约 1. 文档概述 1.1目的 1.2范围 1.3 定义、首字母缩写词和缩略语 1.4参考资料 1.5 概述 2. 整体说明 [让读者对整个软件系统的需求有一个框架性的认识。主要包括产品总体 效果、产品功能、用户特征、约束、假设与依赖关系、需求子集等方面的 内容。] 2.1用例模型 2.2 假设与依赖关系 3. 具体需求 3.1用例描述 3.2补充需求 [易用性、可靠性、性能、其它] 4.支持信息 中程在线信息产业培训网
  • 126. Agenda软件架构基础与架构模式 类模型基础(续)—如何绘制 领域建模 需求分析基础知识 用例建模 中程在线信息产业培训网
  • 127. 5-1 用例驱动的需求实践 中程在线信息产业培训网
  • 128. 讨论你脑海中的用例是什么?有什么作用? 用例从哪来? 中程在线信息产业培训网
  • 129. 用例驱动的需求实践:概述需 要 特 性 软件需求 问题域解决方案域用例补充规约 中程在线信息产业培训网
  • 130. 关于用例分析技术用例分析的创建源于实践,在Ivar Jacobson在爱立信公司研发AXE(电话交换机)时总结而成的 用例的概念确定于1986年,所以它不应该当作一种新技术(有人认为其是一个正处于临床实验阶段的新药) 许多人是在学习UML时,接触到用例,并且产生了一些误解,误把用例图当作了用例分析的全部内容 用例分析技术已经广泛地应用于许多软件开发组织的实践,收效甚佳,成为了软件需求最佳实践之一 中程在线信息产业培训网
  • 131. 用例模型的运用方法增量开发的用例模型 模型的无缝转换 中程在线信息产业培训网
  • 132. 用例模型建模要点构建结构良好的用例: 1)为系统和部分系统中单个的、可标识和合理的原子行为命名; 2)将公共的行为抽取出来,放到一个被包含用例中,再将它《include》进来; 3)对于变化部分,将其抽取出来,放到一个扩展用例(用《extent》连接)中; 4)清晰地描述事件流,使得读者能够轻而易举地理解 构建结构良好的用例图:摆放元素时,应该避免交叉线的出现 ;对于语义上接近的行为和角色,最好使它们在物理上也更加接近; 根据系统实际情况控制粒度 中程在线信息产业培训网
  • 133. 核心元素:参与者定义:在系统之外,透过系统边界与系统进行有意义交互的任何事物 边界类:顾客 中程在线信息产业培训网
  • 134. 边界是职责边界,而非物理边界 中程在线信息产业培训网
  • 135. 谁是机票预订系统的执行者 中程在线信息产业培训网
  • 136. 它们都可以是执行者用户维护人员时间系统其他系统 中程在线信息产业培训网
  • 137. 参与者:总结参与者是为了完成一个事件而与系统交互的实体 参与者不仅可以由人承担,还可以是其它系统、硬件设备、甚至是时钟 其它系统:当你的系统需要与其它系统交互时,如在开发ATM柜员机系统时,银行后台系统就是一个参与者 硬件设备:如果你的系统需要与硬件设备交互时,如在开发IC卡门禁系统时,IC卡读写器就是一个参与者 时钟:当你的系统需要定时触发时,时钟就是一个参与者,如在开发Foxmail中的“定时自动接 收”功能时,就需要引入时钟作为参与者 中程在线信息产业培训网
  • 138. 核心元素:用例Ivar Jacobson在RUP中为用例做出了以下定义 用例实例是在系统中执行的一系列动作,这些动作将生成特定执行者可见的价值结果。一个用例定义一组用例实例。步骤目标路径 中程在线信息产业培训网
  • 139. 用例:使用场景的抽象场景1:原有客户育才学校呼入,选择电话号码组“全体家长”和“放假通知”音频文件,设置日期、时间和其它呼叫标准,然后启动一个语音外呼任务。 场景2:原有客户精英软件公司呼入,选择电话号码组“全体客户”和“产品升级通知”音频文件,设置日期、时间和其它呼叫标准,然后启动一个语音外呼任务。 场景3:客户通达核电计划在核电力设施发生紧急情况时,向其经理和支持人员打电话。此时,不仅要能够正确地打到家里,还要正确地判断出谁能够接收到这个消息,谁不能够接收。需求提出后,必须马上执行。 启动外呼任务 中程在线信息产业培训网
  • 140. 用例定义:用例描述了执行者(参与者)使用系统实现目标的方式,以及系统为其能够实现该目标而提供的帮助。用例描述了系统及其执行者结合起来向至少一个参与者传递有价值的东西的方式 中程在线信息产业培训网
  • 141. 常见错误用例太细(用例应包括事件流,事件流中应有步骤) 把步骤当做用例(如登录输入用户名、验证密码…) 把系统活动当用例! 特例:新增、删除、查询、修改  管理 也被戏称为:CRUD(四轮马车) 误认为用例的粒度与系统实现的复杂度相关 其实很简单,一个用例为执行者提供一个价值 中程在线信息产业培训网
  • 142. 用例要突出涉众的利益找出用例相关的涉众; 分析涉众的利益所在; 在用例中充分考虑涉众的利益。 中程在线信息产业培训网
  • 143. 用例分析技术的组成用例图:用例描述:前置条件:用户启动该应用系统 基本路径: 1)系统显示登录界面; 2)用户输入用户名和密码; 3)系统验证信息; ………… 可选路径: 后置条件:执行者,Actor 参与者 用例,Use Case参与者:定义了用户在系统交互过程中所扮演的角色,其可以是一个人,也可以是另一个系统。 中程在线信息产业培训网
  • 144. 用例图实例 中程在线信息产业培训网
  • 145. 用例之间的关系:包含关系 包含关系用构造型《include》表示 是指基用例(base use case)在它内部说明的某一个位置上显式地合并了另一个用例的行为 中程在线信息产业培训网
  • 146. 用例之间的关系:扩展关系 包含关系用构造型《extend》表示 表示基用例在由扩展用例间接说明的一个位置上,隐式地合并了另一个用例的行为 中程在线信息产业培训网
  • 147. 用例之间的关系:泛化关系 用例间的泛化表示子用例继承了父用例的行为和含义 子用例还可以增加或覆盖父用例的行为;子用例可以出现在父用例出现的任何位置 中程在线信息产业培训网
  • 148. 读图小结这张用例图首先定义了三个基用例:预订座位、安排座位和处理结账 客户通过Internet启动“预订座位”用例,在“预订座位”用例的执行过程中,将“检查座位信息”(被包含用例),如果没有空闲的座位或满意的座位,可以选择进入等候队列,这样就将启动扩展用例“处理等候队列”。 总台服务员在客户到棋牌馆时,启动“安排座位”用例,在执行过程中,将启动被包含用例“检查座位信息”。 当客户要离开棋牌馆时,总台服务员将启动“处理结账”用例,并且定义了两种“收款”用例,一个是“处理现金结账”,另一个是“处理银行卡结账”,而后一个用例将通过与外部系统“银联POS系统”交互来完成。 中程在线信息产业培训网
  • 149. 用例描述:事件流 用例描述的是一个系统做什么(what)的信息,并不说明怎么做(how),怎么做是设计模型的事 中程在线信息产业培训网
  • 150. 用例描述:前置条件指在用例启动时,参与者与系统应置为何状态; 1)系统能检测到; 2)系统在用例开始前能检测到; 3)应为“可观测”的前置条件 中程在线信息产业培训网
  • 151. 用例描述:前置条件客户已发出订单----错误工作人员已登录系统----正确库存大于下单数----错误 中程在线信息产业培训网
  • 152. 用例描述:后置条件用例结束时,系统的状态 1)系统能检测到; 2)应为“可观测”的: 只包含可检测的条件, 合并影响相同的条件 后置条件 中程在线信息产业培训网
  • 153. 用例描述:基本事件流基本事件流是对用例中 常规、预期路径的描述 (有时被称为Happy day场景),这是大多 数用户在大部分时间中 所采取的路径。 通常体系了系统的核心 价值。 基本事件流 中程在线信息产业培训网
  • 154. 用例描述:扩展事件流系统还需要进行意外处理 扩展事件流 中程在线信息产业培训网
  • 155. 事件流编写要点使用简单的语法:主语明确,语义易于理解 明确写出“谁控制球”:通常就是指出参与者; 从俯视的角度来编写:指出参与者的动作,以及系统的响应,也就是跳开来; 显示过程向前推移:也就是每一步都有前进的感觉(例如:用户按下tab键就不够); 显示执行者的意图而非动作(光有动作,让人不容易直接从事件流中理会用例)。 中程在线信息产业培训网
  • 156. 事件流编写要点包括“合理的活动集”(带数据的请求、系统确认、更改内部、返回结果); “确认”而不是“检查是否”;(如:系统确认用户密码正确,而非系统检查用户密码是否正确) 可选择地提及时间限制; 习惯用语“用户让系统A与系统B交互”; 习惯用语“循环执行步骤x到y,直到条件满足; 中程在线信息产业培训网
  • 157. 用例描述模板用例编号[为用例制定一个唯一的编号,通常格式为UCxx]用例名称[应为一个动词短语,让读者一目了然地知道用例的目标]用例概述[用例的目标,一个概要性的描述]范围[用例的设计范围]主参与者[该用例的主Actor,在此列出名称,并简要的描述它]次要参与者[该用例的次要Actor,在此列出名称,并简要的描述它]项目相关人 利益说明项目相关人利益[项目相关人员名称][从该用例获取的利益]…………前置条件[即启动该用例所应该满足的条件。]后置条件[即该用例完成之后,将执行什么动作。]成功保证[描述当前目标完成后,环境变化情况。]基本事件流步骤活动1[在这里写出触发事件到目标完成以及清除的步骤。]2……(其中可以包含子事件流,以子事件流编号来表示)扩展事件流1a[1a表示是对1的扩展,其中应说明条件和活动]1b……(其中可以包含子事件流,以子事件流编号来表示)子事件流[对多次重复的事件流可以定义为子事件流,这也是抽取被包含用例的地方。]规则与约束[对该用例实现时需要考虑的业务规则、非功能需求、设计约束等] 中程在线信息产业培训网
  • 158. 用例模型的建立过程 中程在线信息产业培训网
  • 159. 分析过程—需求FEAT01.新增书籍信息 FEAT02.修改已有的书籍信息 FEAT03.书籍信息按计算机类、非计算机类分别建档 FEAT04.录入新书时能够自动按规则生成书号 FEAT05.计算机类与非计算机类书籍采用不同的书号规则 FEAT06.录入新书时如果重名将自动提示 FEAT07.按书名、作者、类别、出版社等关键字组合查询书籍 FEAT08.列出所有书籍信息 FEAT09.记录外借情况 FEAT10.外借状态能够自动反应在书籍信息中 FEAT11.按人、按书查询外借情况 FEAT12.列出所有的外借情况 FEAT13.按特定时间段统计购买金额、册数 FEAT14.所有查询、列表、统计功能应可以单独对计算机类或非计算机类进行 中程在线信息产业培训网
  • 160. 分析过程—合并特性到用例FEAT01.新增书籍信息 FEAT02.修改已有的书籍信息 FEAT03.书籍信息按计算机类、非计算机类分别建档 FEAT04.录入新书时能够自动按规则生成书号 FEAT05.计算机类与非计算机类书籍采用不同的书号规则 FEAT06.录入新书时如果重名将自动提示 FEAT07.按书名、作者、类别、出版社等关键字组合查询书籍 FEAT08.列出所有书籍信息 FEAT09.记录外借情况 FEAT10.外借状态能够自动反应在书籍信息中 FEAT11.按人、按书查询外借情况 FEAT12.列出所有的外借情况 FEAT13.按特定时间段统计购买金额、册数 FEAT14.所有查询、列表、统计功能应可以单独对计算机类或 非计算机类进行UC01: 新增书籍信息UC02: 修改书籍信息UC01: 新增图书信息UC03: 查询书籍信息UC04: 登记外借信息UC05: 查询外借信息UC06: 统计金额和册数 中程在线信息产业培训网
  • 161. 绘制用例图 中程在线信息产业培训网
  • 162. 分析过程—编写用例框架性描述1.用例名称: 新增书籍信息(UC01) 2.简要说明: 录入新购书籍信息,并自动存储建档。 3.事件流: 3.1 基本事件流 3.2 扩展事件流 4.非功能需求 5.前置条件 用户进入图书管理系统。 6.后置条件 完成新书信息的存储建档。 7.扩展点 无 8.优先级 最高(满意度 5,不满意度5) 中程在线信息产业培训网
  • 163. 分析过程—细化用例描述…… 3.事件流: 3.1 基本事件流 1)图书管理员向系统发出“新增书籍信息”请求; 2)系统要求图书管理员选择要新增的书籍是计算机类还是非计算机类; 3)图书管理员做出选择后,显示相应界面,让图书管理员输入信息,并自动根据书号规则生成书号; 4)图书管理员输入书籍的相关信息,包括:书名、作者、出版社、ISBN号、开本、页数、定价、是否有CDROM; 5)系统确认输入的信息中书名未有重名; 6)系统将所输入的信息存储建档。 3.2 扩展事件流 5a)如果输入的书名有重名现象,则显示出重名的书籍,并要求图书管理 员选择修改书名或取消输入; 5a1)图书管理员选择取消输入,则结束用例,不做存储建档工作; 5a2)图书管理员选择修改书名后,转到5) 4.非功能需求 无特殊要求 …… 中程在线信息产业培训网
  • 164. 用例建模小结用例模型是通过域模型的共同合作而开发的; Robustness分析包括确定协作对象首次剖析集,这些对象满足每个用例; 交互建模是对Robustness分析结果的细化,它对消息如何在用例之间传递进行布局; 协作与状态建模包括在用例中探索对象的动态行为; 需求跟踪包括用例和类与用户需求的联系; 在实现阶段,用例构成了用户接受度测试的基础; 中程在线信息产业培训网
  • 165. 用例建模小结ICONIX认为使用用户界面原型帮助用例建模是一个好办法; 在项目的初始,用例建模是在域建模的基础上继续的; 用例模型直接驱动系统的动态模型; 用例模型也驱动系统的静态模型; 随着进一步的分析:Robustness和顺序图,将更新静态模型; 常常通过场景(scenarios)来更新静态模型; 中程在线信息产业培训网
  • 166. 5-2 用例建模的10大错误 中程在线信息产业培训网
  • 167. 最常见的用例建模错误 10用功能需求描述代替了使用场景文本。 需求通常描述的是系统将做什么。使用场景描述了用户将完成的动作以及系统将生成的响应。最终,我们将使用用例文本作为所描述场景的运行时行为规范,这些文本将出现在顺序图边上。我们希望看到系统(用对象和消息描述)如何实现用例文本中所描述的行为。因此,应使使用说明(行为)和系统需求(被动式)有所区别 中程在线信息产业培训网
  • 168. 最常见的用例建模错误 9描述属性与方法,而不是描述习惯用法。 不要在用例文本中包含过多持久性细节, 及到屏幕上的字段。字段名称通常是与领域类中的属性名称是相对应的。如果发现自己开始整理这些名称,在用例描述中出现字段信息时,请停下来。打开域模型,看看这些属性是否已经建模,如果没有则加上。不在用例文本中对其进行命名或描述,是因为我们说明的是系统将如何做,而不是将对什么进行操作。 中程在线信息产业培训网
  • 169. 最常见的用例建模错误 8编写的用例过于简要 在开始为用例编写描述信息时,详述要比简述更好一些。在你进行Robustness分析和交互建模前需了解用户操作和系统应答的所有细节,因此最好将这些细节放到用例描述中。紧记用例描述将是用户手册的基础,因此对于用户文档而言,宁可是太过详细,也不要变成是不太详细。 中程在线信息产业培训网
  • 170. 最常见的用例建模错误 7把自己与用户界面完全隔离 ”用例驱动“观点的本质是让开发团队从用户的视角来进行工作。如果没有说明用户在界面上可以完成什么操作,则无法做到这一点。正如前面所说,不要在用例描述中讨论字段信息,在此也不希望你涉及到屏幕的细节;你可以借用原型来说明问题。但在此需要说明的是用户将如何与系统交互。 中程在线信息产业培训网
  • 171. 最常见的用例建模错误 6避免说明边界对象名称 边界对象是参与者将与其交互的对象。它通常包括窗体、屏幕、对话框和菜单。尽可能在描述时清晰地阐述用户的浏览过程。这样做的另一个理由是在Robustness分析时,将探究这些行为细节,太早命名可能造成冲突与混淆。 中程在线信息产业培训网
  • 172. 最常见的用例建模错误 5从第三者角度而不是用户角度编写用例,并且采用被动式 从用户的视角、以主动语态、动词来描述用例是最有效的。工程师经常会倾向于得到被动语态来描述,但用例描述的是用户执行的操作,系统对这些操作的应答,因此主动语态更有效。 中程在线信息产业培训网
  • 173. 最常见的用例建模错误 4仅仅描述用户交互,而忽略系统响应 用例描述应以“事件—响应”模式组成,也就是“当用户做某事时系统做某事”。用例中关于对某操作的应答是用来 “揭示背后的事情”的,例如创建一个新对象、验证用户输入或生成错误消息。记住,在用例描述中包含用户和系统的“对话”,以及在系统方将出现的软件行为。如果少了某些系统应答,也就忽略了某些软件行为。 中程在线信息产业培训网
  • 174. 最常见的用例建模错误 3忽视可选路径的描述 操作的基本路径通常很容易标识和编写。但这不意味着可以推迟可选路径的编写。实际上,经验告诉我们,如果在编码和调试阶段还有一些重要的可选路径没有标识出来,那么程序员就会根据自己的方便与否来决定如何编写和修改代码。 中程在线信息产业培训网
  • 175. 最常见的用例建模错误 2把注意力集中在其它事情上,如“如何到达”、“后面发生什么”,而不是放在内部 许多著名的作者都主张使用较长的、复杂的用例模板。前置条件和后置条件也是经常出现在模板中的。我将其看作是“离地1040米”的用例建模方法,不要坚持大量应用这些复杂模板,不要浪费时间。 中程在线信息产业培训网
  • 176. 最常见的用例建模错误 1花费一个月来决定是使用“包含”还是“扩展” 中程在线信息产业培训网
  • 177. 练习一[from Open Account] 基本路径:客户输入所需的信息,系统确认该信息并创建一个新的帐户对象。 扩展路径:如果输入的信息是无效的,系统显示一个适当的错误信息。8基本路径:客户输入他/她的姓名、一个E-Mail地址以及一个密码(输入两次),再按下“创建帐户”按钮。系统确认客户已经提供了一个有效的信息,就使用这些信息创建一个新的帐户对象。接着系统返回客户首页。 扩展路径: 1)如果客户没有提供姓名,系统显示一个错误信息,要求填入姓名; 2)如果客户提供的E-Mail地址是不正确的,系统显示一个错误信息,要求其另外提供一个; 3)如果客户提供的密码太短(<6),系统显示一个错误信息,要求其将密码设置得更长些; 4)如果客户两次输入的密码不相同,系统显示错误信息,要求其更正。 中程在线信息产业培训网
  • 178. 练习二[from Search by Author] 用户提交查询请求,系统在另一页中显示搜索结果。 [from Log In] 客户输入他/她的用户ID和密码,然后单击“登入”按钮。系统返回客户首页。 6用户在搜索页中输入作者名字,然后按下搜索按钮。系统…检索所有与该作者相关的书籍…然后在搜索结果页中显示中这些书籍的列表。3基本路径:客户输入他/她的用户ID和密码,然后单击“登入”按钮。系统通过留存的用户帐号信息确认其有效性,然后返回客户首页。 扩展路径:如果系统不能找到指定的用户ID,拒绝其登入。 中程在线信息产业培训网
  • 179. 练习三[from Log In] 名称:登入系统 目标:使一个客户登入系统 前置条件:客户尚未登入系统 基本路径:用户输入他/她的用户ID和密码,并按下“登入”按钮…… 扩展路径:…… 后置条件:客户登入了系统 2 中程在线信息产业培训网
  • 180. 练习四[from Edit Contents of Shopping Cart] 在购物车页面中,客户修改某个项目的数量,然后按下“更新”按钮。然后客户按下“继续购物”按钮。 [from Cancel Order] 基本路径:系统在“取消订单”页面上显示与订单相关的信息,包括内容和装运地址。客户按下“确认取消”按钮… 4在购物车页面中,客户修改某个项目的数量,然后按下“更新”按钮。系统存储新的数量,计算并显示该项的新费用。3基本路径:系统确定订单是可取消的(也就是状态不是已装运),然后系统在“取消订单”页面上显示与订单相关的信息,包括内容和装运地址和,客户按下“确认取消”按钮。系统将状态标记为“删除的”,然后调用用例“Return Items to Inventory” 扩展路径:如果订单状态是已装运的,则系统显示该订单取消已太迟。 中程在线信息产业培训网
  • 181. 练习五[from Search by Author] 客户输入作者的姓名,然后提供一个检索请求…系统检索每一本书,然后显示出书的列表。 [from Cancel Order] 基本路径:如果客户在购物车中修改某个项目的数量,然后按下“更新”按钮,系统将保存新的数量,然后重新计算并显示该项的新费用… 扩展路径:系统将从购物车中删除数量被修改为0的项。 7客户在搜索页中输入作者的姓名,然后按下“搜索”按钮…系统检索每一本书,然后在搜索结果页中显示出书的列表。10基本路径:在购物车页面中,客户修改某个项目的数量,然后按下“更新”按钮,系统则保存新的数量,然后重新计算并显示该项的新费用… 扩展路径:如果购物车中某个项目的数量并修改为0,系统则从购物车中删除该项。 中程在线信息产业培训网
  • 182. 练习六[from Check Out] 客户选择一种支付方式,并按下“使用该支付信息”按钮。接着客户按下“确认订单”按钮。用例结束。 [from Browse List of Books] 客户在浏览书籍页面上单击一个“类别”,系统调用“类别”对象的“displayYourSubcategories”方法。这个过程一直持续到没有子类为止,然后显示出属于这个最低的子类下的所有书籍。 4客户选择一种支付方式,并按下“使用该支付信息”按钮。系统将指定的支付信息对象与其订单关联。然后显示确认订单页面。 接着客户按下“确认订单”按钮。系统将该订单提交,并清除购物车。用例将其控制权交还给调用该用例的其它用例。9客户在浏览书籍页面上单击一个“类别”,系统显示该类的所有子类,这个过程直到没有子类为止,然后显示最低的子类下的所有书籍。 中程在线信息产业培训网
  • 183. 用例模型 中程在线信息产业培训网
  • 184. 5-3 用例建模练习与讨论 中程在线信息产业培训网
  • 185. 讨论用例建模的作用? 如何在自己的实践中引入用例建模? 中程在线信息产业培训网
  • 186. 练习:会议管理系统有一个对外界开放的会议中心,它拥有若干间不同规格的会议室。使用者可以去该会议中心预订房间召开一个会议或一系列会议,当然用户必须确定开会的时间、日期以及到会的大概人数以确定一个合适规格的会议室。如用户可以申请在某周五下午1:00到3:00召开一个大约100人参加的主题会议。 另外,如果用户需要定期召开一个会议(如某种论坛会议,每月开一次),那么用户可以方便地向会议中心一次性地申请几次会议的使用。 同时,在任何一个会议开始之前,用户可以修改会议的时间,添加或减少预期到会的人数,直到取消某次会议。 中程在线信息产业培训网
  • 187. 练习:会议管理系统确定了一个会议后,用户负责提供与会者的信息给会议中心,会议中心负责进行会务人员的管理,制作会务代表证明并通知每位参加者有关会议的信息。 当然,如果会议作了变更(包括取消),会议中心也要通知由用户确定的预定会议的每位参与者。会议中心可以采用电子的方式或寄会议通知的方式通知每位与会者,这要视用户提供给会议中心的每位与会者的联络而定。 本系统要求用户首先定义一个会议,然后再根据该会议,要求用户申请相应的时间段内使用的会议室。如果一个会议已经定义(如已经申请过的会议),则用户可以直接根据参加的人员、会议召开的时间来申请一个合适的会议室。 中程在线信息产业培训网
  • 188. 练习:会议管理系统另外,系统可以根据会议室的使用情况来更改用户申请使用的时间限制,如最多只能提前一个月预订。同时,允许用户把某些与会人员定义为一个组,这样用户在以后申请时就可以简化操作了。 中程在线信息产业培训网
  • 189. 参考答案 中程在线信息产业培训网
  • 190. 5-4 需求评审的10大错误 中程在线信息产业培训网
  • 191. 最常见的需求评审错误 10根据不评审需求。只是提供一个“功能清单”让程序员自己开发 TBD 中程在线信息产业培训网
  • 192. 最常见的需求评审错误 9无法确定用例描述与预期的系统行为相一致 TBD 中程在线信息产业培训网
  • 193. 最常见的需求评审错误 8未使用任何GUI原型或屏幕快照来验证系统行为 TBD 中程在线信息产业培训网
  • 194. 最常见的需求评审错误 7使用例处于较高的抽象层上,非技术背景的客户无法从中获取线索 TBD 中程在线信息产业培训网
  • 195. 最常见的需求评审错误 6不确定领域模型是否真实体现了现实世界中的对象 TBD 中程在线信息产业培训网
  • 196. 最常见的需求评审错误 5不确定用例描述中是否引用了领域对象 TBD 中程在线信息产业培训网
  • 197. 最常见的需求评审错误 4对于没有备选事件流的用例没有任何质疑 TBD 中程在线信息产业培训网
  • 198. 最常见的需求评审错误 3没有询问是否每个用例都包含了所有备选事件流 TBD 中程在线信息产业培训网
  • 199. 最常见的需求评审错误 2对以被动语态编写的用例描述不感到担心 TBD 中程在线信息产业培训网
  • 200. 最常见的需求评审错误 1对于4页长的用例描述也不感到担心 TBD 中程在线信息产业培训网