軟件工程需求分析

所謂"需求分析",是指對要解決的問題進行詳細的分析,弄清楚問題的要求,包括需要輸入什麼數據,要得到什麼結果,最後應輸出什麼。可以說,在軟件工程當中的“需求分析”就是確定要計算機“做什麼”,要達到什麼樣的效果。可以說需求分析是做系統之前必做的。

1定義

軟件工程中,需求分析指的是在建立一個新的或改變一個現存的電腦系統時描寫新系統的目的、範圍、定義和功能時所要做的所有的工作。需求分析是軟件工程中的一個關鍵過程。在這個過程中,系統分析員和軟件工程師確定顧客的需要。只有在確定了這些需要後他們才能夠分析和尋求新系統的解決方法。需求分析階段的任務是確定軟件系統功能。

在軟件工程的歷史中,很長時間裏人們一直認爲需求分析是整個軟件工程中最簡單的一個步驟,但在過去十年中越來越多的人認識到它是整個過程中最關鍵的一個過程。假如在需求分析時分析者們未能正確地認識到顧客的需要的話,那麼最後的軟件實際上不可能達到顧客的需要,或者軟件無法在規定的時間裏完工。

2特點

需求分析是一項重要的工作,也是最困難的工作。該階段工作有以下特點:

供需交流困難

軟件生存週期中,其它四個階段都是面向軟件技術問題,只有本階段是面向用戶的。需求分析是對用戶的業務活動進行分析,明確在用戶的業務環境中軟件系統應該"做什麼"。但是在開始時,開發人員和用戶雙方都不能準確地提出系統要"做什麼?"。因爲軟件開發人員不是用戶問題領域的專家,不熟悉用戶的業務活動和業務環境,又不可能在短期內搞清楚;而用戶不熟悉計算機應用的有關問題。由於雙方互相不瞭解對方的工作,又缺乏共同語言,所以在交流時存在着隔閡。

需求動態化

對於一個大型而複雜的軟件系統,用戶很難精確完整地提出它的功能和性能要求。一開始只能提出一個大概、模糊的功能,只有經過長時間的反覆認識才逐步明確。有時進入到設計、編程階段才能明確,更有甚者,到開發後期還在提新的要求。這無疑給軟件開發帶來困難。

後續影響複雜

需求分析是軟件開發的基礎。假定在該階段發現一個錯誤,解決它需要用一小時的時間,到設計編程測試維護階段解決,則要花2.5、5、25、100倍的時間。

因此,對於大型複雜系統而言,首先要進行可行性研究。開發人員對用戶的要求及現實環境進行調查、瞭解,從技術、經濟和社會因素三個方面進行研究並論證該軟件項目的可行性,根據可行性研究的結果,決定項目的取捨。

3任務

需求分析的任務是通過詳細調查現實世界要處理的對象,充分了解原系統工作概況,明確用戶的各種需求然後在此基礎上確定新系統的功能。 一、確定對系統的綜合要求 雖然功能需求是對軟件系統的一項基本需求,但卻並不是唯一的需求,通常對軟件系統有下述幾方面的綜合要求。

    1.功能需求

    2.性能需求

    3.可靠性和可用性需求

    4.出錯處理需求

    5.接口需求

    6.約束

    7.逆向需求

    8.將來可能提出的要求

數據要求

任何一個軟件本質上都是信息處理系統,系統必須處理的信息和系統應該產生的信息很大程度上決定了系統的面貌,對軟件設計有深遠的影響,因此,必須分析系統的數據要求,這是軟件分析的一個重要任務。分析系統的數據要求通常採用建立數據模型的方法。

複雜的數據由許多基本的數據元素組成,數據結構表示數據元素之間的邏輯關係。

利用數據字典可以全面地定義數據,但是數據字典的缺點是不夠直觀。爲了提高可理解性,常常利用圖形化工具輔助描述數據結構。用的圖形工具有層次方框圖和Warnier圖。

邏輯模型

綜合上述兩項分析的結果可以導出系統的詳細的邏輯模型,通常用數據流圖、E-R圖、狀態轉換圖、數據字典和主要的處理算法描述這個邏輯模型。

修正計劃

根據在分析過程中獲得的對系統的更深入的瞭解,可以比較準確地估計系統的成本和進度,修正以前定製的開發計劃。

4方法

需求分析的傳統方法:

– 面向過程(自上向下分解)

