书评

作为一本UML和需求分析的入门书来说还算可以,写的比较接地气,如果是做过很多项目的读者,很容易找到共鸣点。

美中不足:部分概念可能有错误,其中对于Component和Artifact的解释明显和Wikipedia的解释不一样,感觉应该是错误。

结论:三星推荐。

需求分析

  1. 需求分析的难点

    • 屁股决定脑袋,眼界决定境界,各人有各人的想法
    • 词不达意,想到说不清楚,说清楚写不清楚,写清楚理解不清楚
    • 需求的持续演进,一天一个样
      • 自学业务,争取尽快超越客户对需求的理解
      • 认真考虑,认清客户真正的需求是什么,带来的价值是什么
    • BPR(Business Process Reenginerring),部分人员抗拒

Class Digram

  1. Class Diagram 包含 Attribute(属于) 和Operation(操作)
  2. 如果类是一个Abstract Class,则需要用斜体表示

    类之间的关系

  3. Class之间的关系可以用Association表示,直线,上面可以加箭头(关系方向)、数量(1:1 1:N M:N)、文字(关系)

  4. Class之间也可以有包含关系, 实心菱形表示强包含(Compostion 组合),空心菱形表示弱包含( 聚合 Aggregation 即子对象可以独立于父对象存在)

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

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

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

  8. 三角关系(Triangle)

    对象图(Object Diagram)

    一般使用比较少,多用于描述软件设计中的复杂算法和场景,需求分析中较少使用。

活动图Activity Diagram

  1. 结构建模一般用Class Diagram等Stracture Diagram表示,行为建模一般用Activity Diagram等Behavior Diagram表示
  2. 活动图包含

    • Iniital State 实心圆
    • Final State 实心套实心小圆
    • 活动Activity 圆角矩形
    • 判断Decision 菱形
    • Guard 监护,下图中[]内的文字
    • Merge 合并 从Decision合并后的菱形
    • 泳道 Swimlane 表示活动的发起者
    • Fork 分支 表示并行中的开始
    • Join 汇合 表示并行中的结束,和Fork是成对出现
  3. 在Activity Diagram中可以引入对象(用矩形表示),用来表示工作成品(如需求说明书,规格说明书等),对象之间的连线叫Object Flow, 活动之间的连线叫Control Flow.

State Machine Diagram (状态机图)

  1. 活动图关注事务的状态,以及状态之间的转变
  2. State Machine Diagram包含:
    • Iniital State 实心圆
    • Final State 实心套实心小圆
    • State 圆角矩形
    • Transition 转变 State之间箭头

Sequence Diagram

  1. 顺序图的组成

    • Actor:小人
    • Message:实心箭头
    • 返回值: 虚拟箭头
  2. Sequence Diagram可是以Actor为视角进行画,也可以以对象为视角进行画
  3. UML2中增加了loop alt(alternative) opt(optional)三种情况, 表示特殊流程
  4. 顺序图和加了泳道的活动图非常像, 一般是如果特殊流程较少,或强调主干流程时,优先选择顺序图,分支流程较多或是强调特殊流程时优先选择活动图
  5. Communication Diagram即UML1.X中的Collabation Diagram是Sequence Diagram的一种,需要按标号去读。

用例图 Use Case Diagram

  1. 用命图用业回复下面的两个问题:

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

  7. 用例表中的基本流程的编写部分约定:

    • 以阿拉伯数字编号
    • 执行者的操作顶头写
    • 系统的操作空两格
    • 以用户的语言写,而不是以计算机语言写
  8. 需求分析时对UML的综合运用:
    • 采用类图表示业务概念
    • 通过用例来表示详细业务需求
    • 使用流程三剑客(activity/state machine /sequence diagram)来表示业务流程
    • *从用户痛点开始,理解每一个需求背后的业务痛点,意义,带来的价值,理清业务流程,梳理用户 *

部署图Deployment Diagram

  1. 从硬件的角度、物理层次上进行系统的整体规划,包括当前的IT架构以及改造后的IT构架
  2. deployment diagram 包括:
    • Node:用来表示物理的设备,如电脑、PC、服务器等
    • Tag 用来表示设备的数量 操作系统 供应端等相关信息
    • Communication Path 节点间的连线
  3. Component的定义如下:
    • 能实现一定的功能,或者提供一些服务,如接口
    • 不能独立运行,要作为系统的一部分
    • 可单独维护,升级,替换,而不影响整个系统。
  4. artifact 描述系统中的一个物理单元,同样是可替换的部分,如源文件,安装程序,脚本等。

需求分析

  1. 需求分析的UML活动图示例

读书笔记---《火球:UML大战需求分析》的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. java入门知识点结构

    第一部分    计算机程序和面向对象编程 编程语言种类: 机器语言:2进制(0和1) 汇编语言:英文字符缩写和助记符 高级语言: 面向过程:面向过程是从微观上/细节上处理具体事务. C语言 面向对象: ...

  2. Nginx搭建反向代理服务器过程详解

    一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...

  3. Ignite安装配置——中篇

    Linux Ignite配置——上篇大体介绍了一下Ignite工具的功能.特性等,以及如何在Linux 上安装配置.从上篇可见Ignite安装非常的简单方便.下面介绍一下Ignite Reposito ...

  4. 浅析SQL SERVER执行计划中的各类怪相

    在查看执行计划或调优过程中,执行计划里面有些现象总会让人有些疑惑不解: 1:为什么同一条SQL语句有时候会走索引查找,有时候SQL脚本又不走索引查找,反而走全表扫描? 2:同一条SQL语句,查询条件的 ...

  5. asp.net mvc 之旅—— 第四站 学会用Reflector调试我们的MVC框架代码

    我们知道,现在能调试.net程序通常有两个,第一个是ILSpy,还是一个是Reflector,这两个小反编译软件算是我们研究底层代码中所拥有的一把 锋利小尖刀~~~,比如你看到的ILSpy这样的界面图 ...

  6. dragsort html拖拽排序

    一.Jquery List DragSort 对于有些页面,如首页的定制,需要进行动态的拖拽排序.由于自己实现比较困难,我们一般会使用一些js插件来实现.dragsort 就是帮助我们完成这一需求.通 ...

  7. rawurlencode / urlencode

    rawurlencode遵守是94年国际标准备忘录RFC 1738,urlencode实现的是传统做法,和上者的主要区别是对空格的转义是'+'而不是'%20' 推荐在PHP中使用用rawurlenco ...

  8. Source Insight常用功能设置

    熟悉工具的使用能在一定程度上提高工作效率,但工具永远只是工具,大家要把重点放在内功的修炼上. 符号导航 符号(变量.宏定义.结构定义.枚举.函数等等)在SI 中的检索非常方便.Ctrl+鼠标左键或Ct ...

  9. linux下shell脚本执行jar文件

    最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...

  10. Android(Linux)控制GPIO方法二

    前文<Android(Linux)控制GPIO的方法及实时性分析>主要使用Linux shell命令控制GPIO,该方法可在调试过程中快速确定GPIO硬件是否有问题,即对应的GPIO是否受 ...