軟件工程實(shí)踐學(xué)習(xí)心得體會(huì)
這學(xué)期學(xué)習(xí)了軟件工程實(shí)踐這門課,我覺得這是對(duì)上學(xué)期的軟件工程課程學(xué)習(xí)的檢驗(yàn),上學(xué)期學(xué)習(xí)軟件工程只是我們淺顯的認(rèn)識(shí),相比之下,這學(xué)期就更加全面的說明了開發(fā)一個(gè)項(xiàng)目所需要的步驟以及開發(fā)項(xiàng)目過程中所需要注意的諸多細(xì)節(jié)。如果說上學(xué)期的課程注重理論基礎(chǔ)的話,那么這學(xué)期的軟工實(shí)踐,顧名思義,就是側(cè)重我們動(dòng)手操作的能力。
原來我認(rèn)為開發(fā)一個(gè)項(xiàng)目最重要的就是寫代碼,似乎整個(gè)軟件都是編代碼,因?yàn)樽约簞?dòng)手能力不強(qiáng)所以就很排斥做項(xiàng)目?墒墙(jīng)過我們學(xué)習(xí)軟工課程到團(tuán)隊(duì)做項(xiàng)目再到學(xué)習(xí)軟件工程實(shí)踐課程之后,我才真正意識(shí)到實(shí)施一個(gè)軟件工程項(xiàng)目并不是說簡單的會(huì)編碼就能夠解決問題的,因?yàn)橐粋(gè)軟件的生命周期分為三個(gè)時(shí)期:軟件定義時(shí)期、開發(fā)時(shí)期、維護(hù)時(shí)期,而這三個(gè)時(shí)期整體又分為七個(gè)階段,他們分別是:問題定義、可行性研究、需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和單元測試、綜合測試,由此可看出,當(dāng)我們開發(fā)一個(gè)項(xiàng)目時(shí),更多的精力不是放在編碼上,編碼只是一個(gè)很小的模塊,而是項(xiàng)目的整體結(jié)構(gòu)上。
在寫軟工實(shí)踐體會(huì)之前,我想在這里總結(jié)一下上學(xué)期三人團(tuán)隊(duì)做項(xiàng)目的相關(guān)事宜。上學(xué)期我們?nèi)藞F(tuán)隊(duì)根據(jù)軟件開發(fā)的步驟開發(fā)一個(gè)名為“西大老鄉(xiāng)‘薈’”的社交系統(tǒng),主要是為西大學(xué)子提供一個(gè)找老鄉(xiāng)的平臺(tái)。雖然只進(jìn)行到詳細(xì)設(shè)計(jì)階段,沒有進(jìn)一步實(shí)現(xiàn),但是我還是從中學(xué)到很多東西的。首先要先確定項(xiàng)目主題,也就是這個(gè)項(xiàng)目用來做什么,可以解決什么問題。接著就是這個(gè)項(xiàng)目是否有研究的必要以及是否有解決的辦法,針對(duì)我們的項(xiàng)目,我們對(duì)西大的一些學(xué)生做了問卷調(diào)查,并從調(diào)查中繼續(xù)完善系統(tǒng)本身的做用戶。第三步根據(jù)我們確定的項(xiàng)目主題進(jìn)行需求分析,這一步驟當(dāng)時(shí)做的不是很好,比如所畫E-R圖、數(shù)據(jù)流圖等都有考慮不周的問題,導(dǎo)致接下來的概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)進(jìn)行的很困難,有些步驟甚至還需要返工。
從我們?cè)谛枨蠓治鲋谐霈F(xiàn)的問題,使我們明白了軟件定義階段對(duì)于一個(gè)項(xiàng)目的開發(fā)是至關(guān)重要的,當(dāng)軟件定義階段完成時(shí)必須要用正式的文檔準(zhǔn)確的地記錄目標(biāo)系統(tǒng)的需求。只有前期的準(zhǔn)備工作做得好,后面的工作才能順利進(jìn)行。雖然項(xiàng)目最后沒有完全實(shí)現(xiàn),但是起碼我們已經(jīng)初步體會(huì)到軟件項(xiàng)目開發(fā)的步驟,以及每一步所需要完成的文檔等內(nèi)容。
這學(xué)期的軟件工程實(shí)踐雖然不是親自動(dòng)手開發(fā)一個(gè)系統(tǒng),但是張?jiān)嚼蠋熞浴拔锫?lián)網(wǎng)物流倉儲(chǔ)管理系統(tǒng)”為主給我們講解了一個(gè)真實(shí)系統(tǒng)的開發(fā)過程,從計(jì)劃到項(xiàng)目系統(tǒng)的發(fā)布實(shí)施,以及每一步必須生成的文檔。我主要從以下五個(gè)方面談一下我的心得體會(huì)。
第一、行業(yè)背景說明方面
對(duì)于一個(gè)軟件系統(tǒng)的開發(fā),第一步就是問題定義,了解所開發(fā)系統(tǒng)的行業(yè)背景,制定計(jì)劃。當(dāng)我們計(jì)劃確定以后就要對(duì)項(xiàng)目系統(tǒng)本身進(jìn)行可行性研究,主要從技術(shù)可行性、經(jīng)濟(jì)可行性和操作可行性三個(gè)方面著手。就比如《物聯(lián)網(wǎng)物流倉庫管理系統(tǒng)》的行業(yè)背景說明文檔中非常詳細(xì)地分析了當(dāng)下物聯(lián)網(wǎng)物流行業(yè)的整體業(yè)務(wù)說明、應(yīng)用背景、未來發(fā)展趨勢以及相關(guān)應(yīng)用案例等四個(gè)方面,項(xiàng)目團(tuán)隊(duì)中系統(tǒng)分析員就可以根據(jù)這份文檔以及相關(guān)的調(diào)查資料對(duì)將要開發(fā)系統(tǒng)的進(jìn)行定義等工作。
原來我們寫這類文檔的時(shí)候就是草草了事,不會(huì)做得這么詳細(xì),而這次看到大型項(xiàng)目的行業(yè)背景說明也是這么詳細(xì),也讓自己認(rèn)識(shí)到不管是軟件開發(fā)的那個(gè)階段都要認(rèn)真對(duì)待,這些瑣碎的文檔都是后期開發(fā)項(xiàng)目的支撐,只要它們做的透徹,后面的開發(fā)工作才能更順利的進(jìn)行。
第二、項(xiàng)目需求說明方面
這部分項(xiàng)目需求說明就是軟件定義時(shí)期中需求分析階段,而該階段的主要目的就是了解用戶的需要,根據(jù)用戶的需要確定系統(tǒng)必須完成那些工作,并對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。在需求分析結(jié)束之前系統(tǒng)分析人員要寫出一份需求規(guī)格說明,即為《物聯(lián)網(wǎng)物流倉儲(chǔ)管理系統(tǒng)》項(xiàng)目需求說明文檔。我們可以看出該文檔也是非常詳細(xì),相比之下我們之前做項(xiàng)目時(shí)寫的需求規(guī)格說明書就非常
不合格,不僅格式不正確內(nèi)容也是少之又少。在這方面,這篇文檔給我啟發(fā)很大。首先就是文檔的格式,要美觀整齊,讓人看著舒服方便。其次就是文檔的內(nèi)容,原來它不是很重要,寫文檔的時(shí)候也不知道怎么寫就借鑒下網(wǎng)上的內(nèi)容,結(jié)果根本就沒有把自己項(xiàng)目的需求寫明白,以至于自己最后都有些糊涂,所以根據(jù)以前的經(jīng)驗(yàn)教訓(xùn)我會(huì)對(duì)這部分更加重視。
第三、系統(tǒng)概要設(shè)計(jì)方面
這部分內(nèi)容分說的是軟件設(shè)計(jì)時(shí)期的概要設(shè)計(jì)階段,該階段的主要目的就是實(shí)現(xiàn)系統(tǒng)的功能、設(shè)計(jì)軟件的結(jié)構(gòu)、模塊組成以及模塊之間的關(guān)系。在概要設(shè)計(jì)階段,我們可以站在全局的高度上,花較少的成本,從抽象的層次上分析對(duì)比多種可能的系統(tǒng)實(shí)現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的結(jié)構(gòu)。在這個(gè)階段還會(huì)具體畫出E-R圖、數(shù)據(jù)流圖等方面的設(shè)計(jì)。
比如《物聯(lián)網(wǎng)物流倉庫管理系統(tǒng)》的系統(tǒng)概要設(shè)計(jì)從項(xiàng)目概述、設(shè)計(jì)約束、功能單元與功能模塊設(shè)計(jì)、數(shù)據(jù)E-R圖設(shè)計(jì)、總體設(shè)計(jì)、界面設(shè)計(jì)等六個(gè)方面介紹,通過讀這個(gè)文檔,我覺得最重要的還是總體設(shè)計(jì),分別從邏輯架構(gòu)設(shè)計(jì)、物理架構(gòu)設(shè)計(jì)、技術(shù)架構(gòu)設(shè)計(jì)設(shè)計(jì)系統(tǒng)。在這個(gè)階段中模塊要做到高內(nèi)聚低耦合,這樣開發(fā)出來的系統(tǒng)才會(huì)具有更高的獨(dú)立性。
在原來做項(xiàng)目時(shí)沒有編寫過這類文檔,在該階段只是畫了結(jié)構(gòu)圖、層次圖以及相關(guān)的模塊劃分,對(duì)該類文檔尚未重視。通過張老師的講解和自己的學(xué)習(xí),我相信在以后做項(xiàng)目的時(shí)候一定會(huì)注意到這類文檔的編寫。
第四、詳細(xì)設(shè)計(jì)與分析方面
詳細(xì)設(shè)計(jì)階段就是把概要設(shè)計(jì)階段的每個(gè)模塊進(jìn)一步設(shè)計(jì),確定每個(gè)模塊所需要的算法和數(shù)據(jù)結(jié)構(gòu)。在這個(gè)階段還是需要我們?cè)O(shè)計(jì)出程序的詳細(xì)規(guī)格說明,而不是編寫程序。在詳細(xì)設(shè)計(jì)階段,系統(tǒng)設(shè)計(jì)人員可以通過使用程序流程圖、盒圖、PAD圖等過程設(shè)計(jì)的工具和Jackson圖等面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)工具進(jìn)一步設(shè)計(jì)系統(tǒng)相關(guān)接口,主要包括界面設(shè)計(jì)接口、業(yè)務(wù)單設(shè)計(jì)接口、單元模塊設(shè)計(jì)接口等,這些對(duì)于以后的編碼工作都是極其重要的。
第五、編碼和測試方案方面
關(guān)于編碼,我認(rèn)為編碼要想做的完美必備條件就是前面的軟件定義和軟件設(shè)計(jì)時(shí)期要按部就班的做,文檔一定要按要求書寫,不能偷懶也不能草草書寫。對(duì)于編碼也要有相應(yīng)的文檔書寫規(guī)范,要使源程序代碼的邏輯簡明清晰、易讀易懂。這樣盡管我們不是設(shè)計(jì)系統(tǒng)的人員,當(dāng)看到源程序代碼的時(shí)候也能容易讀懂代碼的意思。
其次就是測試的內(nèi)容,從測試的文檔中我們可以得出,其實(shí)測試在軟件開發(fā)中同樣占據(jù)了重要的地位,它主要就是盡可能多的找到問題并排除其中的潛藏的錯(cuò)誤,最終把一個(gè)高質(zhì)量的軟件系統(tǒng)交給用戶
使用。它要求測試人員也要有很高的技術(shù)水平。