– 信息工程(數據驅動)(數據流分析結構化分析方法)

– 面向對象(對象驅動)

步驟

⑴首先調查組織機構情況

包括瞭解該組織的部門組成情況,各部門的職能等,爲分析信息流程作準備。

⑵然後調查各部門的業務活動情況

包括瞭解各個部門輸入和使用什麼數據,如何加工處理這些數據,輸出什麼信息,輸出到什麼部門,輸出結果的格式是什麼。

⑶協助用戶明確對新系統的各種要求

包括信息要求、處理要求、完全性與完整性要求。

⑷確定新系統的邊界

確定哪些功能由計算機完成或將來準備讓計算機完成,哪些活動由人工完成。由計算機完成的功能就是新系統應該實現的功能。

⑸分析系統功能

⑹分析系統數據

⑺編寫分析報告

常用類型

⑴跟班作業

通過親身參加業務工作來了解業務活動的情況。這種方法可以比較準確地理解用戶的需求,但比較耗費時間。

⑵開調查會

通過與用戶座談來了解業務活動情況及用戶需求。座談時,參加者之間可以相互啓發。

⑶請專人介紹

⑷詢問

對某些調查中的問題,可以找專人詢問。

⑸設計調查表請用戶填寫

如果調查表設計得合理,這種方法是很有效,也很易於爲用戶接受的。

⑹查閱記錄

即查閱與原系統有關的數據記錄,包括原始單據、賬簿、報表等。

通過調查瞭解了用戶需求後,還需要進一步分析和表達用戶的需求。

分析和表達用戶需求的方法主要包括自頂向下和自底向上兩類方法。

5案例

(1)需求分析報告的編寫目的

本需求分析報告的目的是規範化本軟件的編寫,旨在於提高軟件開發過程中的能見度,便於對軟件開發過程中的控制與管理,同時提出了本鐵路售票系統的軟件開發過程,便於程序員與客戶之間的交流、協作,並作爲工作成果的原始依據,同時也表明了本軟件的共性,以期能夠獲得更大範圍的應用。

(2)產品背景明細

軟件名稱:鐵路售票系統

(3)縮寫及縮略語

鐵路售票應用系統軟件:基本元素爲構成鐵路售票及相關行爲所必須的各種部分。

需求:用戶解決問題或達到目標所需的條件或功能;系統或系統部件要滿足合同、標準,規範或其它正式規定文檔所需具有的條件或權能。

需求分析:包括提煉,分析和仔細審查已收集到的需求,以確保所有的風險承擔者都明其含義並找出其中的錯誤,遺憾或其它不足的地方。

模塊的獨立性:是指軟件系統中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統中其他的模塊的接口是簡單的。

本工程描述:

(1)軟件開發的目標:

完善鐵路售票系統,使之能跟上時代的發展。同時通過實踐來提高自己的動手能力。

(2)應用範圍:

理論上能夠實現於鐵路部門的售票系統,其目的在於在原有的系統基礎使得鐵路售票實名化,以期實現完善日常生活中鐵路售票的各種缺陷。

6詳細分析

從廣義上理解:需求分析包括需求的獲取、分析、規格說明、變更、驗證、管理的一系列需求工程

狹義上理解需求分析指需求的分析、定義過程。

原因

需求分析就是分析軟件用戶的需求是什麼.如果投入大量的人力,物力,財力,時間,開發出的軟件卻沒人要,那所有的投入都是徒勞.如果費了很大的精力,開發一個軟件,最後卻不滿足用戶的要求,從而要重新開發過,這種返工是讓人痛心疾首的.(相信大家都有體會)比如,用戶需要一個for linux的軟件,而你在軟件開發前期忽略了軟件的運行環境,忘了向用戶詢問這個問題,而想當然的認爲是開發for windows的軟件,當你千辛萬苦地開發完成向用戶提交時才發現出了問題,那時候你是欲哭無淚了,恨不得找塊豆腐一頭撞死.

需求分析之所以重要,就因爲他具有決策性,方向性,策略性的作用,他在軟件開發的過程中具有舉足輕重的地位.大家一定要對需求分析具有足夠的重視.在一個大型軟件系統的開發中,他的作用要遠遠大於程序設計.

任務

簡言之,需求分析的任務就是解決"做什麼"的問題,就是要全面地理解用戶的各項要求,並準確地表達所接受的用戶需求.

