什么是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的更多相关文章

  1. <数据挖掘导论>读书笔记11异常检测

    异常检测的目标是发现与大部分其他对象不同的对象.通常,异常对象被称作离群点(Outlier). 异常检测也称偏差检测(Deviation detection),因为异常对象的属性值明显偏离期望的或者常 ...

  2. <数据挖掘导论>读书笔记10聚类分析续

    基于原型的聚类 模糊c均值使用模糊逻辑和模糊集合论的概念,提出一种聚类方案,它很像K均值,但是不需要硬性地将对象分派到一个簇中.模糊c均值算法有时也称为FCM 混合模型聚类采取这样的访谈,簇集合可以用 ...

  3. <数据挖掘导论>读书笔记9聚类分析

    1. 聚类分析仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组. 其目标是组内的对象相互之间是相似的或者相关的,而不同组中的对象是不同的或者不相关的. 2.聚类分析的重要技术 K均值:K均值 ...

  4. <数据挖掘导论>读书笔记8FP树

    1FP树

  5. <数据挖掘导论>读书笔记7 Apriori算法

    Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法.其核心是基于两阶段频集思想的递推算法.该关联规则在分类上属于单维.单层.布尔关联规则.在这里,所有支持度大于最小支持度的项集称为频繁项 ...

  6. <数据挖掘导论>读书笔记4--其他分类技术

    1.基于规则的分类器 2.最近邻分类器 3.贝叶斯分类器 4.人工神经网络 5.支持向量机 6.组合方法 7.不平衡类问题 8.多类问题

  7. <数据挖掘导论>读书笔记6关联分析的高级概念

    处理联系属性: 基于离散化的方法 基于统计学的方法 非离散化方法 处理概念分层 定义在一个特定领域的各种实体或者概念的多层组织.概念分层可以用有向无环图DAG来标示. 序列模式 可选计数方案 COBJ ...

  8. <数据挖掘导论>读书笔记5关联分析的基本概念和算法

    关联规则的强度可以用support度和confidence(置信)度来度量 关联规则发现  给定事务的集合T,关联规则发现是指找出支持度大于等于minsup并且置信度大于等于minconf的所有规则, ...

  9. <数据挖掘导论>读书笔记3--分类

    1.分类的基本概念 分类任务就是通过学习得到一个目标函数f,把每个属性集x映射到一个预先定义的类标号y 目标函数也称为分类模型. 2. 解决分类问题的一般方法: 决策树分类法 基于规则的分类法 神经网 ...

  10. <数据挖掘导论>读书笔记2

    1.频率和众数 frequency(vi)=具有属性值vi的对象数/m 分类属性的众数mode是具有最高频率的值. 2.百分位数 3.位置度量:均值和中位数 4.散布度量:极差和方差 绝对平均偏差 A ...

随机推荐

  1. wcf服务与web发布时无法访问 几种解决办法

    1   如果wcf服务与web发布在同一iis目录下,没有跨域的问题   但发布前要修改 ServiceReferences.ClientConfig 把wcf服务地址改为你发布后的iis的ip地址( ...

  2. Dynamics AX 2012 R3 Demo 安装与配置 - 编译和配置 (Step 3)

        在前两节中,Reinhard主要讲解了如何配置安装环境,安装数据库服务器,AOS和客户端.至此安装工作已经结束,下面Reinhard开始讲解如何编译和配置.     运行客户端后,系统弹出初始 ...

  3. yii2框架原生的结合框架使用的图片上传

    首先我们要从model层开始写起,主要是为了创建验证规则,还有图片上传的路径以及图片的命名规则(UploadForm.php) 接下来我们要在控制器层写好业务逻辑,就是什么情况下直接在调用model层 ...

  4. map函数

    概述 map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组. 语法 array.map(callback[, thisArg]) 参数 callback 原数组中的元素经 ...

  5. kibana安装与基础用法

    来自官网,版本为4.5 下载rpm包并安装 wget -c https://download.elastic.co/kibana/kibana/kibana-4.5.4-1.x86_64.rpm rp ...

  6. hadoop2.0初识1.1

    1.伪分布式hdfs文件系统的搭建(单节点文件系统) 1.1.根据上节的讲解,配置主机映射.jdk和解压hadoop压缩包 1.2.配置namenode 在/opt/modules/hadoop-2. ...

  7. Reapter合并行

    html文件: <asp:Repeater ID="rptEmployee" runat="server"> <HeaderTemplate& ...

  8. 《BI那点儿事》三国数据分析系列——蜀汉五虎上将与魏五子良将武力分析,绝对的经典分析

    献给广大的三国爱好者们,希望喜欢三国的朋友一起讨论,加深对传奇三国时代的了解 数据分析基础概念:集中趋势分析是指在大量测评数据分布中,测评数据向某点集中的情况.总体(population)是指客观存在 ...

  9. Python之SQLAlchemy学习--外键约束问题

    以下问题赞为解决: # class User(Base):# __tablename__ = 'user'# #表的结构# id = Column(String(20), primary_key=Tr ...

  10. css+div打造三角形(箭头)

    在很多网站都见过这样的箭头,之前我一直以为是图片,直到今天才知道原来可以用css做.开始看代码没太看懂,后来自己试了几遍才恍然大悟.贴出来分享下.(大神请直接忽略) 先看代码: HTML部分就是一个单 ...