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