"麻雀雖小,五臟俱全",即使是小型項(xiàng)目的開(kāi)發(fā),仍應(yīng)遵循軟件開(kāi)發(fā)的一般規(guī)律,必須的步驟不能省略。但是小項(xiàng)目有它自身的特點(diǎn),實(shí)行起來(lái)相對(duì)靈活些。
1、需求獲取與分析
需求分析就是將需求用一種模型來(lái)表示,目前比較流行的分析方法是面向?qū)ο蟮姆椒?,分析過(guò)程的內(nèi)容是用類的結(jié)構(gòu)來(lái)表示目標(biāo)系統(tǒng),并不設(shè)計(jì)具體實(shí)現(xiàn),如采用什么編程語(yǔ)言,在什么操作系統(tǒng)平臺(tái)上運(yùn)行等等。這些具體實(shí)現(xiàn)是在設(shè)計(jì)階段來(lái)完成的。面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)是分析、設(shè)計(jì)、編碼過(guò)程表示法統(tǒng)一,能比較好的銜接。一般來(lái)講,對(duì)于需求潛在變化不大的項(xiàng)目,可以采用瀑布模型,有一個(gè)很明顯的設(shè)計(jì)階段,這樣做的好處是有一份比較完整的分析文檔。
所有軟件項(xiàng)目進(jìn)入正式開(kāi)發(fā)之前,必須先從用戶處獲取準(zhǔn)確的需求信息,并對(duì)信息加以分析,在這上面花費(fèi)相當(dāng)多時(shí)間是很有必要的。
軟件項(xiàng)目可大致分為專用軟件和通用軟件兩大類。對(duì)于專用軟件,需求相對(duì)較為明確,例如給某單位開(kāi)發(fā)一套該單位專用的系統(tǒng),一般用戶對(duì)于軟件要完成哪些功能已經(jīng)有了一個(gè)比較清楚的輪廓,而且往往在開(kāi)發(fā)合同中已經(jīng)大致地規(guī)定了。但是,開(kāi)發(fā)合同上往往規(guī)定的只是一個(gè)大概的框架,項(xiàng)目經(jīng)理必須與用戶進(jìn)行比較具體的交流和討論,了解清楚用戶心目中的產(chǎn)品究竟是什么樣子。做好這個(gè)步驟,就可避免開(kāi)發(fā)后期因開(kāi)發(fā)人員的理解和用戶的要求存在誤解而造成的時(shí)間上的浪費(fèi)。
對(duì)于通用軟件,一方面是從經(jīng)濟(jì)效益考慮,另一方面是從技術(shù)的角度。例如,用戶現(xiàn)有硬件配置如何,軟件配置如何,使用什么網(wǎng)絡(luò),使用什么數(shù)據(jù)庫(kù)等等。為得到這些信息,需要做一定的用戶調(diào)查,并根據(jù)調(diào)查的結(jié)果決定即將開(kāi)發(fā)的軟件的一些技術(shù)指標(biāo)。
2、設(shè)計(jì)過(guò)程
包括對(duì)分析模型必要的修改??赡苄枰獙?duì)某些類結(jié)構(gòu)進(jìn)行一些修改,這些修改的原因可能是編程環(huán)境的要求,或者為了重用以前的某些工作。比如定義界面部分、數(shù)據(jù)訪問(wèn)(數(shù)據(jù)庫(kù))部分。由于目前很多編程語(yǔ)言都可以可視化地設(shè)計(jì)界面,所以界面部分工作往往留到了編碼階段來(lái)完成。于是設(shè)計(jì)階段的工作量并不大。
3、編碼與測(cè)試
進(jìn)入編碼工作之后,可能會(huì)發(fā)現(xiàn)前面分析或設(shè)計(jì)階段的某些錯(cuò)誤,這時(shí)應(yīng)返回到前面的階段進(jìn)行必要的修改。測(cè)試階段正如前所述,即使是小項(xiàng)目,也應(yīng)該嚴(yán)格地進(jìn)行測(cè)試,在此不再贅述。
4、人員的安排
比較小的項(xiàng)目,往往是幾個(gè)人來(lái)完成,這幾個(gè)人基本上從頭到尾參加開(kāi)發(fā)。在這幾個(gè)人中,有一位項(xiàng)目負(fù)責(zé)人,負(fù)責(zé)分析、設(shè)計(jì)和協(xié)調(diào)的工作。由于項(xiàng)目小,項(xiàng)目負(fù)責(zé)人也要參加編程,那么這人必須把時(shí)間合理運(yùn)用,據(jù)經(jīng)驗(yàn)來(lái)講,我們需要下面幾點(diǎn)原則:
A.協(xié)調(diào)工作比自己去做更重要.
項(xiàng)目管理主要工作就是協(xié)調(diào),如果協(xié)調(diào)上出了漏洞,可能導(dǎo)致很大的問(wèn)題,所以項(xiàng)目負(fù)責(zé)人必須隨時(shí)監(jiān)控各開(kāi)發(fā)人員的工作,包括內(nèi)容是否與要求發(fā)生偏差,進(jìn)度是否滯后等等。只有在完成這些工作之后,項(xiàng)目負(fù)責(zé)人剩下的時(shí)間才能用于編程。
B.給每個(gè)開(kāi)發(fā)人員明確的任務(wù)書(shū).
不管是用面向?qū)ο蠡蛘咂渌椒ㄩ_(kāi)發(fā),分析、設(shè)計(jì)模型只是從功能的角度來(lái)描述系統(tǒng)。但是,具體開(kāi)發(fā)時(shí)每個(gè)開(kāi)發(fā)人員必須非常明確自己的任務(wù),這些任務(wù)應(yīng)該采用明確的文檔來(lái)表示。
C.讓大家都大致熟悉設(shè)計(jì)模型.
讓每個(gè)開(kāi)發(fā)人員都清楚自己所做的工作在整個(gè)系統(tǒng)中處于什么地位,有時(shí)侯可能會(huì)發(fā)現(xiàn)設(shè)計(jì)模型中的漏洞,避免了各人的代碼編寫完畢之后又要修改的后果。