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