敏捷软件开发_UML<一>
敏捷软件开发_UML
所看书籍是:敏捷软件开发_原则、模式与实践_C#版(美)马丁著,这本书写的非常棒,感谢作者。该归纳总结的过程按照我读的顺序写。
UML
在建造桥梁,零件,自动化设备之前需要建模分析可行性,软件在编写之前也需要建立模型,看看类和逻辑的设计是否合理,这样的建模过程就是UML。
类图
类图就是来描述一个类本身或和其他类的调用关系。
- +public
- -private
- #protected
实现/泛化
- 集成
- 实现接口
组合
- 部分可以离开整体
聚合
- 部分不能离开整体
关联
- 持有对其他对象引用的实例变量
依赖
- 局部变量/方法的参数或则静态方法的调用
注意
- 关系的强弱:泛化/实现>组合>聚合>关联>依赖
对象图
表示系统执行的某个特定时刻的一组对象和关系,可以看成是内存快照。
该图大部分是从相应的类图中推导而来没啥用。
顺序图
描述算法的实现,重点在于消息的顺序。比较常绘制的动态模型。
例子

- 对象下面画有横线,类没有,对象名:类
- 垂下来的线为生命线
- 中间矩形垂下来的矩形:激活,表示一个函数的执行时间
- 虚线表示返回参与者并传回返回值
- 箭头:消息。返回值:消息名称(参数)
- 带圆圈的箭头:消息的参数
注意
- 循环:框起来 [for each id in idlist]
- 容易被勿用和滥用
协作图
描述算法的实现,重点在于对象之间的关系
状态图
其实就是有限状态机(FSM)。
例子:
- 实心黑球:初始伪状态,从这个状态开始运转
- 圆矩形:状态。上层放状态的名字,下层放一些特定动作和事件,表示进入或则退出时要做什么,
- 箭头:迁移。上面有触发该迁移的事件名称和要执行的动作
注意
- entry和exit:标准事件,不管写不写都会触发
- 超状态:几个状态迁移时间相同时,可以组成一个超状态。迁移时会出发超状态的entry和exit
如何使用UML
在使用UML的过程中,需要先通过行为优先的方式写出状态图,先是局部状态再是整体状态,抽象出会改变的,将每一种改变的类型实例化,中间再通过各种设计模式隔离
行为优先
从项目的功能入手,用户的交互入手写出每一种功能,大体的类有了后,再抽象出会改变的类,通过设计模式隔离
检查结构
检查每一种功能实现是否合理
想象代码
想想出代码的样子做微调
敏捷软件开发_UML<一>的更多相关文章
- 敏捷软件开发VS传统软件工程
敏捷软件开发:又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新兴软件开发方法,是一种应对快速变化的需求的一种软件开发能力. 与传统软件工程相比,它们的具体名称.理念.过程.术语都不尽相同 ...
- 敏捷软件开发 VS. 传统软件工程
敏捷软件开发 VS. 传统软件工程 软件工程这一术语1968年被提出,之后美国软件工程专家巴利·玻姆对十多年间研究软件工程的专家学者们提出的一些准则与信条,于1983年对提出软件工程的七条基本定理,将 ...
- 敏捷软件开发vs传统软件开发
摘要 本文介绍了传统软件开发(着重介绍了传统软件开发中常用的瀑布模型)和敏捷软件开发,以及敏捷开发和传统开发的对比. 一.传统软件开发 比较常用的几种传统软件开发方法:瀑布式开发.迭代式开发.螺旋开发 ...
- 敏捷软件开发(4)--- TEMPLATE METHOD & STRATEGY 模式
1.TEMPLATE METHOD 泛型,也就是这个模式,是可以基于泛型的. 我们往往会有一些算法,比如排序算法.它的算法部分,我可以把它放在一个基类里面,这样具体类型的比较可以放在子类里面. 看如下 ...
- 敏捷软件开发(3)---COMMAND 模式 & Active Object 模式
COMMAND 模式 command模式非常简单,简单到你无法想象的地方. public interface Command { void execute(); } 这就是一个command模式的样子 ...
- 敏捷软件开发(1)--- STATE 模式
如果状态在运行过程中,不停的切换和改变,我们怎么办? 状态的迁移是我们生活和工程中非常普遍的一个概念.于是在数学上有一种理论来分析和解决这个问题. 有限状态机理论是一个非常成熟的理论,所有动作和流程的 ...
- 敏捷软件开发:原则、模式与实践——第14章 使用UML
第14章 使用UML 在探索UML的细节之前,我们应该先讲讲何时以及为何使用它.UML的误用和滥用已经对软件项目造成了太多的危害. 14.1 为什么建模 建模就是为了弄清楚某些东西是否可行.当模型比要 ...
- 敏捷软件开发:原则、模式与实践——第12章 ISP:接口隔离原则
第12章 ISP:接口隔离原则 不应该强迫客户程序依赖并未使用的方法. 这个原则用来处理“胖”接口所存在的缺点.如果类的接口不是内敛的,就表示该类具有“胖”接口.换句话说,类的“胖”接口可以分解成多组 ...
- 敏捷软件开发:原则、模式与实践——第10章 LSP:Liskov替换原则
第10章 LSP:Liskov替换原则 Liskov替换原则:子类型(subtype)必须能够替换掉它们的基类型(base type). 10.1 违反LSP的情形 10.1.1 简单例子 对L ...
随机推荐
- SpringBoot 整合Shiro实现动态权限加载更新+Session共享+单点登录
作者:Sans_ juejin.im/post/5d087d605188256de9779e64 一.说明 Shiro是一个安全框架,项目中主要用它做认证,授权,加密,以及用户的会话管理,虽然Shir ...
- node-express脚手架生成的项目中实现浏览器缓存
前言: 最近在做基于 node-express 的个人站点 朵朵视野 ,在站点发布之后自己在访问测试的过程中发现站点是没有缓存机制的,这样就导致每次访问站点都需要重新去加载资源,很消耗资源以及用户体验 ...
- 好看的鼠标hover效果
0919自我总结 常见的鼠标hover效果 展示效果:http://ianlunn.github.io/Hover/ 部分动画制作 <style><!-- .container { ...
- Linux 资源监控整体分析-TOP
一.top 第一行,任务队列信息,同 uptime 命令的执行结果 系统时间:15:23:10 运行时间:up 236 day,4min, 当前登录用户: 2个 user 负载均衡(uptime) ...
- 松软科技web课堂:SQLServer之MIN() 函数
MIN() 函数 MIN 函数返回一列中的最小值.NULL 值不包括在计算中. SQL MIN() 语法 SELECT MIN(column_name) FROM table_name 注释:MIN ...
- FCC---Create a Gradual CSS Linear Gradient
Applied Visual Design: Create a Gradual CSS Linear Gradient background: linear-gradient(gradient_dir ...
- OC深浅复制
浅复制:指针的复制 深复制:内容的复制 主要有两个关键字 copy 和mutablecopy 对于基本类型 判断深浅方法 1.只要=右边从创建到赋值,至少包含一个NSMutable便会重新生成一个对 ...
- docker-compose 使用自定义网络并绑定 IP
0x00 事件 原先使用了 docker network create mynetwork 的方式创建了自定义网络,在使用 docker-compose 工具运行服务的时候,需要容器使用 mynetw ...
- Redis专题——Redis管理工具
一.安全性 1.运行环境 Redis以简洁为美,其安全性没有太多操作,要求在生产系统中外界不能直接连接Redis进行操作,而必须经过程序中转后,由程序进行操作. 即,redis要求运行在可信的环境中. ...
- Redis 通过 scan 找出不过期的 key
SCAN 命令是一个基于游标的迭代器(cursor based iterator):SCAN 命令每次被调用之后,都会向用户返回一个新的游标,用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游 ...