国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Sawin軟件研發(fā)之窗:架構師心目中的關鍵詞

架構師心目中的關鍵詞


TheEdge推薦 [2008-1-1]
出處:zhangxun.com
作者:張恂
 

前些日子,在閑聊中,一位媒體朋友問我:軟件架構師(Software Architect)究竟與普通程序員有什么區(qū)別,軟件架構師平時都在想些什么?這一問,倒提醒了我。想來自己從事軟件架構設計這個行當也有十多年了,現(xiàn)在確實有必要以文字的形式,把自己這些年來對于軟件架構設計這項充滿魅力、極其有趣的工作的所思所想、經(jīng)驗所得,好好整理一下。

軟件架構設計是一門建立在科學、工程基礎之上的藝術。根據(jù)我本人的體會,以下術語和詞匯大概就是那些讓一位軟件架構師在其職業(yè)生涯中時刻縈繞于心、揮之不去的核心關鍵詞:


權衡與平衡(Balancing the Tradeoffs)

軟件架構師必須學會的第一件事情是:懂得如何進行權衡,在各個相互矛盾的設計要素、限制和約束條件之間巧妙地取得平衡。

與人類所從事的其他工程活動一樣,軟件開發(fā)、軟件工程本質上也是一種平衡的藝術。如何才能把握軟件開發(fā)藝術的平衡之道?在現(xiàn)實的軟件開發(fā)中,一名架構師必須首先掌握科學的、工程的思維方式和方法,也就是客觀的、系統(tǒng)的、符合邏輯的思維。錯亂的邏輯必然導致錯誤的結論,基于錯亂邏輯設計出來的軟件也必然會破壞軟件架構內(nèi)在的和諧之美,因而是丑陋的。


抽象、建模與設計(Design with Abstraction and Modeling)

一位軟件架構師必須主動地選擇工作在合適的抽象層次上。在必要的情況下,他/她必須能夠脫離具象的編程語言(如 Java、C++、VB.Net、JavaScript、Ruby 等等)進行思考,能夠透過現(xiàn)象看本質,準確抓住事物的本質。

如果一位“架構師”只會工作在代碼實現(xiàn)(Implementation)層,遇到任何問題就忍不住要寫上幾行代碼、砌上幾塊磚頭,擺擺看,否則就無法順利思考,卻不知道、不會利用圖形、符號、公式等抽象的、敏捷的手段來描述自己的思考和設計,那么這位“架構師”的能力是有嚴重缺陷的。


預見性和前瞻性(Prediction and Anticipation)

一位軟件架構師必須比團隊中的普通程序員、初級程序員看的更遠。

如果一位開發(fā)“能手”和“高手”,經(jīng)驗豐富卻目光短淺,只知道解決眼前的現(xiàn)實問題,不知道在有限的可用時間內(nèi)往前多看幾步,考慮一下面向未來問題和潛在風險的應對之道,他是不足以享有“架構師”頭銜的。


簡化之美(The Beauty of Simplification)

簡化是這個世界上任何科學、工程技術 —— 邏輯藝術 —— 的本質要求。

E=mc^2 告訴我們,我們?nèi)祟惿硖幍倪@個宇宙存在著永恒的簡單真理。作為被科學家和工程師利用電子技術構造出來的虛擬世界 —— 軟件,這個空間、小宇宙自然也不例外。在軟件工程界,我們篤信:只有簡單而有效,才是真正的軟件之美。

為什么我們要白白耗費資源,開發(fā)出冗余的、重復的、七繞八拐的低效程序?軟件架構師必須帶領他/她的程序員團隊,始終堅持對軟件架構藝術之美 —— 簡化的追求。


模式與重用(Patterns and Reuse)

軟件架構師必然首先是一名聰明的程序員,他/她知道何時、何處省力,如何省力:運用巧力來輕松完成原本繁重的開發(fā)工作。

節(jié)省工作量的最好一個辦法就是重用。如果軟件開發(fā)的 10 倍率銀彈存在的話(張恂一直認為談論布氏銀彈的存在與否并無多大的實際意義),軟件重用無疑是一顆最有效的銀彈。重用自己的或別人的代碼、程序、構件、模塊、子系統(tǒng)乃至整個系統(tǒng),可以讓過去需要 10 天完成的工作在 1 天之內(nèi)完成,讓過去需要 1 年完成的工作在 1 個月之內(nèi)完成,這樣的例子遍地都是,有什么辦不到的呢?

軟件模式的應用本質上是對軟件設計思想、設計知識的重用。毋庸置疑,世界上任何一位軟件架構師,都知道而且應當知道軟件設計模式存在的寶貴價值和重要意義。


質量、效率與資源(Quality, Efficiency and Resources)

如何在有限的,甚至往往是“窘迫”的時間進度、經(jīng)費和人力資源等重重壓力之下,帶領團隊開發(fā)出真正符合客戶需要的、高質量的,同時又具有長久生命力的軟件產(chǎn)品或系統(tǒng),能夠不斷為企業(yè)和客戶創(chuàng)造價值,這是所有軟件架構師必須擔當?shù)囊豁検滓氊?、艱巨任務。當然,這又是一個相當復雜的、涉及到科學、工程、藝術、社會人際關系和公司政治等多方面因素的權衡問題。


敏捷、迭代與演進(Agile Iterative Evolution)

高質量的、好的軟件架構從來都不是一蹴而就的。把一個項目切分成 5 個連續(xù)階段,通過需求階段完成需求分析,設計階段完成概要設計和詳細設計,實現(xiàn)階段完成程序編碼,測試階段完成系統(tǒng)測試,部署階段完成安裝部署,這種傳統(tǒng)的、錯誤的線性開發(fā)思維違背了軟件開發(fā)的復雜現(xiàn)實,成為導致國內(nèi)外大量軟件開發(fā)項目失敗的主要殺手。

我們應該避免采用這種高風險的傳統(tǒng)瀑布式開發(fā)流程,轉為采用迭代遞增、演進的方式來設計和發(fā)展軟件架構,這是過去 30 多年來世界軟件工程界以及軟件架構師們學到的最寶貴經(jīng)驗之一。

開發(fā)出敏捷、靈活、柔性,易于適應變化,能夠不斷地滿足客戶需求,不斷地為企業(yè)創(chuàng)造利潤,以及便于維護、擴展和升級的軟件架構,需要優(yōu)良、合理、高效的軟件開發(fā)工藝流程的支撐。實現(xiàn)這一目標并非超乎現(xiàn)實的幻想,過去 20 年來世界上的領導企業(yè)和軟件開發(fā)機構已經(jīng)為我們提供了大量系統(tǒng)、架構、框架和平臺的成功開發(fā)案例。

軟件架構師應該與項目經(jīng)理、團隊成員們一道為自己的團隊挑選、定制一種適用的軟件開發(fā)過程。敏捷迭代開發(fā)要求軟件架構師通過軟件開發(fā)的迭代、演進周期,把握好前饋與反饋、前構與重構的平衡,不斷地利用編碼、集成、運行、測試以及與用戶、客戶的溝通等活動來驗證軟件架構的設計思路、解決方案的正確性和有效性,從而最大限度地降低架構開發(fā)風險。


前構與重構(Prefactoring over Refactoring)

...

(待續(xù))

 

 

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
軟件架構基礎 1:架構師的 8 大核心能力
《程序員必讀之軟件架構》.pdf
從程序員到架構師,你需要掌握什么技能?
論軟件架構師的角色和培養(yǎng):
孟巖:軟件架構設計貴在務實
架構漫談(五):什么是軟件
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服