軟體開發的科學與藝術 內容簡介
本書凝聚了微軟專家多年研究和工作中獲得的寶貴經驗,是特為每個關注軟體開發的人而準備的一本書。書中,這些微軟專家現身說法,提供了許多成功亦或失敗的案例,並進行深刻中肯的剖析,為讀者展現微軟企業文化,以及微軟的軟體開發過程和項目管理等方面的內容。相信這些內容能夠帶給讀者許多思想和觀念上的重塑,從而對我們的後繼學習和工作產生重要的影響。重要的是通過學習和借鑑軟體巨人─微軟的成功經驗,從而推動中國現代IT企業的發展和進步。 不論是軟體開發人員,還是項目管理人員都將從中獲益匪淺。本書將是每個從事軟體開發的人員案頭不可或缺的珍藏書。軟體開發的科學與藝術 本書目錄
《軟體開發的科學與藝術》成書的原因與過程 1《軟體開發的科學與藝術》的內容 3
本書的意義 4
第1章 全球軟體產業現狀、趨勢與挑戰 5
The Challenges and Opportunities of the Global Software Industry
軟體是一台計算設備的思維中樞。經過數十年的發展,軟體產業已經成為當今世界投資回報比最高的產業之一,而這一產業正在潛移默化地改變著我們賴以生存的這個星球的面貌。新世紀,軟體產業已經呈現出了一些引人入勝的轉變跡象,本章概括地把這些跡象表述為三個趨勢:網路化、服務化與全球化,並從技術角度就高科技產業所面臨的機遇與挑戰闡述了作者的觀點。
1.1 軟體產業的網路化趨勢 8
1.2 軟體產業的服務化趨勢 11
1.3 軟體產業的全球化趨勢 13
1.4 網路化、服務化、全球化趨勢對中國軟體產業的啟示 15
第2章 現代軟體開發對人才的要求 19
Talent Beyond Technology What Kind of Talent We Need for
Modern Software Development
軟體開發是一門科學,更是一門藝術。微軟在二十幾年的發展過程中形成了其獨特的軟體開發與設計的企業文化。目前,中國軟體業的發展喜憂參半。中國擁有高素質、基礎紮實、學習能力強且思維敏銳的軟體專業人員,但中國大規模的軟體生產尚處於初期發展階段,軟體的研究與開發過程中尚有許多亟待解決的問題。本章中,凌小寧博士關於微軟企業文化以及軟體開發人才等方面作了精闢的論述,這些內容是我們中國學生及軟體從業人員應該了解、理解並恰到好處地遵循的。
2.1 現代軟體開發概述 21
2.2 獨具魅力的微軟企業文化與軟體開發人員的培養 23
2.3 從差別中尋找解決方案 28
2.4 紮實的基礎和創新、獨立的工作能力 33
2.5 主人翁精神和團隊精神 34
2.6 鍥而不捨、從錯誤中學習的精神 46
第3章 從研究到產品 51
From Research to Products
如何將研究成果投向市場並獲得成功,這是許多人關心的問題。實際上,從研究成果到產品是一個非常複雜並且非常漫長的過程,其中會牽涉到相當多的問題。張益肇博士根據多年來積累的豐富實踐經驗,首先介紹了一種關於產品空間的思維方式 技術生命周期,以及在生命周期各階段中用戶對技術和市場的影響;其次通過具體的案例說明技術和市場的關係;最後總結出了三條寶貴的規則,相信會給讀者帶來很大的啟發。
3.1 引言 53
3.2 技術生命周期 56
3.3 案例分析 62
3.4 練習 67
3.5 間斷技術 73
3.6 基本規則 83
3.7 推薦書目 87
第4章 微軟的軟體開發 89
Software Development at Microsoft
現在的軟體開發不再是個人英雄主義打天下的時代了,尤其是像微軟這樣大的軟體公司,一個軟體都是由幾百人甚至幾千人共同合作完成的。那么如何管理這樣龐大的開發陣容?員工是如何分工的?他們之間又是如何協作的?這些都是大家關心的問題。陳宏剛博士結合自己在微軟公司的親身體驗,並結合具體實例,從一個較高層次介紹了微軟的產品團隊、軟體開發過程和開發方法。
4.1 概述 91
4.2 微軟的產品團隊 94
4.3 微軟的軟體開發過程 106
4.4 想法和意圖批准里程碑 112
4.5 產品計畫的通過里程碑 118
4.6 範圍完成/第一次使用里程碑 123
4.7 發布階段 130
第5章 軟體設計之源 141
Source of the Software Design
在一些人眼裡,今天的軟體開發似乎已成為簡單的事件:已有了不少很好的開發工具和軟體庫,軟體開發人員訓練有素,都強烈渴望去編寫很酷的軟體,可以在幾天的時間裡編寫出一個相當複雜的軟體。但為什麼有一些軟體能夠得到用戶的喜歡,而另一些則不能?為什麼有些軟體能夠在市場上成功,而有些則受到冷落?由此可見,開發軟體並不一定難,難就難在如何開發有用的軟體。本章,凌小寧博士就根據自己多年的實踐經驗,回答"如何設計有用的軟體"這個問題。
5.1 軟體設計簡述 143
5.2 三個困難的問題 144
5.3 設計之源 145
5.4 錯誤設計之源 149
5.5 基於用戶情景的設計 153
第6章 項目管理 161
Program Management
項目管理是一種廣泛套用於各種工程、金融甚至農業生產中的技術管理過程。在IT行業,項目管理常常是決定產品或企業能否成功的最重 要指標之一。中國歷經了15年的不懈努力,加入世界貿易組織終成現實,這為我們帶來了前所未有的機遇和挑戰。我國政府所屬各部門和企業領導對於項目管理也越來越重視,現在市場上名目繁多的各類項目管理培訓就可見一斑。
熊明華在微軟擔任項目經理這一職位多年。本章是根據他親身實踐,對微軟的項目管理進行了詳細的介紹,相信對我國軟體業項目管理水平的提高會有所促進。
6.1 項目管理簡述 163
6.2 什麼是項目經理 164
6.3 項目經理的行政結構與工作關係 167
6.4 為什麼需要項目經理 175
6.5 項目經理每天的具體工作是什麼 178
6.6 做項目經理的背景要求 182
6.7 結論 187
第7章 寫好代碼的十個秘訣 189
10 Things You Can Do To Write Better Code
在現代軟體的開發中,如何寫出具有正確邏輯而且執行速度快的代碼是眾多的軟體開發人員所追求的目標。林斌在微軟總部擔任了多年軟體開發高級工程師,參加了微軟多種產品的開發工作。本章,他根據自己多年的親身體驗,為讀者總結出一流代碼應該具備的特性,以及寫一流代碼的十個秘訣。文中展示了豐富的具體代碼實例,並進行了詳盡透徹的分析,最後提供了正確的解決之道。如果你是一名軟體開發人員,相信本章對你今後的編程工作會有很大的幫助。
7.1 簡介 191
7.2 編寫代碼的十大秘訣 196
7.3 結束語 228
第8章 如何提高程式的性能 231
Secrets of Software Performance
如果你是一名軟體開發人員,是不是經常因為程式的性能而受到老闆的指責?你是不是經常因為程式的性能而被用戶刁難?你是不是經常因為程式的性能而飽受等待之苦?那么,怎樣才能儘量最佳化應用程式,提高其性能呢?本章,林斌根據自己多年在微軟進行軟體開發的實踐經驗,為我們提供非常棒的提高性能的方法,並列舉了具體的案例學習,最後,還詳細介紹了令無數軟體開發人員頭痛的記憶體問題。如果你是一名軟體開發人員,閱讀本章後,立即將這些方法套用到你的應用程式中,體驗一下性能提高的喜悅吧。
8.1 提高性能的方法 233
8.2 案例學習 234
8.3 記憶體 241
第9章 軟體測試基礎 255
Basic of software testing
軟體測試是一門非常嶄新的學科,目前研究的內容還不很深入,所涉及的只是測試數字、測試函式等一些非常簡單的問題,可以說還處於嬰兒階段。由於軟體測試學科還不成熟,它到底需要一個什麼樣的專業基礎,尚無定論,而且目前還沒有一種很好的標準來衡量一名測試人員的優劣。本章,陳宏剛博士根據親身體驗,以微軟公司為例講述軟體測試的方法及實施過程。陳宏剛博士指出,軟體測試學的發展還有賴於大家共同努力,促進其研究的不斷深入。相信本章能對軟體測試工作起一定的指導作用
9.1 概述 257
9.2 關於Bug 266
9.3 軟體測試方法和輔助工具 269
9.4 相關測試文檔 276
9.5 如何與項目經理及開發人員溝通 278
9.6 結束語 286
第10章 如何撰寫測試文檔 291
Write Good Testing Documents
正因為軟體測試還是一門新興學科,各方面的規範還不完備,目前軟體測試工作還無一定的規範可依據。微軟經過二十餘年的發展,在實踐中不斷摸索和總結出一套獨特的軟體測試方法。本章中,陳宏剛博士主要結合自己在微軟公司多年的測試工作總結出寶貴的經驗,為讀者介紹如何撰寫測試的相關文檔,包括測試計畫文檔、測試規範文檔、測試案例文檔、測試報告文檔以及Bug報告文檔。本章附屬檔案中包含了陳宏剛博士親手撰寫的一些測試文檔實例。
10.1 測試計畫(Test Plan) 293
10.2 測試規範(Test Specification) 298
10.3 測試案例(Test Case) 301
10.4 測試報告(Test Report) 301
10.5 Bug報告(Bug Report) 302
附錄A 微軟亞洲研究院介紹 343
附錄B 課程設計 347
編輯手記 351