读书笔记---《火球:UML大战需求分析》
书评
作为一本UML和需求分析的入门书来说还算可以,写的比较接地气,如果是做过很多项目的读者,很容易找到共鸣点。
美中不足:部分概念可能有错误,其中对于Component和Artifact的解释明显和Wikipedia的解释不一样,感觉应该是错误。
结论:三星推荐。
需求分析
- 需求分析的难点
- 屁股决定脑袋,眼界决定境界,各人有各人的想法
- 词不达意,想到说不清楚,说清楚写不清楚,写清楚理解不清楚
- 需求的持续演进,一天一个样
- 自学业务,争取尽快超越客户对需求的理解
- 认真考虑,认清客户真正的需求是什么,带来的价值是什么
- BPR(Business Process Reenginerring),部分人员抗拒
Class Digram
- Class Diagram 包含 Attribute(属于) 和Operation(操作)
如果类是一个Abstract Class,则需要用斜体表示
类之间的关系
Class之间的关系可以用Association表示,直线,上面可以加箭头(关系方向)、数量(1:1 1:N M:N)、文字(关系)
Class之间也可以有包含关系, 实心菱形表示强包含(Compostion 组合),空心菱形表示弱包含( 聚合 Aggregation 即子对象可以独立于父对象存在)

继续关系 (Generalization),用三角简表示

信赖关系(Dependency) 用带虚线的箭头表示

递归关系(Recursion),可以用到自身的包含(Aggregation/Compostion),当然也可以用关系(Association)

三角关系(Triangle)

对象图(Object Diagram)
一般使用比较少,多用于描述软件设计中的复杂算法和场景,需求分析中较少使用。
活动图Activity Diagram
- 结构建模一般用Class Diagram等Stracture Diagram表示,行为建模一般用Activity Diagram等Behavior Diagram表示
活动图包含
- Iniital State 实心圆
- Final State 实心套实心小圆
- 活动Activity 圆角矩形
- 判断Decision 菱形
- Guard 监护,下图中[]内的文字
- Merge 合并 从Decision合并后的菱形
- 泳道 Swimlane 表示活动的发起者
- Fork 分支 表示并行中的开始
- Join 汇合 表示并行中的结束,和Fork是成对出现

在Activity Diagram中可以引入对象(用矩形表示),用来表示工作成品(如需求说明书,规格说明书等),对象之间的连线叫Object Flow, 活动之间的连线叫Control Flow.
State Machine Diagram (状态机图)
- 活动图关注事务的状态,以及状态之间的转变
- State Machine Diagram包含:
- Iniital State 实心圆
- Final State 实心套实心小圆
- State 圆角矩形
- Transition 转变 State之间箭头
Sequence Diagram
- 顺序图的组成
- Actor:小人
- Message:实心箭头
- 返回值: 虚拟箭头
- Sequence Diagram可是以Actor为视角进行画,也可以以对象为视角进行画
- UML2中增加了loop alt(alternative) opt(optional)三种情况, 表示特殊流程
- 顺序图和加了泳道的活动图非常像, 一般是如果特殊流程较少,或强调主干流程时,优先选择顺序图,分支流程较多或是强调特殊流程时优先选择活动图
- Communication Diagram即UML1.X中的Collabation Diagram是Sequence Diagram的一种,需要按标号去读。

用例图 Use Case Diagram
- 用命图用业回复下面的两个问题:
- 系统有谁在用?
- 系统用户使用这个系统能完成什么事?
- Use Case Diagram的组成:
- Actor:小人表示
- Use Case: 圆圈表示
- System Boundary:系统边界 用大的方框表示
- 用例的使用一般是采用一个大的use case来表示整个系统的功能,再分别用小的use case分场景细化。
- 用例之间可以用继续(Inherit)、包含(Include)、扩展(Extend)的关系, 需要注意箭头的方向代表着谁《》谁, 读的时候先读不带箭头端,再读箭头端。
- use case的表达方式为动宾方式
用例一般还需要加以用例表来完整的表达需求

用例表中的基本流程的编写部分约定:
- 以阿拉伯数字编号
- 执行者的操作顶头写
- 系统的操作空两格
- 以用户的语言写,而不是以计算机语言写
- 需求分析时对UML的综合运用:
- 采用类图表示业务概念
- 通过用例来表示详细业务需求
- 使用流程三剑客(activity/state machine /sequence diagram)来表示业务流程
- *从用户痛点开始,理解每一个需求背后的业务痛点,意义,带来的价值,理清业务流程,梳理用户 *
部署图Deployment Diagram
- 从硬件的角度、物理层次上进行系统的整体规划,包括当前的IT架构以及改造后的IT构架
- deployment diagram 包括:
- Node:用来表示物理的设备,如电脑、PC、服务器等
- Tag 用来表示设备的数量 操作系统 供应端等相关信息
- Communication Path 节点间的连线
- Component的定义如下:
- 能实现一定的功能,或者提供一些服务,如接口
- 不能独立运行,要作为系统的一部分
- 可单独维护,升级,替换,而不影响整个系统。
- artifact 描述系统中的一个物理单元,同样是可替换的部分,如源文件,安装程序,脚本等。
需求分析
需求分析的UML活动图示例

读书笔记---《火球:UML大战需求分析》的更多相关文章
- csapp读书笔记-并发编程
这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...
- CSAPP 读书笔记 - 2.31练习题
根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1) 属于第一种情况 sum = x ...
- CSAPP读书笔记--第八章 异常控制流
第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...
- CSAPP 并发编程读书笔记
CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 读书笔记--SQL必知必会18--视图
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
- 《C#本质论》读书笔记(18)多线程处理
.NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
随机推荐
- JavaScript 变量声明提前
<JavaScript权威指南>中指出:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声 ...
- 学习笔记 MYSQL盲注
猜解当前数据库名 输入 ' # ,显示不存在: 输入 ' # ,显示不存在: 输入 ' # ,显示不存在: 输入 ' # ,显示存在: 采用二分法猜解数据库名 输入 ' ,)) # ,显示存在,说明数 ...
- SharePoint 2007 Full Text Searching PowerShell and CS file content with SharePoint Search
1. Ensure your site or shared folder in one Content Source. 2. Add file types. 3. The second step in ...
- iOS之隐藏键盘的方式
一.//触摸空白处隐藏键盘 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [_feedBackTextView r ...
- iOS使用Zbar扫描二维码
iOS使用Zbar扫描二维码 标签(空格分隔):二维码扫描 iOS Zbar64位 正文: 首先下载一个支持64位系统的ZbarSDK的包,保存在了我的云盘里,地址:ZbarSDK 把文件拖到工程里面 ...
- IOS开发基础知识--碎片9
1:两种方法删除NSUserDefaults所有记录 //方法一 NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; [[N ...
- 初识java之变量、数据类型和运算符(一)
博友目标: 1.掌握变量的概念 2.引子----会使用常用数据类型 众所周知,每台电脑都有一个内存这么个必不可少的元素,那么到底内存到底是用来干什么的呢?其实啊,计算机内存相当于人类的大脑,计算机在处 ...
- IOS开发之Bug--iOS7View被导航栏遮挡问题的解决
在实际开发中,遇到在UITextView的frame等于当前控制器的View的frame的情况下,然后运行的时候,发现控制器的Frame的高度y值会从导航条的位置64变化到0. 导致UITextVie ...
- [Erlang 0104] 当Erlang遇到Solr
Joe Armstrong的访谈中有一段关于"打开黑盒子"的阐述,给我留下很深的印象:Joe Armstrong在做XWindows开发时没有使用对应的类库,而是在了解XW ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...