郭海鳳
摘要:對學生在畢業(yè)設計過程中容易存在的問題進行分析歸納,結合軟件工程的基本理論,提出利用軟件工程指導學生的畢業(yè)設計,主要從選擇題目、系統(tǒng)及模塊結構設計、模塊聯(lián)合調試、撰寫畢業(yè)設計說明書等一些關鍵環(huán)節(jié)入手,提高學生的綜合素質、專業(yè)課程綜合運用能力與工程實踐能力。關鍵詞:計算機專業(yè);軟件工程;畢業(yè)設計
0 引言
畢業(yè)設計是教學過程最后階段采用的一種總結性的實踐教學環(huán)節(jié)。通過畢業(yè)設計,使學生綜合應用所學的各種理論知識和技能,進行全面、系統(tǒng)、嚴格的技術及基本能力練習。畢業(yè)設計通過學生深入實踐、了解社會、完成畢業(yè)設計任務或撰寫論文等諸環(huán)節(jié),著重培養(yǎng)學生綜合分析和解決問題的能力以及獨立工作能力、組織管理和社交能力;同時,對學生的思想品德,工作態(tài)度及作風等諸方面有很大影響。對于增強事業(yè)心和責任感,提高畢業(yè)生全面素質具有重要意義。畢業(yè)設計是學生在校期間的最后學習和綜合訓練階段;是學習深化、拓寬、綜合運用所學知識的重要過程;是學生學習、研究與實踐成果的全面總結;是學生綜合素質與工程實踐能力培養(yǎng)效果的全面檢驗;是實現(xiàn)學生從學校學習到崗位工作的過渡環(huán)節(jié);是學生畢業(yè)及學位資格認定的重要依據(jù);是衡量高等教育質量和辦學效益的重要評價內容。
軟件工程(Software Engineering,簡稱SE)是一門研究用工程化方法構建和維護有效的、實用的、高質量的軟件學科。軟件工程一直以來都缺乏統(tǒng)一的定義,很多學者、組織機構都分別給出了自己的定義。經過對比,比較合理的定義為:軟件工程是研究和應用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法去開發(fā)和維護軟件,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。
軟件工程中的軟件生命周期是軟件的產生直到報廢的生命周期,周期內有問題定義、可行性分析、總體描述、系統(tǒng)設計、編碼、調試和測試、驗收與運行、維護升級到廢棄等階段。學生在畢業(yè)設計的過程中,分為選題、開題、實踐研究、測試調整等階段??梢钥闯鰧W生畢業(yè)設計與軟件工程中的軟件生命周期存在比較一致的對應關系。嚴格遵守軟件工程學的各個原則,就可以很好地解決目前畢業(yè)設計中存在的問題,提高畢業(yè)設計的質量。
1 計算機專業(yè)學生畢業(yè)設計現(xiàn)狀
1.1 選題的盲目性
學生在態(tài)度上雖然很重視,也花費大量的時間精力,但由于選題不當,往往事倍功半。選題中存在的問題主要有3個方面。
1)過于寬泛。
學生的選題要實現(xiàn)的功能太多,在規(guī)定時間內不能獨立完成,到最后只完成部分功能,或部分模塊。
2)重復雷同。
部分學生存在渾水摸魚的思想,在畢業(yè)設計過程中不是根據(jù)自己學習情況和研究方向確定研究選題,而是刻意選擇與他人類似或雷同的選題,甚至同一批畢業(yè)的許多學生選題及畢業(yè)論文完全一致。
3)沒有應用價值。
部分學生的選題是當前十分成熟的項目,沒有研究的必要。有些選題已經被淘汰,在實際中沒有用途。
1.2 可行性分析和需求分析不準確
有很多學生在選題時不愿進行項目的可行性分析和需求分析,他們認為在畢業(yè)設計過程中最重要的就是編程,其他方面只需要一帶而過[4]。學生在確定了畢業(yè)設計的題目后,幾乎不進行調查研究工作就立即投入到系統(tǒng)的設計中,存在一定的盲目性和不確定性。隨著項目開發(fā)的不斷深入,原來確定的需求不能滿足項目的需要,導致開發(fā)的軟件功能與當初的期望和設想不符,這時只能重新返回,反復進行修改,導致整體系統(tǒng)雜亂無章,無法繼續(xù)進行。此時,部分學生為了趕進度,就剽竊他人作品或者找人代筆,造成惡劣影響。
1.3 研究階段分工不明確、思路不清
分工不明確、思路不清是畢業(yè)設計中容易犯的錯誤。一方面,項目組時間安排和人員分工不合理。任務分配時沒有考慮到各成員的能力情況,有的成員工作量過大,有的成員工作量過小,有的成員大材小用,有的成員拔苗助長。此外,由于在軟件開發(fā)過程中缺乏必要和有效的交流,功能模塊重復開發(fā)或者多個成員開發(fā)出的模塊很難有機地集成到一起,更有甚者則是最終開發(fā)完成后的軟件功能與當初的期望和設想不符。在共同進行項目設計的過程中,同組的學生不知如何進行分工,隨意劃分,導致重復研究,浪費時間和精力。學生在分工階段總希望自己擔負容易出成績的部分,希望別人分享成果,但自己的研究成果不肯共享。另一方面,在設計過程中,不進行總體設計、詳細設計和模塊設計,直接進行編碼,不制定設計程序和規(guī)劃,想到哪里就做到哪里,當前內容沒有做完便開始其他內容,使得整個研究階段雜亂無章。在這種狀態(tài)下,即使完成了研究,效率也非常低,軟件結構混亂,功能實現(xiàn)不完全,降低了軟件設計的質量和層次。
1.4 測試和調試階段形同虛設
部分學生畢業(yè)設計不完全,總以為程序做出來后畢業(yè)設計就完成了,沒有想過一個完整的畢業(yè)設計還需要在完成設計后進行嚴格的測試和調試。由于不重視測試和調試的過程,使得軟件的錯誤和缺陷不斷,達到無法挽回的境地。部分學生不注重測試和調試階段對軟件文檔和數(shù)據(jù)記錄的收集和整理,缺少全面系統(tǒng)的文檔和記錄,導致不能方便地轉讓、變更、修正、擴充和使用文檔,充分發(fā)揮軟件產品的效益;不能為后期維護、培訓留下完備的資料和及時有效地進行修正工作;不合格、不完善的軟件文檔和數(shù)據(jù)記錄給設計人員的測試和內部交流帶來極大困難,加大了測試和調試階段的工作量、難度和針對性。
2 軟件工程思想的應用
通過對以上存在的問題進行分析,在計算機專業(yè)學生畢業(yè)設計過程中,必須運用軟件工程思想,既節(jié)約時間和精力,又可以使畢業(yè)設計過程變得系統(tǒng)和完善。
2.1 選題過程中的應用
選題中最重要的是可行性研究,選好題目是進行深入研究的基礎,也是寫出高質量論文的前提。反之,畢業(yè)設計就會做不下去,畢業(yè)論文也無從談起。軟件工程學能夠很好地指導選題,分別從專業(yè)基礎、現(xiàn)實意義、縱深度分析等方面進行全面分析,根據(jù)各要素的權重進行綜合衡量,最終決定取舍。endprint
選題應遵循的原則:
(1)畢業(yè)設計的選題,要體現(xiàn)研究價值。一方面,根據(jù)本專業(yè)所學內容,盡量將選題范圍包括在內,從而覆蓋課程內容。另一方面,根據(jù)專業(yè)培養(yǎng)目標,突出知識點的強化和鞏固,著眼于學生獨立性和創(chuàng)造性的培養(yǎng)。
(2)畢業(yè)設計的選題,要體現(xiàn)切口小而深的原則。只有選題小,才能保證學生選題不會發(fā)生沖突,對于有些研究課題可以讓學生自愿進行組合,同時明確各自的任務。
(3)選題要體現(xiàn)實用性,要方便學生畢業(yè)以后的應聘和擇業(yè)需要,切實體現(xiàn)學生分析問題、解決問題的能力。
(4)選題要方便調試。選題要適合各個功能模塊單獨運行,方便最后統(tǒng)一的調試。
(5)選題要難度適中。在時間上要控制在10周左右時間能夠完成;在難度上,既不能涉及陌生和較難的理論領域,也不能人為降低課程設置水平。
2.2 開題過程中的應用
在軟件工程中,需求分析指的是在建立一個新的或改變一個現(xiàn)存的電腦系統(tǒng)時描寫新系統(tǒng)的目的、范圍、定義和功能時所要做的所有的工作。需求分析是軟件工程中的一個關鍵過程,在該過程中,系統(tǒng)分析員和軟件工程師確定顧客的需要。只有在確定了這些需要后他們才能夠分析和尋求新系統(tǒng)的解決方法。需求分析階段的任務是確定軟件系統(tǒng)功能。
開題中最重要的是進行需求分析,需求分析是在可行性研究的基礎上,將用戶對系統(tǒng)的描述通過開發(fā)人員的分析概括,抽象為完整的需求定義,再形成一系列文檔的過程,它完成的好壞直接影響后續(xù)軟件開發(fā)的質量。開題是在選題基礎上進行的,選題是可行性分析,開題則是需求分析。開題過程中需要指導學生大量地閱讀國內外資料,同時進行分析研究,了解當前畢業(yè)設計的研究進度,明確畢業(yè)設計的具體方向,編寫相應的畢業(yè)設計提綱,解決好設計什么,如何設計的問題。
開題中應把握軟件工程原則:(1)明確需求分析是一個動態(tài)過程。對于軟件系統(tǒng),不可能一開始就能精確地提出功能和性能要求,只能在不斷地探討和認識中才能逐步明確。(2)需求分析階段后續(xù)影響復雜。問題發(fā)現(xiàn)得越早,越容易解決,假設在需求分析階段發(fā)現(xiàn)一個錯誤,解決它需要用1小時,到設計、編程等后續(xù)階段解決,則要花數(shù)倍甚至數(shù)十倍的時間。
2.3 實踐研究過程中的應用
軟件工程學講到的數(shù)據(jù)流圖(Data FlowDiagram,簡稱DFD),它從數(shù)據(jù)傳遞和加工角度,以圖形方式來表達系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內部的邏輯流向和邏輯變換過程,是結構化系統(tǒng)分析方法的主要表達工具及用于表示軟件模型的一種圖示方法。用DFD指導設計研究,最大的特點就是形式直觀,涵蓋設計全部過程。
畢業(yè)設計實踐研究過程是對需求分析的具體化,也是軟件工程應用最直觀的階段,要指導學生按照DFD數(shù)據(jù)流圖的要求,明確達到設計要求需要幾個步驟,每個步驟達到什么具體的功能,畫出流程圖,并對每一步驟進行詳細的解釋和說明,最后設計出DFD數(shù)據(jù)流圖。DFD數(shù)據(jù)流圖要對輸入和輸出的數(shù)據(jù)流進行具體和詳細的說明,要符合軟件工程規(guī)范和流程。指導教師要及時進行指導和審查,對于不符合要求的設計和不合理的流程要提出質疑,并讓學生立即改正。指導教師嚴格把關、嚴格審查,確保DFD數(shù)據(jù)流圖合理、準確。
對于多人合作承擔同一畢業(yè)設計內容的,要讓他們明白總體設計框架和自己承擔部分的設計框架。原則上讓共同承擔某一項目的學生進行溝通協(xié)商,明確各自的部分,指導教師最后進行把關,根據(jù)各學生的特點和興趣進行科學、合理的分工,并將分工結果體現(xiàn)到DFD數(shù)據(jù)流圖中。通過模塊結構圖,使學生充分認識到整個作業(yè)過程既是系統(tǒng)工程和集體行動,又需要分工獨立完成。
2.4 測試和調試工作過程中的應用.
對已編寫完成的軟件進行測試、調試是軟件設計的一個重要組成部分,通過測試、調試能夠發(fā)現(xiàn)和改正軟件設計中存在的問題。軟件測試和調試的工作量非常大,也是專業(yè)人員積累經驗,提高能力的最直接、最有效、最可靠的途徑。在測試和調試過程中,發(fā)現(xiàn)問題和改正錯誤是對所學知識的鞏固和重新學習,有利于增強學用結合程度。
測試和調試過程中,應體現(xiàn)軟件工程學的思想,有效提高工作效率。第一步發(fā)現(xiàn)問題,在測試和調試中要注意保存數(shù)據(jù),適時進行分析,歸納出問題的共性,以便在下一步測試和調試過程中提高工作效率。第二步改正程序,這一步不但考驗學生的專業(yè)能力,而且考驗學生的耐心,需要進行周密的思考和論證,保證整個程序的一貫性。對于學生創(chuàng)造性的想法,指導教師要堅持支持和鼓勵的態(tài)度,積極進行引導,從而保證畢業(yè)設計的高質量。
測試和調試過程中,要注意軟件文檔和軟件說明書修改和撰寫。軟件文檔應當在軟件開發(fā)過程中,根據(jù)邏輯流程自然產生。有些學生在軟件開發(fā)完成后再補寫軟件文檔,這與軟件工程的思想截然不符。畢業(yè)設計中,要依據(jù)軟件設計的任務,制定適合的軟件文檔規(guī)范,并以此要求設計人員高質量完成軟件開發(fā)任務。如果把軟件文檔規(guī)范流于形式,軟件文檔就不能準確反映軟件設計各階段工作情況,文檔修改時就會發(fā)現(xiàn)前后不一致;軟件說明書是畢業(yè)設計的最后階段,學生通過選題、開題、計劃、分工合作、完成單獨模塊、模塊組裝調試一系列過程的實踐,對軟件設計的流程有了比較直觀和深刻的了解。軟件說明書的撰寫要把握3個原則:(1)做到充分重視,不能感覺軟件說明書是可有可無的部分,要么草草寫成,要么隨便抄襲。(2)內容要全面,按照固定格式并結合軟件特點進行詳細的說明,尤其是軟件功能方面,要結合子模塊和整體模塊分別進行闡述和說明。(3)層次要分明,軟件說明書要借鑒軟件文檔,說明軟件各個模塊功能和整體功能。
3 結語
計算機專業(yè)學生的畢業(yè)設計在整個大學生活中極為重要,學生能夠完成畢業(yè)設計,說明自身在本專業(yè)的學習中學用結合緊密,實際動手能力較強,有利于下一步的學習,有利于用人單位的工作。學生在畢業(yè)設計中遇到困難,或者畢業(yè)設計失敗,說明學生本專業(yè)的學習是失敗的,學生不具備獨立進行計算機專業(yè)的研究和實踐能力。通過畢業(yè)設計的過程及方法更加突出了軟件工程學對計算機專業(yè)學生畢業(yè)設計的指導作用。
參考文獻:
[1]汪靈,林金輝,龍劍平.理工科大學畢業(yè)設計(論文)團隊指導法研究與實踐[J].成都理工大學學報:社會科學版,2008(4):94-97.
[2]張海藩.軟件工程[M].3版.北京:人民郵電出版社,2010.
[3]高超,張自力,李向華.淺談計算機專業(yè)研究生創(chuàng)新能力的培養(yǎng)[J].西南師范大學學報:自然科學版,2013(5):164-169.
[4]姚期智.淺談計算機科學人才培育[J].計算機教育,2011(11):6-9.
[5]武衛(wèi)莉.提高大學生畢業(yè)設計(論文)教學質量研究[J].實驗技術與管理,2012(2):159-161.
(編輯:趙廓)endprint