這樣的系統(tǒng)具有用戶可能希望有的所有功能和特點。系統(tǒng)分析員應該使用系統(tǒng)流程圖或其他工具描述每種可能的系統(tǒng),估計每種方案的成本和效益,還應該在充分權衡各種方案的利弊的基礎上,推薦一個較好的系統(tǒng)(佳方案),并且制定實現(xiàn)所推薦的系統(tǒng)的詳細計劃。如果用戶接受分析員推薦的系統(tǒng),則可以著手完成本階段的另一項主要工作。”(引用《如何寫系統(tǒng)分析書》一文)
經(jīng)過系統(tǒng)分析的階段,我們比較容易和客戶在系統(tǒng)如何部署、采用的數(shù)據(jù)庫類型、設計模型和分析模型等方面達成一致的認識,如果能順利地將客戶的需求業(yè)務邏輯分析轉化為程序邏輯,把原先用戶可視化的界面原型和業(yè)務流程圖映射成編碼人員理解的模型和規(guī)范時,那么恭喜你,項目已經(jīng)成功了一半。
三:系統(tǒng)分析的難點和技能要求:
網(wǎng)絡應用的開發(fā)技術在日新月異地進步,從而使網(wǎng)站應用系統(tǒng)的開發(fā)模式具有多種選擇性,達到同樣的目標可以采用很多不同的方式,現(xiàn)代的應用系統(tǒng)越來越成為一個龐大的集成方案,需要考慮不同的操作平臺、不同的應用服務器、不同的數(shù)據(jù)庫、不同的編程語言、不同的傳輸介質等等,無疑對系統(tǒng)分析員來說是個嚴峻的考驗,任何人都不可能精通甚至說掌握全部的技術,簡單例子:現(xiàn)在有Windows,Unix,Linux等各種服務器操作平臺,有SQL Server,Oracle,DB2,Sybase,MySQL等數(shù)據(jù)庫,有JAVA,PHP,ASP,CGI,JSP,C++,VB,Delphi等等工具,誰能全部精通呢?如果不能,那么如何確定是Windows+SQL Server+ASP好還是Unix+Oracle+JAVA合適?況且各種軟件和語言還在不斷發(fā)展進步之中,超越窄帶的互聯(lián)網(wǎng),今后還可以涉及到寬帶所帶來的變動,或者增加與無線移動的接口,因此系統(tǒng)分析員能否出色的勝任工作很大程度上決定了系統(tǒng)開發(fā)的成敗。
系統(tǒng)分析的主要難點在于:
? 對客戶隱藏的性能需求的分析:由于客戶對尚未實施的系統(tǒng)無法預見,對今后的業(yè)務發(fā)展也無法預知,對性能需求的分析和定義更需要系統(tǒng)分析員協(xié)助客戶去確定和挖掘;
? 確定項目設計方法:根據(jù)項目需求和資源的配置選擇合適的設計方式。
? 對系統(tǒng)模塊的劃分和代碼復用的設計:模塊大化,代碼復用度高,是一個成熟的系統(tǒng)不斷致力追求的,將大型復雜的應用系統(tǒng)分解成相對獨立,具有高度復用的模塊,各個模塊之間采用規(guī)范的參數(shù)接口,將大大提高系統(tǒng)的開發(fā)效率和維護升級的方便性。即使在網(wǎng)站的模版設計或交互設計上,也盡可能采用嵌套可復用的模版或調用統(tǒng)一的樣式表、JS文件等。
? 項目整體評估:系統(tǒng)分析員絕不應成為孤立的完美主義者,而需要根據(jù)項目的大局出發(fā),比如公司的資源配置、人力狀況、客戶要求等因素評估項目整體和各個模塊的工作量、進度和分配資源,制定出合理的可行的實施方案。
系統(tǒng)分析員不但需要具備良好的溝通協(xié)調能力,更需要具備業(yè)務和技術領域兩方面的專業(yè)技能,在項目小組中是非常關鍵的角色之一。
四:軟件建模使系統(tǒng)開發(fā)邁向成熟
Web應用系統(tǒng)往往隨著客戶的需求增長,開發(fā)不斷深入,終變得非常復雜,而且以Web為核心的網(wǎng)站系統(tǒng)通常都具有高度的動態(tài)擴展和交互,要在不完整和不斷改變的需求情況下,在有限的時間內完成一套容易修改和維護的健壯的系統(tǒng),在UML(統(tǒng)一建模語言)出現(xiàn)之前是極其困難的。
大多的Web設計師或程序開發(fā)員為了讓客戶盡快看到可運行的應用系統(tǒng),經(jīng)過界面設計或簡單的系統(tǒng)分析后直接進入編碼階段,甚至各個模塊分頭開發(fā),服務器段代碼隨意編寫、數(shù)據(jù)庫任意添加、參數(shù)定義沒有規(guī)范,整個應用系統(tǒng)處于一種無序混亂的狀態(tài),當我們采用建模及按照軟件工程的方式進行管理的時候,情況馬上會好的多。
什么是建模?
? 建模是使你逐層深入解決問題的辦法;
? 確認應用系統(tǒng)的功能需求并為事務處理原則建模;
? 對抽象的對象映射需求,辨認和提供設計模版并創(chuàng)建慣用的模版;
? 分辨和設計對象或劃分三層模型的服務;
? 對軟件的組成部分映射成對象并設計組件在網(wǎng)絡上如何分布;
UML(Unified Modeling Language,統(tǒng)一建模語言)是一種通用的可視化建模語言,用于對軟件進行描述、可視化處理、構造和建立軟件系統(tǒng)的文檔。UML適用于各種軟件開發(fā)方法、軟件生命周期的各個階段、各種應用領域以及各種開發(fā)工具,同樣,在網(wǎng)站設計或以網(wǎng)站為表現(xiàn)形式的各種網(wǎng)絡應用項目中,UML也表現(xiàn)出強大的作用。UML能夠描述系統(tǒng)的靜態(tài)結構和動態(tài)行為:靜態(tài)結構定義了系統(tǒng)中重要對象的屬性和操作以及這些對象之間的相互關系;動態(tài)行為定義了對象的時間特性和對象為完成目標任務而相互進行通信的機制。UML不是一種程序設計語言,但我們可以用代碼生成器將UML模型轉換為多種程序設計語言代碼,或使用反向生成器工具將程序源代碼轉換為UML模型。
我們可以看的出,建模并不等同于程序編碼,利用同樣的UML模型可以生成不同語言的框架代碼,而且可以通過反向生成,在編寫代碼過程中及時更新UML模型,這對系統(tǒng)分析員和項目管理人員來說是夢寐以求的。只要能夠仔細地把握客戶的需求,不斷改進UML模型,那么采用什么樣的語言開發(fā)已經(jīng)成了次要,大量的需求積累和分析工作能在客戶需求變化時得到高度的復用,即使系統(tǒng)采用新的語言重新開發(fā),需要的也僅僅是編碼部分的工作。
雖然軟件建?梢栽陂_發(fā)的任何階段進入,但是在設計初期,應該將精力更加集中在系統(tǒng)功能及性能分析、系統(tǒng)運行環(huán)境、選擇編程語言等,而不是考慮考慮程序的細節(jié),如在屏幕上的什么位置放置按鈕等。在項目開發(fā)的中期引入建模是非常有意義的,通過建模把握程序開發(fā)的方向,準確完成需求分析中所要求的任務。
在高展先生的《全程建!芬晃闹嘘U述的“全程鏡像一體化建模方式“,整個建模過程依靠業(yè)務驅動,在模型設計中利用盒子的上下兩部分分別代表業(yè)務組織結構和軟件邏輯結構,將客戶可視的具體的需求與系統(tǒng)抽象的邏輯流程一一對應,這對缺乏技術背景的客戶代表和經(jīng)驗不足的系統(tǒng)分析員之間的溝通具有明顯有效的作用。