本篇紧接着上一篇  
基本OOP知识  ,介绍高焕堂老师的第二讲。 架构设计的UML图形思考。本篇最重要的是三个词语:图形、思考、UML。

架构师的作用体现主要在项目开发前期。在整个项目还没有完毕的时候,架构师的心中就要有整个项目的蓝图,总体框架。为了可以将架构师自己的蓝图、思路、框架表达给其它人,就须要借助于图形的魅力。以图形来思考。以图形来表达思考的结果,表达对于产品的架构、、规划、设计。

在架构中,要借助自己的思维去思考未来可能的变化。为了方便团队之间的交流。假设使用同样的语言、相似的工具就更好了。软件世界中,图形就是建模,用模型来表达未来的系统,简化未来的系统,让开发者从模型中看到系统未来可能的变化,以模型为蓝图进行开发。这才不会违背架构师的思考。而UML就是软件世界中用来图形交流的建模语言,架构师可以用模型表达出自己的创意。

一、建模与图形思考的必要性

在整个项目的开发过程中,架构师(Architect)的职责就是创意设计与人际沟通。在规划架构或框架的阶段。还没開始动工撰敲代码码,那么架构师怎样进行创意思考呢? 又怎样将创意设计表达出来。争取自己公司老板和业主的支持(比如投资)呢?大家都知道。像举世公认的创意天才:达芬奇(Leonardo da Vinci)。

他具有非凡的图形绘制和思考能力(比如蒙娜莉萨的微笑就是他的名作)。这提醒了我们,身为架构师,其图形绘制和思考能力愈好,其创意设计与人际沟通能力就愈好。因此,培养Android架构师的图形思考能力是极为重要的。

一个项目开发须要一年。那么在项目开发的一个月内。架构师就要将整个项目的架构设计出来,但是怎样设计?就算设计出来怎样让其它开发者、老板知道呢?敲代码实现时间肯定不够(并且这也不是架构师的职责嘛,不是),此时就须要借助图形的魅力了。我们说不出来。但我们能够画出来。

在思考的时候我们能够借助图形来进行思考,思考系统未来可能的变化,然后将自己的思考以图形的思维表达出来,其它开发者就知道怎样去做了。在软件的世界中,建模是图形的最好诠释。用简单的模型表达出系统未来可能的一切变化。让开发者、老板、经理在心中对于整个系统有一定的了解,这个时候才干够真正的进行开发。否则都仅仅会是空谈。

二、UML软件图形语言和工具

既然决定用建模来表达系统的架构,那么就像我们人类一样,交流须要语言,这样彼此之间才干理解对方表达的意思。换句话说,假设使用同样的语言、相似的工具进行建模。那么无论是架构师与架构师之间,开发者与架构师之间都能非常好的交流的工具。因为人们对这些图形元素有了共同的认知。所以系统架构之描写叙述(即模型)也就成为人与人之间能够认知和理解的东西。因之,人与人之间採用共同的(图形)模型时,就易于沟通,易于互相合作了。而UML统一建模语言存在的意义正是如此,作为不同人员之间项目交流的工具语言。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZmVpdmlwOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

如上图所看到的,五线谱所绘制的交响曲正是作曲家、演奏家、一般人之间对于音乐理解沟通交流的语言,一个抽象的东西一下子就变得有迹可循。变得详细。

建模语言扮演的角色正是五线谱所担当的角色。

软件:UML是一种图形语言

人们对于复杂事物的理解。有其先天上的限制。即使面对一般的系统,大部分的人们还是不敢拍胸脯保证能全然了解它。更何况眼下的软件系统已日益复杂了。此情况下,模式的建立。能够协助软件人员进一步了解系统。

对于架构师或开发人员来说。都是很重要的。

不管在培养图形思考或团队沟通上。对于软件创意或管理上。是无可代替的。

UML的建模工具

Astah Professional(原名JUDE)是UML建模工具中,最具有简洁设计、轻便简单、易学好用的。

Astah 功能强大,支持 UML2.x中的图表(Diagram)

三、UML实战:表示继承、接口

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZmVpdmlwOA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

这种图文对比,能有效培养架构师的图形思考和创意,提升架构师与项目经理、业主的沟通能力。在图形上,也能添加美感,培养架构师对软硬件的感觉(Feeling)而不是仅仅能逻辑的理解(Understanding)。有助于与设计师进行创意交流。