過程

需求分析階段的工作,可以分爲四個方面:問題識別,分析與綜合,制訂規格說明,評審.

問題識別 就是從系統角度來理解軟件,確定對所開發系統的綜合要求,並提出這些需求的實現條件,以及需求應該達到的標準.這些需求包括:功能需求(做什麼),性能需求(要達到什麼指標),環境需求(如機型,操作系統等),可靠性需求(不發生故障的概率),安全保密需求,用戶界面需求,資源使用需求(軟件運行是所需的內存,CPU等),軟件成本消耗與開發進度需求,預先估計以後系統可能達到的目標.

分析與綜合 逐步細化所有的軟件功能,找出系統各元素間的聯繫,接口特性和設計上的限制,分析他們是否滿足需求,剔除不合理部分,增加需要部分.最後,綜合成系統的解決方案,給出要開發的系統的詳細邏輯模型(做什麼的模型).

制訂規格說明書 即編制文檔,描述需求的文檔稱爲軟件需求規格說明書.請注意,需求分析階段的成果是需求規格說明書(好象軟考曾經考過這個問題),向下一階段提交.

評審 對功能的正確性,完整性和清晰性,以及其它需求給予評價.評審通過纔可進行下一階段的工作,否則重新進行需求分析。

方法

需求分析的方法有很多.這裏只強調原型化方法,其它的方法如:結構化方法,動態分析法等.(從來沒用過這些方法)在此不討論.

原型化方法是十分重要的(是軟考等常考的知識點).原型就是軟件的一個早期可運行的版本,它實現了目標系統的某些或全部功能.

原型化方法就是儘可能快地建造一個粗糙的系統,這系統實現了目標系統的某些或全部功能,但是這個系統可能在可靠性,界面的友好性或其他方面上存在缺陷.建造這樣一個系統的目的是爲了考察某一方面的可行性,如算法的可行性,技術的可行性,或考察是否滿足用戶的需求等.如,爲了考察是否滿足用戶的要求,可以用某些軟件工具快速的建造一個原型系統,這個系統只是一個界面,然後聽取用戶的意見,改進這個原型.以後的目標系統就在原型系統的基礎上開發.

原型主要有三種類型(軟考考過):探索型,實驗型,進化型.探索型:目的是要弄清楚對目標系統的要求,確定所希望的特性,並探討多種方案的可行性.實驗型:用於大規模開發和實現前,考覈方案是否合適,規格說明是否可靠.進化型:目的不在於改進規格說明,而是將系統建造得易於變化,在改進原型的過程中,逐步將原型進化成最終系統。

在使用原型化方法是有兩種不同的策略:廢棄策略,追加策略.廢棄策略:先建造一個功能簡單而且質量要求不高的模型系統,針對這個系統反覆進行修改,形成比較好的思想,據此設計出較完整,準確,一致,可靠的最終系統.系統構造完成後,原來的模型系統就被廢棄不用.探索型和實驗型屬於這種策略。

追加策略:先構造一個功能簡單而且質量要求不高的模型系統,作爲最終系統的核心,然後通過不斷地擴充修改,逐步追加新要求,發展成爲最終系統。進化型屬於這種策略.

20條法則

客戶與開發人員交流需要好的方法。下面建議20條法則,客戶和開發人員可以通過評審以下內容並達成共識。如果遇到分歧,將通過協商達成對各自義務的相互理解,以便減少以後的磨擦(如一方要求而另一方不願意或不能夠滿足要求)。

1、 分析人員要使用符合客戶語言習慣的表達

需求討論集中於業務需求和任務,因此要使用術語。客戶應將有關術語(例如:採價、印花商品等採購術語)教給分析人員,而客戶不一定要懂得計算機行業的術語。

2、分析人員要了解客戶的業務及目標

只有分析人員更好地瞭解客戶的業務,才能使產品更好地滿足需要。這將有助於開發人員設計出真正滿足客戶需要並達到期望的優秀軟件。爲幫助開發和分析人員,客戶可以考慮邀請他們觀察自己的工作流程。如果是切換新系統,那麼開發和分析人員應使用一下舊系統,有利於他們明白系統是怎樣工作的,其流程情況以及可供改進之處。

3、 分析人員必須編寫軟件需求報告

