UML应用:业务内涵的分析抽象&表达
上一篇,架构设计的UML图形思考 ,简介了图形思考设计。表达设计对于架构师的重要意义,以及简介了使用统一建模语言UML描写叙述类以及类之间的继承关系,这样的描写叙述还停留在写代码,表达的但是说是怎样写出类代码来,接下来我们要学习用UML表示业务的内涵,分析业务的内涵,加以抽象,将细节隐藏起来,用UML图象表现出来。
一、系统分析
什么是系统分析?
大多数情况下,一看到系统分析这个字眼。我们常常迷失于其字面的意义,以为分析的对象是「系统」。这是一种常见的迷失!
事实上。分析的对象是系统所处的「业务领域知识」(Domain Knowledge)才是正确的。就如同计算机专家James Martin所说:
「OOA不是要去分析实际的系统。而是用来分析人们对系统的专业认知和做法---- 从收集到的领域概念来分析出业务内涵。」
(Object-oriented analysis is not an approach that models reality. Instead, it models the way people understand and process reality -- through the concepts they acquire.)
系统分析的分析对象:领域知识
所以系统分析的主要对象并不是「系统」本身。而是分析专家们怎样以其专业知识来叙述系统。亦即。专家心中的「业务(领域)知识」才是系统分析的主要对象。
所以焦点是业务知识(Domain Knowledge) ,而不是系统。
业务(领域)知识 = 业务内涵:
分析系统的内涵,抽象,表达。让开发人员懂得业务的内涵
根据专业知识找到对应的类。对应的对象,用UML表达出来
知识的组成元素:概念
什么是概念:
业务(领域)概念
知识的组成要素是「概念」(Concepts)。
◎ 领域知识(Domain Knowledge)的组成要素是领域概念(Domain Concepts)。
◎ 概念有它的属性(Attribute)。概念之间有其关系(Relationship)。
◎ 系统分析(或OOA)就是要分析领域知识里的概念。并以UML的类别(Class)等示来表示之。
概念(Concept)是抽象的。代表一群实体。是沟通的重要媒介。
「概念是人人互相分享的。概念提供了能让人人互相了解的共通词汇。」
(Concepts are shared by others. Concepts provide the common vocabulary for communication.)
概念理解实例:
概念理解举例:
比如:「请买杯咖啡」,咖啡是个概念,具有这样的概念的人。都会了解这句话的意思。
他会凭其经验而想到真实的咖啡。
◎ 概念代表一个群体---- 「类别」(Class)。人们藉由天赋的能力运用经验去想到其所代表的实际东西---- 「对象」(Object)。
比如您听到「买一仅仅吉他」。这「吉他」概念让您想到经验中的吉他,而去乐器行买一仅仅「真实的吉他」回家。
找出领域知识里的概念,就是找出软件系统的对象和类别。
◎ 比如麦当劳企业有汉堡、薯条、玩具、特餐、点餐、订购玩具、顾客、员工、玩具商、分店等等的概念,将相应到软件系统的类别,所以在麦当劳的软件系统里就会有汉堡、薯条、玩具、特餐、点餐、订购玩具、顾客、员工、玩具商、分店等等的类别。
二、建模举例
嫦娥奔月:
『后羿从西王母处请来不死之药,嫦娥偷吃了这颗灵药。成仙了。身不由主飘飘然地飞往月宫之中。在那荒凉的月宫之中度着无边的寂寞岁月。』
尽管嫦娥可能是传说虚构的,并不是事实(Reality),可是确确实实是我们心中的清晰概念,传说中的主角。所以是个重要的类别,表演示样例如以下:
跟「嫦娥」具有密切关联的概念是:月亮
和仙丹,常表达例如以下:
不仅上述的名词概念而已,其攸关的动作也常是重要概念。动词经常代表一项事件(Event)的发生。而人们常从人、事、时、地、物等去描写叙述一个事件的发生情境。
◎ 譬如。吃仙丹就有动作(吃)的对象---仙丹,动作的主角---嫦娥。当然还有地点、时间。甚至仙丹来源等等。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZmVpdmlwOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
三、模型与代码的关系:
在传统观点里,大多先绘制UML模型图,然后才開始构思程序码的撰写。使得UML建模成为撰敲代码码的前置工作,因此很多程序猿将UML建模视为多余的负担。为了节省开发成本。就将省略掉UML建模的工作了。在新潮的观点里,UML模型与代码是软件系统本体的两个观点(或面向)。两者没有先后顺序关系,而是并存和兼具于同一个人的脑海里。
这就像两仅仅眼睛看到的景象并存于一个人的脑海里一般。如此才干看到更真实的世界。也能做出更完美的软件系统来。
UML应用:业务内涵的分析抽象&表达的更多相关文章
- 使用 UML 进行业务建模:理解业务用例与系统用例的相似和不同之处
使用 UML 进行业务建模:理解业务用例与系统用例的相似和不同之处 作者:Arthur V. English 出处:IBM 本文内容包括: 背景 业务用例模型与系统用例模型有什么相似之处? 业 ...
- 基于 UML 的业务建模举例
简介: 对于管理流程咨询项目.大型信息化建设项目和套装管理软件实施项目,对业务环境的分析和理解对项目的成功至关重要.系统.全面理解 IT 系统所处的业务环境,可以帮助 IT 系统能提供正确系统功能,并 ...
- 基于UML的毕业设计管理系统的分析与设计
基于UML的毕业设计管理系统的分析与设计 <本段与标题无关,自行略过 最近各种忙,天气不错,导师心情不错:“我们要写一个关于UML的专著”,一句话:“一个完整的系统贯穿整个UML的知识”:我:“ ...
- mariadb 10 多源复制(Multi-source replication) 业务使用场景分析,及使用方法
mariadb 10 多源复制(Multi-source replication) 业务使用场景分析,及使用方法 官方mysql一个slave只能对应一个master,mariadb 10开始支持多源 ...
- 【转】MySQL 高可用架构在业务层面的分析研究
原文地址 http://database.51cto.com/art/201507/483463_all.htm 前言: 相对于传统行业的相对服务时间9x9x6或者9x12x5,因为互联网电子商务以及 ...
- MySQL 高可用架构在业务层面细化分析研究
相对于传统行业的相对服务时间9x9x6或者9x12x5,由于互联网电子商务以及互联网游戏的实时性,所以服务要求7*24小时,业务架构无论是应用还是数据库,都须要容灾互备.在mysql的体系中,最好通过 ...
- Netflix业务运维分析和总结
目录 Netflix工作环境的分析和思考 为什么Netflix会做得如此极致? 海量业务规模下的技术架构和挑战 更加合理的组织架构和先进的工具体系及理念 自由与责任并存的企业文化 当前问题: 精选提问 ...
- 内存回收导致关键业务抖动案例分析-论云原生OS内存QoS保障
蒋彪,腾讯云高级工程师,10+年专注于操作系统相关技术,Linux内核资深发烧友.目前负责腾讯云原生OS的研发,以及OS/虚拟化的性能优化工作. 导语 云原生场景,相比于传统的IDC场景,业务更加复杂 ...
- Jenkins 子业务日志拆分分析方法
需求 Jenkins日志打印内容很长,或者并发编译导致,日志内容不容易查看. 对于具体业务失败, 开发者希望看到具体业务自身的日志内容. 解法 tee 命令能够保证, shell命令执行的内容,即往控 ...
随机推荐
- Hybrid App开发者一定不要错过的框架和工具
最近开始给网站的移动版本做技术选型,发现了很多好玩的东西,写出来给大家分享下. ionicFramework 我是hybrid app的忠实粉丝和大力倡导者,从 新浪移动云开始就不断的寻找能帮助Web ...
- MAC Python环境配置以及安装Pycharm 5.4.0
安装XCODE 去APP STORE下载,然后安装.免费 终端执行 xcode-select --install 安装或更新命令行开发工具 安装Pycharm 下载软件 官网:https://www. ...
- Hibernate中的多对多关系详解(3)
前面两节我们讲到了一对一的关系,一对多,多对一的关系,相对来说,是比较简单的,但有时,我们也会遇到多对多的关系,比如说:角色与权限的关系,就是典型的多对多的关系,因此,我有必要对这种关系详解,以便大家 ...
- 关于mysql授权账号权限时的空密码问题
-root ~]$ mysql -uroot -p Enter password:ERROR 1045 (28000): Access denied for user ‘root’@'localhos ...
- [Quote]Creating basic Excel workbook with Open XML
Creating basic Excel workbook with Open XML [Quote from]http://www.codeproject.com/Articles/371203/C ...
- input text 不可编辑的解决办法
<div class="inp bg"> <input id="inp-query" type="text" name=& ...
- ExecutorService介绍
转自: http://victorzhzh.iteye.com/blog/1010359 下面是excutor相关的类结果: ExecutorService接口继承了Executor接口,定义了一些生 ...
- mongodb 查看数据库和表大小
1.查看数据库 > db.stats(); { "db" : "test", //当前数据库 "collections" : 3, / ...
- QImage与QPixmap加载图片效果(QImage不能拉伸图片,QPixmap默认拉伸图片)
QImage与QPixmap加载图片 效果 . 分类: QT开发 qtQtQT PixmapTest::PixmapTest(QWidget *parent) : QDialog(parent) {t ...
- UVA 11624 Fire!(二次BFS)
先对火BFS一次,求出每个点的最小着火时间. 再对人BFS一次,求出走到边界的最少时间. #include <iostream> #include <queue> #inclu ...