Uml分享

1,649 views

Published on

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,649
On SlideShare
0
From Embeds
0
Number of Embeds
49
Actions
Shares
0
Downloads
12
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Uml分享

  1. 1. UML 交流 Goodtiger 2010-01-19
  2. 2. Topics <ul><li>UML 是用来交流的 </li></ul><ul><li>快速了解下 9 种 UML 图及使用场景 </li></ul><ul><li>CASE (掷骰子) </li></ul><ul><li>五步 UML 简介及缴费 CASE 的 EA 管理 </li></ul>
  3. 3. 什么是 UML?
  4. 4. 几个概念 <ul><li>Architecture </li></ul><ul><ul><li>分层… </li></ul></ul><ul><li>Process ( Development Processes ) </li></ul><ul><ul><li>UP… </li></ul></ul><ul><li>Methodology </li></ul><ul><ul><li>OOAD 、 DDD… </li></ul></ul><ul><li>UML 是语言,它需要有依附的载体 </li></ul>
  5. 5. 什么是 UML? <ul><li>建模语言 </li></ul><ul><ul><li>语言使用的 场景 (软件开发过程) </li></ul></ul><ul><ul><li>语言是用来 交流 (交流的内容) </li></ul></ul><ul><ul><li>语言有什么特征(表达?) </li></ul></ul><ul><li>过程 </li></ul><ul><ul><li>过程有不同的阶段 </li></ul></ul><ul><ul><ul><li>需求、分析、设计、开发、测试、部署 </li></ul></ul></ul><ul><ul><li>我们拿 OOAD 过程来展开 </li></ul></ul><ul><ul><li>重要的是过程,而不是表达过程的语言 </li></ul></ul>
  6. 6. 我们需要解决的问题是什么?
  7. 7. 不变的东东
  8. 8. 问题域视角来看 UML
  9. 9. 9 种类型 UML 图 <ul><li>用例图( Use Case ) </li></ul><ul><li>活动图( Activity ) </li></ul><ul><li>组件图( Component ) </li></ul><ul><li>顺序图( Sequence ) </li></ul><ul><li>协作图( Collaboration ) </li></ul><ul><li>类图 ( Class ) </li></ul><ul><li>状态图( State chart ) </li></ul><ul><li>部署图( Deployment ) </li></ul><ul><li>包图( Package ) </li></ul>
  10. 10. 用例 <ul><li>区别用例(或用例描述)和用例图 </li></ul><ul><ul><li>用例图,表达整体、 完整性 </li></ul></ul><ul><ul><li>用例是对场景的描述,这及其重要 </li></ul></ul><ul><ul><li>业务用例、系统用例有区别吗? </li></ul></ul><ul><ul><li>用例的作用 </li></ul></ul><ul><ul><li>需求的描述 </li></ul></ul><ul><ul><li>和受众交流和细化需求 </li></ul></ul><ul><ul><li>测试用例的部分产出 </li></ul></ul>
  11. 11. 用例描述 <ul><li>参见代付用例文档 </li></ul><ul><ul><li>《代付 _ 系统 Use+Case 实现规约 .doc 》 </li></ul></ul>
  12. 12. 需求和用例的对应 确保用例和需求的一致,不会产生遗漏 序号 用例 PRD 需求 备注 1 开启关闭代扣 后台 - 代扣开关管理 2 查询代扣记录 后台 - 代扣记录 3 设置代扣参数 后台 - 代扣时间间隔 4 设置账期 后台 - 代扣开关管理 5 查询签约信息 后台 - 签约信息 6 后台解约 后台 - 签约信息
  13. 13. 用例图( Use Case ) <ul><li>显示系统的外部可视行为 </li></ul><ul><li>对强调 What 而不是 How </li></ul><ul><li>场景的描述 </li></ul><ul><li>关键元素 </li></ul><ul><ul><li>Actor 、 Use Case 、 Communication </li></ul></ul><ul><ul><li>System boundaries </li></ul></ul>
  14. 14. 业务用例 1 、完整性够了 2 、缺少边界
  15. 15. 好的用例图
  16. 16. 活动图 <ul><li>详细描述系统行为 </li></ul><ul><li>关系比较近的几类图 </li></ul><ul><ul><li>泳道图(描述业务流程) </li></ul></ul><ul><ul><li>序列图(强调交互) </li></ul></ul><ul><ul><li>状态图(实体或领域对象的角度描述) </li></ul></ul>
  17. 18. 序列图 <ul><li>描述对象之间随着 时间 的交互 </li></ul><ul><li>交互 操作 的细节的描述 </li></ul><ul><li>发送的 消息 ( What 、 When 、 How ) </li></ul><ul><ul><li>同步、异步 </li></ul></ul>
  18. 20. 活动图和序列图 <ul><li>有什么区别 </li></ul><ul><li>什么时候用活动图 </li></ul><ul><li>什么时候用序列图 </li></ul><ul><li>选择在于你 </li></ul>
  19. 21. 协作图 <ul><li>也是对象的交互的描述 </li></ul><ul><li>强调了对象之间的关系 </li></ul><ul><li>和序列图包含的信息差不多 </li></ul><ul><li>协作图关注的是对象的角色 </li></ul><ul><li>序列图关注的是随着时间对象之间消息的发送 </li></ul>
  20. 22. 协作图示例
  21. 23. 类图 <ul><li>类图定义了类和类之间的关系 </li></ul><ul><li>关系( association 、 aggregation 、 generalization ) </li></ul><ul><li>组合和聚合 </li></ul><ul><li>领域模型? </li></ul>
  22. 24. 类图示例
  23. 25. 状态图 <ul><li>描述对象对于时间的状态改变 </li></ul><ul><li>对象主要是行为和状态 </li></ul><ul><li>领域模型的状态? </li></ul><ul><li>状态的变化可抽取成服务 </li></ul>
  24. 26. 状态图例子
  25. 27. 组件图和部署图 <ul><li>组件图描述系统的可部署单元及接口,可部署单元通过接口进行交互 </li></ul><ul><li>部署图描述了系统的可部署单元如何被赋予不同的节点,这些节点如何互相通信,以及这些节点如何与设备进行通信。可以用于系统映射,可可以用作研究系统负载。 </li></ul>
  26. 28. 组件和部署图
  27. 29. 什么样的 UML 图是好图 ?
  28. 30. 什么样的 UML 图是好图 ? <ul><li>符合标准的? </li></ul><ul><li>描述非常具体的? </li></ul><ul><li>结构排版清晰的? </li></ul><ul><li>… </li></ul><ul><li>你想要表达什么? </li></ul><ul><li>选择合适的图来表达! </li></ul>
  29. 31. 同样的名字不同的目的
  30. 32. 一个简单常用的方法(个人) <ul><li>需求工程的一个图 </li></ul><ul><li>定义用例 </li></ul><ul><li>定义领域模型 </li></ul><ul><li>定义交互图 </li></ul><ul><li>定义设计类图 </li></ul><ul><li>来看一个案例(扔两个骰子) </li></ul><ul><li>参见 EA ( diceGame.eap ) </li></ul>
  31. 33. 再来抽象一点 -DRADR <ul><li>Define (定义) </li></ul><ul><li>Refine (细化) </li></ul><ul><li>Assign (分配) </li></ul><ul><li>Design (设计) </li></ul><ul><li>Repeat/iterate (重复 / 迭代) </li></ul>
  32. 34. 定义 <ul><ul><li>通过用例图表示系统的需求,添加其他可以清楚表达用例的图 </li></ul></ul><ul><li>找出需求中的角色和领域对象,并以参与者为核心去画用例图,在过程中完善领域对象及关系。 </li></ul>
  33. 35. 细化 <ul><ul><li>通过活动图中捕获的场景来详细描述每个需求中的步骤 </li></ul></ul><ul><ul><li>为每一个用例都建立一个场景(活动图)来详细地描述此用例做什么(按需) </li></ul></ul><ul><ul><li>活动图中的活动可以包含子活动来对活动进一步描述 </li></ul></ul><ul><ul><li>复杂的细节可以采用状态图来表示 </li></ul></ul>
  34. 36. 分配 <ul><ul><li>使用活动图来把步骤分配给系统的元素 </li></ul></ul><ul><ul><li>最好的实践就是泳道图( 参考 ) </li></ul></ul><ul><ul><li>泳道图也可以用序列图表达,但是序列图的是线性的,而活动图表达非线性分支和循环,可以表达复杂的逻辑。不建议采用 UML2.0 中序列图表示分支和循环。 </li></ul></ul><ul><ul><li>通过泳道图的分析,可以大致得出组件以及接口,为分析做铺垫 </li></ul></ul>
  35. 37. 设计 <ul><ul><li>使用组件图来表达元素之间的关系。添加其他可以清楚显示组件的图 </li></ul></ul><ul><ul><li>表达清楚组件和接口,以及组件之间接口的关系 </li></ul></ul><ul><ul><li>表达和分析依赖关系 </li></ul></ul><ul><ul><li>完整的组件图可以整理成体系结构设计 </li></ul></ul>
  36. 38. 重复 / 迭代 <ul><ul><li>将过程的范围缩小为单独的元素(使用类图进行设计) </li></ul></ul><ul><ul><li>扩展到超出整个系统的范围(使用部署图来表达) </li></ul></ul><ul><ul><li>添加其他可以帮助理解系统(系统交互的)图 </li></ul></ul><ul><ul><li>适当的重复前面的 4 个步骤进行重复和迭代 </li></ul></ul><ul><ul><li>抽象和细化 </li></ul></ul>
  37. 39. DRADR 总结
  38. 40. 银弹 <ul><li>汗水 </li></ul><ul><li>眼泪 </li></ul><ul><li>奶茶水果 </li></ul><ul><li>良好的管理 </li></ul><ul><li>创意和执行 </li></ul><ul><li>UML 只是帮助我们组织很多因素,但该面对的还是需要面对, UML 只是一个语言或者只是一个工具。 </li></ul>
  39. 41. 参考书籍推荐 <ul><li>《 UML Distilled-A Brief Guide to the Standard Object Modeling Language 》 </li></ul><ul><li>《 Applying UML and Patterns 》 </li></ul><ul><li>《 UML Applied: A .NET Perspective 》 </li></ul><ul><li>《 Practical UML- A Hands-On Introduction for Developers 》 </li></ul><ul><li>《 Practical Object-Oriented Design with UML 》 </li></ul><ul><li>《 Object Design: Roles, Responsibilities, and Collaborations 》 </li></ul>
  40. 42. Q&A 谢谢

×