也说软件架构

来源:互联网 发布:复制淘宝店铺软件 编辑:程序博客网 时间:2024/04/30 08:46

        林仕鼎谈架构的文章在CSDN首页放了好几天了,一直没空看。今天无聊,抱着学习的心态点进去看了,结果很是不爽。堂堂百度首席架构师,把一个架构说的如此虚无缥缈,云遮雾罩的,真不知是故意不想说还是别的什么原因。

        架构这东西,我认为,源于需求,是一个实实在在的东西,一点也不虚。我们做任何事,一开始,不同的人都会有不同的做法。之后,随着时间的推移,逐渐就积累起一些经验,大家明白到哪些做法是错误的,哪些做法是正确的。这些经验逐渐变成了一些一致认可的规范或框架,这就是架构。好的架构可以指引后续做相同事的人不会犯同样的错误。

        实际上,几乎在所有领域都存在着架构。比如教育,在远古时期,人们不上学,只是通过零散的渠道互相交流自己的经验;后来出现一些有经验的人可以直接对一群人传授技能,逐渐形成了固定的场所和机制;到了现代,我们把教育更加细分成了小学、初中、高中、大学,这就形成了一个关于知识教育的架构。

       我将架构分为真架构和伪架构。真架构是真正从实际项目中总结出来的,能够解决大量实际问题,节省成本的好架构;而伪架构,则是一些没有真正的经验的设计师设计出来的华而不实的架构。

       真架构具备如下几方面特征:

       第一,是所有做法的阶段性终点。简单说,就是做一件事,网站也好,软件也好,大家以不同的方式开始,在经历了一段时间的需求与bug的磨练后,不约而同的走到了相同的做法上,这个做法就可以称的上一个真的架构。所有真架构都是阶段性的,在新的技术出来后,以前的真架构就可能会被推翻。一个好的架构师可以通过运用好的架构样项目避免犯别人已经犯过的错误,这也是一个架构师的价值所在。

       第二,有一定适用范围和领域。一个架构如果出了它的应用范围,则可能不再具有解决问题、节省成本的特性。做同样一件事,每个人的具体需求不同,则可能需要采用的架构也不同。

       第三,架构与实现是解耦的,一个架构可以有多种实现,例如:J2EE有JBOSS、Spring等实现、Mapreduce有google和hadoop等实现。

        后续具体分析一些成熟的软件架构及所解决的问题。

      

 

 

原创粉丝点击