正文
19
架构师要构建架构,刚才我们对架构师是什么,已经讲清了一些内容,然后也要对架构这个动词对应的这个概念要有深入的理解。
谈完了架构师,谈谈架构师的动作,“构架”这个动词,是什么意思?
Architecting/构架
A set of interrelated activities of
conceiving,
defining, describing, documenting, maintaining, improving, and
certifying
proper
implementation
of an
architecture
throughout a
System’s life cycle.
一组相互关联的活动,在整个系统的生命周期中构思、定义、描述、记录、维护、改进和证明体系结构的正确实现。
直接相关的活动,所以说,是一个活动。这个活动包括了哪些内容,concerning构思,构想这就像女人怀胎在孕育一个孩子,构思完了这后,你还得描述出来,不能光想还得能表达出来吧,同时,也要记录,维护,改善,重新思考,再描述再完善,然后还要认定取舍,从而形成一个架构,这个是在整个软件系统的生命周期里,要经历这样一系列的过程。
怎么描述,怎么稳当的话,然后记录。最终你做完这个架构的时候,要有一些详细的图表啊,文字说明。比如软件开发要写文档,一定要有这个东西,不然你在做什么呢,这是阶段性成果的东西。最后的时候,你一定要有个文档,软件架构的文档要形成。
我们要做事情,构想的描述,然后把那个描述记录下来,要维护,并改进我们的描述,这样通过不断的实践检验,这个架构在一个系统中就会越来越体现出它的优越性。
20
首先,构架是在一个系统的生命周期里的。我们希望大家用形象的比喻,把我们那些最关键的概念讲清楚。很清晰的讲清楚,然后先来看一个长征的比喻。
毛泽东在说到长征的时候,用了一系列的比喻,他说:长征是宣言书,长征是宣传队,长征是播种机。
长征就像做生意,开一个店一样,我们的收入是红灯,那些才是我们的架构,是的吧,然后。然后他把他们开店的过程,用一个比喻了。长征是宣言书,长征是一个宣传机,长征也是播种机。
我们能用哪些比喻来形容构架呢?
在定义需求活动,以及创建平台无关的架构活动中的任务。我们系统的语境/范围又是什么,所以说我们的问题就来了,我们系统的语境和范围是什么呢?
《名侦探柯南》这里面有很多故事,可以形象的来表达我的想法。
名侦探柯南引爆摩天楼。
新一收到了来自世界知名建筑家——森谷教授于其宅邸举行的晚会的请帖。柯南、小兰和小五郎应邀出席。此即为事件的开端……发生了作为特殊火药的塑胶炸弹大量失窃的案件。那个自称凶手的男子打来预告电话,与柯南展开博弈。犯人再次向那里打电话,“工藤为什么没来!”那家伙是从哪里观察的?!随后,凶手连续发来炸弹预告。炸弹究竟被安在了哪里?城市陷入了恐慌。
第一条导火索即开头的案件一年前的医疗事故。
当初,你与黑暗组织决斗时,与他们同归于尽,但你却活了下来。可是你醒来后失去了记忆。其实我早在六年前就有恢复记忆和变大的解药了。只是,吃了以后,你会失明。我们宁愿让你失去记忆,也不愿让你失明。这对一个普通人来说都是残忍的事情。更何况你这个大侦探?所以你的父母才会对小兰说你死了,让她不再想你。我也自私的想让你和我在一起。我以为你不恢复记忆,就会喜欢我。可是我错了。你即使不恢复记忆,也只是喜欢毛利兰一个人。永远都是,这是注定的。我不知道我到底那里比不过毛利兰。也许我永远也会明白。
现在解药放在桌子上,你吃了以后就会记得一切了。我没有和你的父母商量就自作主张把解药给你了。希望他们原谅。
第二条导火索森谷帝二的完美之心
森谷帝二十分热衷于设计完全对称的建筑物,但米花大厦由于当时的经济问题,资金周转不开,无法按照他想的那样建造,拒绝了他完全对称的提案并且建造了不完全对称的米花大厦,森谷帝二十分追求完美,为了将自己所有的不完全对称建筑摧毁,同时也为了报复让自己的西多摩市计划功亏一篑的工藤新一,引爆了摩天大楼。
这个导火索,弹药库,比如我认识到的一个销售,他的比喻能力就很强,要找个什么样的客户,能把这个客户的兴趣点和他要销售的产品结合在一起呢?
他的比喻也比较形象,用了了望台,还有弹药库这类的比喻,这样一说话,人家一下就听懂了,他要表达的意思了。
22
但我们的要求是什么呢,你能用哪些比喻,来形象的表达我们的构架,以及关键性的过程呢?
我们的架构是什么?
同样我们也需要用毛泽东的长征,这样响亮的类似的方式来做一个形象的比喻,重要的内容,把你的体验,喜欢完了之后,用三句话来表达出来。
我们从宏观的来看有几个大的方面来看一下,首先它要有输入,有系统分析师,还要有定义,软件需求系统需求,然后在这个基础上才要干什么,做两件事情。
架构活动,它分两部分,第一平台无关的架构,第二是创建平台相关的架构。
也就是说。我们刚才知道,架构师,构架下详细的描述具体的活动是什么呢,是两个,一个是创建平台无关的架构,一个是创建平台相关的架构。它需要来自设计团队,以及实施团队对他的帮助,创建一个平台相关的详细的设计。
这其实就是我们的思维方式,先是一个语境。
Enterprise->System->Software,Hardware,Organization,Information
问题是,不同人眼中的系统/架构会矛盾吗?
大家都知道,在一个软件开发过程中,实际上时间不超过15%,85%的时间其实都在想清楚一些事,怎么能把它量化,怎么设计,然后实现的时候,它用的时间很少的,最重要的是你的设计。
23
那怎么想清楚,怎么把它细化呢,第一个就是要收集需求,调查数据。
然后是什么叫构架,还有什么是涉众,这是我们共同的词。最后我要定义一下我们的语境,是哪些人,怎么样考评等等,把我们的需求功能性说明书的和非功能性的说明书,都要在一定程度上定下来。
软件的质量是由两部分构成的,功能性和非功能性。
在需求分析过程,或者参与了这样一个过程,用需求的优先级来确定重要程度,这个优先级弄完了,就要开始项目设计,架构设计,然后要循环迭代过程,还要看,我们的这个架构能不能满足这些的需求呢?
这个时候该体验一次迭代过程,最后,那你要有一个软件架构文档记录下你这个过程。一般是用一些图表这样比较直观和易懂的形式来记录下来,这个工具一般就是UML。
现在我们有了需求了,然后去创建平台无关的下一个活动。
什么是系统和软件工程?
大家都这是社会人,来自不同的领域,可能用的词汇是不一样的,所以还要制定一套概念,来统一大家的思想,这样在理解问题的时候,在这种语境下,思想这些概念的内涵和外延,就不能有歧义,那使用国际标准是一种必然的选择。
软件工程,也有一个自己的知识体系。
24
软件工程的理解,使用统一建模语言,是一个国际标准,知识范畴,记录下来。架构的描述语言就是架构的知识。现在我开始来讲我们系统的语境了。刚才,我们讲都是一个系统的架构,现在我们看到我们的语境是什么?
一个企业有一个系统,有很多那个系统让运行着,软件硬件,组织和信息。
然而我们的问题就来了,在不同的人眼中去看这个系统,肯定也是不一样,他们眼中的系统架构,会是一种矛盾吗,另外一个问题,架构师有哪些分类?
比尔盖茨说他是架构师,我们这是一个企业架构,比尔盖茨其实是企业家,虽然我们说最高级的奋斗目标,是企业家,但我们谈的不是企业家。
我们谈的是系统,是系统架构,那当然,从的发展来说,他可能做着做着,做到了企业中的信息官,或者整个公司的系统架构师,一个公司有很多的系统,然后就有很多的系统架构师。在企业的组织结构中,软件架构师也需要了解一点硬件架构,架构师也是跟组织集合映射在一起的,这是我们的核心概念。