天天看點

軟體構造學習總結(個人觀點)

這門課對于我來說,還是具有很大的挑戰性。并且這門課的課堂涉及内容過多,有關的教材PPT内容亦過于繁重,親自動手實驗就尤為的重要。總的來說,六個實驗設計的很好,能運用到學習的東西進行開發,但是代碼量有些大了,一度出現連續自閉的情況,但這不影響這是一個好實驗。但回過頭來好好想想,一切都是有價值的。

實驗一:Lab1 Fundamental Java Programming andTesting

這裡是有關Java的較基礎實驗。

最開始統一要求用Java程式設計。說實在的最開始心裡一點底都沒有。已經半年多沒有練習Java,不知道能不能很快适應。

第一部分:Magic Squares ,整體思路還算簡單,主要是Java I/O的使用和學習。

第二部分:Turtle Graphics ,主體代碼已經給出,要求學生實作幾項基本功能,主要是對圖形界面的應用。說實在的,這是第一次不是從0程式設計,但不算太難。 

第三部分:Social Network ,會與之後lab2相關聯。主要涉及到Java的存儲方式和資料類型以及一些周遊算法的知識。這裡卡了一點時間,debug超級長時間。這裡建議參考lab2的實驗指導書,避免出現在lab2中複用代碼時全部推倒重來的情況。

實驗二:Lab2 ADT and OOP

作為整個實驗流程的真正啟動部分,lab2涉及到了ADT這一核心内容,同時要求學生實作graph這一ADT,即構造一個完全由資料組成的graph并實作對graph的一些操作,難度适中。

第一部分:Poetic Walks ,完成graph的基礎建構和功能設計,并實作graphpoet,這一部分涉及一些周遊算法。

第二部分:Re-implement the Social Network in Lab1 ,借用第一部分的ADT改寫lab1的Social Network建構friendship。這裡前兩部分相比較而言,第二部分更像是第一部分的實際應用。

第三部分:PlayChess,自行設計ADT及spec,和test用例。完成下國際象棋和圍棋的操作。這裡最好還是用可視化界面,強烈推薦,最起碼要弄熟主要步驟,否則lab3會很難受的。

實驗三:Lab3 Reusability and MaintainabilityOriented Programming

作為整個實驗流程的最核心部分,lab3是一(xiang)定(dang)有難度的。

首先,以lab2的graph的建構為基礎,将graph由抽象的ADT具象化實作幾個具體的圖的類型,實作其複用性。同時還要對graph中存儲的點(Vertex)和邊(Edge)進行複用化設計。通過factory工廠類實作從檔案中讀取資料建構graph的機械化操作,而application類則是實作graph的顯示并通過外部操作對graph進行更改。

之後還要針對實驗選擇(5中情景選3個)設計ADT,之後還要學習正規表達式度讀檔案,比對檔案。最後要将這一切圖形化表示出來。

實驗四:Lab4 Debugging, Exception Handling, andDefensive Programming

在lab3的基礎上,熟練運用spotbugs(Findbugs也可以);對代碼加入異常分析和處理的功能,提高代碼的安全性和穩定性;編寫日志,并完成日志相關操作。

實驗五:Lab5 Static and Dynamic Code Analysis andCode Optimization

在lab3的基礎上,學習使用java工具對代碼進行檢測,并要求考慮到代碼的規範性。這裡強烈建議遇到百度找一下直接規範代碼的工具或方法,很多一部分是縮進不規範。

要求讀取大檔案測試代碼,測試在大量資料的轟擊下,程式的性能表現并分析優,還涉及到一些javaI/O的知識。

實驗六:Lab6 Multi-Thread Concurrent Programming

老師讓我們去花果山幫猴子過橋。這裡需要設計一個具體的ADT,同時操作過程要保證線程安全。另外還涉及到一些java log和java 多線程的知識。

  對于個人來說,這門課程我是不合格的,但我确實也看到了許多想把它學好的人掙紮的過程,也許我的評價并不能代表大多數學生的感覺,但我也誠心誠意地提出一些改進的建議:希望能将lab3内容劃分為二,将lab6的實驗時間提前,謝謝。