需求工程程序 發現、分析以及確認系統需求的程序
本章目的 描述一些主要的需求工程活動 介紹數種需求擷取與分析的技術 描述需求確認的重要性 討論需求管理的角色以及如何支援需求工程的其他活動
本章內容 可行性研究 需求擷取與分析 需求確認 需求管理
需求工程程序 RE 使用的程序會根據應用領域、參與人員以及發展需求的組織有很大的差異 然而,下列幾項通用活動則是所有程序共通的 需求擷取 需求分析 需求確認 需求管理
需求工程程序
可行性研究 可行性研究可決定提出的系統是否有價值 它是一項短暫活動,著重於檢查下列幾個重點 此系統對組織的整體目標是否有貢獻? 此系統是否可以利用目前的技術、在有限的成本以及時程限制下製作完成? 此系統是否可以和其他現有系統做整合?
可行性研究實作 依據對資訊的評估(需要什麼)、資訊的收集以及報表的撰寫 詢問組織中的人員下列問題 若系統無法實現,組織會如何處理? 目前的程序有哪問題? 提議的系統有何幫助? 有哪些整合上的問題? 是否需要新的技術?需要哪些技能? 提議的系統必須支援哪些功能?
擷取與分析 有時候稱為需求擷取或發現需求 它包括讓技術人員與客戶一起合作找出相關的應用領域、應該提供的服務以及系統的操作限制等 還可能牽涉到終端使用者、經理人員、負責維護的工程師、領域專家或是工會等。這些都稱為「專案關係人」(stakeholders)
需求分析的問題 專案關係人不知道他們真正要什麼 專案關係人會以自己的辭彙來表示需求 不同專案關係人可能會產生互相衝突的需求 組織和政治的因素可能也會影響系統的需求 分析過程中若需求遭變更可能會出現新的專案關係人,而造成商業環境的變更
需求分析程序
程序活動 瞭解領域 (Domain understanding) 收集需求 (Requirements collection) 分類 (Classification) 解決衝突 (Conflict resolution) 排列優先順序 (Prioritisation) 檢查需求 (Requirements checking)
系統模型 在需求分析活動中可能會產生不同模型 需求分析可能牽涉到造成這些不同模型的三種結構化活動 系統模型將在第 7 章做介紹 分割(Partitioning)。識別實體之間的結構化關係(部分關係) 抽象化(Abstraction)。識別出各實體的一般化 投射(Projection)。識別出觀察問題的不同方法 系統模型將在第 7 章做介紹
觀點式擷取法 專案關係人代表觀察問題或問題觀點的不同方法 這種多重觀點的分析非常重要,因為分析系統需求時沒有唯一正確的方法
銀行 ATM 系統 此範例使用可以提供自動化銀行服務的自動櫃員機系統做說明 這裡使用非常簡化的系統,它可以向擁有此系統的銀行客戶提供幾項服務,以及提供其他銀行的客戶某些有限的服務 提供的服務包括有提取現今、傳送訊息(傳送要求某項服務的訊息)、要求對帳單以及轉帳等
自動櫃員機的觀點 銀行客戶 其他銀行的代表 硬體與軟體的維護工程師 行銷部門 銀行經理與櫃檯人員 資料庫管理師保全人員 通訊工程師 人事部門
觀點的類型 資料來源或消化處 (Data sources or sinks) 負責產生或使用資料的觀點,分析過程包括辨識產出或消耗的資料以及視資料來源與消化處為合法的假設 表示架構 (Representation frameworks) 此觀點可被視為是一種特殊的系統模型。使用單一表示方式可能會漏掉某些需求。這種觀點尤其適用於即時系統 服務接收者 (Receivers of services) 系統外部以及從系統接收到服務的觀點,大部分適用於互動式系統
外部觀點 很自然的可以將終端使用者視為系統服務的接收者 這些觀點可以很自然的構築需求的擷取 很容易決定觀點是否合理 這些觀點和服務可以用來構築非功能需求
以方法為主的分析 需求分析中廣泛運用的方法,依據某個結構化方法的應用來瞭解系統 這些方法有不同的強調處,有些是特別為需求擷取而設計,有些則與設計方法比較接近 這裡使用觀點式方法(viewpoint-oriented method, VORD)為例,它也可以用來說明觀點的使用方式
VORD 方法
VORD 程序模型 識別觀點 建構觀點 觀點文件 對應觀點與系統 找出接收系統服務的觀點,以及辨識出提供給各個觀點的特定服務 將相關的觀點組成階層架構,共通的服務放在階層架構的上層,下層觀點則繼承自上層觀點 觀點文件 修飾已辨識出的觀點和服務的描述 對應觀點與系統 將分析轉換為物件導向式的設計
VORD 標準格式 觀點範本 服務範本 文件: 觀點名稱 服務名稱 屬性: 觀點資訊的屬性 原理: 事件: 事件情境是描述系統針對觀點事件如何回應 規格: 關於服務規格 服務: 服務描述文件 觀點: 可收到的服務上的觀點名稱 子VPs: 子觀點名稱 非功能需求: 非功能需求上的限制性服務 供應者: 系統物件上可提供的服務
識別觀點
觀點服務資訊
觀點資料與控制資訊
觀點階層架構
顧客觀點和提取現金範本
情境法 (Scenarios) 情境用來描述系統實際的使用方式 這個方法有助於需求擷取,因為用這個方法比抽象敘述更容易得到系統的需求 情境法對概略的需求描述加入詳細資訊尤其有幫助
情境描述 情境開頭的系統狀態描述 情境中正常的事件流程描述 可能發生的問題以及解決方法的描述 同一時間可能發生的其他活動 情境完成後的系統狀態描述
事件情境法 事件情境法可以用來描述系統如何回應某些特殊事件,例如「開始交易」事件 VORD 使用下列幾個慣用的圖形來表示事件情境 欲提供與交付的資料 控制資訊 例快處理 下一個預期的事件
事件情境-開始交易
資料與控制分析的表示符號 由觀點提供的資料以及要交給觀點的資料以橢圓表示 進入或離開方塊的控制資訊表示在每個方塊的上方 離開此方塊的資料表示在每個方塊的右邊 例外狀況則出現在方塊的下方 預期發生的下一個事件名稱則以灰底顏色顯示在方塊中
例外狀況描述 大部分的方法都不包含描述例外狀況的工具 此例中,例外狀況有 逾時:客戶可能在限定的時間內輸入錯誤的PIN,卡片會被退回。 無效卡:無法辨識卡片,卡片也會被退回。 遺失卡:卡片被辨識出為遺失卡,機器會自動收回此卡片。
使用個案 使用個案是 UML 中以情境為主的技術,它可以識別互動中的行為者,以及描述互動本身 利用一組使用個案來描述系統中所有可能的互動 利用順序圖在使用個案中加入詳細資訊,顯示系統處理事件的順序
借書使用個案
圖書館使用個案
目錄管理順續圖
社會與組織因素 軟體系統常被用於社會和組織環境中,這些都會影響或甚至主導系統的需求 社會與組織的因素不只是單一的觀點,而是會影響到所有觀點 好的分析師必須對這些因素很敏感,但是目前並沒有有系統的方法來追蹤他們的分析
民族誌法 (Ethnography) 社會學家花許多時間來觀察與分析人們是如何工作 人們不需要解釋或清楚的說明他們的工作 可以觀察到重要的社會與組織因素 民族誌的研究指出人們的工作通常會比簡單的系統模型更多且更複雜
民族誌法 使用的範例有航管系統的研究 合併民族誌法與雛形法 雛形開發可以針對民族誌法分析出來的問題進行研究 民族誌法的問題是,它研究的一些實際工作可能包含一些毫無相關的歷程記錄
民族誌法和雛形法
民族誌法的範圍 人們實際工作時的需求,而不是指程序定義所建議的工作需求 從合作及瞭解其他人員活動所衍生的需求
需求確認 用來確定需求是否定義了顧客真正想要的系統 需求錯誤造成的成本非常高,所以確認的動作很重要 在系統交付之後修正需求錯誤的成本可能會比修護實作的錯誤高出100倍之多
需求檢查 確實性:系統提供的功能是否能夠支援客戶的需求? 一致性:是否有任何需求產生衝突? 完整性:是否包含客戶所需的所有功能? 實現性:需求是否可以在有限的預算和可用技術下實作完成? 可驗證性:需求是否可以接受檢查?
需求確認技術 需求審查 雛形法 測試案例產生法 自動化一致性分析 有系統的人為分析需求 使用可執行的系統模型來檢查需求,參見第 8 章 為需求發展測試案例以檢查其測試性 自動化一致性分析 檢查結構化需求描述的一致性
需求審查 在擬定需求定義時必須定期的進行審查 客戶和承包商的人員都應該參與審查 審查可以是正式的 (有完整的文件)或非正式的。開發者、客戶和使用者之間若有良好的溝通便可以提早解決問題
審查檢查 可驗證性(Verifiability):需求是否如敘述情形一樣能夠真的進行測試? 可瞭解性(Comprehensibility):系統的採購人員或直接使用者是否能夠適當的瞭解這些需求? 可追蹤性(Traceability):是否清楚的記錄需求來源? 可調適性(Adaptability):需求是否可調整改變,而不會造成其他系統需求太大的影響?
自動化需求一致性檢查
需求管理 需求管理是在需求工程程序及系統開發期間管理需求變更的程序 需求通常是不完整且不一致的 在程序期間,當商業需求改變或是對正在開發的系統有更好的瞭解,就會出現新的需求 不同觀點會不同的需求,而這些需求通常會產生矛盾
需求變更 不同觀點產生的需求,其優先順序在開發過程中會有所改變 系統的客戶可能會以商業的觀點來指定需求,而這些觀點可能會與終端使用者的需求產生衝突 系統的商業和技術環境在開發的過程中也會有所改變
需求演化
持久和短暫的需求 持久需求(Enduring requirements):指非常穩定的需求,來自組織的核心活動。例如,醫院通常會有醫生和護士。這些需求可能是從領域模型而來 短暫需求(Volatile requirements):系統開發期間或系統開始運作之後可能發生改變的需求。若以醫院為例,政府的健保政策可能就會有隨時改變的需求
需求分類 易變的需求 (Mutable requirements) 新出現的需求 (Emergent requirements) 因組織的營運環境改變而造成的需求改變 新出現的需求 (Emergent requirements) 顧客在系統開發期間瞭解系統的發展之後所出現的新需求 隨之發生的需求 (Consequential requirements) 引進電腦系統之後所造成的需求 相容需求 (Compatibility requirements) 根據某個特殊系統或組織中商業流程而來的需求
需求管理規劃 在需求工程程序期間,你必須規劃: 需求識別 變更管理程序 追蹤策略 支援的 CASE 工具 如何識別每一項個別的需求 分析需求變更時的程序 追蹤策略 有關需求之間的關係、且需要進行維護的大量資訊 支援的 CASE 工具 幫助管理需求變更時所需的支援工具
可追蹤資訊(Traceability) 可追蹤資訊是指需求、需求來源以及系統設計之間的關係 來源可追蹤資訊 需求可追蹤資訊 設計可追蹤資訊 將需求與提出這些需求的專案關係人做一個連結 需求可追蹤資訊 將相依的需求做連結 設計可追蹤資訊 將需求和設計做連結
可追蹤矩陣 需求代碼 1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 U R
CASE工具的支援 儲存需求 變更管理 可追蹤性管理 需求必須在一個安全的資料儲存處接受管理 變更管理的程序是一個工作流程,每一個階段都可以進行定義,而這階段之間的資訊流也可以部分自動化 可追蹤性管理 可自動擷取需求之間的連結關係
需求變更管理 應該將所有提出的變更套用至需求中 主要階段 問題分析:討論需求的問題並且提出變更 變更分析與成本預估:評估變更對其他需求的影響 變更實作:修改需求文件和其他文件,以反映變更
需求變更管理
重點整理 需求工程程序包括可行性研究、需求擷取與分析、需求規格制定、需求確認以及需求管理等 需求分析是一個反覆性的程序,包括瞭解領域、收集需求、分類、解決衝突、排列優先順序以及確認等 系統中的不同專案關係人會有不同的需求,因此所有的複雜系統都應該從各種不同觀點進行分析
重點整理 社會和組織因素對系統需求的影響甚大 需求確認是一個檢查需求確實性、一致性、完整性、實現性以及可驗證性的程序 商業的改變必然會對軟體系統的需求造成改變 需求管理包含管理的規劃與變更管理