初識軟件體系架構


      經過軟件工程概論、軟件需求工程、軟件測試、軟件過程管理這一系列的軟件核心課程的學習,對軟件這個詞剛剛有了初步的了解。印象最深刻的就是要以用戶為中心,因為只有真正了解了用戶的需求,站在用戶的角度去開發軟件才能取得最好的效果。碰巧的是,在架構漫談這一系列的博文中,也是一直在強調尋找問題的所在,尋找問題的主體,只有把問題的主題找到才能試着去尋找最佳解決方案;反之,如果看到客戶需求之后,一上來就找到一大堆解決方案,往往會迷失方向,從而忘記問題的根源所在,出現在中期階段將所有完成的工作全部推翻這種情況。通過這幾篇文章,談一下自己對軟件架構的理解。

      軟件大多是給人來用的,而由於人對目標系統有越來越高的要求,比如說QQ這款大家最常用的軟件,它從一開始只有單純的社交功能,到現在豐富的視頻聊天、QQ錢包里買電影票、交話費等功能。而這個時候,傳統的軟件開發模式想必已經完成不了對這個龐大的系統開發,需要站在架構的高度將它進行進一步的拆分。本着用戶至上的目的,在收集客戶需求后進行分析確定業務目標來對任務進行划分。在網上找到的數據顯示,騰訊的技術方面大概分為互動娛樂、移動互聯網、網絡媒體、社交網絡、技術工程幾個部分,雖然不太知道這幾個部分之間是怎么聯系組合起來的,但是這幾個部分的划分是很明顯的。這樣把開發團隊進行划分就會使工作人員各司其職,發揮自己的長處來使軟件開發進展地更好。

      對於切分這項工作,需要做到責任和義務的均衡,本着這個原則,盡量使得每個利益相關者(stakeholder)的權責對等。當然為了使效率最大化,最好使架構的划分結果層數少一點,就好比一個項目經理,分管幾個部門經理,如果再有很多很多級別的話,高層的真正想法會很難傳達到下層,造成信息失真。

      然后,對於軟件來說,它就像是模擬人生活的一種方式,著名的邱琦-圖靈論題說到:一切視覺上能行可計算的函數都可用圖靈機計算,反之亦然。好比是ATM機就是在模仿人們在銀行里辦理的存取款、轉賬等一系列的業務流程。仔細分析的話,這個嵌入式的小軟件的每一個小的業務流程都可以一一列舉出來,那就跟人真實的操作是一樣的。其次,在完成這個軟件系統的時候,最重要的就是交互、業務和數據的分離。我們學的SSH框架,MVC理念等一系列的技術應該都是為了將這個分離進行實現和完善。因為當數據變得非常非常大的時候,如果不能做到將數據和業務關系分離的話,必然會使系統無限的膨脹,難以維護甚至造成癱瘓。而如果業務和與用戶的交互不能分開,那業務稍加變化系統前台就會有很大的變化,這顯然不能滿足用戶的實際需求。

      總之,架構就是首先明確用戶的需求,即明確要解決的問題以及其主題,這時相當於完成了很大一部分工作;然后提出解決問題,對整個軟件系統進行合理的拆分,再利用特定的模式將其有機地結合起來進而完成軟件的設計的過程。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: