原文:http://www.98exe.net/Article/d/2006-06-19/1759.html
這幾天我在看軟考的《系統(tǒng)分析師教程》,六百多頁的書看了兩百多頁,現在感覺心里很復雜。再加上前幾天和以前幾個要好同事聚會,談到軟件系統(tǒng)的設計時有些爭論,讓我不得不寫些什么。希望此文能以此文同中國從事軟件開發(fā)的同行共勉。
前言
說來很不巧,我畢業(yè)于四川外語學院,沒有受到過大學里面正規(guī)計算機課程的教育,在軟件設計上的所有技能,基本上都是學習人家的代碼,和看微軟網站上的那些TechNotes。當時之所以選擇英語院校,希望讀懂人家的技術文檔,是其中的一個原因。畢竟從現在很流行的Windows到Unix,他們的技術文檔大都是英文寫的。扯遠了,其實開發(fā)一個好的系統(tǒng),看懂有價值的技術資料是一個因素,更重要的因素在于對系統(tǒng)的分析和設計。
由于自己沒有受到過真正的計算機方面的理論教育,所以最初,在進行軟件開發(fā)的時候心里面特別沒有底,在寫代碼的時候,我都特別小心,生怕寫出來的程序在結構上不合理,執(zhí)行效率低下。工作了一段時間,開始自己設計軟件的系統(tǒng)的一部分,當時又怕自己設計出來的系統(tǒng)在結構上不合理,使后期開發(fā)無法進行。所以,我一都在思考軟件的設計方法,不斷的總結。
一直以來,我把系統(tǒng)設計、分析看成是一件很神圣的工作,雖然自己很早聽說過有這樣的考試認證,但是還是沒有去報名,甚至沒有去買考試用書。其原因就是我認為自己應該先多寫代碼,多接觸工程實踐,多積累一些經驗,然后再來接受系統(tǒng)分析的工程方法。而現在,我在這行干了五年,我想我的經歷應該可以讓我來接受正規(guī)的系統(tǒng)分析方法了吧! 所以,我要把我學習的過程和我以前在工作中對系統(tǒng)分析的一些經驗寫出來,希望大家批評、指教!
第一篇 系統(tǒng)分析到底分析些什么
一句話,系統(tǒng)分析就是“分析軟件系統(tǒng)在它的生存周期與生存環(huán)境中,各個對象與它的關系 ”,記住是關系,這是我這幾天看書,然后結合自己的開發(fā)經歷所得出的結論。
一個大型的軟件系統(tǒng),它所涉及的關系多,所以這個系統(tǒng)做起來就復雜;一個小的軟件,它所涉及的關系少,所以這個軟件做起來就簡單。但是在通常的情況下,這些關系需要系統(tǒng)分析人員去發(fā)現,通過各種手段:翻閱資料、采訪相關人員等等。如果越多的關系被系統(tǒng)分析人員發(fā)現,那么系統(tǒng)分析員對系統(tǒng)的設計可能就越全面,系統(tǒng)結構對未來的不確定因素的適應能力可能會更強。
在這里,我一直在強調“可能”。在我開始思考系統(tǒng)設計之前,我就覺得只要我掌握了正確的系統(tǒng)分析方法,那么我設計出來的系統(tǒng)在結構上是最合理的,在性能上是最穩(wěn)定的,這個系統(tǒng)近乎是一個完美的系統(tǒng)。現在看來,這種想法很幼稚,作為對關系的分析,本身就和個人的經驗、價值觀有直接的、非常緊密的聯系。所以我們要正確的對待系統(tǒng)分析師這個職業(yè),他不是神,他只是一個將系統(tǒng)的開發(fā)風險盡可能降低到最低的人。
第二篇 如何分析
并不是每個公司都有自己專門的系統(tǒng)分析師,但是每個公司都有自己的系統(tǒng)分析工作,我想這是中國大多數軟件公司所面臨的現狀吧。我們不能夠因為沒有系統(tǒng)分析師的存在,而把那些客觀存在,需要我們去分析的東西丟在一邊,最后只能是搬起石頭扎自己的腳。
看了《系統(tǒng)分析教程》之后,讓我對如何做系統(tǒng)分析有了新的認識,但是里面提到的各種方法,動不動就要小組支持,安排會議,這些活動檔次太高,咱們平時做的那些系統(tǒng)玩不起,那是不是因此我們就放棄系統(tǒng)分析呢?答案是否定的。我認為,軟件系統(tǒng)的規(guī)模有大小,系統(tǒng)分析的規(guī)模也有大小,不同規(guī)模的系統(tǒng),它的分析方法也應該不一樣,下面我把我分析的方法寫出來,希望大家批評指教。
- 接到一個工程后,腦子里對這個工程大致有個數,然后就把開發(fā)工具打開,開始干了(這種方法很土,和軟件工程方法是背道而馳的)。 但是,當代碼寫道一定程度的時候一定要停下來,你要對以做的開發(fā)做記錄。記錄什么呢?比如:重要的處理過程,窗體的名稱以及它的功能描述以及你當時認為有用的東西。然后繼續(xù)寫代碼。在后來的開發(fā)過程中,當你回復前一段時間寫的代碼而不能馬上理解它的意思的時候,你就得馬上記錄。當軟件快開發(fā)到一半的時候,這時你對軟件的整體構架比較清晰了,你就得分析出軟件的基礎模塊,回顧以前的記錄文檔,看是否有其它模塊也擁有你分析出來的基礎模塊的功能,如果有,那么就得對程序進行調整。調整完成之后,你就可以繼續(xù)后面的開發(fā)了,系統(tǒng)做到這個地步,一般成功的把握就有90%了。這種方法只適合于做規(guī)模比較小的系統(tǒng),例如一般的進銷存系統(tǒng),功能比較單一的小軟件。
后來我把這種分析方法命名為攀巖式分析,作為一個攀登者,需要的是力氣和勇氣來面對面前的大山,然后邁出第一步,攀登一截就打下一個釘子固定好,然后繼續(xù)攀登,就算不小心失足,由于有前面的釘子固定,也不至于掉下萬丈深淵。
在沒有系統(tǒng)分析團隊支持的情況下,這種方法可以在一定程度上降低軟件系統(tǒng)的開發(fā)和維護風險 - 當拿到一個系統(tǒng)開發(fā)任務的時候,先整理出開發(fā)任務中的數據對象,然后然后分析他們之間的關系,通過關系的分析,找出隱藏的數據對象;確定軟件的功能框架,根據功能框架,畫出數據流圖和控制流圖;分析基本的功能框架,然后做出一個基本的系統(tǒng),然后拿給“領導 ”看。
以上的描述是我碰到的真是情況后的處理辦法,這個辦法結合了結構化分析和原型開發(fā)中容易操作部分。
在很多時候,我們可能接到一個比較大的開發(fā)任務,而拿到手里的卻是一頁草草幾十字的“需求分析”,并且可能是有問題的需求分析。因為那頁紙上寫的內容實際上也是系統(tǒng)分析范疇中的資料,但是里面卻雜糅模塊功能描述、數據實體描述、數據存儲描述等等信息。而我們該怎么辦,撒手不干了?
這時,首先要做的就是挑出里面的名詞,將其做成矩陣,對有關系的名詞打上標記,并注明是什么關系。在這個分析中,肯定會遇到問題,而我們要做的就是先把這些問題記錄下來,這些問題最好不要立即去問“領導”們,因為他們可能也不清楚。
接下來要做的是根據那份“需求分析”,指定出系統(tǒng)的功能框架,分析出最基本的框架,然后從最基本的框架著手,對框架的功能作進一步分解,然后再繪制的數據流圖和控制流圖,在繪制數據流圖的時候,提取數據實體,建立基本的數據庫(如果需要使用數據庫的話),當然這個做法和《系統(tǒng)分析師教程》中的提到的方法也是大相徑庭的,但是沒有辦法,因為我們連對象之間的關系都沒有弄清楚,哪里來的邏輯分析嚴密的數據實體分析呀,為了工作,硬著頭皮也要上啊。
接下來就是按照上面的設計,把系統(tǒng)做出來,然后叫領導看,讓領導多提意見,稱領導在看程序的機會,順便把押在手里面的問題拿出來,問題能解決多少算多少吧,然后繼續(xù)開發(fā),然后繼續(xù)讓領導審查,領導越高興,問題解決的周期就越短,反之則越長。
這些都是我的土方法,是沒有辦法的辦法呀,工作還要繼續(xù)干,并且還要干好呢!
第三篇 是系統(tǒng)分析師還是程序員?
我本來打算把這篇的標題定為“系統(tǒng)分析師和程序員的關系”,在我看了兩個網友的留言后,我決定放棄這個標題,一個網友評論說,系統(tǒng)分析師應該消失,因為現在的原型化開發(fā)已經讓系統(tǒng)分析師失去了價值;一位網友評論說,他在一個七八十人的小公司里面工作,認為系統(tǒng)分析師存在的必要性很大,并且說如果沒有系統(tǒng)分析師的隊伍,可能會失去競爭力。我認為這兩種看法都過于偏激,因為他們都沒有考慮到,不論是系統(tǒng)分析師和程序員還是其它搞開發(fā)的人員,他們都是軟件公司的一部分。
作為一個軟件公司,作為一個企業(yè),都有自己的生存法則,大公司有大公司的活法,小公司有小公司的活法。大公司實力大,人數多,能夠接到大的項目,那么他必然要有自己專門的系統(tǒng)分析師團隊來維護公司正常的業(yè)務運營;而小公司,通常接到的項目都比較小,人數又有限,要想支持一個專業(yè)的系統(tǒng)分析師團隊是不可能的。我現在就在一個小公司里面工作,接到任務后,直接就和客戶打交道,直接從客戶那里獲取他的需求信息,然后自己整理資料,分析系統(tǒng)的結構,然后編碼,然后測試,這些事情是沒有人來為我完成的。
所以我認為,系統(tǒng)分析師可以有兩種定義:一種從職務的角度來定義:這個人是我們公司的系統(tǒng)分析師;一種是從專業(yè)的角度來定義:這個人具備系統(tǒng)分析的專業(yè)知識。但不管從哪種角度來定義,它們都具備同一個特點:他們都要完成系統(tǒng)分析的工作。
分析本身就是一項復雜的活動,它的復雜不僅體現在它所涉及對象本身,還涉及到指導分析的方法論。而這些都是通用的哲學,他同樣可以知道我們在其它領域更好的開展活動。所以對于系統(tǒng)分析這項活動,作為一個程序員,也要去學習它,實踐它,這對我們是有好處的。
所以,不管我們所處的環(huán)境如何,是大公司還是小公司,至少我們都應該做自己的系統(tǒng)分析師。
到此,有關我對系統(tǒng)分析師的感慨寫完了,這篇文章只是我個人對系統(tǒng)分析師的看法,局限性很大,還希望大家多多指教。
本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。