1. 程式人生 > >現代軟體工程講義 目錄

現代軟體工程講義 目錄

軟體工程牽涉的範圍很廣, 同時也是一般院校的同學反映比較空洞乏味的課程 (不信就請看 微博上的軟工)。 但是軟體工程的技術對於投身IT 產業的學生來說是非常重要的。 經過幾年的探索, 我總結了在16周的時間內讓同學們通過 “做中學 (Learning By Doing)” 掌握實用的軟體工程技術的教學計劃。這幾年教書的過程中, 我學習了一些 好老師的建議,  還有些教課的心得, 也對中國大學的 IT 教育有些反饋。近兩年高等教育有不少創新的嘗試, 希望這個軟體工程課也能實踐一些創新的點子。 

迄今有三十多所學校採用了 《構建之法》的理念和教程來教程式設計/軟工課程。 它們大多采用了網上課堂 + 

網上助教的形式,可以前往圍觀, 這是一個老師寫的開課步驟 。

最新版資訊:

《構建之法 - 現代軟體工程》第三版(第三版的豆瓣討論第二版多看 電子版, 對我的採訪微博課件(PPT)

這套講義有這樣的特點:

理論和實踐相結合,講現代理論,同時講體現理論的工具,結構緊湊,個人專案/結對專案/團隊專案緊密配合, 能在14 周講完。

面向實戰,強調做中學 (learning by doing), 專案都公開發布,使用者數量和反饋是專案重要的評價標準。學生在公開的社群中獲得反饋。 

結合實際,講人在軟體工程中的不同角色和作用,如:軟體過程, 軟體工具, 軟體人員的技術能力和職業能力。

學生作業涵蓋了閱讀,分析,程式設計,團隊合作,技能評估,作業經過了數年實戰的考驗,聯絡實際,覆蓋面廣。都有相當大的擴充套件性,能適合一般大學和世界一流學校的練習要求。 

擴充套件內容多:  參考書 (20 本),和眾多的參考資料

吸收了眾多高校師生在實際教學中的經驗,每個學期的各種內容都有增量改進。

 

講義內容:  

1. 概述

 

2. 個人開發技術

  1. PSP: Personal Software Process
  2. 程式效能分析   例項
  3. 單元測試    (在最小的程式設計單元上保證正確性)  &  迴歸測試   (保證程式在修改的過程中, 原有的功能保持穩定 ) 
  4. 單元測試的實踐:詳細的 Java 示例   C++ 示例   從命令列開始逐步培養程式設計能力 Java
  5. 技能的反面
  6. 練習與討論 (個人技術) &  練習與討論 (工程師的成長),軟體工程師能力自我評定表

3. 兩人合作

  1. 程式碼規範和程式碼複審
  2. 結對程式設計, 有記載的最早的結對程式設計發生在 1987年3月…
  3. 給人提意見的方式 - 送一個漢堡包
  4. 練習與討論

 

4. 軟體過程/方法論

  1. 各種方法概述 
  2. 敏捷方法:  酒後的敏捷,  敏捷宣言敏捷原則
  3. Scrum/Sprint,  TDD, FD 
  4. MSF-Agile
  5. 支援軟體過程的工具 (TFS)  
  6. 練習與討論: 團隊與流程  &  敏捷 & MSF

5. 團隊中的角色與合作

  1. 團隊的型別團隊合作的階段
  2. 團隊成員不同的投入和心態  - 豬/雞/鸚鵡  
  3. 角色 – PM   PM Spec, PM 的成長, 專案管理的細節    練習與討論: PM
  4. 角色 – Dev   Dev 的成長  軟體開發不是閉卷考試   頂級程式設計師的心得–Coders at Work 
  5. 角色 – QA & Test 質量保證和測試, QA 的閏年問題QA/Test 的角色和分工,練習與討論: 測試, 質量保證

6. 需求

a. 專案需求分析和建議 

b. 使用者調研的方法

c. 目標和遠景  - 反面例子畫扇面

d. 計劃階段, 軟體估計 (1) (2)

e. 場景/典型人物,  spec

f. 練習與討論

 

7. 設計和開發 

  1. 基本的分析和設計方法
  2. 模組API 的設計 (例子: elevator design,  mvc/mvvm,  interface)
  3. 開發階段的日常管理
  4. 使用者介面,使用者體驗的設計   
  5. 原始碼管理 - 你的團隊能做到這些麼?
  6. 練習與討論: 場景設計  &  軟體設計與實現 & 使用者體驗 

8. 穩定階段, 釋出和維護

a. 測試的計劃和執行 

b. 關於閏年的測試

c. 從CC 到 ZBB, 到最後的軟體釋出

d. 練習與討論

 

9. 軟體和 IT 業的創新

a. 創新的迷思  連載   (1) (2) (3

b. 創新 - VCD 的故事

c. 創新的時機

d. 魔方的創新 

e. 如何提出靠譜的專案建議 (NABC)

f.  創新的出路 - 走進作坊;  創新的招數

g. 練習與討論

 

10. 軟體專案的管理

  1. 績效管理
  2. 程式碼量和樹葉量
  3. Postmortem - 事後諸葛亮會議
  4. 軟體工程師的職業道德
  5. 人的問題 (同學的感想
  6. 練習與討論

 

附錄, 參考書, 論文閱讀

本教材的參考書和參考資料; 現代軟體工程的教材和參考書(豆瓣列表); 有關創新的書(豆瓣列表)

 

 

 

作業彙總

說一千道一萬,作業應該是怎麼樣的呢, 請看: 

-------

程式設計和軟體工程課的作業彙總

-------

 

 

採用過這門教程的學校列表:

注:排名按照學校所在地大致由北向南排列, 一個學校採用《構建之法》 的情況有多種方式,包括:作為教材,作為參考書,使用課件或參考課件,採用 “做中學”的教學方法,採用有工程經驗的助教幫助教學,等等。我們有老師和助教的微信群,歡迎加入。

 

 

學校

任課

教師

學生

級別

 

部落格/Github (部分)

部分優秀學生部落格

東北師範大學

楊貴福

研究生

課程名:軟體專案管理  教學部落格

 鄭蕊 濮成林 演奏者

瀋陽航空航天大學

張翼飛 大三 下 教師部落格  助教部落格  薛鵬飛  Ray

北京工業大學 / 耿丹學院

馮花平

大三

老師部落格 

周陽  

北京工業大學 (本部)

楊紅麗

大三

助教部落格  學生部落格

 

清華大學 軟體學院

 劉強

 大二 下

 學生部落格:

http://www.cnblogs.com/juicygroup

 ZhaoYang

北京航天航空大學

計算機學院

 羅傑

大三

教師部落格。 

學生部落格列表:2014 個人, 2014 團隊 2015 

SkyJoker 傳奇 殷鵬程 zmpy VeryBigMan 黃可嵩 劉乾

團隊1 團隊2 助教

人民大學

劉青  

助教部落格

 

北京電子科技學院

資訊保安系

婁嘉鵬

大二

教師部落格   學生部落格

 

 lwr  劉偉康

天津大學

軟體學院

章亦葵

 研一

學生部落格:http://www.cnblogs.com/voidsh/p/4338183.html

http://www.cnblogs.com/hugozou/  

 

石家莊鐵道大學

軟體工程系

王建民

大二

教師部落格:http://www.cnblogs.com/wangjm1975/

學生團隊和個人部落格:http://www.cnblogs.com/wangjm1975/p/4812581.html

http://www.cnblogs.com/wangjm1975/p/4812559.html 

 

齊魯工業大學

軟體工程系

 

趙培英

 大二

教師部落格:http://www.cnblogs.com/qluZhao/

助教部落格1:http://www.cnblogs.com/math/p/4567801.html

助教部落格2:http://www.cnblogs.com/xiaozhi_5638/p/4490764.html

學生個人部落格及Github列表學生團隊部落格列表

 

南通大學

電腦科學與技術學院

鞠小林

大三

教師部落格:http://www.cnblogs.com/juking/

助教部落格:寶玉 ; 學生個人部落格列表

 苗中峰

安徽巢湖學院

卜華龍

大三

學生部落格

 

上海海洋大學

葛豔 

大三

教師部落格

 

河南職業技術學院

軟體工程系

陳紅根

大二上

助教部落格:http://www.cnblogs.com/gmailcs/articles/4804157.html

老師部落格

 

四川師範大學計算機系

 

廖雪花

研一,本科

教師部落格 助教部落格   

 

東華理工大學

軟體工程系

李祥

研一

高階軟體工程課 教師部落格   學生部落格

 

華中科技大學

機械學院

陳冰

大四

老師部落格

 

中國地質大學(武漢)  

範萍  

老師部落格

 

武漢大學

李小紅  

教師部落格

 

湘潭大學

宋小波  

教師部落格

 

福州大學

數學與電腦科學學院

張棟

大三

教師部落格 助教部落格  學生部落格

西瓜 少棉

福建閩江學院

測試課程

大三

教師部落格  考核 助教部落格

 

廣州商學院

資訊工程與技術學院

杜雲梅

大二

教師部落格 助教部落格  學生個人部落格列表  學生團隊作業

 

微軟亞洲研究院 創新人才培訓班 (各個學校的優秀學生)

 

大四

團隊部落格代表  2015年 2014年 2012年  2011年

 

 

在正式編輯出版前,這套講義在下面的學校正式課程中運用過:

2007 – 2010   清華大學理論電腦科學研究中心 (姚班) 主要是大四上學期 
2009,  2012    北航計算機系  大三上學期 
2010,2011,2012 秋季   中科大-微軟 計算機實驗班 (微軟亞洲研究院創新人才班 ) 大四上學期       

還有在北大合作的教學: 

2007 - 2009 北京大學軟體學院 研究生課程 (課程名叫 - 微軟軟體實現技術, 我是講師之一, 只講了本課件的少部分內容)

  

學生上課之後感想如何呢? 請看

 

http://www.cnblogs.com/-OwO-/p/5116725.html

http://www.cnblogs.com/wx1306/p/5117461.html

http://www.cnblogs.com/malinlin/p/5058509.html

http://www.cnblogs.com/dasusu/p/5061566.html

http://www.cnblogs.com/maxx/p/5060565.html

http://www.cnblogs.com/lizanqirxx/p/5066399.html

 

 現代軟體工程系列 學生精彩文章(7) 寶貴的教訓

 現代軟體工程系列 結對程式設計 兩週寫好3D 陸戰棋 

 現代軟體工程系列 學生的精彩文章 (6) 我們其實還不懂網際網路 

 現代軟體工程系列 學生的精彩文章 (5) 其實還是人的問題 

 現代軟體工程系列 學生的精彩文章 (4) 為使用者服務 

 現代軟體工程系列 學生的精彩文章 (3) 如何在Bug 不斷的情況下還能保持平常心... [zz] 

 現代軟體工程系列 學生的精彩文章 (2) 到底是誰的 bug? 

 現代軟體工程系列 學生的精彩文章 (1)

 

    2012 部分北航學生的感想:

http://www.cnblogs.com/jessica-song

http://www.cnblogs.com/DOOM-lyx/

http://www.cnblogs.com/yinpc/

http://www.cnblogs.com/Tjamie/

http://www.cnblogs.com/felix1993

http://www.cnblogs.com/linlu1142/

www.cnblogs.com/coolcrow/

http://www.cnblogs.com/DOOM-zxz/

http://www.cnblogs.com/xyqhello

http://www.cnblogs.com/quanfengnan

http://www.cnblogs.com/DOOM-cbx/

http://www.cnblogs.com/honghong1191

http://www.cnblogs.com/ieverx

http://www.cnblogs.com/Highestop/

 

所有講義, 作業都可以分享給教師用於教學, 只要註明引用來源即可,  不必事先取得同意。

歡迎反饋和意見。

 

本文系轉載,出處:http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html