敏捷软件开发_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 ...
随机推荐
- Linux下离线安装python项目的依赖包
第一步新建一个site-packages文件夹,把python项目有需要的依赖包名称导出到site-packages下的requirements.txt中 $ pip3 freeze > req ...
- HTML中的三元表达式,灵活的使用or逻辑判断
08.27自我总结 HTML中的三元表达式 判断内容 ? 满足返回的值 : 不满足返回的值 灵活使用or逻辑判断 比如我们某个变量为空的时候返回他另外个值 var a = msg || '没有消息'
- Java从入门到精通系统书籍,吐血整理的,只要1元
思诚为修身之本,而明善又为思诚之本 我会在支付宝联系你 付完款后在支付宝账单详情页 点击联系收款方.我会回复您下载链接.
- rman备份有效性验证/恢复进度监控
故障一定会发生,只是早晚的问题!作为一名DBA时刻要记着备份,备份的有效性同样重要,不要当某一天最需要的时候,发现悲剧了...验证rman备份是否可以成功还原,11g后可以通过命令验证但,验证全备份一 ...
- SQL Server存储过程数据库日志文件备份的脚本-干货
还是拿数据库AAAAAAAA为例子 CREATE PROC [dbo].[p_log_backupAAAAAAAA] @dbname sysname='', ...
- Resolving RMAN-06023 or RMAN-06025 (Doc ID 2038119.1)
Resolving RMAN-06023 or RMAN-06025 (Doc ID 2038119.1) APPLIES TO: Oracle Database - Enterprise Editi ...
- go语言设计模式之abstract factory
这个代码太多了,调了一晚上. 只能立图证明我测试通过了哈. 真的是工厂的工厂,有点深.
- linux下编译时的默认库和头文件搜索路径
链接库路径 默认的链接库路径,定义在搜索/etc/ld.so.conf下的一些路径,其包含了一些重要的系统位置:LIBRARY_PATH, 但如果定义了LD_LIBRARY_PATH, 动态库的搜索路 ...
- es6 Iterator和for...of循环
javascript表示集合的数据结构有 es5: array object es6: map set, 一共4种数据集合 需要一种统一的接口机制来处理所有不同的数据结构 遍历器就是这样一种机制,它是 ...
- Flask/Tornado/Django
深入学习Python ,用Django做Web后端开发现在Python的用途愈来愈广,服务器.Web.游戏.爬虫.数据分析 以及人工智能 学习之路还很长 技术之路 不能回头 陷进去 就出不来 就跟恋 ...