需求分析概述

發表于:2008-08-05來源:作者:點擊數: 標簽:需求概述
1概要 軟件工程分為三個層次,過程層、方法層、工具層。在最基礎的過程層,最重要的就是一組被稱為關鍵過程區域(KPAs)的框架(KPA的概念在討論CMM的書中有詳細的概念說明)。關鍵過程區域構成了軟件項目的管理控制的基礎,并且確立了上下文各區域的關系,
1 概要


軟件工程分為三個層次,過程層、方法層、工具層。在最基礎的過程層,最重要的就是一組被稱為關鍵過程區域(KPAs)的框架(KPA的概念在討論CMM的書中有詳細的概念說明)。關鍵過程區域構成了軟件項目的管理控制的基礎,并且確立了上下文各區域的關系,其中規定了技術方法的采用、工程產品的,模型、文檔、數據、報告、表格等,等的產生、里程碑的建立、質量的保證及變化的適當管理。方法層主要是過程在技術上的實現。它解決的問題是如何做。軟件工程方法涵蓋了一系列的任務:需求分析、設計、編程、測試、維護。同時他還包括了一組基本原則,控制了每一個的關鍵過程區域。工具層就很好理解了,他對過程層和方法層提供了自動和半自動的支持。這些輔助工具就稱為CASE。 


可以看到需求分析的位置,但是事實上需求分析是跨越了軟件工程的三個層次的。這一點是和其他的過程是一樣的。當然我們這里比較重點強調的是在軟件工程的方法層,同時也涉及到一些過程層的思想,至于工具層則不在我們的討論之列,但是會提到一些很適合在需求分析時應用的工具,諸如Word、Excel、Visio等。 

2 使用用例開發系統的一般過程


在開發過程的初始階段,可以根據具體的項目特點,制訂開發各個視圖之間的關聯原則,指導規范。在開發的過程中,視圖的組織原則應不斷進行維護、更新。 識別ACTOR來識別系統與外界交互的實體。ACTOR具有特定領域的特征,例如:交換機(采集系統)、97信息系統等。在系統層次的ACTOR確定了系統的邊界。

識別用例。同ACTOR一樣,用例具有不同層次。對較為概括的USECASE,需要細化。注:系統開發需要一定的規則來確定,如何來分解用例;可能基于原有系統的經驗,或是參考現有資料。 

當用例細化到可以被理解的層次。需要基于用例進行下一步的開發。如前面提到的,用例主要用來描述交互。因此,存在交互的實體和交互的細節。交互的實體采用類圖來描述;而交互的細節,采用順序圖來描述。 

當系統復雜到一定層次時,類圖和順序圖可能不能足以描述其復雜程度。在該情況下,需要使用狀態圖來輔助闡述。狀態圖和順序圖之間使用事件聯結在一起。它們之間的一致性問題,目前UML和ROSE沒有提供解決方案。相對折衷的方法是使用事件的命名規范強制一致性。 

可以說,之前說的所有的東西都是為了能夠導出用例在需求中的作用。用例是從用戶的角度看待系統,而不是基于程序員的角度。這樣的話,用例驅動的系統能夠真正做到以用戶為中心,用戶的任何需求都能夠在系統開發鏈中完整的體現。用戶和程序員間通過用例溝通,避免了牛頭馬嘴的尷尬局面。 從前,系統開發者總是通過情節來獲取需求,是問用戶希望系統為他做什么。在Jacobson發明了用例的概念之后,需求獲取就變成問用戶要利用系統做什么。這是立場不同導致的結果。用戶通常并不關心系統是如何實現的(也有少數可愛的技術狂是例外)。對他們來說,更重要的是要達到他的目的。相反的,大部分的程序員的工作習慣就是考慮計算機應該如何實現用戶的要求。所幸的是,用例方法能夠調和雙方的矛盾,因為雖然用例是來源于用戶,服務于用戶,但是它同樣可以用于開發的流程。當系統的開發過程都是基于用例的,用用例獲取需求,用用例設計,用用例編碼,用用例測試的時候。這個開發過程就是用例驅動的。 用例和用例文檔 

《軟件需求》一書中提到了幾種方法來確定用例: 

· 首先明確執行者和他們的角色,然后確定業務過程,在這一過程中每一個參與者都在為確定用例而努力。 

· 確定系統所能反映的外部事件,然后把這些事件與參與的執行者和特定的用例聯系起來。 

· 以特定的說明形式表達業務過程或日常行為,從這些說明中獲得用例,并確定參與到用例中的執行者,有可能從現在的功能需求說明中獲得用例。如果有些需求與用例不一致,就應考慮是否真的需要它們。 

用例代表了用戶的需求,在你的系統中,應該直接從不同用戶類的代表或至少應從代理那里收集需求。用例為表達用戶需求提供了一種方法,而這一方法必須與系統的業務需求相一致。分析者和用戶必須檢查每一個用例,在把它們納入需求之前決定其是否在項目所定義的范圍內?;凇坝美狈椒ㄟM行需求獲取的目的在于:描述用戶需要使用系統完成的所有任務。在理論上,用例的結果集將包括所有合理的系統功能。在現實中,你不可能獲得完全包容,但是比起我所知道的其它獲取方法,基于用例的方法可以為你帶來更好的效果。 

當使用用例進行需求獲取時,應避免受不成熟的細節的影響。在對切合的客戶任務取得共識之前,用戶能很容易地在一個報表或對話框中列出每一項的精確設計。如果這些細節都作為需求記錄下來,他們會給隨后的設計過程帶來不必要的限制。你可能要周期性地檢查需求獲取,以確保用戶參與者將注意力集中在與今天所討論的話題適合的抽象層上。向他們保證在開發過程中,將會詳盡闡述他們的需求。在一個逐次詳細描述過程中,重復地詳述需求,以確定用戶目標和任務,并作為用例。然后,把任務描述成功能需求,這些功能需求可以使用戶完成其任務,也可以把它們描述成非功能需求,這些非功能需求描述了系統的限制和用戶對質量的期望。雖然最初的屏幕構思有助于描述你對需求的理解,但是你必須細化用戶界面設計。 

建立用例文檔。在每一次的需求獲取之后,都會生成很多未整理的需求,你必須將它們組織成用例文檔。使用諸如模板的技術能夠提高你的速度和需求的復用性。一個用例文檔可以使用表格來組織,主要的要素包括了用例標識號、用例名稱、父用例標志號、創建者、創建時間、審核者、修訂記錄、角色、說明、先決條件、請求結果、優先級、普通過程、可選過程、例外、非功能需求、假設、注釋和問題。 

雖然列舉出了這么多的屬性,但是實際中使用的屬性這要看你的團體而定,看項目的大小而定。把大量的時間花在用例的描述上是沒有意義的。用戶需要的是一個軟件系統,并不是一大堆的用例說明。



原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97