浮現(xiàn)式設(shè)計

出版時間:2011-8  出版社:人民郵電  作者:Scott L.Bain  頁數(shù):279  譯者:趙俐^華潔  
Tag標簽:無  

內(nèi)容概要

浮現(xiàn)式設(shè)計是一種敏捷技術(shù),強調(diào)在開發(fā)過程中不斷演進。由Scott L.
Bain編著的《浮現(xiàn)式設(shè)計:專業(yè)軟件開發(fā)的演進本質(zhì)》的討論圍繞著專業(yè)軟件開發(fā)方法的演進主題展開,強調(diào)了讓軟件成為一個真正專業(yè)的重要性,以及以演進方式開發(fā)軟件的重大意義。書中談到了如何在演進過程中綜合運用設(shè)計模式、重構(gòu)、單元測試和測試驅(qū)動開發(fā)等實踐,以及何時制定耦合、內(nèi)聚和封裝等關(guān)鍵決策,而且通過準確生動的示例說明了如何開發(fā)出真正有用的軟件。
《浮現(xiàn)式設(shè)計:專業(yè)軟件開發(fā)的演進本質(zhì)》主要面向軟件開發(fā)者群體,尤其是對敏捷開發(fā)感興趣的程序設(shè)計人員。

作者簡介

擁有30年從業(yè)經(jīng)驗的資深計算機技術(shù)專家。主要從事開發(fā)、工程和設(shè)計。他還曾負責(zé)設(shè)計、提供和管理認證培訓(xùn)課程。從事最終用戶的技能培訓(xùn),既有課堂授課.也有遠程教育。過去8年來。Scott一直在華盛頓州普捷灣畔的Net
Objectives公司工作,負責(zé)培訓(xùn)課程以及有關(guān)設(shè)計模式、重構(gòu)、單元測試、測試驅(qū)動開發(fā)的咨詢工作。Scott與Net
Objectives的CEO Alan
Shalloway一起為敏捷環(huán)境中的設(shè)計模式集成做出了卓越的貢獻。他還經(jīng)常在各種開發(fā)者會議(例如JavaOne和SDWest)上發(fā)表演講。

書籍目錄

