架构设计的思考

架构设计的思考
    首先需要明白的是,什么是架构设计,看了以前的培训资料,也google了,也自己想了,总结下来:

    架构设计:软件系统是由组件以及它们之间的连接关系组成的,同时架构设计还要满足软件系统的易变性、可扩展性、可维护性等特性。

    搞清楚了什么是架构设计之后,再想想怎么才能做好架构设计呢?

    架构设计可大可小,回顾一下自己做过的项目,细想再小的项目其实也有一个架构设计,只不过这个架构设计可能很小,三言两语就能描述清楚了,比如一个很小的BS系统,可能也要划分一下,功能模块如何划分,哪些是公用的,目录或package如何划分,这个我觉得也是架构设计。

    但是当系统变大时,架构设计就变得复杂了,因为需要考虑的东西就多了,一方面从系统的功能来说,系统功能点已经上百成千个了,光是搞清楚这些功能点就已经不容易了,如何从这些功能点中发掘共性,划分组件,如何设计组件之间的联系,实现分而治之就更复杂了,另一方面,系统变大了,系统的非功能性需求或约束更多了,一个小系统,可能不需要考虑大用户量、并发、大数据量等问题,但一个大系统,即使用户不提这些约束条件,一个好的项目经理或者架构师,必须替用户考虑这些约束条件,有几年的数据以后,系统会不会变慢,采取什么样的方式可以解决这样的问题,用户如果要求5秒内,系统必须有响应,那么目前的架构设计能不能满足这样的要求呢?

    同时从软件系统的架构与建筑设计的类比来看,一个建筑设计,必定是先把建筑结构定下来,然后再按图施工,如果想有创新性的设计,则必须广闻博见,同时还必须功力深厚,否则怎么设计的出鸟巢呢?呵呵

   同样对于一个软件架构的设计者来说,第一个层次,丰富的实践知识,达到这样,至少在一定的范围内可以依葫芦画瓢了,同时还可以有一些局部性的创新设计。
   第二个层次建立在第一个层次的基础上,广闻博见,精通十八般武艺,无论哪种兵器都能使得很趁手,比如BS架构很熟悉,CS架构很熟悉,银行系统的架构设计做过,电信系统的架构见过研究过,嵌入式系统的架构也熟悉,操作系统、数据库等基础知识那更是不用说,至少熟悉多种主流编程语言,还能紧跟潮流趋势,更要有自己的思想,理解能力深厚,这样的大师我想应该能做出创新性的设计了。

    回顾一下自己,只能是第一个层次了,其实第一个层次也不算很好,第二个层次只能算刚刚入门,看来要成为一个大师,很难,@_@



你可能感兴趣的:(架构设计的思考)