我來(lái)拋塊磚,也許是些謬論,希望看到大家的高見(jiàn).
首先,本人相信,軟件工程的方法,如果能夠使用得好的話(huà),可以很大地提高軟件開(kāi)發(fā)的效率.
但是,在實(shí)際工作中,一個(gè)單位的開(kāi)發(fā)人員水平參差不齊,就我本人的經(jīng)歷,發(fā)現很多單位還是習慣于極其落后的手工作坊式開(kāi)發(fā).別說(shuō)使用CASE工具,連程序的文檔都懶得寫(xiě),即使有文檔,也就停留在一個(gè)非常簡(jiǎn)單的說(shuō)明,例如程序某個(gè)類(lèi)完成某項功能,至于該類(lèi)的結構如何,各成員變量干什么,各函數干什么,你就自己琢磨去吧.
說(shuō)實(shí)話(huà),本人也很希望自己所在的開(kāi)發(fā)組是一個(gè)組織有素的團體,一切按照一種有序的狀態(tài)進(jìn)行,然而在現實(shí)中卻很難做到.很多人對于軟件工程本身就很懷疑.誠然,軟件工程不是萬(wàn)能的,但有些人卻走到了另一個(gè)極端,而且在他們看來(lái),很多軟件的開(kāi)發(fā),就是幾個(gè)人,按照一種很隨便的簡(jiǎn)單的組織開(kāi)發(fā)出來(lái)的.應該說(shuō),如果項目很小,也許軟件工程的意義并不大.假如我一個(gè)人開(kāi)發(fā)一個(gè)小項目,我敢打賭說(shuō)我不需要任何的文檔,充其量在個(gè)別復雜的函數中增加簡(jiǎn)單的注釋(這是本人從小養成的壞習慣,從中學(xué)學(xué)習BASIC開(kāi)始就拒絕寫(xiě)程序流程圖,被老師說(shuō)了幾次,然屢教不改).但是,只要設計到兩個(gè)以上的人,就需要一定的組織.
然而人們的習慣是難以改變的,本人進(jìn)入一家單位后,自己是從最底層的程序員做起,糊里糊涂編了一堆代碼,到最后卻由于當初設計人員的失誤,這些代碼后來(lái)又做了很多次改動(dòng),本人猶如在一個(gè)爛泥潭里打滾,實(shí)在有些厭倦.和我一同進(jìn)入單位的一個(gè)人,一開(kāi)始對此極其不滿(mǎn),和上司說(shuō)了幾次,但是頭們覺(jué)得寫(xiě)文檔是額外的工作量,只要程序開(kāi)發(fā)出來(lái),能夠用就行了,很少考慮進(jìn)一步維護的問(wèn)題.然而我們卻走了幾次彎路,正所謂欲速則不達.
其中一次是頭們草草地決定上一個(gè)項目,而且覺(jué)得只要兩個(gè)月就出來(lái)了,但是實(shí)際上半年后才開(kāi)發(fā)完畢,但是開(kāi)發(fā)出來(lái)的程序,一運行就需要占用大量的系統資源.根本無(wú)法推廣到我們的用戶(hù)那里(我們開(kāi)發(fā)用的機器配置都很高,但面向的用戶(hù)卻還是386或486水平,遺憾的是他們設計時(shí)根本沒(méi)有考慮到這一點(diǎn)).
另一次是一個(gè)比較簡(jiǎn)單的數據庫應用,該程序僅僅是把一些收集到的一些信息全部顯示出來(lái),有一個(gè)人開(kāi)發(fā)顯示用的界面,另一個(gè)人開(kāi)發(fā)錄入信息的界面.然而由于一開(kāi)始考慮得不夠周到,經(jīng)常發(fā)現庫中缺少一些必要的項,于是又修改數據庫的結構,每次結構的改變,都需要前臺、后臺程序做相應的修改.又是一堆煩瑣的無(wú)謂的勞動(dòng).直到后來(lái)暫停下來(lái),仔細地分析了各種可能變化的因素,才設計了一個(gè)比較好的結構,這已經(jīng)一年時(shí)間過(guò)去了.
本人在學(xué)校時(shí),軟件工程的基本概念是清楚的,但卻沒(méi)有什么經(jīng)驗,而且說(shuō)實(shí)話(huà),學(xué)校里很多知識是很教條的,實(shí)際中如何運用還是不太清楚,因此剛參加工作時(shí),本人對于單位里如此無(wú)組織的開(kāi)發(fā)持觀(guān)望態(tài)度,然而結果卻很令本人失望.于是我開(kāi)始了行動(dòng),經(jīng)過(guò)一番激烈的爭論,本人列舉了一大堆失敗的事實(shí),終于讓頂頭上司意識到無(wú)組織開(kāi)發(fā)的效率低下,本人也終于成了技術(shù)部門(mén)主管。然而回首這段往事,不禁感慨萬(wàn)千,我初步估算了一下,從我進(jìn)入該單位到現在,有四分之三的工作都是重復勞動(dòng),或者是無(wú)效的勞動(dòng).
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/