第1章 軟件開發(fā)這個職業(yè)
1.1 人類制作軟件已經(jīng)有多久的歷史了
1.2 軟件開發(fā)是一種什么樣的活動
1.3 軟件開發(fā)缺少了什么
1.4 誰說了算
1.5 獨特性
第2章 從衣櫥到探月
2.1 軟件開發(fā)中的模式和專業(yè)化
2.2 Andrea的衣櫥
2.3 探月
2.3.1 因素的連鎖變化
2.3.2 不同的因素導(dǎo)致不同的設(shè)計
2.3.3 還有更多環(huán)境因素
2.3.4 成本和獲益
2.3.5 火星探險
2.4 模式的價值
2.5 小結(jié)
第3章 軟件開發(fā)的本質(zhì)
3.1 失敗率過高
3.2 成功的定義
3.3 Standish Group
3.4 做了錯誤的事情
3.5 做事的方式錯了
3.6 隨著時間的推移,軟件開發(fā)也有所改善
3.7 一個原因:土木工程的類比
3.8 放棄希望
3.9 有時等待和拖延也是必要的
3.10 橋是硬的,軟件是軟的
3.11 我們在變化的海洋中游泳
3.12 接受變化
3.13 擁抱變化
3.14 利用變化
3.15 更好的類比:不斷演進的系統(tǒng)
3.16 小結(jié)
第4章 代碼的演進:初級階段
4.1 用對象結(jié)構(gòu)來代替過程邏輯
4.2 面向?qū)ο蠛湍J降钠鹪?br /> 4.3 一個示例:簡單條件和Proxy模式
4.4 下一步:多路徑條件選擇
4.5 為什么要采用對象結(jié)構(gòu)
4.6 從多個條件中選擇一個
4.7 小結(jié)
第5章 使用和發(fā)現(xiàn)模式
5.1 根據(jù)上下文進行設(shè)計:我做的另一個木匠活
5.2 模式引出了另一個看問題的角度
5.3 模式提供了一種討論設(shè)計的語言
5.4 本書中的模式
5.5 小結(jié)
第6章 軟件開發(fā)金字塔
6.1 構(gòu)成專業(yè)的元素
6.2 一種形象的表示
6.3 小結(jié)
第7章 注重軟件質(zhì)量
7.1 封裝
7.2 內(nèi)聚
7.2.1 方法內(nèi)聚
7.2.2 視角層的內(nèi)聚
7.2.3 類內(nèi)聚
7.2.4 內(nèi)聚到何種程度才足夠
7.3 耦合
7.3.1 有意耦合與意外耦合
7.3.2 耦合類型
7.4 冗余 
7.5 可測試性 
7.6 可讀性 
7.7 軟件的病癥 
7.7.1 內(nèi)聚性較差的信號 
7.7.2 意外耦合或不合邏輯耦合的信號
7.7.3 冗余的信號
7.8 小結(jié)
第8章 注重原則和智慧結(jié)晶
8.1 使用與創(chuàng)建分離
8.1.1 Fowler的三層視角
8.1.2 另一種視角
8.1.3 使用的視角
8.1.4 一個單獨的視角:創(chuàng)建
8.1.5 最后考慮構(gòu)造細節(jié)
8.1.6 回到現(xiàn)實
8.2 開閉原則
8.2.1 類級的開閉原則
8.2.2 方法級的開閉原則
8.3 依賴倒置原則
8.4 GoF的建議
8.4.1 設(shè)計方法的接口
8.4.2 設(shè)計類的接口
8.4.3 GoF:優(yōu)先使用對象聚合而非類繼承
8.5 GoF:在設(shè)計中思考什么應(yīng)該變化并封裝會發(fā)生變化的概念
8.6 小結(jié)
第9章 注重實踐
9.1 統(tǒng)一編碼風(fēng)格
9.1.1 注釋
9.1.2 命名類、方法和變量
9.1.3 編碼標準的好處
9.2 意圖導(dǎo)向編程
9.3 封裝構(gòu)造函數(shù)
9.3.1 原則與實踐
9.3.2 做出決定
9.4 公共性-可變性分析
9.5 實踐與自由
9.6 小結(jié)
第10章 注重紀律:單元測試
10.1 測試的經(jīng)濟學(xué)
10.1.1 單元測試
10.1.2 先寫測試
10.2 JUnit框架
10.2.1 JUnit基礎(chǔ)知識
10.2.2 JUnit示例
10.2.3 Rule.java:先編碼,再測試
10.2.4 RuleContainer.java:先測試,再編碼
10.2.5 消除冗余:@Before和@After
10.2.6 自動化批量測試
10.2.7 異常和單元測試
10.3 模擬對象
10.3.1 MockObject框架
10.3.2 偽對象
10.3.3 依賴注入和Endo-Testing技巧
10.3.4 Endo-Testing
10.4 小結(jié)
第11章 注重紀律:重構(gòu)
11.1 重構(gòu)質(zhì)量糟糕的代碼
11.2 重構(gòu)質(zhì)量優(yōu)秀的代碼
11.3 結(jié)構(gòu)變化與功能變化
11.4 重構(gòu)可幫助你做出選擇
11.5 模式可以成為重構(gòu)的目標
11.6 避免重構(gòu):預(yù)構(gòu)
11.7 重構(gòu)技巧
11.8 重構(gòu)遺留代碼
11.9 小結(jié)
第12章 測試驅(qū)動開發(fā)
12.1 何謂測試驅(qū)動開發(fā)
12.1.1 測試驅(qū)動與先寫測試
12.1.2 從單元測試的角度來設(shè)計
12.2 測試與質(zhì)量
12.2.1 測試與內(nèi)聚
12.2.2 測試與耦合
12.2.3 測試與冗余
12.3 測試驅(qū)動開發(fā)與模式
12.3.1 Strategy模式
12.3.2 烏龜站在烏龜上,一直向下
12.3.3 模擬對象/模擬烏龜
12.4 模擬對象
12.5 模擬烏龜
12.6 測試Decorator模式
12.7 小結(jié)
第13章 模式與因素
13.1 在演進的設(shè)計中做決策
13.2 Christopher Apexander與他所提出的“因素”
13.2.1 信號處理器示例
13.2.2 PKZip示例
13.2.3 測試與因素
13.3 更多選擇,更多因素
13.4 小結(jié)
第14章 浮現(xiàn)式設(shè)計:案例分析
14.1 問題領(lǐng)域:MWave公司
14.2 團隊
14.3 最簡單的能夠正常運作的設(shè)計
14.4 新需求:更復(fù)雜的機器
14.5 順便介紹一下
14.6 更多好消息
14.7 小結(jié):設(shè)計是一次漫長而奇特的旅行
第15章 結(jié)束語:展望2020年
附錄A 演進路徑
附錄B 示例中用到的模式簡介
附錄C 有用幻覺之原理
參考書目

章節(jié)摘錄

