軟件設(shè)計 - 響應(yīng)變化(一)

上世紀60年代后望浩,由于“軟件危機”的推動,人們開始借助工程化的方式解決軟件開發(fā)中質(zhì)量透且、成本和工期不可控的問題捶码,形成了軟件工程學(xué)羽氮。

軟件工程學(xué)從其他人類工程學(xué)(如建筑學(xué)和硬件開發(fā))中吸收了許多成功的經(jīng)驗,明確提出了軟件生命周期模型惫恼,并發(fā)展出了各種在軟件開發(fā)與維護階段適用的技術(shù)方法與工程實踐档押,這些都在各種軟件項目中取得了一定的效果。記得當年大學(xué)計算機軟件工程課老師最喜歡用建筑學(xué)做類比祈纯,講到工程令宿、復(fù)用和模式之時必提及Christopher Alexander及其在建筑學(xué)上的相關(guān)著作。

遺憾的是腕窥,雖然軟件工程將科學(xué)的項目管理方式引入到軟件開發(fā)交付過程中粒没,但是并沒有很好解決軟件的一個核心問題,那就是 “變化” 的問題簇爆。軟件在其全生命流程中(無論交付后還是交付過程中)癞松,都會面臨由于需求變更或者技術(shù)演進帶來的相對更高頻的變化。

正因為軟件在開發(fā)和交付后一直充滿著變化入蛆,所以人們往往隱喻軟件是“具有生命”的响蓉。從這個角度來說,軟件開發(fā)有些像“養(yǎng)小孩”而非“做雕塑”安寺。單純用“硬件式”的工程方法被證明是難以做好復(fù)雜軟件的厕妖。

現(xiàn)代軟件工程開始強調(diào)“敏捷”和“演進式設(shè)計”的能力首尼,軟件公司也更愿意重視“人”和“文化”等因素挑庶,正是以動態(tài)生長體的方式來看待軟件言秸。

如果繼續(xù)對軟件領(lǐng)域進行細分的話,會發(fā)現(xiàn)不同領(lǐng)域的軟件變化頻率其實是不同的迎捺。

軟件門檻變化率曲線

上圖展示了軟件的”門檻變化率“曲線:交付門檻越低的軟件举畸,變化頻率越高,而交付門檻越高的軟件凳枝,變化頻率越低抄沮。這也是軟件工程復(fù)雜的原因之一:很難有一條可以完全復(fù)制的成功經(jīng)驗。務(wù)實的做法是根據(jù)自己的定位岖瑰,探索適合自己的方式叛买。

對于變化頻率低的領(lǐng)域,“管控”蹋订、“規(guī)劃”和“度量”為主的工程和設(shè)計方法仍然是有效的率挣;而對于高頻變化的不確定性較強的領(lǐng)域,以“引導(dǎo)”露戒、“反饋”和“持續(xù)演進”為主的工程設(shè)計方法則往往會更加有效椒功。

但是無論如何,軟件要求能夠復(fù)用的特點決定了智什,軟件要能基于自身進行持續(xù)的生長动漾。變化頻率低只是生長速度慢,微小但是不斷累積的變化放到足夠長的時間里面看也是不容小覷的荠锭。

所以即使變化頻率低的領(lǐng)域旱眯,只要軟件生命周期足夠長,向下兼容的時間久节沦,就需要具備讓軟件持續(xù)響應(yīng)變化键思,長期保持健康生命力的能力。

這種能力被稱為 “演進式設(shè)計”甫贯。

關(guān)于演進式設(shè)計吼鳞,Martin Fowler在2004年寫過一篇文章《Is Design Dead?》,辯證的闡述了其與“規(guī)劃式設(shè)計”的關(guān)系叫搁。這篇文章是關(guān)于演進式設(shè)計不可多得的佳作赔桌,這里是其中文翻譯版

演進式設(shè)計被認為主要由以下六部分組成:

演進式設(shè)計

其中渴逻,“完善測試”疾党、“及時重構(gòu)”和“持續(xù)反饋”,組成了演進式設(shè)計的工程能力部分惨奕。具體包括完善的測試體系雪位、重構(gòu)能力以及能夠快速反饋的持續(xù)集成和交付流水線。

上述能力也是現(xiàn)代軟件工程的基礎(chǔ)梨撞,有大量的著作對此做介紹雹洗,如《敏捷測試》香罐、《開發(fā)者測試》、《測試驅(qū)動開發(fā)》时肿、《重構(gòu)》庇茫、《持續(xù)集成》、《持續(xù)交付》螃成、《演進式架構(gòu)》等等旦签。如 Martin Fowler所說,這些工程實踐的目的是 “拉低軟件的變化成本曲線” 寸宏,保證設(shè)計的調(diào)整可以發(fā)生的足夠頻繁宁炫。

