在學生的畢業設計中以軟件工程的思想為主線,從軟件工程的角度去指導學生進行畢業設計,挖掘軟件工程在系統開發過程中的價值,解決畢業設計中存在的一些問題,既有助于學生更好地理解軟件工程的方法、技術和思想,更有助于提高軟件類畢業設計的質量。
1畢業設計中存在的問題
筆者在指導學生軟件開發類畢業設計過程中發現,畢業設計存在著選題難、任務重、重視編碼、輕過程、項目無法完成等現象。設計過程中沒有嚴格地遵循軟件工程的開發方法,沒有規范的軟件設計過程,項目能否成功主要依賴于個人能力和個人努力,這種不正確的開發方法帶來了嚴重的后果。在項目開發的過程中常常存在以下幾個方面問題:
1.1選題的盲目性
選題是畢業設計過程中的一個初始環節,選題恰當是做好畢業設計的前提,但選題不當的情況仍然時有發生。學生沒有認識到畢業設計的重要性,純粹是為了完成學業而做畢業設計,選題沒有一個確切的目標,往往是隨便選一個題目,造成選題的盲目性,出現了選題陳舊、選題范圍狹窄、選題偏大等問題,使學生抄襲、完成不了畢業設計的情況時有發生。
1.2缺少軟件的系統分析
軟件開發過程的第一個階段是系統分析,用來確定軟件開發要解決的問題是什么?估算完成該項目需要的資源和成本,確定目標系統應該具備哪些功能,主要經歷問題的定義、可行性分析和需求分析三個階段。軟件的系統分析確定了用戶需求,同時對目標系統提出完整、具體的要求,引導開發者正確地構建系統。因此,對用戶需求做出全面、正確的分析,對于最終軟件開發類畢業設計的成敗起著至關重要的作用。然而在完成畢業設計過程中,學生往往認為代碼編寫最重要,對軟件開發過程中的可行性分析和需求分析階段不重視,甚至沒有系統分析,對整個畢業設計的完成造成了影響。
1.3軟件設計過程雜亂無章
軟件設計一般都要經歷可行性分析、需求分析、總體設計、詳細設計、編碼和測試階段。而部分學生在畢業設計開發的過程中,缺乏軟件工程設計思想,跨越需求分析、概要設計、詳細設計和功能模塊設計,直接進行代碼的撰寫;或者從代碼反推出模塊設計;甚至在軟件開發過程中,一邊寫程序,一邊了解需求,程序完成了需求才確定。這種無序的軟件設計過程,導致最終設計的系統雜亂無章、代碼的重復率高、潛在?Bug多、系統的可集成性非常差、不能在規定時間內完成設計或者系統無法運行。
1.4開發過程中文檔不完備
根據軟件工程學的基本原理,軟件=程序+文檔,可見軟件文檔是軟件開發過程中不可缺少的組成部分。軟件文檔貫穿于軟件開發的各個階段,是提高軟件產品開發效率、規范軟件產品開發過程、保證軟件產品質量的關鍵。但在實際畢業設計中,很多同學認為把程序代碼編出來了,畢業設計也就完成了,提交的畢業設計論文就是系統代碼的復制,即只做出一個可演示可操作的系統,而忽略了軟件開發的完整性、系統性。完整的畢業設計不僅包括可操作的系統,還包括在開發系統的過程中所產生的各個文檔資料。文檔的缺失會降低軟件開發的效率、影響整個軟件的開發、使用和維護。以上問題的存在,嚴重影響了畢業設計的進度和質量,沒有達到畢業設計的目標要求。針對當前畢業設計的現狀和存在不足,筆者認為應用軟件工程學的思想指導畢業設計,對促進學生綜合素質與工程實踐能力培養具有積極意義。
2用軟件工程思想指導學生進行畢業設計
2.1以可行性研究指導選題
可行性研究的目的是用最小的代價在盡可能短的時間內確定問題是否能夠解決。畢業設計題目的選擇,應立足于解決工程實際問題,可由指導教師提供符合相關專業畢業設計要求的題目,也可以鼓勵學生自己到社會、生產企業中尋求研究課題,培養他們自主學習的意識。選題過程以可行性研究為指導,從課題規模大小、難易程度、學生自己的研究方向、愛好、學生的知識層面和能力等多個方面進行考慮,對于選擇的題目是否能夠解決,確定在規定的時間內完成畢業設計的可行性。指導教師可根據學生選報的題目來指導學生對該選題進行調查研究,明確課題要解決的問題是什么,簡要地寫出關于問題性質、項目目標和項目規模的書面報告。可行性研究來指導畢業設計的選題,實質上是簡化了系統分析和設計的過程,也是在較高層次上以較抽象的方式進行的系統分析和設計的過程,使學生對于課題的設計有個清晰的思路,為及時完成畢業設計提供了可能。
2.2重視軟件的需求分析
需求分析的基本任務是準確地回答“系統必須做什么”,即確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清晰、具體的要求,不僅指明了系統設計時必須要實現的目標,也是軟件設計、實現、測試和維護階段的主要參考標準。用戶需求的獲取是軟件開發中最重要、難度最大的工作,它貫穿于整個軟件設計過程,不僅要涉及到軟件開發方面的知識、應用領域方面的知識,還涉及到與用戶溝通的能力。在進行需求獲取和分析時,為了及時、準確地獲取,可采用軟件工程中比較成熟的方法,例如訪談、實際調查、UML的用例技術等。需求分析在軟件系統分析與設計階段起著橋梁的作用,確定了系統的需求,才能制定出軟件設計的框架,保證畢業設計循序漸進、有條不紊地進行,避免后期開發過程的頻繁返工,進而按時完成最終的任務。
2.3規范畢業設計過程
軟件開發類畢業設計一般是開發一個軟件系統,實現一定的功能。“麻雀雖小,五臟俱全”,無論軟件規模的大小、功能的多少,都應該嚴格按照軟件工程中軟件生命周期每個階段的步驟完成各項任務。要培養學生把軟件工程的概念貫穿于整個畢業設計過程,也就是說,讓學生把開發軟件的過程看成是蓋一棟大樓,修一條公路的實際工程,用工程化的思想指導畢業設計,確定完成課題的各項任務的工作步驟,注重軟件類畢業設計的過程,而不是學生所認為的畢業設計就是編程序,代碼調試通過即可。通過工程的概念規范畢業設計過程,讓學生明白開發一個軟件系統一般經過系統分析、系統設計、系統實施三個階段,必須嚴格遵循軟件生命周期的規律,完成各個階段的任務,才能最終提高畢業設計的質量。
2.4重視文檔的寫作
軟件工程中的瀑布模型嚴格地規定了在整個軟件生命周期的各個階段,都要提交相應的文檔。文檔不僅記錄軟件開發過程中的大量信息,在軟件的開發、維護過程中也起著重要的作用。在指導學生畢業設計時,要求學生遵照軟件工程的思想,把文檔作為整個設計的指揮棒,記載設計過程的每一階段完成的目標、任務及技術手段,建立健全畢業設計文檔制度,確保畢業設計過程中的文獻綜述、譯文、任務書、開題報告、選題審題表、中期檢查表、設計(論文)正文、答辯記錄等各環節教學資料檔案完善、規范,實現對畢業設計的全程監控。
3結束語
軟件工程是軟件開發工程化、規范化的具體實施方法,將其應用到畢業設計中,不僅有助于學生對軟件開發相關知識的鞏固和實踐,而且對解決目前軟件開發類畢業設計中存在的問題,提高學生畢業設計質量,具有極大的促進作用。
作者:王 曉 王長波 單位:湖北醫藥學院 公共管理學院計算機教研室