架构设计的UML图形思考的更多相关文章

  1. GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台

    在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...

  2. 想学设计模式、想搞架构设计,先学学UML系统建模吧您

    UML系统建模 1 概述 1.1 课程概述 汇集UML及其相关的一些话题 回顾UML相关的符号与概念 以电商订单相关业务为例,借助UML完成系统建模 将UML变成提升建模效率,表达架构思想的工具 1. ...

  3. 京东云开发者|软件架构可视化及C4模型:架构设计不仅仅是UML

    软件系统架构设计的目标不在于设计本身,而在于架构设计意图的传达.图形化有助于在团队间进行高效的信息同步,但不同的图形化方式需要语义一致性和效率间实现平衡.C4模型通过不同的抽象层级来表达系统的静态结构 ...

  4. [转]Android App整体架构设计的思考

    1. 架构设计的目的 对程序进行架构设计的原因,归根到底是为了提高生产力.通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点, ...

  5. 从MySQL高可用引出对高可用架构设计的一些思考

    高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...

  6. MYSQL性能调优与架构设计之select count(*)的思考

    select count(*)的思考 原文:MYSQL性能调优与架构设计   举例: 这里我们就拿一个看上去很简单的功能来分析一下. 需求:一个论坛帖子总量的统计 附加要求:实时更新 在很多人看来,这 ...

  7. 转】MYSQL性能调优与架构设计之select count(*)的思考

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/5/ 感谢! Posted: Feb 7, 2013 Tag ...

  8. Unity3d 引擎原理详细介绍、Unity3D引擎架构设计

    体系结构 为了更好地理解游戏的软件架构和对象模型,它获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的,它的主要原则. Unity3D 引擎 Unity3D的是一个屡获殊荣的工具,用于 ...

  9. 高焕堂《android从程序员到架构师之路》 YY讲坛直面大师学习架构设计

    <android从程序员到架构师之路>YY讲坛活动:  sundy携手高焕堂老师全程YY答疑 与大师一起,分享android技术 时间:7月21日下午2:00   报名联系QQ:22243 ...

随机推荐

  1. HDU 1294 Rooted Trees Problem

    题目大意:求有n个节点的树有几种? 题解:http://www.cnblogs.com/keam37/p/3639294.html #include <iostream> typedef ...

  2. Spring 拦截器实现事物

    Spring+Hibernate的实质:就是把Hibernate用到的数据源Datasource,Hibernate的SessionFactory实例,事务管理器HibernateTransactio ...

  3. 使用LINQ的几个小技巧

    这里总结了这些技巧.介绍如何使用LINQ来: 初始化数组 在一个循环中遍历多个数组 生成随机序列 生成字符串 转换序列或集合 把值转换为长度为1的序列 遍历序列的所有子集 如果你在LINQ方面有心得也 ...

  4. OpenSSL命令---rsa

    用途: Rsa命令用于处理RSA密钥.格式转换和打印信息.其实其用法和dsa的差不多. 用法: openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET| ...

  5. Android各种效果集合

    QQ侧滑风格:http://www.cnblogs.com/lichenwei/p/4111252.html,通过继承HorizontalScrollView类来实现的.

  6. Centon6.5虚拟机桥接设置

    参考资料:http://blog.csdn.net/iamfafa/article/details/6209009 安装虚拟机的时候 就直接选择桥接,可以直接 使用 查看此状态下的配置如下 : 虚拟环 ...

  7. (Problem 57)Square root convergents

    It is possible to show that the square root of two can be expressed as an infinite continued fractio ...

  8. Lake Counting(poj 2386)

    题目描述: Description Due to recent rains, water has pooled in various places in Farmer John's field, wh ...

  9. The reference to entity "characterEncoding" must end with the ';' delimiter

    数据源配置时加上编码转换格式后出问题了: The reference to entity "characterEncoding" must end with the ';' del ...

  10. python的二维数组操作

    需要在程序中使用二维数组,网上找到一种这样的用法: ? 1 2 3 4 5 6 #创建一个宽度为3,高度为4的数组 #[[0,0,0], # [0,0,0], # [0,0,0], # [0,0,0] ...