需求工程程序蔡進義Chin-YiTsai(Matt)cyt@pmlab.iecs.fcu.edu.tw~cyt2Review功能性需求非功能性需求領域需求使用者需求系統需求軟體需求文件3Review4Review需求的完整性與一致性•完整它們應該包含所有需求功能的描述•一致系統功能描述中不應該有衝突或矛盾的地方5Review需求產生衝突•太空船系統為了減輕重量,系統使用的晶片數量必須減少為了減少電力的消耗,必須使用低電力的晶片然而,若使用低電力的晶片可能需要更多的晶片數量。這時候,哪一個需求是最重要的需求?6需求工程程序發現、分析以及確認系統需求的程序7本章目的•描述一些主要的需求工程活動•介紹數種需求擷取與分析的技術•描述需求確認的重要性•討論需求管理的角色以及如何支援需求工程的其他活動8本章內容•可行性研究•需求擷取與分析•需求確認•需求管理9需求工程程序•RE使用的程序會根據應用領域、參與人員以及發展需求的組織有很大的差異•然而,下列幾項通用活動則是所有程序共通的需求擷取需求分析需求確認需求管理10需求工程程序11可行性研究•可行性研究可決定提出的系統是否有價值•它是一項短暫活動,著重於檢查下列幾個重點此系統對組織的整體目標是否有貢獻?此系統是否可以利用目前的技術、在有限的成本以及時程限制下製作完成?此系統是否可以和其他現有系統做整合?12可行性研究實作•依據對資訊的評估(需要什麼)、資訊的收集以及報表的撰寫•詢問組織中的人員下列問題若系統無法實現,組織會如何處理?目前的程序有哪問題?提議的系統有何幫助?有哪些整合上的問題?是否需要新的技術?需要哪些技能?提議的系統必須支援哪些功能?13擷取與分析•有時候稱為需求擷取或發現需求•它包括讓技術人員與客戶一起合作找出相關的應用領域、應該提供的服務以及系統的操作限制等•還可能牽涉到終端使用者、經理人員、負責維護的工程師、領域專家或是工會等。這些都稱為「專案關係人」(stakeholders)14•專案關係人不知道他們真正要什麼•專案關係人會以自己的辭彙來表示需求•不同專案關係人可能會產生互相衝突的需求•組織和政治的因素可能也會影響系統的需求•分析過程中若需求遭變更可能會出現新的專案關係人,而造成商業環境的變更需求分析的問題15需求分析程序16程序活動•瞭解領域(Domainunderstanding)•收集需求(Requirementscollection)•分類(Classification)•解決衝突(Conflictresolution)•排列優先順序(Prioritisation)•檢查需求(Requirementschecking)17系統模型•在需求分析活動中可能會產生不同模型•需求分析可能牽涉到造成這些不同模型的三種結構化活動分割(Partitioning)。識別實體之間的結構化關係(部分關係)抽象化(Abstraction)。識別出各實體的一般化投射(Projection)。識別出觀察問題的不同方法18觀點式擷取法•專案關係人代表觀察問題或問題觀點的不同方法•這種多重觀點的分析非常重要,因為分析系統需求時沒有唯一正確的方法19銀行ATM系統•此範例使用可以提供自動化銀行服務的自動櫃員機系統做說明•這裡使用非常簡化的系統,它可以向擁有此系統的銀行客戶提供幾項服務,以及提供其他銀行的客戶某些有限的服務•提供的服務包括有提取現今、傳送訊息(傳送要求某項服務的訊息)、要求對帳單以及轉帳等20自動櫃員機的觀點•銀行客戶•其他銀行的代表•硬體與軟體的維護工程師•行銷部門•銀行經理與櫃檯人員•資料庫管理師保全人員•通訊工程師•人事部門21觀點的類型•資料來源或消化處(Datasourcesorsinks)負責產生或使用資料的觀點,分析過程包括辨識產出或消耗的資料以及視資料來源與消化處為合法的假設•表示架構(Representationframeworks)此觀點可被視為是一種特殊的系統模型。使用單一表示方式可能會漏掉某些需求。這種觀點尤其適用於即時系統•服務接收者(Receiversofservices)系統外部以及從系統接收到服務的觀點,大部分適用於互動式系統22外部觀點•很自然的可以將終端使用者視為系統服務的接收者•這些觀點可以很自然的構築需求的擷取•很容易決定觀點是否合理•這些觀點和服務可以用來構築非功能需求23以方法為主的分析•需求分析中廣泛運用的方法,依據某個結構化方法的應用來瞭解系統•這些方法有不同的強調處,有些是特別為需求擷取而設計,有些則與設計方法比較接近•這裡使用觀點式方法(viewpoint-orientedmethod,VORD)為例,它也可以用來說明觀點的使用方式24VORD方法25VORD程序模型•識別觀點找出接收系統服務的觀點,以及辨識出提供給各個觀點的特定服務•建構觀點將相關的觀點組成階層架構,共通的服務放在階層架構的上層,下層觀點則繼承自上層觀點•觀點文件修飾已辨識出的觀點和服務的描述•對應觀點與系統將分析轉換為物件導向式的設計26VORD標準格式觀點範本服務範本文件:觀點名稱文件:服務名稱屬性:觀點資訊的屬性原理:觀點資訊的屬性事件:事件情境是描述系統針對觀點事件如何回應規格:關於服務規格服務:服務描述文件觀點:可收到的服務上的觀點名稱子VPs:子觀點名稱非功能需求:非功能需求上的限制性服務供應者:系統物件上可提供的服務27識別觀點QuerybalanceGettransactionsCashwithdrawalTransactionlogMachinesuppliesCardreturningRemotesoftwareupgradeOrderchequesUserinterfaceAccountinformationMessagelogSoftwaresizeInvaliduserSystemcostPrinterSecurityCardretentionStolencardOrderstatementRemotediagnosticsReliabilityUpdateaccountFundstransferMessagepassingCardvalidationCustomerdatabaseManagerAccountholderForeigncustomerHardwaremaintenanceBankteller28觀點服務資訊29觀點資料與控制資訊30觀點階層架構31顧客觀點和提取現金範本32情境法(Scenarios)•情境用來描述系統實際的使用方式•這個方法有助於需求擷取,因為用這個方法比抽象敘述更容易得到系統的需求•情境法對概略的需求描述加入詳細資訊尤其有幫助33情境描述•情境開頭的系統狀態描述•情境中正常的事件流程描述•可能發生的問題以及解決方法的描述•同一時間可能發生的其他活動•情境完成後的系統狀態描述34事件情境法•事件情境法可以用來描述系統如何回應某些特殊事件,例如「開始交易」事件•VORD使用下列幾個慣用的圖形來表示事件情境欲提供與交付的資料控制資訊例快處理下一個預期的事件35事件情境-開始交易36資料與控制分析的表示符號•由觀點提供的資料以及要交給觀點的資料以橢圓表示•進入或離開方塊的控制資訊表示在每個方塊的上方•離開此方塊的資料表示在每個方塊的右邊•例外狀況則出現在方塊的下方•預期發生的下一個事件名稱則以灰底顏色顯示在方塊中37例外狀況描述•大部分的方法都不包含描述例外狀況的工具•此例中,例外狀況有逾時:客戶可能在限定的時間內輸入錯誤的PIN,卡片會被退回。無效卡:無法辨識卡片,卡片也會被退回。遺失卡:卡片被辨識出為遺失卡,機器會自動收回此卡片。38使用個案•使用個案是UML中以情境為主的技術,它可以識別互動中的行為者,以及描述互動本身•利用一組使用個案來描述系統中所有可能的互動•利用順序圖在使用個案中加入詳細資訊,顯示系統處理事件的順序39借書使用個案40圖書館使用個案41目錄管理順續圖42社會與組織因素•軟體系統常被用於社會和組織環境中,這些都會影響或甚至主導系統的需求•社會與組織的因素不只是單一的觀點,而是會影響到所有觀點•好的分析師必須對這些因素很敏感,但是目前並沒有有系統的方法來追蹤他們的分析43民族誌法(Ethnography)•社會學家花許多時間來觀察與分析人們是如何工作•人們不需要解釋或清楚的說明他們的工作•可以觀察到重要的社會與組織因素•民族誌的研究指出人們的工作通常會比簡單的系統模型更多且更複雜44民族誌法•使用的範例有航管系統的研究•合併民族誌法與雛形法•雛形開發可以針對民族誌法分析出來的問題進行研究•民族誌法的問題是,它研究的一些實際工作可能包含一些毫無相關的歷程記錄45民族誌法和雛形法46民族誌法的範圍•人們實際工作時的需求,而不是指程序定義所建議的工作需求•從合作及瞭解其他人員活動所衍生的需求47需求確認•用來確定需求是否定義了顧客真正想要的系統•需求錯誤造成的成本非常高,所以確認的動作很重要在系統交付之後修正需求錯誤的成本可能會比修護實作的錯誤高出100倍之多48需求檢查•確實性:系統提供的功能是否能夠支援客戶的需求?•一致性:是否有任何需求產生衝突?•完整性:是否包含客戶所需的所有功能?•實現性:需求是否可以在有限的預算和可用技術下實作完成?•可驗證性:需求是否可以接受檢查?49需求確認技術•需求審查有系統的人為分析需求•雛形法使用可執行的系統模型來檢查需求,參見第8章•測試案例產生法為需求發展測試案例以檢查其測試性•自動化一致性分析檢查結構化需求描述的一致性50需求審查•在擬定需求定義時必須定期的進行審查•客戶和承包商的人員都應該參與審查•審查可以是正式的(有完整的文件)或非正式的。開發者、客戶和使用者之間若有良好的溝通便可以提早解決問題51審查檢查•可驗證性(Verifiability):需求是否如敘述情形一樣能夠真的進行測試?•可瞭解性(Comprehensibility):系統的採購人員或直接使用者是否能夠適當的瞭解這些需求?•可追蹤性(Traceability):是否清楚的記錄需求來源?•可調適性(Adaptability):需求是否可調整改變,而不會造成其他系統需求太大的影響?52自動化需求一致性檢查53需求管理•需求管理是在需求工程程序及系統開發期間管理需求變更的程序•需求通常是不完整且不一致的在程序期間,當商業需求改變或是對正在開發的系統有更好的瞭解,就會出現新的需求不同觀點會不同的需求,而這些需求通常會產生矛盾54需求變更•不同觀點產生的需求,其優先順序在開發過程中會有所改變•系統的客戶可能會以商業的觀點來指定需求,而這些觀點可能會與終端使用者的需求產生衝突•系統的商業和技術環境在開發的過程中也會有所改變55需求演化56持久和短暫的需求•持久需求(Enduringrequirements):指非常穩定的需求,來自組織的核心活動。例如,醫院通常會有醫生和護士。這些需求可能是從領域模型而來•短暫需求(Volatilerequirements):系統開發期間或系統開始運作之後可能發生改變的需求。若以醫院為例,政府的健保政策可能就會有隨時改變的需求57需求分類•易變的需求(Mutablerequirements)因組織的營運環境改變而造成的需求改變•新出現的需求(Emergentrequirements)顧客在系統開發期間瞭解系統的發展之後所出現的新需求•隨之發生的需求(Consequentialrequirements)引進電腦系統之後所造成的需求•相容需求(Compatibilityrequirements)根據某個特殊系統或組織中商業流程而來的需求58需求管理規劃•在需求工程程序期間,你必須規劃:需求識別如何識別每一項個別的需求變更管理程序分析需求變更時的程序追蹤策略有關需求之間的關係、且需要進行維護