系统架构的秘境初探

作为一名普通的、也可算作是、一般的不能再一般的青年科技工作者,我之前的经历中没有深入参与过超大型信息系统项目的研发工作,并且以前国内对于系统架构的重视程度也不高,参与的很多项目首先要解决有无问题,较少遇到多个同类型项目并行研发来pk性能的情况。可以说,个人角度缺乏对于系统架构深入研究的动力。从个人能力角度来说,也就是掌握了UML的基本语法,常用画图软件画画图,但目的无非是让读者理解所描述系统的基本结构,研究点也多在于分析分布式架构与集中式架构的技术特征上,很少会深入思考系统构建过程中的具体结构优化问题。

近来,因为项目需要接触了系统架构领域,顿时有种门扉顿开、春风拂面之感,我仿佛看到了一座连接大系统理论与系统实现之间的桥梁。希望通过今后在此领域的学习和研究能够推动我对于未来信息系统发展的一些思考走向现实,让思想落地生根,让梦想早日服务于日常生活。

研究系统架构的一个重要背景是系统开发规模的增长。二十年前,一个通信软件就可以造就一个首富;十年前,一个网站就可以成就一段成功传奇;现在,从事信息产业的人越来越多,可通过信息技术实现成功的门槛却越来越高。经过了多年的野蛮生长,信息技术公司“托斯拉”化不可避免,大型系统建设能力将成为未来信息公司立足的核心资本。

系统越来越大,架构设计在系统开发生命周期中占据的位置越来越重要,设计部署大型信息系统对于架构设计提出了很高要求。那么,什么是系统架构?如何设计出好的系统架构?从事系统架构设计的发展前景如何?了解这三个问题能够加深我们对系统架构的理解。

1、什么是系统架构

百度百科中给出的系统架构定义为:对已确定需求的技术实现构架、作好规划,运用成套、完整的工具,在规划的步骤下去完成任务。抽象来说,它是计算机系统结构,或称计算机体系结构,是一个系统在其所处环境中最高层次的概念;它确定一台计算机硬件和软件之间的衔接。具体地说计算机体系结构指的是计算机系统设计的观念与架构。

直观理解,系统架构就是设计要构建系统的描述模型,把要构建什么样的系统描述出来。看似很简单的事,实现起来却要面对很多艰难且具体的挑战。

(1)语言问题。描述一个事务首先要选定语言,举个简单例子我向一个俄国人介绍克林姆林宫的历史,如果他听不懂中文,就无法获知想要的信息,更无法进行交互,这时就需要约定一种可行的交流方式,也就是语言来实现目标系统模型概念信息的传递。再仔细想一想,语言是随意约定的吗?不是,语言应该满足几个基本条件。首先,语言一定要能够对目标进行准确描述,具备承载想要传递信息的能力。其次,语言要是双方都能够理解的,双方理解才能够实现信息传递。再者,语言应该具备无二义性,这是对语言的基本要求。前面例子中,我就可以使用俄语向他介绍。系统建模语言较为常用的有UML,SysML等,其中UML是使用最为广泛的一种语言,由OMG公司研发和维护,已经在很多领域被广泛使用。所以,想要研究系统架构的朋友首先要学会一种系统建模语言。

(2)粒度问题。选定了一种描述语言,我们可以开始对一个系统进行描述,这时你就会遇到第二个需要思考的问题:如何设定描述的粒度?粒度问题最直观的表现就是地图,如果把一草一木都显示在一幅中国地图上,观看者面对信息爆炸难以搜索到想要的信息,这时就需要掌控粒度,如以城市为单位展示中国地图,以市辖区为单位展示省份地图。描述一个系统也需要控制展示的粒度,这种粒度控制思想在系统建模语言中的体现就是对系统构建时包的层级结构的描述。

我们以UML designer中提供的Travel Agency为例,通过Package Hierarchy和Package Containment两个图来描述了系统各包之间的关系,从而让我们能够准确掌握系统的层级结构信息,不至于陷入到具体类和参数的汪洋中。

                                                                              Package Hierarchy Diagram

 

                                                                      Package Containment Diagram

(3) 完备性问题。

树立了系统描述的层级理念后,我们可以开始在不同粒度下来对系统进行描述了,这种描述应该是一个完备的体系,即不以系统外未知的知识作为描述的基础,模型元素集合应该是个闭包。在这个方面,主要体现的就是建模语言设计者的智慧了,UML采用了5种视图,14种图,视图代表了系统架构建模的不同视角,图是视图的组成部分,每种视图规定了绘图基本元素,操作性很强。视图与图的对应关系如下:

(1)用户模型视图:用例图(Use Case);

(2)结构模型视图:包图(package),类图(Entities),对象图(类图一种实例,UML designer中不提供该图),组合结构图(Composite Structure)(2.0增加);

