UML的奥妙 - 学习UML笔记(1)

 

前两天买了一本《大象 Thinking in UML》,其实本就有学习UML的念头,但都因这样那样的事儿耽搁了,当然,也有些惰性在作祟......

闲话少说,这本书看完了一章,发现还是不错的,先把这两天的学习情况总结一下:

一、UML来龙去脉的第一章:

从现实情况而言,面向过程方法在复杂度不是很大的项目中应该说是适用的,但是对于规模较大、复杂度较高的项目而言,应该尽可能考虑面向对象的方法,也就是OOA/OOD/OOP。

=>说明方法方式是死的,活学活用+实践总结才是正解。

面向对象的方法的重点和难点在于抽象、如何抽象才能贴近现实之需?我们需要解决及面对以下三点问题:

1)现实环境怎样映射到对象环境?

2)用对象的角度怎样来描述现实环境?

3)怎样验证对象环境的描述是正确反映了现实环境的实际的?

当然,答案就是UML,确切地说,UML是工具,我个人觉得作者应该在这个时侯先不紧跟着就提UML,应该先说说RUP,在说UML会比较好。我的理解是:要回答上述三个问题,答案应该是各种软件工程方法,比如RUP,同时运用的工具是UML,这么理解比较好。

UML中,有用例(use case)、类、包等等,称之为元模型;规则和图形称之为表示法或视图(View)。

一般整个建模的过程是:

1)先从现实世界->业务模型:

 整个面向对象方法围绕这这四个基本因素:人、事、物以及规则。

 这时候用例即事(要实现的业务目标),参与者(actor)即人,业务场景(business scenario)和用例场景(use case scenario)是规则,业务对象模型(business object model)是物。

2)业务模型->概念模型:

上面的业务模型就是开始,得到了业务模型后,要把业务模型转换为计算机能够理解的模型:先过渡到概念模型吧。

UML通过概念化的过程(conceptual)建立分析模型,分析模型向上映射了原始需求,向下为计算机实现规定了高层次的抽象,承上启下。

人:用户,边界类(boundary):事,实体类(entity):物,控制类(control):规则。

概念模型描绘出了软件蓝图,比如造汽车,已经在图纸上绘制了汽车所有的零部件,以及如何组装这些零部件的步骤。

3)概念模型->设计模型:

汽车蓝图描绘出来后,就是样建造零部件,以及生产汽车了。

从软件开发角度而言,就是要把概念模型实例化,实例化的情况因使用的技术不同而不同,如选择的软件架构和框架、选择的语言实现、中间件等等,不同的技术有不同的实现,这很容易理解。

 

经过上述3个步骤,就回答了前面的三个问题,就是贯穿各个阶段,使用UML工具来加于辅助解决。

接下来介绍RUP:统一过程。

说明了RUP和UML的关系,是紧密的,但不是一回事儿,这很重要,RUP是一个软件开发过程中的庞大知识体系,是内功,UML是语言,是招式或武器,RUP中大量使用UML,但UML并不是只能在RUP中使用。

好了,今天先到这里吧,后面继续......

 


转载于:https://www.cnblogs.com/junxiang/archive/2008/12/14/1354794.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无法检查指定的位置是否位于cfs上_(干货分享)一文搞明白 节气门位置传感器的作用、故障类型与症状、诊断方法...

1 位置节气门位置传感器(ThrottlePositionSensor,TPS),位于节气门体上,其安装形式因节气门结构的不同而有所差异:对于传统的机械拉索式节气门,节气门位置传感器通常以一个独立元件的形式安装在节气门体的侧面&#xf…

盒子模型

1 <!doctype html>2 <html>3 <head>4 <title>盒子模型</title>5 <meta charset"utf-8">6 <meta name"keywords", content"">7 <meta name"description&…

表单跨域提交

利用form表单跨域post 现在ajax应用这么广泛&#xff0c;一般的应用都是直接通过异步调用就可以了&#xff0c;但是有些东西必须要使用post&#xff0c;而且是跨域的时候&#xff0c;ajax异步调用的方式就无能为力了。当然现在也有很多种办法&#xff0c;比如通过flash中转去po…

