軟件設(shè)計(jì)如何落地

二十年左右的時間列林,敏捷(agile)軟件開發(fā)走完了從一小撮人的游戲到軟件業(yè)內(nèi)的某種政治正確的慢慢征途。agile成為了一個good- words,和所有類似命運(yùn)的詞(as democracy狞贱、liberty、 republic etc.)相似,它的所指和能指實(shí)際上發(fā)生了分離台颠。所以真實(shí)世界中的軟件設(shè)計(jì)水平,就我看到的情況而言勒庄,并沒有發(fā)生什么質(zhì)的提升串前。大部分實(shí)際工作中的代碼還是毫無設(shè)計(jì),如一盤糾纏在一起的的意大利面实蔽。

我猜kent Beck或者Linus這種有些天才的人(或者說非常適合這一行的人)荡碾,是很難理解那種隨手代碼(不顧及單一職責(zé),隨便加到某個函數(shù)以實(shí)現(xiàn)功能的代碼)是怎么產(chǎn)生的局装。SOLID原則也好坛吁,設(shè)計(jì)模式也好,DDD也好铐尚,甚至做到clean code,做好依賴關(guān)系管理拨脉,抽象都是第一步。但需要承認(rèn)宣增,抽象和設(shè)計(jì)玫膀,這本身是很困難的。有可能大部分人就不具各抽象思考問題的能力爹脾。能不能在工作中教會大家抽象思考呢?很難帖旨,少數(shù)人可以學(xué)會箕昭,大部分不行。想在項(xiàng)目中落地解阅,幾乎不可能落竹。即便某些有設(shè)計(jì)的代碼合入具體項(xiàng)目,如果沒有非常明確的邊界和維護(hù)的手段瓮钥,也會很快的腐敗筋量,這樣的例子太多了。

精英(專業(yè))團(tuán)隊(duì)碉熄,當(dāng)然可以落地軟件設(shè)計(jì)桨武。敏捷是價值觀驅(qū)動的方法論集合。價值觀這東西锈津,本身就充滿了精英主義的味道呀酸。軟件設(shè)計(jì)并不帶來當(dāng)期利益,大部分項(xiàng)目線的領(lǐng)導(dǎo)者其實(shí)只關(guān)心當(dāng)前版本琼梆。當(dāng)大型軟件腐化到大部分人都覺得它應(yīng)該改造一下 了性誉,它的改動成本已經(jīng)太大了,或者性能惡化的太嚴(yán)重了的時候茎杂。這個時候肯定已經(jīng)不是改造代碼错览,改動架構(gòu)的好時機(jī)了。改動引入故障的巨大風(fēng)險(xiǎn)煌往,幾百上千人的編程習(xí)慣倾哺,捉襟見肘的人力,和不確定的結(jié)果都會讓這種努力變得艱難而危險(xiǎn)刽脖。打個比方羞海,肝癌感到疼的時候,已經(jīng)是晚期了曲管。

某種程度上却邓,我們也并不希望大型項(xiàng)目中所有的人都是能力全面,價值觀正確的精英院水。要求一個程序員編碼的時候腊徙,要關(guān)注業(yè)務(wù)拆分的正確性,關(guān)心軟件設(shè)計(jì)的合理性檬某,同時還要關(guān)心性能昧穿。人應(yīng)該專注于一個點(diǎn),專業(yè)分工才是效率的源泉橙喘。業(yè)務(wù)團(tuán)隊(duì)就應(yīng)該全心全意的關(guān)心業(yè)務(wù)时鸵。可運(yùn)行、 可監(jiān)控的架構(gòu)設(shè)計(jì)就是來支撐這個目標(biāo)的饰潜。架構(gòu)不應(yīng)該落在文檔和pPT中初坠,編程規(guī)范,xxx規(guī)范彭雾, 培訓(xùn)這都不夠碟刺。架構(gòu)應(yīng)該可以約束分析和編碼過程,提供合適的目錄結(jié)構(gòu)薯酝、依賴關(guān)系半沽、拆分方式、實(shí)現(xiàn)模板(或者DSL)吴菠、非業(yè)務(wù)優(yōu)化方法和某些業(yè)務(wù)/代碼分析工具(以獲得某些feature間可能的關(guān)聯(lián)性)者填。這樣,才可能從根本上落地軟件設(shè)計(jì)做葵、以及減緩代碼的腐化(和性能的持續(xù)惡化)占哟。我們沒辦法期望所有開發(fā)人員都是經(jīng)驗(yàn),但架構(gòu)師酿矢,或者架構(gòu)團(tuán)隊(duì)需要承擔(dān)這個責(zé)任榨乎。對于大型項(xiàng)目來說(數(shù)百上千人),這倒是有可能實(shí)現(xiàn)的瘫筐。

