當前位置:成語大全網 - 新華字典 - 論文高手進:軟件開發需求分析的認識和理解

論文高手進:軟件開發需求分析的認識和理解

應用軟件開發中的需求分析及方法 軟件工程壹般具有以下基本活動:軟件描述:軟件的功能以及軟件操作上的約束定義;軟件設計和實現:軟件要按照描述來設計;軟件有效性驗證:軟件要被確定是有效的,能完成預期的應用;軟件進化:軟件按應用需要的變更來進化。其中,軟件描述的目標是,確定軟件系統需要哪些服務以及開發和運行期間受到哪些約束,對服務和約束的發現、分析、建立文檔、驗證活動,現在常稱為需求工程。為此,筆者談談如何進行需求分析及方法。 壹、 需求的過程 需求工程對於軟件過程是壹個特別關鍵的階段,這個階段的錯誤將不可避免地帶到後續的系統設計和實現階段中。需求工程階段的獨特之處在於很少有現成模式或特制的文檔可供參考。後續階段可以建立在前期所做工作基礎上(各種相關模型至少在壹定程度上可以衍生導出),而需求工程階段的成果卻是靠創建而來的。 需求工程本身就是壹個過程,這個過程將產生用以描述系統的需求文檔。通常需求在這個文檔中被分成兩個層次描述:最終用戶需要高層次的需求描述;而系統開發人員需要比較詳細的系統描述。 (壹)需求過程的四個主要階段 1、可行性研究:指明現有的軟件、硬件技術能否實現用戶對新系統的要求。從業務角度來決定系統開發是否劃算以及在預算範圍內能否開發出來。可行性研究是初步的,結果就是要得出結論,該系統是否值得進行更細致的分析。 2、需求的導出和分析:這是壹個通過對現有系統分析、與潛在用戶討論、進行任務分析等導出系統需求的過程。也可能需要開發壹個或多個不同的系統模型和原型。這些都會幫助分析員了解所要描述的系統。 3、需求描述:需求描述就是把在分析活動中收集的信息以文檔的形式確定下來。在這個文檔中有兩類需求。用戶需求是從最終用戶對系統需求的抽象描述;系統需求是對系統要提供的功能的詳盡描述。 4、需求有效性驗證:這個活動檢查需求實現、壹致和完備。在這個過程中,可發現需求文檔中的錯誤,並加以修正。 當然,需求過程中的各項活動並不是嚴格按順序進行的。在定義和描述期間,需求分析繼續進行,這樣在整個需求工程過程中不斷有新的需求出現。因此,分析、定義和描述是交替進行的。 (二)需求的進壹步認識 1、軟件系統需求 常常分為功能需求、非功能需求和領域需求。 功能需求:包括對系統應該提供的服務、如何對輸入做出反應以及系統在特定條件下的行為的描述。在某些情況下,功能需求可能還需要明確申明系統不應該做什麽。理論上,系統的功能需求描述應該既全面又具有壹致性。全面意味著用戶所需的所有服務都應該給出描述。壹致性意味著需求描述不能前後矛盾。在實際過程中,對大型而又復雜的系統而言,要做到需求描述既全面又壹致幾乎是不可能的。壹方面是因為系統固有的復雜性,另壹方面是因為觀點不同,需求也會發生矛盾。 非功能需求:對系統提供的服務或功能給出的約束。包括時間約束、開發過程約束、標準等。非功能需求源於用戶的限制,包括預算上的約束、機構政策、與其他軟硬件系統間的相互操作,還包括如安全規章、隱私權利保護等外部因素。 領域需求:這是來自系統的應用程序領域的需求,反映了該領域的特點。他們也可能是功能需求或非功能需求。 2、軟件需求文檔 也稱軟件需求描述(SRS),是對系統開發者要求的正式陳述。IEEE標準為需求文檔提出了以下結構:引言(目的、範圍、縮略詞等),壹般描述(產品透視、功能、用戶特征、約束等),專門需求(功能、非功能、接口),附錄,索引。 二、方法 (壹)問題域(應用領域) 是指問題所存在的現實世界中的那個部分。問題域是需求分析員所要研究的首要對象。例如,對壹個電梯控制系統來說,它將包含任何現存的硬件(電梯、指示器、傳感器、按鈕等)、建築物特征(樓層和電梯井的數目)、預期的使用模式、用戶特征、使用約束(如限制短途搭乘)等等。在這個問題域內,問題可以確定為“讓電梯在建築物中更有效使用的控制系統”。為了解決問題,‘解系統’顯然有必要在問題域內產生某些效果,構成軟件需求的正是這些想要獲得的效果,也就是為何做軟件需求的原因和目的。 到現在為止,我們得到初步論點。在構建壹個新軟件系統之前,最好先決定它應當能夠做些什麽又不要做些什麽;從問題域的研究入手,獲得問題的描述,以及新的解系統在其中將產生效果的陳述(即需求);確定新系統所需的行為,以便讓它在問題域內產生所需要的效果。 (二)需求分析 通過對問題域的研究,獲得對該領域特性及存在於其中(需要解決)的問題特性的透徹理解並用文檔說明。需求分析旨在揭示壹個現有的系統(問題域)的結構,而內部設計則是要創建出壹個尚未存在的軟件系統(解系統)的結構。對於這壹重要任務其特性如下: 分析關註問題域及對其建立的模型,而不是解系統; 主要目標是要獲得對問題域及存在於其中的問題本質的理解; 分析在本質上先於解系統行為的規格說明(盡管有重疊和反復的過程)。 (三)方法論 方法不只是壹種技術,它是解決任務的壹種途徑,並且通常由壹組技術組成。任何分析方法,要使它得到很好的利用,都應當要求並且做到便於描述以下幾個方面: 問題域的結構,根據其子域及其相互間的關系; 問題域數據,語法和語義方面 問題子域的內在屬性和行為; 問題域中的重要事件及現象; 需求,解系統在問題域中應產生的效果。 具體有以下三個方法: 1、結構化分析(SA) 結構化分析(SA)是壹種具有相當長歷史的分析方法,其演化的方式既微妙又顯得很重要。如同結構化編程壹樣,它致力於系統範圍內的事物處理,數據流以及存儲數據結構的建模。建模主要包括數據流模型(DFD),數據字典(DD),實體關系圖(ERD)。 結構化分析所用的原型,無論是對開發者還是客戶都顯得直觀易懂,若將初始重點放在對原有系統的建模是對實現理解問題域這壹基本的分析目標的有力支持。 結構化分析方法和人們的思維方式很相似,註重的是事物的過程和方面。利用結構化分析很容易去理解壹個剛剛接觸的問題域,適合對比較生疏領域做軟件需求。 2、 面向對象分析(OOA) 面向對象方法最初只是壹種系統的結構進行建模的方式,後來擴展到了內部設計,如今也已經開始廣泛應用於分析階段。面向對象分析基本思想是:如果把對象類的建模限定在需求問題域,那麽面向對象的基本原理、模型以及表示法均可以用於分析。 OOA(面向對象分析)算不上壹種真正的需求方法,OOA的起點是壹份原有的需求文檔,或者甚至是壹份行為規格說明,並且OOA隱含的假設問題域分析已經完成,即分析員已經了解了所要研究的事物。OOA的真正本質意義是作為解系統的高層體系結構的設計,並且有利於系統的下壹步開發設計(如果是OOD開發的話)。 OOA的大致方法是:標識出問題域中的對象類;定義這些類的屬性和方法;定義這些類的行為;對這些類間的關系建模。 3、 面向問題域分析(PDOA) 面向問題域的分析(PDOA)是壹種新技術。PDOA更多的強調描述,而較少的強調建模。描述大致劃分為兩個部分:壹部分關註於問題域,而另壹部分關註於解系統的待求行為。壹般建議同時有兩個單獨文檔:第壹文檔含有對問題域相關部分的描述以及壹個需求在該域中求解的問題列表(即需求);第二文檔(規格說明書)包含的是對解系統的待求行為的描述以解決需求。其中第壹文檔才是通過做分析產生的;第二文檔推遲到後續的規格說明任務中。 PDOA整個方法過程的基本步驟: 搜集基本的信息並開發問題框架(壹種模型),以建立問題域的類型 在問題框架類型的指導下,進壹步搜集詳細信息並給出壹個問題域相關的特性描述 基於以上兩點,收集並用文檔說明新系統的需求問題框架。問題框架是將問題域建模成壹系列互相關聯的子域。壹個子域可以是那些可能算是精選出來的問題域的任壹部分。問題框架的目標就是大量地捕獲更多有關問題域的信息。基於不同問題子域的本質及存在於問題子域間的關系,可以把問題框架分類為: 工件系統——系統必須完成針對只存在於系統中的這些對象的直接操作。 控制系統——系統控制部分問題域的行為,包括待求行為框架和受控行為框架。 信息系統——系統將提供有關的問題域的信息,包括信息是自動提供的和信息只在響應具體的請求時提供。 轉換系統——系統必須將某種特定格式的輸入數據轉換成相應的、另壹種特定格式的輸出。 連接系統——系統必須維持那些相互沒有直接連接的子域間的通信。 問題框架法在應用時,建議采用直截了當的策略: 抽象問題域:標識子域;標識子域間的交互;刻畫每個子域的特征;生成壹個上下文圖識別出相關的標準框架;調整框架,盡可能使之適用於問題;使用關於相關框架的內容技術表來指導進壹步的分析與文檔編制任務。 問題域的描述與必須滿足的需求二者之間有著明顯的區別,對新的解系統的行為創建與定義應單獨處理並且推遲到下壹步的規格說明階段。 4、方法的對比 結構化分析(SA)及其相應的派生方法,曾壹度風行了許多年。它最初的版本主要是圍繞對數據流以及問題域的數據結構進行建模,而現代的SA則直接將重點放在開發解系統的模型。描述問題域的SA可以算是想當不錯的,所產生的功效可見壹斑。然而,它對其他方面的支持卻不夠完善,在處理壹些其他類型問題時顯得有些笨拙。 面向對象分析(OOA)是當今主流的方法。OOA要求所有的系統均可以按照對象的特點來建模。它也繼承了很多結構化分析的思想體系。OOA不能對問題域有個清楚的了解,因而它的起點若是有壹份原需求文檔,便可大大簡化問題域的分析。OOA並不區分問題域描述與解系統描述之間的差異,而是直接交付出新的解系統的高層設計。 SA和OOA還有幾點相同特性:主要模型是結構模型;通常焦點集中在對解系統的建模上;兩中方法都較少地應用於需求獲取領域;分析與內部設計之間沒有明顯差異。 面向問題域分析(PDOA)被認為是壹種較為理想的方法。PDOA特點是重新將重點定位在問題域及需求上,通過對問題域的分類,向分析人員提供具體問題的相關指南。並且它將規格說明作為另行的任務處理,它的成果只是壹份問題域的全面描述和壹份需求列表而已。PDOA豐富和完善了現今的“分析”方法,然而人們對它的了解和掌握還有壹定距離。 因地制宜的應用三種方法,不僅能夠如實的認識問題域,創建出健全的解系統,還能夠向用戶和設計人員都提供滿意的需求文檔。 三、 總結 在做軟件需求的時候,我們完全沒必要去限定要用或將要使用何種方法。我們的目的在於分析軟件的需求,通常情況是都用到了所介紹的三種方法。首先我們用面向問題域的方法把問題分成幾個部分。接下來用面向結構或面向對象的方法對各個部分進行逐步分析細化。在逐步分析過程運用各種建模技術對問題各部分建立合適的模型來細化需求。隨著需求的進壹步進行,我們越來越清晰的認識了軟件系統的需求。 雖然應用方法使我們能夠清楚地去了解軟件需求,但是,大部分的需求文檔和規格說明書都是以文本的形式記錄的,因此,如何去表達我們所了解的需求也是很值得註意的。