分析人員應將從客戶那裏獲得的所有信息進行整理,以區分業務需求及規範、功能需求、質量目標、解決方法和其他信息。通過這些分析,客戶就能得到一份“需求分析報告”,此份報告使開發人員和客戶之間針對要開發的產品內容達成協議。報告應以一種客戶認爲易於翻閱和理解的方式組織編寫。客戶要評審此報告,以確保報告內容準確完整地表達其需求。一份高質量的“需求分析報告”有助於開發人員開發出真正需要的產品。

4、 要求得到需求工作結果的解釋說明

分析人員可能採用了多種圖表作爲文字性“需求分析報告”的補充說明,因爲工作圖表能很清晰地描述出系統行爲的某些方面,所以報告中各種圖表有着極高的價值;雖然它們不太難於理解,但是客戶可能對此並不熟悉,因此客戶可以要求分析人員解釋說明每個圖表的作用、符號的意義和需求開發工作的結果,以及怎樣檢查圖表有無錯誤及不一致等。

5、 開發人員要尊重客戶的意見

如果用戶與開發人員之間不能相互理解,那關於需求的討論將會有障礙。共同合作能使大家“兼聽則明”。參與需求開發過程的客戶有權要求開發人員尊重他們並珍惜他們爲項目成功所付出的時間,同樣,客戶也應對開發人員爲項目成功這一共同目標所做出的努力表示尊重。

6、 開發人員要對需求及產品實施提出建議和解決方案

通常客戶所說的“需求”已經是一種實際可行的實施方案,分析人員應盡力從這些解決方法中瞭解真正的業務需求,同時還應找出已有系統與當前業務不符之處,以確保產品不會無效或低效;在徹底弄清業務領域內的事情後,分析人員就能提出相當好的改進方法,有經驗且有創造力的分析人員還能提出增加一些用戶沒有發現的很有價值的系統特性。

7、 描述產品使用特性

客戶可以要求分析人員在實現功能需求的同時還注意軟件的易用性,因爲這些易用特性或質量屬性能使客戶更準確、高效地完成任務。例如:客戶有時要求產品要“界面友好”或“健壯”或“高效率”,但對於開發人員來講,太主觀了並無實用價值。正確的做法是,分析人員通過詢問和調查瞭解客戶所要的“友好、健壯、高效所包含的具體特性,具體分析哪些特性對哪些特性有負面影響,在性能代價和所提出解決方案的預期利益之間做出權衡,以確保做出合理的取捨。

8、 允許重用已有的軟件組件

需求通常有一定靈活性,分析人員可能發現已有的某個軟件組件與客戶描述的需求很相符,在這種情況下,分析人員應提供一些修改需求的選擇以便開發人員能夠降低新系統的開發成本和節省時間,而不必嚴格按原有的需求說明開發。所以說,如果想在產品中使用一些已有的商業常用組件,而它們並不完全適合您所需的特性,這時一定程度上的需求靈活性就顯得極爲重要了。

9、 要求對變更的代價提供真實可靠的評估

有不同的選擇。而這時,對需求變更的影響進行評估從而對業務決策提供幫助,是十分必要的。所以,客戶有權利要求開發人員通過分析給出一個真實可信的評估,包括影響、成本和得失等。開發人員不能由於不想實施變更而隨意誇大評估成本。

10、 獲得滿足客戶功能和質量要求的系統

每個人都希望項目成功,但這不僅要求客戶要清晰地告知開發人員關於系統“做什麼”所需的所有信息,而且還要求開發人員能通過交流了解清楚取捨與限制,一定要明確說明您的假設和潛在的期望,否則,開發人員開發出的產品很可能無法讓您滿意。

11、 給分析人員講解您的業務

分析人員要依靠客戶講解業務概念及術語,但客戶不能指望分析人員會成爲該領域的專家,而只能讓他們明白您的問題和目標;不要期望分析人員能把握客戶業務的細微潛在之處,他們可能不知道那些對於客戶來說理所當然的“常識”。

12、 抽出時間清楚地說明並完善需求

客戶很忙,但無論如何客戶有必要抽出時間參與“頭腦高峯會議”的討論,接受採訪或其他獲取需求的活動。有些分析人員可能先明白了您的觀點,而過後發現還需要您的講解,這時請耐心對待一些需求和需求的精化工作過程中的反覆,因爲它是人們交流中很自然的現象,何況這對軟件產品的成功極爲重要。

13、 準確而詳細地說明需求