Asp.net(C#)-显示所有缓存 清除所有缓存

//清除所有缓存protectedvoidRemoveAllCache() { System.Web.Caching.Cache _cache HttpRuntime.Cache; IDictionaryEnumerator CacheEnum _cache.GetEnumerator(); ArrayList al new ArrayList(); while (CacheEnum.MoveNext()) { …

mysql数据库三大引擎优缺点

1.MyISAM 特性&#xff1a; ①不支持事务。 ②表级锁定&#xff0c;并发性能大大降低。 ③读写互相阻塞。 适用场景&#xff1a; ①不支持事务。 ②并发相对较低&#xff0c;表锁定。 ③执行大量select语句操作的表。 ④count(*)操作较快。 ⑤不支持外键。 注&#xff1a;查询速…

Python--day60--一个简单(不完整)的web框架

转载于:https://www.cnblogs.com/xudj/p/10091775.html

activemq 发两条只收到一条_浅谈ActiveMQ与使用

更多大数据架构、实战经验&#xff0c;欢迎关注【大数据每日哔哔】&#xff0c;期待与你一起成长&#xff01;本文将介绍一下 ActiveMQ 的安装、原理和简单实战。一、什么是消息中间件消息中间件顾名思义实现的就是在两个系统或两个客户端之间进行消息传送二、什么是ActiveMQAc…

php发送get、post请求的几种方法

方法1: 用file_get_contents 以get方式获取内容 <?php $urlhttp://www.domain.com/; $html file_get_contents($url); echo $html; ?>方法2: 用fopen打开url, 以get方式获取内容<?php $fp fopen($url, r); stream_get_meta_data($fp); while(!feof($fp)) { $res…

ZZ:深入理解new

new的过程当我们使用关键字new在堆上动态创建一个对象时&#xff0c;它实际上做了三件事&#xff1a;获得一块内存空间、调用构造函数、返回正确的指针。当然&#xff0c;如果我们创建的是简单类型的变量&#xff0c;那么第二步会被省略。假如我们定义了如下一个类A&#xff1a…

mysql数据库的优缺点

优点1. 通常存储过程 标题有助于提高应用程序的性能。因为当你创建他的时候就已经编译了&#xff0c;只不过是按需编译的。2.存储过程有助于减少应用程序和数据库服务器之间的流量&#xff0c;因为应用程序不必发送多个冗长的SQL语句&#xff0c;而只能发送存储过程的名称和参数…

大数据小白系列——HDFS(1)

【注1&#xff1a;结尾有大福利&#xff01;】 【注2&#xff1a;想写一个大数据小白系列&#xff0c;介绍大数据生态系统中的主要成员&#xff0c;理解其原理&#xff0c;明白其用途&#xff0c;万一有用呢&#xff0c;对不对。】 大数据是什么&#xff1f;抛开那些高大上但笼…

PHP检测远端文件是否存在

简单解释一下上面的代码。get_headers的作用就是访问一个远程地址&#xff0c;把服务器发送的HTTP头以数组形式返回。而$header[0]则是服务器返回的状态码&#xff08;如果不出意外的话状态码应该都是第一个返回的&#xff09;。 要确定一个文件在远端服务器上存在&#xff0c…

C#中使用DTS来导入数据及相关问题

向Sql 中导入Excel数据时&#xff0c;使用MS SQL的DTS功能 可以很方便的导入&#xff0c;同时引用Dll文件&#xff0c;可以在程序中对导入过程进行控制。 创建DTS包的过程如下&#xff1a; &#xff11;。在&#xff33;&#xff31;&#xff2c;企业管理器中&#xff0c;工具菜…

html select选择事件_一道搜狗面试题:IO多路复用中select、poll、epoll之间的区别...

(1)select>时间复杂度O(n)它仅仅知道了&#xff0c;有I/O事件发生了&#xff0c;却并不知道是哪那几个流(可能有一个&#xff0c;多个&#xff0c;甚至全部)&#xff0c;我们只能无差别轮询所有流&#xff0c;找出能读出数据&#xff0c;或者写入数据的流&#xff0c;对他们…

【MySQL】redo log --- 刷入磁盘过程

1、redo log基本概念 redo log的相关概念这里就不再过多阐述&#xff0c;网上有非常多的好的资料&#xff0c;可以看下缥缈大神的文章&#xff1a;https://www.cnblogs.com/cuisi/p/6525077.html&#xff0c;个人感觉介绍的非常详细。 2、数据更改过程简述 MySQL 在更新数据的时…

WPF DataGrid根据内容设置行颜色

转&#xff1a; https://code.4noobz.net/wpf-change-color-of-a-row-in-a-datagrid-depending-on-the-value/ 转载于:https://www.cnblogs.com/Mindy-hym/p/11475024.html

QQ web api

QQ的很多功能和信息可以通过web方式获得&#xff5e;以下链接&#xff0c;星号应换成你要查询的QQ号一、Activities Previewhttp://labs.qq.com/ie8/preview/?uin******二、QQ空间访问次数查询&#xff08;需权限&#xff09;http://g.qzone.qq.com/fcg-bin/cgi_emotion_list.…

delphi tclientsocket接收不到返回数据_RS—485中教你主站发送报文结构、从站返回报文结构?系列11...

作者&#xff1a;马乐1.主站发送报文结构大家可以看到我之前写的文章中的程序都是没有什么具体功能的&#xff0c;都是两个站点之间互相传递数据&#xff0c;这些数据我们只是看看是否可以正常接收发送&#xff0c;数据本身是没有任何含义的。很明显在实际使用过程中我们是不会…

MybatisPlus 通用枚举无法正确取值

正常使用mybatisplus <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.4</version></dependency> 使用后发现项目中原先对枚举值的转换存在异常&#xff1a; ER…

零基础学习 Python 之条件语句

写在之前 我们写程序&#xff0c;就好比学生时代写作文一样&#xff0c;由 “字” 到 “词” 到 “句” 最后到 “文章” 。此前我们学会了一些词语&#xff08;对象类型&#xff09;&#xff0c;我们接下来就是学如何造句&#xff0c;而在编程语言里&#xff0c;句子被叫做语句…