.Net企业级应用架构设计之UML

这篇博客之所讲UML出现在了《Microsoft.Net企业级应用架构设计》一书的第二章,从架构上讲不应该出现这节知识点,但是从架构师的职责角度,UML知识点是一个基础,因此作者独立出了一个章节。大家在学生时代都有学习和接触过UML,那就当作是对于UML的复习了。

若想设计一个系统,无论是任何领域的任何系统,都需要首先对其抽象,抽象就是指建立一个模型,对系统视图、结构、行为、参与的实体和流程方面提供概念上的描述。模型可以提供给项目干系人,项目干系人也必须要理解模型,从而提供反馈,指出错误并给出改进建议。若想让模型能够被人理解,则需要以正式的方式,使用已被广泛接收的标记来给出。因此,我们需要一种建模语言。

在当今建模语言中,最流行的当属统一建模语言(Unified Modeling Language,UML)。UML是一种通用的图形化建模语言UML非常适合面向对象系统。还是学生时代学习和使用过,再后来的工作中从我个人而言用到的也比较少。但是建模对于任何软件项目来说都是核心步骤,对于大型的企业级应用程序老说,其作用更不容忽视。

UML的缺点和优点都来源于其名称中的“U”,即统一。换句话说,UML正尝试为所有的人解决所有的问题。因为其声明的宽泛性,UML几乎可用于计算机相关的所有领域,但事实上并不是每个领域它都能游刃有余。

当前UML主要存在两个版本,但仅有一个被承认为国际标准。回溯到2005年,ISO将UML的1.4.2版本认可为ISO标准。UML作为一种描述(包括可视化、具体化、构造说明和编写文档等)软件密集型系统的图形化语言,已经成为了软件系统设计规划的标准做法。目前的UML版本已经更新到了2.1.2,不过这个版本目前还没有成为ISO标准。

这两个版本之间的区别在于,UML1.x是一种比较简单的语言,主要用来为类和对象建模。而UML2.x则跳出了限制,不仅能够描述行为模型,还可以描述架构模型以及业务流程和规则。2.x版本中,UML不再局限于成为面向对象建模语言,而是把触角伸到了其他计算机领域,并且2.x中的特性描述提出了将UML应用到特定领域中的首个构想。

插播一段广告,通过UML的两个版本让我联想到了HTML5前段时间的故事。在 HTML5 标准上合作的标准制定组织 WHATWG 和 W3C 分崩离析了。WHATWG 宣布正在为 HTML 制定一个活的标准,它将随着新技术的加入而不断进化。而W3C则依旧采用传统的方法制定传统的标准,需要耗费许多时间。与 W3C 保守迟缓的做法相比,WHATWG能更快的为 HTML5 引入新技术。HTML5的未来变得复杂起来。

这就好比某个国家(和谐)的计算机教科书,我承认基础的东西是学习的基石,但与时俱进同样重要。我个人有一个歪理:一个国家的计算机走势代表了这个国家的整体走势,程序员在社会中的地位代表了这个国家的人权领先程度。我给大家贴两个网站的链接地址(A国政府网站 , B国政府网站),两者之间的天壤之别我想大家都懂的。

广告时间结束,回到主题。在业界的实际使用中,UML使用方法有3种。分别是草稿模式、蓝本模式和编程语言模式。首先介绍草稿模式,草稿模式允许用最简单的形式来绘出未完成的图标,这种模式经常被架构师和开发者在进行前向工程和逆向工程时使用。前向工程是标准的工作流程;而逆向工程是指你接受了一个现有系统,想了解其工作原理,在逆向工程中,需要根据现有的系统源代码得到一个UML模型,最好的结果就是逆向工程得到的UML图表和前向工程的图表吻合,若想达到这个目的,就需要考虑双向工程。接下来蓝本模式在前向工程中,团队用UML写出蓝本,然后根据蓝本用指定的语言编写代码。蓝本应该尽可能的详细,尽量避免开发者自行发挥。在逆向工程中,蓝本是从源代码中生成的,以便描写系统的行为,通常以图形的方式给出。最后编程语言模式是指对模型描述的越详细,也就越接近一种新的编程语言,这样你就拥有一种正式的图形化语言,也能描述详细的行为。

不管你是否乐意,UML本身有些偏向于Java语言,或许可以从选择包而不是命名空间中猜测出了一些,不过故事还没结束。在Java中并没有属性的概念,而在.Net Framework中,属性只不过是个"语法糖"而已。你或许知道.Net Framework中的属性是通过一对getter和setter方法来实现。因此UML建议我们仍使用同样的方式来定义属性。此外,UML和Java语言并没有事件,Java使用一种发布/订阅模式的实现来满足其事件模型,而在.Net Framework中,事件可以看做是一种系统已经内建提供的、同样模式的实现,并通过C#的event语言关键词来简化。因此在UML中,并没有为类型定义事件的专门语法元素。但是.Net类型需要事件,那怎么办呢?我们只要简单地使用EventHandler类型或其他专门的事件委托类型给出即可。

正如生活其他方面一样,软件项目中的沟通非常重要,即使没有正式的详细说明,沟通也需要标记符号和模型。而UML就是为交流设计中的关键想法而存在的一种模型,在合理的时候合理的使用,将会有利于整个软件项目过程。

相关博客:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值