編寫一份清晰、準確的需求文檔是很困難的。由於處理細節問題不但煩人而且耗時,因此很容易留下模糊不清的需求。但是在開發過程中,必須解決這種模糊性和不準確性,而客戶恰恰是爲解決這些問題作出決定的最佳人選,否則,就只好靠開發人員去正確猜測了。

在需求分析中暫時加上“待定”標誌是個方法。用該標誌可指明哪些是需要進一步討論、分析或增加信息的地方,有時也可能因爲某個特殊需求難以解決或沒有人願意處理它而標註上“待定”。客戶要儘量將每項需求的內容都闡述清楚,以便分析人員能準確地將它們寫進“軟件需求報告”中去。如果客戶一時不能準確表達,通常就要求用原型技術,通過原型開發,客戶可以同開發人員一起反覆修改,不斷完善需求定義。

14、 及時作出決定

分析人員會要求客戶作出一些選擇和決定,這些決定包括來自多個用戶提出的處理方法或在質量特性衝突和信息準確度中選擇折衷方案等。有權作出決定的客戶必須積極地對待這一切,儘快做處理,做決定,因爲開發人員通常只有等客戶做出決定才能行動,而這種等待會延誤項目的進展。

15、 尊重開發人員的需求可行性及成本評估

所有的軟件功能都有其成本。客戶所希望的某些產品特性可能在技術上行不通,或者實現它要付出極高的代價,而某些需求試圖達到在操作環境中不可能達到的性能,或試圖得到一些根本得不到的數據。開發人員會對此作出負面的評價,客戶應該尊重他們的意見。

16、 劃分需求的優先級

絕大多數項目沒有足夠的時間或資源實現功能性的每個細節。決定哪些特性是必要的,哪些是重要的,是需求開發的主要部分,這隻能由客戶負責設定需求優先級,因爲開發者不可能按照客戶的觀點決定需求優先級;開發人員將爲您確定優先級提供有關每個需求的花費和風險的信息。

在時間和資源限制下,關於所需特性能否完成或完成多少應尊重開發人員的意見。儘管沒有人願意看到自己所希望的需求在項目中未被實現,但畢竟是要面對現實,業務決策有時不得不依據優先級來縮小項目範圍或延長工期,或增加資源,或在質量上尋找折衷。

17、 評審需求文檔和原型

客戶評審需求文檔,是給分析人員帶來反饋信息的一個機會。如果客戶認爲編寫的“需求分析報告”不夠準確,就有必要儘早告知分析人員併爲改進提供建議。更好的辦法是先爲產品開發一個原型。這樣客戶就能提供更有價值的反饋信息給開發人員,使他們更好地理解您的需求;原型並非是一個實際應用產品,但開發人員能將其轉化、擴充成功能齊全的系統。

18、 需求變更要立即聯繫

不斷的需求變更,會給在預定計劃內完成的質量產品帶來嚴重的不利影響。變更是不可避免的,但在開發週期中,變更越在晚期出現,其影響越大;變更不僅會導致代價極高的返工,而且工期將被延誤,特別是在大體結構已完成後又需要增加新特性時。所以,一旦客戶發現需要變更需求時,請立即通知分析人員。

19、 遵照開發小組處理需求變更的過程

爲將變更帶來的負面影響減少到最低限度,所有參與者必須遵照項目變更控制過程。這要求不放棄所有提出的變更,對每項要求的變更進行分析、綜合考慮,最後做出合適的決策,以確定應將哪些變更引入項目中。

20、 尊重開發人員採用的需求分析過程

軟件開發中最具挑戰性的莫過於收集需求並確定其正確性,分析人員採用的方法有其合理性。也許客戶認爲收集需求的過程不太划算,但請相信花在需求開發上的時間是非常有價值的;如果您理解並支持分析人員爲收集、編寫需求文檔和確保其質量所採用的技術,那麼整個過程將會更爲順利。

“需求確認”意味着什麼

在“需求分析報告”上簽字確認,通常被認爲是客戶同意需求分析的標誌行爲,然而實際操作中,客戶往往把“簽字”看作是毫無意義的事情。“他們要我在需求文檔的最後一行下面簽名,於是我就簽了,否則這些開發人員不開始編碼。”

這種態度將帶來麻煩,譬如客戶想更改需求或對產品不滿時就會說:“不錯,我是在需求分析報告上籤了字,但我並沒有時間去讀完所有的內容,我是相信你們的,是你們非讓我簽字的。”

