關(guān)于我們
書單推薦
新書推薦
|
基于案例的軟件構(gòu)造教程 本書以一個案例的演變模擬不斷變化的用戶需求,按照增量迭代的開發(fā)模式,將碎片化的功能開發(fā)、用戶交互、數(shù)據(jù)處理等知識,以及軟件設(shè)計、軟件測試和敏捷開發(fā)的*佳實踐,與軟件開發(fā)的原理、技術(shù)和工具融合到設(shè)計、編碼、調(diào)試及測試的構(gòu)造過程。內(nèi)容包括軟件構(gòu)造的一般原理(如模塊化、增量迭代)、常用技巧(如表驅(qū)動編程、測試驅(qū)動開發(fā))、軟件設(shè)計(契約式設(shè)計、設(shè)計模式)、軟件知識(如軟件測試、軟件復(fù)用)以及軟件構(gòu)造的工作要素(如編碼規(guī)范、構(gòu)造工具)和活動(如設(shè)計、編碼、測試、交付)。本書提供配套電子課件、案例源程序、例子代碼、教學(xué)參考方案等。本書面向計算機學(xué)科的本科學(xué)生,可作為“軟件構(gòu)造”、“Java面向?qū)ο笳n程設(shè)計”等課程的教材,也可作為“實用軟件工程”的參考書,同時也適合學(xué)習(xí)軟件開發(fā)的其他專業(yè)及愛好者參考。 適讀人群 :本書面向計算機學(xué)科的本科學(xué)生,可作為“軟件構(gòu)造”、“Java面向?qū)ο笳n程設(shè)計”等課程的教材,也可作為“實用軟件工程”的參考書,同時也適合學(xué)習(xí)軟件開發(fā)的其他專業(yè)及愛好者參考。 提供配套電子課件、案例源程序、例子代碼、教學(xué)參考方案等;提供三種教學(xué)參考方案,教師可根據(jù)需要調(diào)整。__ 隨著計算機與互聯(lián)網(wǎng)在經(jīng)濟與日常生活中的滲透,各種形態(tài)的軟件層出不窮,如傳統(tǒng)的桌面軟件、瀏覽器-服務(wù)器結(jié)構(gòu)的Web應(yīng)用、軟件和服務(wù)SaaS及移動應(yīng)用程序APP等,國家和社會對各類軟件的需求不斷增加。特別是移動APP的出現(xiàn),再次凸顯了小型軟件開發(fā)的重要性。 傳統(tǒng)計算機學(xué)科的課程體系涵蓋了大量軟件開發(fā)的知識,如高級語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)與算法、數(shù)據(jù)庫、計算機網(wǎng)絡(luò)、操作系統(tǒng)、編譯原理、軟件工程等,傳授方式理論化、知識碎片化。設(shè)置和講授這些課程的主要目的,甚至有些課程的唯一目的不是提升編程解決問題的能力,而是理解和研制計算機及系統(tǒng)軟件。軟件工程課程的核心作用是培養(yǎng)軟件開發(fā)的需求分析、軟件建模及團隊協(xié)作、項目管理等實際工作需要的綜合能力,但其基本前提是要求學(xué)生具備軟件構(gòu)造能力,即通過設(shè)計、編碼、單元測試、集成測試和調(diào)試的組合,創(chuàng)建有用的軟件,F(xiàn)代軟件開發(fā)方法包括極限編程、測試驅(qū)動開發(fā)等敏捷方法,突出特點是每個程序員都具有高超的軟件開發(fā)能力。他們不僅熟練掌握多種類型的編程語言、框架與中間件、設(shè)計模式、軟件設(shè)計和測試技術(shù)及數(shù)據(jù)處理、用戶交互等方面的知識,還要熟悉開發(fā)流程,具備把實際問題轉(zhuǎn)換成軟件的分析、設(shè)計和構(gòu)造能力。 本書旨在以案例為引導(dǎo),通過集成化解決軟件知識的碎片化,提升個人的軟件構(gòu)造能力,加快從程序編寫到軟件開發(fā)的轉(zhuǎn)變,在孤立的基礎(chǔ)課程與軟件工程課程之間搭建橋梁。目標是把學(xué)生培養(yǎng)成能獨立地綜合運用技術(shù)、開發(fā)可用產(chǎn)品的高級程序員,再通過后續(xù)課程(如軟件工程、綜合課程設(shè)計和實習(xí)實訓(xùn))培養(yǎng)成軟件工程師。 主要內(nèi)容與結(jié)構(gòu) 本書內(nèi)容涵蓋IEEE計算機學(xué)會最新頒布的“軟件工程知識體系”中“軟件構(gòu)造”知識域的95%以上,以及軟件設(shè)計、軟件測試和敏捷開發(fā)的最佳實踐,主要包括: ? 軟件構(gòu)造的一般原理:模塊化,信息隱藏,逐步求精,面向?qū)ο笤瓌t,增量迭代,軟件復(fù)用,軟件質(zhì)量。 ? 軟件構(gòu)造的常用技巧:表驅(qū)動編程,防御式編程,按意圖編程,事件驅(qū)動編程,代碼重構(gòu),框架與程序包,測試驅(qū)動開發(fā)。 ? 軟件設(shè)計:軟件建模及其語言UML,E-R圖,控制流圖,狀態(tài)圖,設(shè)計原則,設(shè)計模式,契約式設(shè)計,面向?qū)ο螅脩艚换,?shù)據(jù)庫的設(shè)計與實現(xiàn)。 ? 軟件知識:軟件過程,敏捷開發(fā),最佳實踐,面向?qū)ο缶幊,?shù)據(jù)結(jié)構(gòu)與算法的實現(xiàn),數(shù)據(jù)庫編程,軟件復(fù)用。 ? 軟件構(gòu)造的工作要素:編碼及其規(guī)范,構(gòu)造工具如IDE、Ant、JUnit。 ? 軟件構(gòu)造的活動:設(shè)計,編碼,調(diào)試,集成,測試(單元測試、回歸測試、集成測試、靜態(tài)測試)。 不同于傳統(tǒng)軟件教材按照開發(fā)活動或知識域的編寫方式,本書以一個案例的演變,模擬不斷變化的用戶需求,以增量迭代的開發(fā)模式,編排這些教學(xué)內(nèi)容。每章完成之后都有可用的、實現(xiàn)了用戶要求功能或特性的程序。每章以案例故事引出構(gòu)造問題,通過例子及設(shè)計和代碼,討論解決問題的基本原理、方法、技術(shù)等最佳實踐,給出一個可操作的構(gòu)造方案,問題的可選設(shè)計、擴展則作為提升或留作練習(xí)。 全書共9章。第1章概述軟件與軟件開發(fā)的基本概念,說明軟件構(gòu)造的含義及其在整個軟件開發(fā)過程中的地位和作用,引入本書案例。第2~9章以增量迭代方式,將功能開發(fā)、用戶交互及數(shù)據(jù)處理等知識,與軟件開發(fā)的原理、技術(shù)和工具融合到設(shè)計、編碼、調(diào)試及測試的構(gòu)造過程。第2章說明模塊化概念及其軟件的構(gòu)造技術(shù)。第3章描述面向?qū)ο蟮脑O(shè)計原則及其軟件的構(gòu)造技術(shù)。第4章學(xué)習(xí)容器類數(shù)據(jù)結(jié)構(gòu)與文件的使用和構(gòu)造。第5章學(xué)習(xí)用戶界面與軟件集成的基礎(chǔ),說明非圖形菜單式用戶交互的設(shè)計與實現(xiàn)。第6章學(xué)習(xí)重構(gòu)技術(shù)、自動化的軟件打包與交付。第7章深入學(xué)習(xí)圖形用戶界面軟件的構(gòu)造。第8章學(xué)習(xí)數(shù)據(jù)庫的設(shè)計并在應(yīng)用程序中使用數(shù)據(jù)庫。第9章學(xué)習(xí)軟件復(fù)用,使用框架和程序包構(gòu)造軟件。 作者借鑒了國內(nèi)外計算機科學(xué)與軟件工程領(lǐng)域的研究與教學(xué)成果。首先是主編在德國斯圖加特大學(xué)計算機系進修期間,其導(dǎo)師路德維希教授于20世紀末在德國大學(xué)開創(chuàng)性地設(shè)立了“軟件工程”示范專業(yè)。其次是最近10多年我國軟件工程領(lǐng)域教育先行者的大膽探索和實踐。最后,在學(xué)科和專業(yè)技術(shù)方面對本書產(chǎn)生巨大影響的是“個體軟件過程PSP”、軟件復(fù)用、敏捷開發(fā)方法及軟件測試。在此對這些研究者和教育者表示崇高敬意和衷心感謝! 李勁華設(shè)計了本書的結(jié)構(gòu)、內(nèi)容及風格,編寫了第1~6章、第9章內(nèi)容及程序,審閱、校對了全書。周強編寫了第7章內(nèi)容及程序,陳宇編寫了第8章內(nèi)容及程序。 本書在編寫過程中得到了學(xué)校、學(xué)院和電子工業(yè)出版社的大力支持,在此表示感謝! 本書謹代表作者們對軟件構(gòu)造的理解與探索。由于認識有限,加之時間倉促,難免存在疏漏和謬誤,歡迎讀者批評指正。可反饋給出版社(wangxq@phei.com.cn)或作者(E-mail:qduli@126.com,QQ:1487220149)。 使用建議 本書試圖將軟件構(gòu)造的原理、原則、方法、技術(shù)、流程和技能整合,通過案例的展開由淺及深地學(xué)習(xí)。對知識的引入遵循足夠、按需和漸進的原則。很多方面的知識(如調(diào)試、測試、設(shè)計、復(fù)用)分布在若干章節(jié)。讀者最好把書中的知識通過案例串連起來,根據(jù)需要,可以跳過某個章節(jié)、提前看某個章節(jié)、需要時回過頭來再看前面章節(jié)的內(nèi)容或者查閱相關(guān)資料。建議讀者一邊思考案例問題,一邊學(xué)習(xí),一邊動手實踐。 就作者所知,目前國內(nèi)外的課程體系中缺乏《軟件構(gòu)造》及相應(yīng)的教材。本書可作為“軟件構(gòu)造”、“Java面向?qū)ο笳n程設(shè)計”的教材,也可以選作部分專業(yè)面向?qū)嵱玫摹败浖こ獭钡膮⒖紩。用于“軟件工程課程設(shè)計”、“軟件工程綜合實訓(xùn)”等課程時,需補充軟件建模、項目管理、團隊合作、應(yīng)用領(lǐng)域等方面的知識。 受篇幅限制,書中對介紹的最佳實踐僅給出了關(guān)鍵的實現(xiàn)代碼,建議授課教師根據(jù)課時選擇性采納或改寫。本書提供配套電子課件、案例源程序、例子代碼、教學(xué)參考方案等,請登錄華信教育資源網(wǎng)(http: //www.hxedu.com.cn)注冊下載或聯(lián)系本書編輯(wangxq@phei.com.cn)索取。 本書面向計算機學(xué)科的本科學(xué)生,也適合學(xué)習(xí)軟件開發(fā)的其他學(xué)生及愛好者。建議在第4~6學(xué)期使用。要求讀者具備程序設(shè)計和面向?qū)ο缶幊袒A(chǔ)。有些內(nèi)容可在需要時適當補充。對軟件工程專業(yè),后續(xù)課程可以是:軟件工程、軟件設(shè)計、軟件測試、軟件項目管理等。對計算機及其他應(yīng)用程序設(shè)計技術(shù)的專業(yè),建議選修“軟件工程”或概論/導(dǎo)論,學(xué)習(xí)團隊開發(fā)大型軟件的技術(shù)和方法。 關(guān)于案例 案例的目的是模仿實際工作,傳授軟件構(gòu)造的基本知識、主要活動、技術(shù)與工具的綜合運用能力。案例不宜太難,需求簡單明了,使沒有多少經(jīng)驗的學(xué)生容易理解,把重點放在軟件的設(shè)計與構(gòu)造,在一個學(xué)期就完成一個可運行的、有意義的程序。設(shè)計的案例產(chǎn)生3000行左右的代碼,計劃持續(xù)3個月、60人時的工作量。案例開發(fā)不指定某種具體編輯語言和軟件過程。 案例是開發(fā)一個“50道100以內(nèi)的加減法口算習(xí)題”的程序。具體要求模擬現(xiàn)實生活,在用戶使用程序的過程中,不斷提出新的要求和功能。 案例看似簡單,卻可以有多種理解方式及擴展。例如,100以內(nèi)的運算數(shù)可包含100或0;可將運算數(shù)值擴大到500、1000;算式可以是至多包含兩個運算符的加減法算術(shù)運算,還可以是至多包含4個運算符的四則算術(shù)運算。每章的提升與課后練習(xí)對案例提出了一些變化、延伸及構(gòu)造,滿足不同層次的教學(xué)要求。 本書程序主要采用Java語言。除個別情況外,書中不提供完整代碼,意在培養(yǎng)學(xué)生獨立解決問題的能力,構(gòu)造不同的、可運行的軟件。 教學(xué)方案 本書面向普通高校本科學(xué)生,提供3種教學(xué)參考方案,任課教師可更根據(jù)需要調(diào)整。例如,如果面向?qū)ο蟪绦蛟O(shè)計的基礎(chǔ)較弱,可減少第2章學(xué)時;如果僅用GUI界面的用戶交互,可減少第5章學(xué)時;如果學(xué)生程序設(shè)計能力較強,可減少第5章之前的實驗,增加第9章學(xué)時。 (1)基本教學(xué)方案(方案1),72學(xué)時(18學(xué)時×5周),講課38學(xué)時,實驗34學(xué)時。 章 節(jié) 基 本 內(nèi) 容 講課 實驗內(nèi)容 實驗 1 掌握1.3節(jié)、1.5節(jié)和1.6節(jié),理解1.1節(jié)、1.2節(jié)和1.4節(jié),閱讀案例1.7節(jié) 掌握程序與軟件的異同、影響軟件開發(fā)的因素、典型的軟件開發(fā)過程、軟件構(gòu)造,理解軟件的相關(guān)概念、軟件生存周期和敏捷開發(fā),閱讀案例 3 2 掌握2.2~2.4節(jié)、2.7.3節(jié)、2.7.4節(jié),理解2.1節(jié)、2.5節(jié)、2.7.1節(jié),閱讀與實踐2.6節(jié),其余了解 掌握模塊化設(shè)計、數(shù)據(jù)結(jié)構(gòu)與算法的選擇、測試設(shè)計、編碼風格,理解模塊化概念、測試概念、調(diào)試概念,閱讀案例,其余了解 4 構(gòu)造1、2 4 3 掌握3.2~3.5節(jié),理解3.1節(jié)、3.7.2節(jié)、3.7.3節(jié),閱讀與實踐3.6節(jié),其余了解 掌握基本的面向?qū)ο笤O(shè)計技術(shù)、調(diào)試技術(shù)、測試框架,理解抽象、封裝、ADT、面向?qū)ο蟮母拍、設(shè)計模式、設(shè)計原則,閱讀案例,其余了解 5 構(gòu)造3 4 4 掌握4.2~4.4節(jié)、4.5.2節(jié)、4.6節(jié)、4.7.1~4.7.3節(jié),理解4.1節(jié)、4.5.1節(jié)、4.7.4節(jié),閱讀與實踐4.8節(jié),其余了解 掌握文件/輸入/輸出流的編程、防御性編程、正則表達式、表驅(qū)動編程、白盒測試設(shè)計、JUnit其他測試,理解數(shù)據(jù)持久性、算式基及測試斷言,閱讀案例,其余了解 5 構(gòu)造4、5、6 6 5 掌握5.1.4節(jié)、5.3節(jié)、5.4.3節(jié)、5.5節(jié)、5.7.1節(jié)、5.7.2節(jié),理解5.1節(jié)其他、5.2節(jié)、5.4節(jié),閱讀與實踐5.6節(jié),其他了解 掌握菜單式用戶交互的設(shè)計與編程、原型法、代碼走查、靜態(tài)分析工具、軟件集成與測試、基于狀態(tài)圖的測試,理解用戶交互的原則和開發(fā)過程、回歸測試、靜態(tài)測試,閱讀案例,其余了解 5 構(gòu)造7 4 6 掌握6.1.1節(jié)、6.2.2節(jié)、6.2.3節(jié),理解6.1.2節(jié)、6.2.1節(jié),閱讀與實踐6.3節(jié)、6.4.2節(jié),其余了解 掌握基本的重構(gòu)技術(shù)和過程、Java程序打包/交付,理解代碼重構(gòu)、軟件交付,閱讀案例和TDD,其余了解 4 李勁華,博士,教授,畢業(yè)于(德國)斯圖加特大學(xué),青島大學(xué)軟件工程系系主任。科技部國際合作重大項目評審專家;《小型微型計算機系統(tǒng)》、《同濟大學(xué)學(xué)報》等核心期刊審稿人;曾任信息技術(shù)與計算機科學(xué)國際大會(ICIS 2008)分會主席。近五年,在國內(nèi)外發(fā)表學(xué)術(shù)論文30余篇,其中SCI檢索1篇、EI檢索10篇。參加國家和省自然科學(xué)基金項目2項,主持完成橫向課題2項。主持或參與完成青島市軟件產(chǎn)業(yè)、“十一五”信息化發(fā)展、“十二五”科技發(fā)展、藍色經(jīng)濟區(qū)信息化建設(shè)等多項產(chǎn)業(yè)和戰(zhàn)略發(fā)展規(guī)劃。講授編譯原理、軟件測試、軟件工程、軟件項目管理、面向?qū)ο蠓治雠c設(shè)計、Java程序設(shè)計基礎(chǔ)等本科生課程,IT項目管理、軟構(gòu)件技術(shù)、軟件測試理論與技術(shù)、UML面向?qū)ο蠼、算法設(shè)計與分析、軟件體系結(jié)構(gòu)等研究生課程。 第1章 軟件開發(fā)概述 1
你還可能感興趣
我要評論
|