當(dāng)一個(gè)軟件項(xiàng)目擺在人們面前時(shí),進(jìn)行系統(tǒng)的分析是首當(dāng)其沖的,正如我們的一句古語(yǔ):三思而后行。因此,無(wú)論做任何事都應(yīng)考慮是否有意義以及它的可行性。在過(guò)去,人們將“軟件”與“程序”、“開(kāi)發(fā)軟件”與“編程序”劃等號(hào),粗略的進(jìn)行估計(jì)和設(shè)計(jì)軟件產(chǎn)品勢(shì)必會(huì)影響軟件的質(zhì)量和生產(chǎn)效率。然而現(xiàn)在,隨著信息化產(chǎn)業(yè)的發(fā)展,軟件企業(yè)的增多,尤其是當(dāng)面對(duì)一些大中型的軟件項(xiàng)目,對(duì)軟件生命周期的各個(gè)環(huán)節(jié)進(jìn)行系統(tǒng)詳細(xì)的分析將更加重要,而且會(huì)提高軟件的質(zhì)量和效率。
一、軟件系統(tǒng)開(kāi)發(fā)
無(wú)論動(dòng)物、植物,作為一個(gè)完整的事物,都有它的生命周期、或者說(shuō)它的軌跡。作為先進(jìn)高科技的產(chǎn)物---軟件產(chǎn)品,自然也不例外。這期間,要經(jīng)過(guò)一系列的過(guò)程,例如,開(kāi)發(fā)者首先要考慮它的可行性,是否能堅(jiān)決當(dāng)前問(wèn)題或是將來(lái)是否能有更大的發(fā)展,當(dāng)然要有詳細(xì)的規(guī)劃和設(shè)計(jì),要形成書(shū)面的文檔記錄下來(lái),以便開(kāi)發(fā)員之間的交流。其次關(guān)鍵的是能否滿(mǎn)足用戶(hù)的需求,因?yàn)榕袛嚅_(kāi)發(fā)出來(lái)的軟件是否成功的標(biāo)準(zhǔn)之一就是看它有無(wú)實(shí)用性。之后便是一系列的實(shí)施,例如程序設(shè)計(jì),系統(tǒng)測(cè)試,以及接下來(lái)的后續(xù)工作---維護(hù)與修改工作。
軟件生命周期的各個(gè)環(huán)節(jié)將軟件系統(tǒng)開(kāi)發(fā)大致分為四個(gè)階段,用圖示的方式表現(xiàn)出來(lái)即通常所說(shuō)的“瀑布模型”,如圖:
二、系統(tǒng)分析
系統(tǒng)分析是軟件生命周期的一個(gè)關(guān)鍵環(huán)節(jié),其目標(biāo)是將對(duì)計(jì)算機(jī)應(yīng)用系統(tǒng)的需求轉(zhuǎn)化成實(shí)際的物理實(shí)現(xiàn)。然而實(shí)際面太多,增加了軟件分析的復(fù)雜度,那么究竟在系統(tǒng)分析的過(guò)程中需要考慮那些因素呢?
1、系統(tǒng)目的。在考慮系統(tǒng)目的時(shí),應(yīng)更多的側(cè)重于系統(tǒng)的最終目標(biāo)考慮,因?yàn)橐粋€(gè)系統(tǒng)不可能在最初就是完美的,要為系統(tǒng)留些余地。
2、系統(tǒng)參與者。在整個(gè)項(xiàng)目中,要考慮有哪些方面參與了系統(tǒng),這些參與者人可能在系統(tǒng)建設(shè)中起重要作用,他們采取什么樣的態(tài)度將會(huì)對(duì)系統(tǒng)有一定的影響。另外,還要了解各參與者的初衷是什么。
3、明確的評(píng)價(jià)標(biāo)準(zhǔn)。最好從參與的各方面都進(jìn)行考慮,要知道他們對(duì)這個(gè)系統(tǒng)是否有一個(gè)明確的評(píng)價(jià)標(biāo)準(zhǔn)。
4、系統(tǒng)開(kāi)發(fā)計(jì)劃的完善度。計(jì)劃表要有明確的階段,每一階段要有詳細(xì)的完成計(jì)劃,以及對(duì)階段完成情況進(jìn)行的評(píng)價(jià)。
當(dāng)然還有很多因素值得考慮,可以根據(jù)面對(duì)的項(xiàng)目的不同而改變,譬如與軟件開(kāi)發(fā)人員的交流等等。
三、開(kāi)發(fā)內(nèi)容
開(kāi)發(fā)軟件系統(tǒng)最為困難的部分,就是準(zhǔn)確說(shuō)明開(kāi)發(fā)什么。這就需要在開(kāi)發(fā)的過(guò)程中不斷的與用戶(hù)進(jìn)行交流與探討,使系統(tǒng)更加詳盡,準(zhǔn)確到位。這就需要確定用戶(hù)是否需要這樣的產(chǎn)品類(lèi)型以及獲取每個(gè)用戶(hù)類(lèi)的需求。需求類(lèi)型包括三個(gè):
1、業(yè)務(wù)需求(business requirement)反映了組織機(jī)構(gòu)或客戶(hù)對(duì)系統(tǒng)、產(chǎn)品高層次的目的要求,它們?cè)陧?xiàng)目視圖與范圍文檔中予以說(shuō)明。
2、用戶(hù)需求(user requirement) 文檔描述了用戶(hù)使用產(chǎn)品必須要完成的任務(wù),這在使用實(shí)例文檔或方案腳本說(shuō)明中予以說(shuō)明。
3、功能需求(functional requirement)定義了開(kāi)發(fā)人員必須實(shí)現(xiàn)的軟件功能,使得用戶(hù)能完成他們的任務(wù),從而滿(mǎn)足了業(yè)務(wù)需求。
總之,無(wú)論是商業(yè)性或非商業(yè)目的的產(chǎn)品,都應(yīng)具備完整的說(shuō)明書(shū),以避免發(fā)生狀況時(shí)引起不必要的損失。
四、分析設(shè)計(jì)和系統(tǒng)方案
在考慮完各方面的實(shí)際因素后,就要對(duì)項(xiàng)目進(jìn)行總體的分析設(shè)計(jì)。簡(jiǎn)單的講,總體設(shè)計(jì)需要確定的內(nèi)容應(yīng)當(dāng)包括:
1、系統(tǒng)需要實(shí)現(xiàn)哪些功能;
?2、開(kāi)發(fā)使用什么軟件,在什么樣的硬件環(huán)境;
3、需要多少人,多少時(shí)間;
4、需要遵循的規(guī)則和標(biāo)準(zhǔn)有哪些。
一般情況下,在總體設(shè)計(jì)出來(lái)后,就需要給客戶(hù)一個(gè)系統(tǒng)的方案。如果在客戶(hù)需求不是十分明確的情況下提交方案,往往和實(shí)際制作后的結(jié)果會(huì)有很大差異。所以應(yīng)該盡量取得客戶(hù)的理解,在明確需求并總體設(shè)計(jì)后提交方案,這樣對(duì)雙方都有益處。而方案則應(yīng)包括以下幾個(gè)部分:
1.客戶(hù)情況分析;
2.系統(tǒng)需要實(shí)現(xiàn)的目的和目標(biāo);
3.系統(tǒng)各個(gè)模塊與結(jié)構(gòu);
4.使用軟件,硬件和技術(shù)分析說(shuō)明;
5.開(kāi)發(fā)時(shí)間進(jìn)度表;
6.維護(hù)方案;
7.制作費(fèi)用。
總之,總體設(shè)計(jì)階段是以比較抽象概括的方式提出了解決問(wèn)題的辦法;而詳細(xì)設(shè)計(jì)階段的任務(wù),也就是把解法具體化。詳細(xì)設(shè)計(jì)主要是針對(duì)程序開(kāi)發(fā)部分來(lái)說(shuō)的,但這個(gè)階段的不是真正編寫(xiě)程序,而是設(shè)計(jì)出程序的詳細(xì)規(guī)格說(shuō)明。這種規(guī)格說(shuō)明的作用很類(lèi)似于其他工程領(lǐng)域中工程師經(jīng)常使用的工程藍(lán)圖,它們應(yīng)該包含必要的細(xì)節(jié),例如:程序界面、表單、需要的數(shù)據(jù)等,程序員可以根據(jù)它們寫(xiě)出實(shí)際的程序代碼;而至于后續(xù)的工作,就有程序員來(lái)完成編寫(xiě)程序,系統(tǒng)測(cè)試員來(lái)完成測(cè)試,還有之后的維護(hù)和修改。
五、運(yùn)用策略
偉人有治國(guó)的策略,商人有致富的財(cái)路,巧婦有理家的本領(lǐng),鶴發(fā)童顏的老人有長(zhǎng)生的秘訣。在進(jìn)行軟件開(kāi)發(fā)系統(tǒng)分析時(shí),也要本著一些策略:
1.“簡(jiǎn)單—復(fù)雜—簡(jiǎn)單”。這是技術(shù)型分析人員經(jīng)常碰到的情況,認(rèn)為分析出錯(cuò)綜復(fù)雜的關(guān)系,花哨的圖表才能顯示出分析水平高,其實(shí),分析經(jīng)常要經(jīng)歷"簡(jiǎn)單-復(fù)雜-簡(jiǎn)單"的過(guò)程,前一個(gè)簡(jiǎn)單表現(xiàn)為分析人員"認(rèn)為簡(jiǎn)單";隨著分析的深入,原以為簡(jiǎn)單的問(wèn)題會(huì)越來(lái)越復(fù)雜;最后,經(jīng)過(guò)概括、消化、分解,使得需求簡(jiǎn)單明了。
2.軟件復(fù)用技術(shù)。新開(kāi)發(fā)的軟件,要從一開(kāi)始就考慮其可演化性,以便以后的再工程和構(gòu)件提取。隨著軟件復(fù)用技術(shù)的不斷發(fā)展,從頭開(kāi)始的軟件大量減少,使用的遺產(chǎn)系統(tǒng)相應(yīng)增多,這就避免了重復(fù)的工作,使得已完善的模塊遺傳下去。
3.模塊化概念。模塊化可以增強(qiáng)系統(tǒng)的獨(dú)立性,使耦合度降低,實(shí)現(xiàn)“高內(nèi)聚-松耦合”。對(duì)于模塊的內(nèi)部,使其高度集中,而模塊與模塊間的聯(lián)系相對(duì)減少,這樣使系統(tǒng)各模塊獨(dú)立的進(jìn)行運(yùn)轉(zhuǎn)。
任何雄才偉略的人都能縱觀全局,有一覽眾山小之氣魄。若想有出色的成果必然要有對(duì)事物進(jìn)行總的分析的能力,這就包括是否著眼于長(zhǎng)遠(yuǎn)利益,是否能對(duì)其很好的管理掌控。系統(tǒng)并不是簡(jiǎn)單的計(jì)算機(jī)代替手工勞作的一種方式,它是一種高于現(xiàn)實(shí)的管理模式。因此,系統(tǒng)分析是軟件開(kāi)發(fā)過(guò)程中必不可少的一個(gè)環(huán)節(jié),它為高質(zhì)量軟件產(chǎn)品的開(kāi)發(fā)奠定了基礎(chǔ)。
?