同樣問題也會發生在僅把“簽字確認”看作是完成任務的分析人員身上,一旦有需求變更出現,他便指着“需求分析報告”說:“您已經在需求上簽字了,所以這些就是我們所開發的,如果您想要別的什麼,您應早些告訴我們。”

這兩種態度都是不對的。因爲不可能在項目的早期就瞭解所有的需求,而且毫無疑問地需求將會出現變更,在“需求分析報告”上簽字確認是終止需求分析過程的正確方法,所以我們必須明白簽字意味着什麼。

對“需求分析報告”的簽名是建立在一個需求協議的基線上,因此我們對簽名應該這樣理解:“我同意這份需求文檔表述了我們對項目軟件需求的瞭解,進一步的變更可在此基線上通過項目定義的變更過程來進行。我知道變更可能會使我們重新協商成本、資源和項目階段任務等事宜。”對需求分析達成一定的共識會使雙方易於忍受將來的摩擦,這些摩擦來源於項目的改進和需求的誤差或市場和業務的新要求等。  需求確認將迷霧撥散,顯現需求的真面目,給初步的需求開發工作畫上了雙方都明確的句號,並有助於形成一個持續良好的客戶與開發人ONT>

點評誤區

要想說什麼是好的需求分析,不如說什麼是不好的需求分析,知道什麼是不好的,自然也就知道了什麼是好的。以下就是一些不好的情況:

(1)創意和求實 毋庸質疑的,每個人都會爲自己的一個新的Idea而激動萬分,特別是當這個Idea受到一些根本不知道你原本要幹嘛的人的驚讚時。但是請注意,當你激動得意的時候,你可能已經忘了你原本是在描述一個需求,而不是在策劃一個創意、創造一個概念。很多剛開始做需求分析的人員都或多或少的會犯這樣的錯誤,陶醉在自己的新想法和新思路中,卻違背了需求的原始客觀性和真實性原則。 永遠別忘了:需求不是空中樓閣,是實實在在的一磚一瓦。

(2)解剖的快感 幾乎所有搞軟件的人,做需求分析的時候,一上來就會把用戶告訴你的要求,完完整整的作個解剖,切開分成幾個塊,再細分成幾個子塊,然後再條分縷析。可是當用戶迷惑的看着你辛辛苦苦做出來的分析結果問你:我想作一個數據備份的任務,怎麼做?這時,你會發現,需要先後打開三個窗口才能完成這個任務。 永遠別忘了:分解是必需的,但最終的目的是爲了更好的組合,而不是爲了分解。

(3)角度和思維 經常聽到這樣的抱怨:“用戶怎麼可以提出這樣苛刻的要求呢?”。細細一瞭解,你會發現,用戶只不過是要求把一個需要兩次點擊的功能,改成只有一次點擊。這樣會導致需要改變需求、改變編碼、甚至重新測試,增加工作量。可是,如果換個角度來想想,這個功能,開發的時候只用了幾次、幾十次,可是用戶每天都要用幾百次甚 至幾千次幾萬次,改動一下就減少了一半的工作量,對他來說,這樣的需求難道會苛刻嗎? 永遠別忘了:沒有任何需求是不對的,不對的只是你的需求分析。試着站在用戶的思維角度想想,你的需求分析就會更加的貼近用戶,更加的合理。軟件應該是以人爲本的。

(4)程序員邏輯 從程序員成長爲系統分析員是一個普遍的軌跡,但並不是一個好的程序員就必然能成爲一個好的系統分析員。一些程序員的固化邏輯,使得他們在做需求分析的時候往往鑽進了一些牛角里面。比如說1/0邏輯(或者是說黑白邏輯),認爲不是這樣就是那樣,沒有第三種情況。可實際情況往往是,在一定的時候是這樣,其它時候是那樣。又比如窮舉邏輯,喜歡上來就把所有一二三可能的情況列舉出來,然後一個一個分別處理,每個佔用三分之一的時間;可是實際的情況往往是,三分之一的情況佔了99%的比例,其它兩種情況一年都不會遇到一次。實際中還有很多這樣的例子,不一一列舉了。 永遠別忘了:需求分析和程序設計不盡相同,合理、可行是纔是重要的。跳出程序設計的圈子,站在系統的角度上來看問題,你的結論會截然不同。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章