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)的发生,而人们常从人、事、时、地、物等去描述一个事件的发生情境。

◎ 譬如,吃仙丹就有动作(吃)的对象---仙丹,动作的主角---嫦娥,当然还有地点、时间,甚至仙丹来源等等。

三、模型与代码的关系:

在传统观点里,大多先绘制UML模型图,然后才开始构思程序码的撰写,使得UML建模成为撰写程序码的前置工作,因此许多程序员将UML建模视为多余的负担。为了节省开发成本,就将省略掉UML建模的工作了。在新潮的观点里,UML模型与代码是软件系统本体的两个观点(或面向),两者没有先后顺序关系,而是并存和兼具于同一个人的脑海里。这就像两只眼睛看到的景象并存于一个人的脑海里一般,如此才能看到更真实的世界,也能做出更完美的软件系统来。

时间: 2024-10-13 10:12:51

UML应用:业务内涵的分析抽象&表达的相关文章

业务内涵分析与建模

1.系统分析是分析该领域的专业知识.OOA不是去分析实际的系统,是分析人类对系统的专业认知和做法以此收集到该领域的概念分析出业务内涵.(业务知识) 2.知识的组成 (1)知识由概念组成.领域知识由领域概念组成. (2)概念有其属性,概念之间有其关系. 所以系统分析是分析领域知识的概念并用UML来表示.概念代表一个群体(class),概念对应的实际的东西是对象. 概念细分即继承关系的体现.

基于UML的毕业设计管理系统的分析与设计

基于UML的毕业设计管理系统的分析与设计 <本段与标题无关,自行略过 最近各种忙,天气不错,导师心情不错:"我们要写一个关于UNL的专著",一句话:"一个完整的系统贯穿整个UML的知识":我:"--o---k--".忙里偷闲,先回顾一下吧> 毕业设计是实现本科教学培养目标的重要环节,从选题到答辩一般需要四至六个月的时间,其间工作量很大,尤其需要保留大量的文件,以便于管理者对毕业设计工作进行监督.传统的.人工的方式管理各项事务和文件档案

mariadb 10 多源复制(Multi-source replication) 业务使用场景分析,及使用方法

mariadb 10 多源复制(Multi-source replication) 业务使用场景分析,及使用方法 官方mysql一个slave只能对应一个master,mariadb 10开始支持多源复制,一个slave可以有多个master,分别从各自的master复制不同的DB. 这个特性可以用在OLAP环境中,传统电商DB都是拆了再拆,分库分表,sharding,而OLAP环境或者大数据平台环境,通常需要各种数据的聚合,多个平台多个DB数据的复合查询,而这些数据分散在各个库中,怎么办了,当

MySQL 高可用架构在业务层面的分析研究

前言:         相对于传统行业的相对服务时间9x9x6或者9x12x5,因为互联网电子商务以及互联网游戏的实时性,所以服务要求7*24小时,业务架构不管是应用还是数据库,都需要容灾互备,在mysql的体系中,最好通过在最开始阶段的数据库架构阶段来实现容灾系统.所以这里从业务宏观角度阐述下mysql架构的方方面面. 一,MySQL架构设计-业务分析 (1)读多写少 虚线表示跨机房部署,比如电子商务系统,一个Master既有读也有些写,对读数据一致性需要比较重要的,读要放在Master上面.

【转】MySQL 高可用架构在业务层面的分析研究

原文地址 http://database.51cto.com/art/201507/483463_all.htm 前言: 相对于传统行业的相对服务时间9x9x6或者9x12x5,因为互联网电子商务以及互联网游戏的实时性,所以服务要求7*24小时,业务架构不管是应用还是数据库,都需要容灾互备,在mysql的体系中,最好通过在最开始阶段的数据库架构阶段来实现容灾系统.所以这里从业务宏观角度阐述下mysql架构的方方面面. 一,MySQL架构设计—业务分析 (1)读多写少 虚线表示跨机房部署,比如电子

Cognos 助力业务用户自由分析本地个人数据

说到企业数据分析人员日常打交道最多的数据处理工具,Excel(国内也有很多用户使用WPS)无疑会排在第一的位置.Excel相比于专业的BI报表平台虽无法实现高级的数据分析功能(透视表功能相对来说还是比较复杂),但满足日常的数据统计和图形加上易于传播的特点,使得企业的分析用户都习惯于使用Excel这类的工具来处理一些非海量数据的本地展现和分析工作.很多企业虽然上线了BI平台,仍然有很多用户习惯将大量的报表数据导出为Excel文件(或CSV等文本格式)后进行本地的二次分析和调整. 那么问题来了,这些

业务系统安全分析报告

应用层安全分析 传输层安全分析 网络成安全分析 访问控制安全分析

数据中心业务中断原因分析及业务连续性解决方案

云计算.虚拟化技术广泛运用的今天,为业务进行和维护带来方便的同时,数据中心也面临各种风险.云祺根据全球业务中断事件,以及真实案例总结出,常见的导致数据中心业务中断的三大原因. 一 硬件故障 包括服务器/存储宕机.Raid系统停止工作.内存虚拟驱动器受损等原因. 某云服务商因硬件故障导致服务器不可用数据丢失,联系服务器提供商和多家专业数据恢复公司紧急恢复后,仍多次恢复失败,最后确认数据无法恢复. 随着硬件系统发展的成熟度,针对硬件冗余方案较完善,比如双机热备.存储双活.虚拟化方式等,因硬件故障发生

&lt;十&gt;面向对象分析之UML核心元素之关系

关系        --->在UML中关系是非常重要的语义,它抽象出对象之间的联系,让对象构成特定的结构.        一,关联关系(association) --->关联关系是用一条直线表示的.        --->描述不同类的对象之间的结构关系.它在一段时间内将多个类的实例链接在一起,这与依赖关系是不同的.依赖关系通常表示两个实例之间的临时关联关系.        --->单行关联关系,A知道B的存在,B不知道A的存在.比如UML建模中,参与者知道用例的存在,用例不知道参与