首先,请容许我作这样一个对比,毕竟,这两件事看上去太没有关系了。事实上,我捉摸房间收拾这个事情的时候,压根就没有想过和工做联系在一块儿。但是最后居然走在了一块儿。架构
不是每个人都须要收拾房间,可是每个人均可以花点时间研究一下收拾房间的方法。我目前一我的住在北京的本身的房间里,女朋友偶尔来一下。你们能够想像得出,这种状况下,房间的情况如何。基本有两点:ide
因而,女朋友每次来都很生气,我也知道后果比较严重。但是对我来讲,改变这点很是难!必需要超人的毅力和决心不可。不幸的是,我却犯了重理论轻实践的错误。我开始关注女朋友是如何收拾房间的。开发
刚开始的时候,她告诉我,厨房必须保持干净,不然如何如何云云。但是往往发现就是不行。我也很头疼。后来,女朋友想到一些办法,在厨房进行功能区划分,告诉我什么东东应该放到什么位置。特别是那些篮子,盆子什么的。让我知道什么东西最后都放到什么地方就能够了。我发现这点要求,比要求我“保持干净”有用多了,至少我知道如何保持干净。it
厨房仍是简单的,关键在卧室,什么东西都乱扔。一开始也是同样的要求,但是我同样作不到。慢慢地,她开始发明一些宝贝。好比,零钱罐,之后全部硬币或零钱就放到里面,发票盒,脏衣处,杯子存取处等等。尽管咱们还有不少地方须要改进,但是这些概念的提出,的确能够对房间收拾起到很大帮助。class
若是咱们看看咱们的软件架构,也是同样。若是不思考一下,简单进行软件开发。就像我女朋友之前同样,把家里从新收拾一遍,过不了几天,我又会把房间搞乱了。软件也是如此。软件在版本开发完成以后,维护工做颇有可能将软件带入一个可怕的境地。扩展
因此咱们须要软件架构。那么软件架构又是在作什么的呢?说简单点,就是解决问题,但是复杂就复杂在如何解决问题。首先是发现问题之所在,对症下药。其实对比一下房间收拾,基本上也就是两个问题:软件
一个是当前的问题,一个是之后的问题。解决第一个问题,你们都顺其天然地比较驾轻就熟。收拾一个房间,相对仍是比较容易的,通常就是比较累的了。可是解决第二个问题,必须有至关的智慧。咱们工做几年以后,每每都能积累一些经验,可是若是不知道总结和发明,作软件架构,每每也只是经验主义。不能在关键点上找到关键解决方案。方法
找到了问题的关键点,在咱们软件架构中,就应该提出一个相应的方案来解决它。这和收拾房间同样,你提出的方案应该有几个特色,才方便这个方案在之后的软件维护中,生根发芽!经验
说到底,好的解决方案,不光是在软件架构的时候会有人说起,在软件维护的实践中,不断有人提到。固然不是由于麻烦,而是由于舒心!而且,因为问题单1、概念清晰,这些方案每每可以复用到其它项目中去。总结
总结一下,本文将房间收拾和软件架构进行了对比,重点是要描述软件架构中的解决方案自己的提出及实现的原则。软件架构包含不少领域,不过咱们讨论的这个领域,具备超凡的创造性在里面。
一句话,软件须要智慧,软件须要借鉴!