(3)行为模型视图:状态机图(State Machine),时序图(Sequence),通信图(Communication),定时图(timing),活动图(Activity),交互概览图(Interaction overview);

(4)实现模型视图:组件图(Component Architecture);

(5)环境模型视图:部署图(Deployment),制品图(artifact)。

UML通过上述14个图实现了对系统结构和系统行为的描述,我们仍然以UML designer中的Travel Agency为例,所需要的视图如下,部分视图该软件并不支持,主要因为通信图可以在时序图中反映出来,定时图可以通过活动图来展示,制品图跟部署图重合度较高等。

                                                                                  Use Case Diagram

                                                                                              Entities Diagram

                                                                                   Sequence Diagram

                                                                        Component Architecture Diagram

                                                                               Deployment Diagram

                                                                                  Activity Diagram

                                                                                  Activity Diagram

具体每幅图的含义和绘制方法,请参照UML2.0教程。这里使用的UML designer是一个画图工具,本身并不具备与代码之间的转换能力,但是可以作为Eclipse插件使用,使用一些专业软件可依据类图等自动生成代码,具体生成效果还需要进行测试,该软件主要是依据类图生成类框架,软件对jdk的支持版本较低,使用效果一般。

到此,我们就基本完成了对一个系统的建模描述,所有项目相关者就能够依据该模型形成一个对该项目的一致的认识,从而尽量减少认识偏差。

 

2. 系统架构设计的能力要求

系统架构设计工作者可以称为系统架构师,不同的公司或部门对于系统架构师的要求侧重点可能不同,但其需要完成的本质工作是根据需求设计系统。狭义理解,也就是使用系统建模语言来设计一个系统。但是,想要设计出一个好的系统架构对设计者综合素质的要求很高。个人认为,好的系统架构师一定是在技术能力、管理能力、业务能力等多方面均衡发展,从程序员到架构师的转变过程中,沟通协调能力至关重要。

(1)进行系统设计首先要具备坚实的技术基础。如使用java语言,就需要熟悉各种框架,掌握不同框架下多种能力的实现方法,并且能够实时跟踪学习不断涌现的技术解决方案。具备这些能力的架构师才能够设计出高性能的信息系统。

(2)进行系统设计还需要具备一定的管理能力。架构设计是系统构建的核心环节,架构设计师处于项目的中心位置,需要对程序开发过程进行管控,掌控系统开发进度,遇到情况时及时进行应对处理。这就要求架构设计者要具备管理能力,获取项目团队中的话语权。

(3)进行系统设计对业务能力的要求也很高。系统架构设计需要与企业管理者、需求相关方进行沟通协调,这就要求设计者一定要具备相应的业务能力,能够处理好多方面的关系,建立充分顺畅的沟通,从而能够在不同的角度理解系统构建需求。

                                                                            系统架构师的能力要求示意图

每年全国计算机技术与软件专业技术资格考试的高级项目中有系统架构设计师资格考试,对于评定高级职称和寻找高薪工作都很有帮助。北京用为信息科技有限公司常年从事系统架构研究,具备丰富的知识储备和教学资源,有需要的朋友可以与我们联系,我们将竭尽所能为您提供技术支持。

 

3. 发展前景

统一建模语言虽然经过了多年的发展,语言体系已经十分成熟,但仍然存在很多问题需要解决。以下是个人观点,欢迎有兴趣的朋友联系我们携手探讨。UML,SysML语言存在的一个重要问题是目标设定为能够对所有系统进行建模的语言,从而使得其语言体系十分庞大,学习和使用均占用了开发者很多时间,这就使得对于中小型系统构建,使用UML等建模语言的效果不明显,而对于大型系统,UML本身的工作量就十分庞大,且代码转化能力滞后于编程技术的发展,即使系统技术已经比较成熟,会产生花费大量工作量来描述已经知识的情况,收益率较低。解决该问题的最为有效方法是增强架构设计在系统构建过程中的融入程度,让架构设计直接成为系统构建的一部分,提高系统架构语言与编程语言间的耦合度,增强系统建模语言与程序代码间的转换能力。

总的来说,系统架构研究尚处于方兴未艾、前景广阔的发展阶段。特别是国内,对于软件自主研发的需求不断增加,对于发展大型信息系统需求十分迫切,未来系统架构领域人才发展空间巨大。我们公司从事系统架构服务业务,具备坚实的人才储备,技术基础扎实,发展前景好,真诚希望与有需求的朋友展开合作,携手发展,共同成功

系统架构师能力要求部分引用 博客园的kayvan 部分观点,

 

 

                                                                                                                                    作者:目标是飞翔

 

 

 

                                                                                                                                           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值