而“保持簡單”、“設(shè)計技能”和“延遲決策”則組成了演進式設(shè)計的設(shè)計能力部分氮凝×艿恚《敏捷軟件開發(fā)原則、模式與實踐》以及《浮現(xiàn)式設(shè)計:專業(yè)軟件開發(fā)的演進本質(zhì)》等著作有關(guān)于這方面的闡述覆醇。

不過演進式設(shè)計中關(guān)于設(shè)計方面的優(yōu)秀著作相比工程實踐方面的還是少很多朵纷。慶幸的是袁英杰寫過幾篇極佳的文章,非常適合用來闡述演進式設(shè)計所需要的設(shè)計能力永脓。

  • 這篇文章《簡單設(shè)計》袍辞,通過講解“簡單設(shè)計原則”,很好闡述了什么是演進式設(shè)計中強調(diào)的“保持簡單”常摧。

  • 這篇文章《變化驅(qū)動:正交設(shè)計》非常經(jīng)典的總結(jié)了演進式設(shè)計中需要的可以應(yīng)對變化的“設(shè)計技能”搅吁。

  • 另外一篇《第一顆子彈》極佳的解釋了什么是正確的“延遲決策”。

最后我們總結(jié)一下演進式設(shè)計:

演進式設(shè)計強調(diào)讓設(shè)計盡量 “保持簡單” 落午,對不確定的變化需要 “延遲決策” 谎懦,直到被某個方向上的“第一顆子彈”擊中時,再通過應(yīng)對變化的 “設(shè)計能力” 進行設(shè)計調(diào)整溃斋,并同步將新的設(shè)計 “及時重構(gòu)”到代碼中界拦,讓代碼從此在對應(yīng)的方向上可以保持彈性。

演進式設(shè)計強調(diào)上述過程要能夠及時頻繁的發(fā)生梗劫,不要堆積享甸。這需要自動化的 “完善測試”“持續(xù)反饋” 來持續(xù)保證設(shè)計和代碼變更盡量的低成本和安全有效。

總結(jié)完演進式設(shè)計后梳侨,下一篇中我們著重談?wù)勗谲浖幋a中如何解決具體代碼中存在的變化蛉威,作為對演進式設(shè)計中代碼實踐的補充。


《軟件設(shè)計 - 響應(yīng)變化(二)》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末走哺,一起剝皮案震驚了整個濱河市蚯嫌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖择示,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妒牙,死亡現(xiàn)場離奇詭異,居然都是意外死亡对妄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門敢朱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剪菱,“玉大人,你說我怎么就攤上這事拴签⌒⒊#” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵蚓哩,是天一觀的道長构灸。 經(jīng)常有香客問我,道長岸梨,這世上最難降的妖魔是什么喜颁? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮曹阔,結(jié)果婚禮上半开,老公的妹妹穿的比我還像新娘。我一直安慰自己赃份,他們只是感情好寂拆,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抓韩,像睡著了一般纠永。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谒拴,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天尝江,我揣著相機與錄音,去河邊找鬼英上。 笑死茂装,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的善延。 我是一名探鬼主播少态,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼易遣!你這毒婦竟也來了彼妻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侨歉,沒想到半個月后屋摇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡幽邓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年炮温,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牵舵。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡柒啤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畸颅,到底是詐尸還是另有隱情担巩,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布没炒,位于F島的核電站涛癌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏送火。R本人自食惡果不足惜拳话,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望种吸。 院中可真熱鬧假颇,春花似錦、人聲如沸骨稿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坦冠。三九已至形耗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辙浑,已是汗流浹背激涤。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留判呕,地道東北人倦踢。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像侠草,于是被迫代替她去往敵國和親辱挥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

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

  • 互聯(lián)網(wǎng)提供了低成本的萬物互聯(lián)的物質(zhì)基礎(chǔ)边涕,當然這其中最重要的是人與人的互聯(lián)晤碘。這種低成本的信息交流方式褂微,可以有效解決傳...
    邵棟閱讀 2,920評論 2 8
  • 故事概要: 他叫陳樸生,出生在山西農(nóng)村家庭园爷,大學(xué)畢業(yè)后為追尋初戀張芃芃孤身來到廣州宠蚂,遇見了一位喜歡上他的富家...
    小蒼先森閱讀 300評論 0 2
  • 家鄉(xiāng)的江,在白晝時略顯猙獰童社,裸露出多年艱辛的背脊求厕。 夜色微微拉下帷幕,在這平靜的空間留下淺淺輕撫扰楼。 從未認真審視她...
    One3閱讀 376評論 0 0
  • 發(fā)現(xiàn)個貌似不錯的地方可以寫寫游記(一般會先發(fā)到mafeng窩)呀癣,影評,書評或者就隨便寫寫隨筆什么的灭抑。挺好的。
    大靈不靈Niko博士閱讀 105評論 0 0
  • cambridge_ad7b閱讀 163評論 2 5