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