現代軟件工程 做業彙總

現代軟件工程課程html

各個學校的編程/軟工做業列表java

-------算法

軟件工程的做業

-------數據庫

不少老師反映軟件工程的做業題很差出,學生作的「大做業」也是了無新意。怎麼辦?師生們身處轟轟烈烈的軟件產業的大環境,可是在軟件工程課上作的題目倒是很是簡陋,沒有起到應有的做用,這的確是一個頗有諷刺意義的事情。有不少因素致使這一結果,這些因素都是能夠克服的,在這裏再也不囉嗦吐槽了。怎麼出一些有分量,能幫助學生進步的題目? 咱們看到,程序 = 算法 + 數據結構;軟件 = 程序 + 軟件工程,軟件工程的編程做業,是不一樣於 「熟悉某個數據結構/實現某個算法」  這樣的算法課做業的。編程

 

做業的格式

一個做業並非一上來就貼代碼,UML 圖, 它應該是學生在 「健身學員/健身教練」這一個關係下, 刻意練習,向本身目標前進的具體努力的體現。在做業的一開始,應該寫:數組

這個做業屬於哪一個課程 <課程的連接>
這個做業要求在哪裏  <做業要求的連接>
我在這個課程的目標是 <寫上目標>
這個做業在哪一個具體方面幫助我實現目標  <寫上具體方面>
做業正文 .... 注意代碼要按格式上傳
其餘參考文獻 ...  

 

 

增長做業的豐富性

一個簡單的程序一般是作這種簡單的事情:安全

   對輸入數據進行處理,並輸出。markdown

 

此類 「程序」能夠從幾個維度擴展,成爲頗有鍛鍊價值的軟件工程做業。下面舉例說明。數據結構

 

從數據方面擴展:模塊化

  • 從數據自己的屬性擴展,例如處理「最大子數組的和」的程序,能夠擴展到大數(超過64位的數字),這樣引入大數的處理。
  • 從數據的數量擴展,不少老師出題就假設數組只有六七個元素,直接寫死在程序中。若是這個數組有一萬個,十萬個元素呢?
  • 從數據的維度擴展,若是數據是在多維數組中呢?
  • 從數據的其它屬性擴展,例如,若是你的程序能處理北京的地鐵數據,如何改進你的程序,讓它能動態處理上海或其餘城市的數據呢?這樣就引入了工程的需求。

 

從需求方面擴展,不少程序的需求都是很是抽象,能夠用數學公式描述和驗證的,例如:「找出數組中的最大值」。下面有幾種擴展的方式:

  • 不是僅僅要求結果,而是要讓程序把計算的過程顯示出來。請搜索各類「動畫顯示排序過程」的程序,咱們的同窗也作了一個相似的題目
  • 從需求的維度方面擴展,例如學生寫了一個「統計程序有多少行」 的程序,咱們能夠進一步要求,能把註釋行,空行,只有一個字符的行去掉麼?能處理目錄裏面的多個文件麼?
  • 重複一個成熟的、學生比較熟悉的需求,這是也是可行的,關鍵是要體現 「工程」的特色。 例如作一個文檔編輯軟件,要求能處理10M 大小的文本文件;作一個圖書信息系統,要求有10萬本書,100萬條借書,還書記錄。不少同窗作的圖書館信息系統只有不到10本書的記錄,這是圖書館麼?
  • 在已有的需求上增量改進,例如,讓文檔編輯軟件支持markdown 語法,支持無限的「後悔」操做;讓圖書館信息系統支持手機客戶端。
  • 探索創新的方式來知足已有的需求,或即將出現的需求。

 

從用戶的方面擴展,絕大部分大做業都是單機運行,給一個用戶(老師)看一次,看完就萬事大吉。咱們能夠考慮下面的擴展方式: 

  • 單用戶第二次使用這個軟件的時候,能有什麼功能,讓單用戶更喜歡這個軟件?(例如:記住上次的狀態,自動展示上次文檔最後編輯的地方,等)
  • 若是多用戶使用這個系統,會出現什麼問題,例如,學生的圖書館信息系統考慮到有100人同時查詢的狀況麼?如何模擬這樣的測試?
  • 用戶從世界各地來,怎麼辦?你的「程序」能提供多種語言的界面麼?
  • 用戶有善意的和惡意的,如何讓你的程序更安全?如何測試安全性?

 

從軟件構建方面擴展:

  • 若是是改進一個已有的軟件,怎麼辦?
  • 大多數的「程序」都是用單一的語言寫的,若是軟件有多個語言寫成的不一樣模塊,如何定義彼此的接口(API)?
  • 若是軟件已經在服務中(例如圖書館信息系統,如何升級部分模塊,同時儘可能減小系統下線的時間?)
  • 有些老師想給學生出一些數據庫方面的團隊項目,可是又怕同窗全盤抄襲現成的實現。能夠考慮這樣的方法:咱們知道數據庫應用通常分三層(數據 | 業務邏輯 | UI 層),老師設計數據庫,學生們設計並實現其餘兩層。 這樣能夠很容易地檢查學生是否能根據別人設計的數據庫來作上層的設計。 而且老師能夠準備大量數據作大規模的測試。 

 

 

下面是一些和閱讀,提問,分析, 設計,總結相關的做業:

第 0 周,課程的底線; 第一週博客做業

結對調查和分析做業 

閱讀和調查做業    (中科大的做業實例)

用戶體驗深刻調查和數量化的報告

原型設計,提出項目建議

最後一週總結

 

和代碼相關的做業:

我的項目:

C++ 基本練習和效能分析 (四則運算)

Java 基本練習和效能分析 (四則運算)

Java 逐步提升練習(用命令行工具逐步練習 Java 技能)

現代軟件工程 做業 1: 我的項目     

從一維數組求最大子數組和展開訓練

我的項目和結對項目練習 地鐵      

期末做業附加題  (同窗的讀書筆記

最大子數組的和 - 及其擴展

 

結對項目:

兩人合做做業的模式

Word Count (wc.exe) 全套練習

四則運算擴展: 模塊化,單元測試,迴歸測試,TDD

動態展示程序的工做過程

英語文件中找到單詞詞頻

結對和團隊項目建議 - 黃金點遊戲

現代軟件工程 做業 2: 結對項目  (電梯調度設計)  (如何自動測試電梯調度程序)

有意思的遊戲:漢字構成 + 俄羅斯方塊 + 2048

    

團隊項目:

    團隊項目計劃

    現代軟件工程 做業 3: 團隊做業  

    2012 團隊做業

    團隊項目建議 - 英語學習 App

    源代碼管理的10個問題

 

百花齊放:各個學校的編程/軟工做業列表

相關文章
相關標籤/搜索