版權(quán)頁:插圖:先編寫類,然后再編寫可以驗證其行為是否正常的測試,這樣做會不會更好?還是先編寫測試再編寫滿足該測試的代碼會更好呢?憑直覺,我會選擇先編寫代碼;畢竟寫了代碼才有東西去測試。我過去常常這樣想,因為我認為測試是一種驗證,而不是意圖的表達?,F(xiàn)在,我則認為我的設(shè)計是由測試驅(qū)動的。我不是為了驗證代碼行為而編寫測試;我寫測試的目的是為了在編寫代碼之前先定義代碼的行為應(yīng)該是什么。要這么做,我必須理解行為應(yīng)該是什么樣的,而這對我來說,也是一場很好的檢測,讓我可以據(jù)此判斷自己是否“弄明白”了。在寫單元測試時,我實際上是把我對代碼的期望寫出來。例如,“如果我向add()方法傳遞兩個整數(shù),假設(shè)是5和3,那么它應(yīng)該返回的值是8。”為了編寫這個測試,我必須要充分理解這一意圖,并且能夠想出一個或者一組示例,用來測試那個實現(xiàn)我的期望的類。DouglasAdam在他的書《銀河系漫游指南》。中講述了一個名叫“深思”的古老的大型超級計算機的故事,它被要求回答“宇宙、生命及萬物”的終極問題。實現(xiàn)這種艱巨的任務(wù)也是可能的,盡管如此,但“深思”說:“程序需要運行一段時間?!贝_切地說,它需要運行750萬年。一旦開始運行,在完成之前,程序?qū)o法停止(這有點像在要登機時合上自己的筆記本一樣),于是那個古老的文明社會在幾千年來一直等待著答案。當這個大日子到來之際,“深思”朗誦出了“宇宙、生命及萬物”的終極答案:“四十二?!憋@然,這里的問題是,詢問“宇宙、生命及萬物”這一問題的人根本沒有真正明白他們要問的是什么,所以這個答案對他們毫無用途。人們問“深思”是否可以解釋一下為什么答案會是四十二,深思很遺憾地說不能,但是它可以設(shè)計出一臺更優(yōu)秀的電腦來解釋。而這臺電腦就是地球以及在地球上繁衍生息的人類社會。換句話說,問題可能比答案更為復(fù)雜。

媒體關(guān)注與評論

“這本書就是一座智慧的金礦!本書蘊藏的豐富的智慧來自軟件工程領(lǐng)域多年經(jīng)驗的累積。它集合了大量軟件開發(fā)的最佳實踐,并將其運用于浮現(xiàn)式設(shè)計的理念之中。本書是軟件開發(fā)人員的必讀書籍!我給開發(fā)小組領(lǐng)導(dǎo)者的建議是:那些沒讀過這本書的程序員。到年末統(tǒng)統(tǒng)開掉!”  ——Amazon.com“這本書的不少代碼示例是用,Java寫的.也有一些是C#,它們淺顯易懂、直指要害。本書寫作風(fēng)格獨特。Bain輕松隨意的敘述手法讓枯燥的技術(shù)問題看起來妙趣橫生,他甚至拿自己現(xiàn)實生活中的小事作類比,讀來讓人忍俊不禁?!薄  猅ruewill. net

編輯推薦

《浮現(xiàn)式設(shè)計:專業(yè)軟件開發(fā)的演進本質(zhì)》是一部敏捷開發(fā)與軟件設(shè)計的至尊寶典、深入剖析軟件開發(fā)過程的演進本質(zhì)、敏捷開發(fā)大師AIanShalloway鼎力推薦。隨著軟件的不斷進化和成熟。軟件開發(fā)過程變得越來越復(fù)雜、越來越依賴各種方法學(xué)和開發(fā)方法。要想讓軟件兌現(xiàn)它的承諾,提供長期穩(wěn)定的回報.軟件開發(fā)必須足夠成熟。成為一門真正的專業(yè)。《浮現(xiàn)式設(shè)計:專業(yè)軟件開發(fā)的演進本質(zhì)》闡明了構(gòu)建下一代軟件的方法。作者把當今最重要的開發(fā)原則匯集成了一個統(tǒng)一的、流線化的、實用的軟件開發(fā)方法,他汲取了模式、重構(gòu)和測試驅(qū)動開發(fā)的精華,闡述了如何在整個軟件生命周期中高效地開發(fā)、管理變更以及持續(xù)交付健壯、可靠且經(jīng)濟高效的系統(tǒng)?!陡‖F(xiàn)式設(shè)計:專業(yè)軟件開發(fā)的演進本質(zhì)》反映了對系統(tǒng)開發(fā)的自然流程的深刻理解.并幫助開發(fā)人員順應(yīng)這個流程,而不是反其道而行之。Bain向我們介紹了一次只做一個步驟的浮現(xiàn)式設(shè)計的原則和實踐,展示了如何隨著時間的推進逐步促進軟件系統(tǒng)的自然演進.使系統(tǒng)更好地工作并提供更大價值。為了演示這種方法。書中提供了大量代碼示例,最后還提供了一個完整的案例分析。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    浮現(xiàn)式設(shè)計 PDF格式下載


用戶評論 (總計1條)

 
 

  •   軟件工程經(jīng)典,值得收藏!但是書的封面有點臟!
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7