再具體的描述-下架構(gòu)師的職責(zé)吧蜜暑。

1.? 合理的將系統(tǒng)拆分為組件,組件的規(guī)模應(yīng)該控制在7-10人可以維護(hù)策肝,組件的邊界應(yīng)該非常清晰肛捍,不存在函數(shù)調(diào)用,不存在共享數(shù)據(jù):只有消息接口; 在這個基礎(chǔ)上驳糯,做好組件內(nèi)設(shè)計(jì),這是軟件設(shè)計(jì)落地的主要戰(zhàn)場:

2.? 組件內(nèi)分層氢橙,基礎(chǔ)設(shè)施酝枢,實(shí)現(xiàn),邏輯描述;邏輯描述和實(shí)現(xiàn)是非常不同的悍手,被雜合在一起是一 般項(xiàng)目的常態(tài)帘睦,是實(shí)現(xiàn)引入的非本質(zhì)復(fù)雜性之源;

3. 邏輯描述層,DSL可能是必須的選擇坦康,用通用語言(特別是c/C++) 描述某種特定業(yè)務(wù)的邏輯竣付,表達(dá)力欠奉:

4.單一職責(zé)拆分原則,如果是以module和feature的交點(diǎn)進(jìn)行拆分滞欠,那么必須在框架結(jié)構(gòu)中明確的提供實(shí)現(xiàn)這兩個概念的元素古胆,或者在DSL中也應(yīng)該有描述它們的關(guān)鍵字;

5.依賴關(guān)系管理,應(yīng)該有機(jī)制讓邏輯描述層生成接口,而讓實(shí)現(xiàn)層依賴這些接口逸绎,向抽象和接口依賴;

6.? 基礎(chǔ)設(shè)施抽取惹恃,甚至可以將基礎(chǔ)設(shè)施庫(數(shù)據(jù)結(jié)構(gòu))某些業(yè)務(wù)常用的操作封裝成DSL的語法元素:

7.? 非業(yè)務(wù)優(yōu)化,主要是內(nèi)存親和性優(yōu)化棺牧,最好能在DSL的轉(zhuǎn)換器中實(shí)現(xiàn)巫糙, 這是嵌入式系統(tǒng)相對專業(yè)和小眾的領(lǐng)域;

8. 分析工具, 代碼規(guī)范檢測颊乘、代碼質(zhì)量評價(主要是拆分結(jié)果和依賴關(guān)系方向進(jìn)行評價)和業(yè)務(wù)不同feature關(guān)系形式化分析的工具;

大概就是這些內(nèi)容参淹,2-5是更核心的。 1往往是業(yè)務(wù)本質(zhì)決定的乏悄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浙值,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子纲爸,更是在濱河造成了極大的恐慌亥鸠,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件识啦,死亡現(xiàn)場離奇詭異负蚊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)颓哮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門家妆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冕茅,你說我怎么就攤上這事伤极。” “怎么了姨伤?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵哨坪,是天一觀的道長。 經(jīng)常有香客問我乍楚,道長当编,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任徒溪,我火速辦了婚禮忿偷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘臊泌。我一直安慰自己鲤桥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布渠概。 她就那樣靜靜地躺著茶凳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上慧妄,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天顷牌,我揣著相機(jī)與錄音,去河邊找鬼塞淹。 笑死窟蓝,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的饱普。 我是一名探鬼主播运挫,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼套耕!你這毒婦竟也來了谁帕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤冯袍,失蹤者是張志新(化名)和其女友劉穎匈挖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體康愤,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡儡循,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了征冷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片择膝。...
    茶點(diǎn)故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖检激,靈堂內(nèi)的尸體忽然破棺而出肴捉,到底是詐尸還是另有隱情,我是刑警寧澤叔收,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布齿穗,位于F島的核電站,受9級特大地震影響饺律,放射性物質(zhì)發(fā)生泄漏窃页。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一蓝晒、第九天 我趴在偏房一處隱蔽的房頂上張望腮出。 院中可真熱鬧帖鸦,春花似錦芝薇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春晾嘶,著一層夾襖步出監(jiān)牢的瞬間妓雾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工垒迂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留械姻,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓机断,卻偏偏與公主長得像楷拳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吏奸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容