本篇紧接着上一篇  
基本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. BZOJ 1023

    program bzoj1023; uses math; ; maxn=; maxm=; type edge=record togo,next:longint; end; var n,m,cnt,in ...

  2. HDOJ Sudoku Killer(dfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1426 思路分析:该问题为数独问题,明显解是唯一的,所有采用dfs搜索效果更好: 在搜索时,可以通过3个 ...

  3. [置顶] P2P网贷对推动社会发展的影响

    P2P网贷对推动社会发展的影响 1 真正的支持了实体经济,一般借款人就在几万或者50万以下 2 关照小微经济,新型行业.一般小微经济的创新更高,对社会的发展最大化. 3盘活存量 放到银行.保险.国债一 ...

  4. 微软正式公布Visual Studio 2013 Update 3 (2013.3) RTM

     昨天微软的Visual Studio 2013 Update 3(Visual Studio 2013.3)正式公布(RTM)了,做为微软认证金牌合作的葡萄城控件,我们组织力量第一时间进行翻译. ...

  5. 【转】利用Ajax.BeginForm提交文件

    Ajax.BeginForm @using (Ajax.BeginForm("YourAction", "YourController", new AjaxOp ...

  6. 【JAVA】使用Eclipse依赖生成jar包时,避免最外层同时生成资源文件的配置。

    使用Eclipse依赖生成jar包时,如果做配置,生成的jar包文件会全部生成在外面,这并不是我们需要的,下面我们一起来修改下配置,使生成的jar包符合我们的需求吧. 1.如果不做任何配置生成的jar ...

  7. linux下操作gpio寄存器的方法

    一. 在驱动中: 1. 用的时候映射端口:ioremap; #define GPIO_OFT(x) ((x) - 0x56000000) #define GPFCON (*(volatile unsi ...

  8. Oracle/Mysql批量插入的sql,效率比较高

    1.oracle 批量插入: insert into tableName(col1,col2,col3...)    select 1,'第一行第一列值','第二列值' from dual union ...

  9. jbpmAPI-1

    1.1. What is jBPM? jBPM是一个灵活的业务流程管理(BPM)套件.它是轻量级的,完全开源Apache许可下(分布式),用Java编写的.它允许您模型.执行和监控业务流程的整个生命周 ...

  10. 谓词--Predicate

    去苹果的的技术官网搜索-Predicate就会找到相关的文档-Predicate Programming Guide 1,创建谓词时 %@是变量时不加单双引号,常量是加单引号,加双引号需要转义符号\ ...