《大象-Think In UML》读书笔记2
什么是UML?
UML本身并没有包含软件方法,而仅仅是一种语言,一种建模用的语言,而所有的语言都是基本词汇和语法两部分构成的,UML也不例外。UML中定义了一些建立模型所需要的、表达某种特定含义的基本元素:这些元素称为元模型,相当于语言中的基本词汇,例如用例、类等。另外,UML还定义了这些元模型互相之间关系的规则,以及如何用这些元素和规则绘制图形以建立模型来映射实现世界;这些规则和图形称为表示法或视图,相当于语言中的语法。UML语言与其他自然语言和编程语言在原理上并无多大差别,无非是UML这种语言是用来写说明文的,用自然世界和计算机逻辑都能够理解的表达方法来说明现实世界。
如果以写文章来类比的话,学习UML只是学会了一门语言,而要写出一篇精彩的文章,却要依靠写作人对生活的感悟和升华,这两者缺一不可。
为什么要统一语言?
软件开发工作中将角色细分,将职责明确的做法,在提高专业化和资源效率的同时也带来了严重的沟通问题。加入承包商采用一种自己的方法来做需求,设计团队由于不熟悉这种方法,在理解需求文档的过程中就会产生误解;如果编码团队也不熟悉设计师的设计文档,很容易再次产生信息歧义。文档从一个角色传向另一个角色,从一个组织传向另一个组织的过程中如何保证信息被准确的传达和准确的理解呢?一种好办法就是大家都使用统一的或者说标准化的语言。UML统一建模雨颜的意义也正在于此,它试图用统一的语言来覆盖整个软件过程,让不同的团队操着同一个口音顺畅地沟通。
统一语言的另一个意义是要让人和机器都能读懂。
谈到UML就不能不谈到统一过程,即RUP。UML和RUP师出同门,尽管目前任有许多其他的建模方法,不过RUP任然是其中对UML使用最为全面的,同时也是最为复杂的。
什么是RUP?
严格来说UML并不是一个方法,而是一种语言,UML定义了基本元素,定义了语法,但是如果要做一个软件项目,还需要有方法的知道,正如写文章有文法,有五言律,有七言律一样,UML也需要有方法的知道来完成一个软件项目。RUP无疑是目前与UML集成和应用最好,最完整的软件方法。
RUP译为统一过程。统一过程并非是因为UML才诞生,也不是最近才出来的软件方法,而是有着很长时间的发展,有着很深的根源。统一过程归纳和整理了很多在实践中总结出来的软件工程的最佳实践。是一个采用了面向对象思想,使用UML作为软件分析设计语言,并且结合了项目管理、质量保证等许多软件工程知识综合而成的一个非常完整和庞大的软件方法。统一过程经过了三十多年发展,和统一过程本身所推崇的迭代方法一样,统一过程这个产品本身也经历了很多次的迭代和演进,才最终退出了现在这个版本。
统一过程归纳和集成了软件开发活动中的最佳实践,它定义了软件开发过程中最重要的阶段和工作(四个阶段和九个核心工作流),定义了参与软件开发过程的各种角色和他们的职责,还定义了软件生产过程中产生的工作,并提供了模板。最后,采用演进式软件生命周期(迭代)将工作、角色和成果物串在一起,形成了统一过程。
如果说一曲美妙的乐章是作曲家根据音乐理论进行创作最后用标准的五线谱记录下来,相信不会有什么疑问。实际上RUP和UML的关系正类似音乐理论和五线谱的关系。
从本质上来说,统一过程和UML是不同的两个领域。UML是一种语言,用来描述软件生产过程中要产生的文档,统一过程则是知道如何产生这些文档以及这些文档要讲述什么的方法。虽然现在统一过程是指导UML的方法中最著名、应用最广、可能也是最成功的一个,但这两者却不是完全不可以分开的。
对软件项目来说,面向对象也好,面向过程也好,UML也好,UC矩阵也好,这些都不是最重要的,软件项目真正的灵魂是软件过程,软件过程的需要才是这些工具和语言诞生的原因。
《大象-Think In UML》读书笔记2的更多相关文章
- <数据挖掘导论>读书笔记11异常检测
异常检测的目标是发现与大部分其他对象不同的对象.通常,异常对象被称作离群点(Outlier). 异常检测也称偏差检测(Deviation detection),因为异常对象的属性值明显偏离期望的或者常 ...
- <数据挖掘导论>读书笔记10聚类分析续
基于原型的聚类 模糊c均值使用模糊逻辑和模糊集合论的概念,提出一种聚类方案,它很像K均值,但是不需要硬性地将对象分派到一个簇中.模糊c均值算法有时也称为FCM 混合模型聚类采取这样的访谈,簇集合可以用 ...
- <数据挖掘导论>读书笔记9聚类分析
1. 聚类分析仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组. 其目标是组内的对象相互之间是相似的或者相关的,而不同组中的对象是不同的或者不相关的. 2.聚类分析的重要技术 K均值:K均值 ...
- <数据挖掘导论>读书笔记8FP树
1FP树
- <数据挖掘导论>读书笔记7 Apriori算法
Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法.其核心是基于两阶段频集思想的递推算法.该关联规则在分类上属于单维.单层.布尔关联规则.在这里,所有支持度大于最小支持度的项集称为频繁项 ...
- <数据挖掘导论>读书笔记4--其他分类技术
1.基于规则的分类器 2.最近邻分类器 3.贝叶斯分类器 4.人工神经网络 5.支持向量机 6.组合方法 7.不平衡类问题 8.多类问题
- <数据挖掘导论>读书笔记6关联分析的高级概念
处理联系属性: 基于离散化的方法 基于统计学的方法 非离散化方法 处理概念分层 定义在一个特定领域的各种实体或者概念的多层组织.概念分层可以用有向无环图DAG来标示. 序列模式 可选计数方案 COBJ ...
- <数据挖掘导论>读书笔记5关联分析的基本概念和算法
关联规则的强度可以用support度和confidence(置信)度来度量 关联规则发现 给定事务的集合T,关联规则发现是指找出支持度大于等于minsup并且置信度大于等于minconf的所有规则, ...
- <数据挖掘导论>读书笔记3--分类
1.分类的基本概念 分类任务就是通过学习得到一个目标函数f,把每个属性集x映射到一个预先定义的类标号y 目标函数也称为分类模型. 2. 解决分类问题的一般方法: 决策树分类法 基于规则的分类法 神经网 ...
- <数据挖掘导论>读书笔记2
1.频率和众数 frequency(vi)=具有属性值vi的对象数/m 分类属性的众数mode是具有最高频率的值. 2.百分位数 3.位置度量:均值和中位数 4.散布度量:极差和方差 绝对平均偏差 A ...
随机推荐
- Fragment的隐藏与显示
package com.bwie.helpdemo; import com.bwie.fragment.BillFrag; import com.bwie.fragment.IndexFrag; im ...
- 混合使用 ForkJoin, Akka, Future 实现一千万个不重复整数的排序
定位 本文适合于想要了解新语言 Scala 以及异步并发编程框架 Akka, Future 的筒鞋. 读完本文后,将了解如何使用 ForkJoin 框架.如何使用 Akka 构建并发程序.如何使用 ...
- SVN merge的主干,分支的相互合并操作
本文只研究了 在本地如何进行主干,分支的相互合并 的操作:从主干到分支,从分支到主干. 本地客户端工具是tortoisesvn 测试用例. 1.本地添加test文件夹 在test文件夹下分别建立tru ...
- 剑指offer——变态跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 问题分析 由于每次跳的阶数不确定,没有一个固定的规律,但是可以了解的是后一次跳 ...
- [已解决]Eclipse 插件Maven在使用 add dependency,找不到包,解决办法
以Eclipse版本[Version: Luna Release (4.4.0),]为例, 依次打开:Window >show view > other > Maven Reposi ...
- jQuery 效果 —— 隐藏和显示
jQuery 效果 -- 隐藏和显示 1.隐藏和显示 (1)在jQuery中我们可以使用hide()和show()分别隐藏和显示HTML元素: //隐藏元素 $("button") ...
- EFS加密解密----重装系统后
重装系统尤其是格式化重装系统之后,如果没有正确地备份私钥,那么加密的文件将无法打开,加密的文件也暂时没有办法进行快速破解. 并非重装后用相同用户名+密码就可以解密的. Advanced EFS Dat ...
- 【Android】Spinner使用
Spinner:下拉列表,主要用于显示一些选项供用户选择,类似PC应用程序里面的Combobox. 使用Spinner需要以下条件: 1.一个 Spinner 控件 2.数据 3.一个Adapter ...
- 《BI那点儿事》数据流转换——逆透视转换
逆透视转换将来自单个记录中多个列的值扩展为单个列中具有同样值的多个记录,使得非规范的数据集成为较规范的版本.例如,每个客户在列出客户名的数据集中各占一行,在该行的各列中显示购买的产品和数量.逆透视转换 ...
- Gradle build设置自动log开关
应用场景 通常情况下我们的apps发布后也就是release模式下log是不显示的,debug模式下是显示log的,但是在特殊情况下我们测试release包的时候需要log的时候,就无法使用Build ...