需求分析數據庫
需求分析的任務不是具體地解決問題,而是要準確地肯定目標系統必須作什麼。工具
用戶瞭解他們所面對的問題,知道必須作什麼,但一般不能完整準確地表達出他們的要求,也不知道計算機軟件能夠解決他們的哪些問題;軟件開發人員知道軟件能夠作什麼,但並不徹底清楚特定用戶的具體需求。系統分析員在需求分析階段必須和用戶充分交流,密切配合,以便得出一個可以真實反應用戶要求的「需求分析模型」或「軟件需求說明書」,這個模型或說明書將做爲軟件系統設計的依據。設計
需求分析模型一般使用UML中的用例圖和類圖等圖形工具來表示,軟件需求說明書通常可用數據流圖、數據字典和天然語言書寫。對象
面向對象方法已取代結構化方法成爲軟件方法學的主流。但對於一些功能需求很是明確並且不會輕易改變的軟件系統,結構化方法仍然是比較有效的。ip
1.結構化分析開發
結構化分析(structured analysis,SA)方法是一種面向數據流的需求分析方法。它的基本思想是自頂向下逐層分解,把一個大問題分解成若干個小問題,每一個小問題再分解成若干個更小的問題。通過逐層分解,每一個最低層的問題都是足夠簡單、容易解決的,因而複雜的問題也就迎刃而解了。it
數據流圖(DFD)、數據字典(DD)、實體-關係圖(E-R圖),以及描述加工處理的結構化語言是結構化分析的常見工具,軟件需求說明書是需求分析階段的最後成果。io
1)數據流圖軟件
數據流圖(data flow diagram,DFD)是一種圖形化技術,用來描述數據從輸入到輸出的變換流程。在數據流圖中沒有任何具體的物理部件,它只是描繪數據在軟件中流動和被處理的邏輯過程。設計數據流圖時只需考慮系統必須完成的基本邏輯功能,徹底不須要考慮怎樣具體地實現這些功能。file
①DFD的基本成分
數據流圖主要由4種成分組成,如表6-7所示。
表6-7 DFD的基本成分
(1)數據流(data flow):由一組固定成分的數據組成,表示數據的流向。它能夠從源、文件流向加工,也能夠從加工流向文件和宿,還能夠從一個加工流向另外一個加工。一般每一個數據流必須有一個合適的名字,一方面是爲了區別,另外一方面也給人一個直觀的印像,令人容易理解這個數據流的含義。但流向文件或從文件流出的數據流沒必要命名,由於這種數據流的組成部分就是相應文件的組成部分。
(2)加工(process):描述了輸入數據流到輸出數據流之間的變換,也就是輸入數據流作了什麼處理後變成了輸出數據流。每一個加工有一個名字和一個編號。編號反映了該加工位於分層DFD的哪一個層次和哪張圖中,以及它是哪一個加工分解出來的子加工。
(3)文件(file):能夠表示數據文件,也能夠表示一個數據記錄。流向文件的數據流表示寫文件,流出文件的數據流表示讀文件,雙向箭頭表示對文件既讀又寫。每一個文件都有一個文件名。
(4)源/宿(source/sink):源是指系統所需數據的發源地,宿(也稱爲數據池)是指系統所產生的數據的歸宿地。不管源或宿,均對應於外部實體,在框內應加註實體的名字。在一個軟件系統中,有些源和宿能夠是同一外部實體。
②分層數據流圖
對於一個大型系統,若是在一張數據流圖上畫出全部的數據流和加工,則會使得數據流圖複雜並難以理解。爲了控制複雜性,結構化分析方法採用了數據流圖分層技術。不是在一個數據流圖中一次引入太多的細節,而是有控制地逐步增長細節,實現從抽象到具體的逐步過渡。
一套分層的數據流圖由頂層、底層和中間層組成。頂層圖說明了系統的邊界,底層圖由一些沒必要分解的基本加工組成。中間層的數據流圖描述了某個加工的分解,而它的組成部分又要進一步被分解。在分層數據流圖中,處於上層的圖稱爲父圖,處於下層的圖稱爲子圖。
③基本原則與注意事項
(1)自外向內,自頂向下,逐層細化,完善求精。
(2)保持父圖與子圖的平衡。也就是說,父圖中某加工的輸入/輸出數據流必須與它的子圖的輸入/輸出數據流在數量和名字上相同。
(3)保持數據守恆。也就是說,一個加工全部輸出數據流中的數據必須能從該加工的輸入數據流中直接得到,或者是經過該加工能產生的數據。
(4)加工細節隱蔽。根據抽象原則,在畫父圖時,只需畫出加工和加工之間的關係,而沒必要畫出各個加工內部的細節。
(5)簡化加工間關係。在數據流圖中,加工間的數據流越少,各個加工就越相對獨立,因此應儘可能減小加工間輸入/輸出數據流的數目。
(6)均勻分解。應該使一個數據流中的各個加工分解層次大體相同。
(7)適當地爲數據流、加工、文件、源/宿命名,名字應反映該成分的實際意義,避免空洞的名字。
(8)忽略枝節。應集中精力於主要的數據流,而暫不考慮一些例外狀況、出錯處理等枝節性的問題。
(9)表現的是數據流而不是控制流。數據流圖與傳統的程序流程圖不一樣,數據流圖是從數據的角度描述一個系統,而流程圖則是從對數據加工的角度來描述系統。數據流圖中的箭頭是數據流,而流程圖中的箭頭則是控制流,它表達的是程序執行的次序。數據流圖適合於宏觀地分析一個組織的業務概況,而程序流程圖只適合於描述系統中某個加工的執行細節。
(10)每一個加工必須既有輸入數據流,又有輸出數據流;在整套數據流圖中,每一個文件必須既有讀文件的數據流,又有寫文件的數據流,但在某一張子圖中可能只有讀沒有寫或者只有寫沒有讀。
2)數據字典
數據字典是關於數據的信息的集合,也就是對數據流圖中包含的全部元素的定義的集合。
數據流圖和數據字典共同構成系統的邏輯模型。沒有數據流圖,數據字典難以發揮做用;沒有數據字典,數據流圖就不嚴格。只有數據流圖和對數據流圖中每一個元素的精肯定義放在一塊兒,才能共同構成系統的規格說明。
數據字典中有4種類型的條目。
①數據項條目
數據項條目給出某個數據單項的定義,一般爲數據項的值類型、容許的取值範圍等。
②數據流條目
數據流條目給出某個數據流的定義,它一般是列出該數據流的各組成數據項。有些數據流的組成比較複雜,能夠採用自頂向下分解的方式將它表示成更低層次的組合,一直分解到每一個與項目有關的人都清楚其準確含義時爲止。
由低的數據元素(或稱份量),組成更復雜的數據的方式有:
(1)順序,即以肯定次序鏈接兩個或多個份量;
(2)選擇,即從兩個或多個可能的元素中選取一個;
(3)重複,即把指定的份量重複0次或屢次;
(4)可選,即一個份量是無關緊要的(重複0次或屢次)。
③文件條目
文件條目給出某個文件的定義,一般也是列出其記錄的組成數據項。此外,還能夠指出文件的組織方式,如按單號遞增次序排列等。
④加工條目
加工條目是對數據流圖中每個不能再分解的基本加工的精確說明。
說明中應精確描述用戶要求某個加工作什麼,包括加工的激發條件、加工邏輯、優先級、執行頻率和出錯處理等。其中加工邏輯是最基本的部分,它描述了輸入數據流、輸入文件與輸出數據流、輸出文件之間的邏輯關係。經常使用的加工邏輯描述方法有三種:結構化語言、斷定表和斷定樹。
3)結構化語言
用天然語言描述加工邏輯是最方便的,可是天然語言每每不夠精確,它可能存在二義性,並且難以用計算機處理。而形式化語言可以嚴格精確地描述事物,且易於被計算機處理,但不易被用戶理解。採用一種介於天然語言和形式化語言之間的結構化語言來描述加工邏輯,能夠較好地解決這一矛盾。
結構化語言其實是一種半形式化語言,它的結構一般可分爲內外兩層。外層接近於形式化語言,而內層近似於天然語言的描述。
4)實體—關係圖
實體—關係圖(Entity-Relationship Diagram)簡稱E-R圖,包含實體、關係和屬性等3種基本成分。一般用矩形框表明實體,用鏈接相關實體的菱形框表示關係,用橢圓形或圓角矩形表示實體(或關係)的屬性,並用直線把實體(或關係)與其屬性鏈接起來。
人們一般就是用實體、關係和屬性這三個概念來理解現實問題的,E-R圖比較接近人的習慣思惟方式。此外,E-R圖使用簡單的圖形符號表達系統分析員對問題域的理解,不熟悉計算機技術的用戶也能理解它,E-R圖能夠做爲用戶與系統分析員之間有效的交流工具。
E-R圖一般用於數據庫應用系統。