1. 程式人生 > >需求評審五個維度框架分析及其帶來的啟示-總起

需求評審五個維度框架分析及其帶來的啟示-總起

摘要 近年來隨著CMMI、敏捷軟體開發的推進,出現了多種多樣的需求評審型別,這些型別超出了標準評審型別的範圍。根據這些情況進行分析,得到了一個新的軟體需求評審框架,這個新框架由5個維度組成:
1,組織形式;2,時機;3,側重;4,評審者;5,物件
分析了分別在傳統開發和敏捷開發下的典型需求評審情境,顯示新框架能夠適用於所有系統性的和非系統性的評審型別上。從分析中得到了15個有價值的啟示。新需求評審型別的設計和對需求評審型別的選擇可以從這個新五維需求評審框架中受益。根據啟示,得到了一個多級小瀑布生命週期模型,這個新模型可以大幅度的優化傳統瀑布生命週期模型,具備靈活的自調整自適應能力。
關鍵詞

: 需求變更; 需求評審; 需求條目化; 多級小瀑布; 需求工程

在軟體開發中,需求變更被視為導致軟體開發失敗的主要原因。早在1988年BILL CURTIS等人的研究表明:需求的衝突和變化對於生產效率和質量存在巨大影響,識別到學習、技術交流、需求協商和客戶交流是非常關鍵的過程[1]。這些過程在當時的軟體過程模型中描述得非常糟糕,而當時的軟體過程模型把重點放在瞭如何通過一系列的產物(比如需求功能規格說明,程式碼,等等)來得到軟體產品。當時的軟體過程模型對實際的軟體開發沒有提供足夠的用於指導軟體開發技術研究的洞察力,這些模型只是描述了一系列開發任務,而對以下事情沒有幫助:專案團隊成員必須要學習哪些新資訊;如何協商不一致的需求;設計團隊如何解決架構的衝突;這些因素及其它類似因素是如何影響專案本身的不確定性和風險。雖然時光過去了整整27年多,但是這一段文字在今天讀來都仍然讓人感覺汗顏。
在1988年以前,瀑布型生命週期模型(下文簡稱稱為瀑布模型)是占主導地位的生命週期模型

,從時間上可以合理的推斷[1]文中所說的當時軟體過程模型就是以瀑布模型為主。而在[1]文中提到了螺旋模型-“Boehm的螺旋模型是一種很有前途的從巨集觀層面來管理這些問題的嘗試”。螺旋模型的特徵是快速原型迭代增量進化並結合風險分析[2]。
複雜軟體系統中分析和處理可能存在不一致的需求描述,這解決得好壞直接影響到需求規格說明的質量,進而影響到最終軟體產品的質量[3]。為了在需求方面克服不一致和變更問題,需求評審成為試圖解決此類問題的第一道關口:在需求階段或需求活動時就馬上識別到需求不一致,這樣修復成本是最低的。人們對此開展了大量的研究[4][5]。但是直到最近幾年的研究,需求變更導致軟體開發延期甚至失敗仍然是困擾軟體行業多年的老大難問題[6][7][8]。
源於瀑布模型的傳統軟體需求評審發展得很全面規範[9]
,其中最突出的代表是IEEE軟體評審和審計標準Std.1028[10],最早版本是1028-1988,歷經1028-1997,當前最新版是1028-2008,最新版IEEE Std. 1028-2008對比1997版沒有本質性差異[10]。在最新版中,仍然是定義了5類評審審計,分別是管理評審(Management reviews)、技術評審(Technical reviews)、檢查(Inspections)、走查(Walk-throughs)、審計(Audits)。這些類別都是系統性的(英文原文是“systematic types of reviews and audits”),不符合此標準的其它評審型別都是非系統性的。顯然的,還有許多非系統性的評審型別,IEEE Std 1028-2008說明:“本標準無意阻止或禁止使用的非系統性評審”,“判斷一個評審或審計必要性的流程沒有定義,並且沒有說明評審或審計結果的處置”,“本標準沒有建立對於實施具體評審的需要,這些需要定義在其它軟體工程標準或本地流程中”,“本標準的使用者應說明何時何地使用本標準與及任何的故意差異”[10]。所以,IEEE Std. 1028並沒有完全解決上述問題,留出了大量的空白需要填補。而確實在實際的軟體開發中,就算是需求文件得到了正式批准,遭遇需求變更仍然是經常性的[11]。
自1991年起,軟體能力成熟度模型(Capability Maturity Model,簡稱CMM)在全世界範圍內廣泛傳播,2002年能力成熟度模型整合(Capability maturity model integration,簡稱CMMI)釋出,2006年,CMMI全面替代了CMM,至今CMMI得到全世界大範圍的使用。在CMM3/CMMI3中,同級評審(也稱同行評審或者同級互查)是其要求[12][13],隨著CMM/CMMI的推廣,同級評審也被應用到包括需求文件在內的各類工作產物中,對傳統的需求評審帶來了變化[14]。
傳統的基於文件和文件評審的方法在2001年起的敏捷運動中被視為官僚繁瑣、繁文縟節[15],而在敏捷首先著力的需求領域,IEEE Std. 1028簡直就是“罪魁禍首”。而最近十多年來,敏捷軟體開發帶來了新的變化,提出擁抱變化,不再假設軟體需求可以被凍結[16],傳統的需求評審方法在敏捷環境下已經不再奏效[17],而敏捷軟體開發確實帶來了很好的效果。敏捷軟體開發的特徵有迭代增量開發、軟體儘快可執行、短距溝通、業務方參與和快速反饋[18],簡直是針對了1988年BILL CURTIS等人所識別的問題[1]。另外也明顯可以看出敏捷軟體開發與螺旋模型存在淵源關係[19],讓人不得不感嘆BILL CURTIS等人早在25年前的先見之明。
但是敏捷軟體開發各個流派對需求管理方法各異,實際效果並不完全盡如人意,仍然存在不少爭議和模糊的地方。而以瀑布模型為核心的傳統開發方式,對於有些組織而言是雖然難以(也許也不必)轉換成敏捷短迭代開發,但也從近年來的敏捷發展中獲得了啟示,出現了新變化,就需求評審領域出現了更加高效的評審方式方法,將在下文進行說明分析。
1995年Kim, Lesley Pek Wee等人發表了《一個軟體開發技術評審的框架》[20],對當時出現的各類技術評審、審查和走查進行了分析,歸納了其框架,但顯然的此框架不可能覆蓋後續出現的新情況。而自敏捷開發在全球的推進傳播,已經有許多研究表明敏捷開發其實同樣是符合需求工程的宗旨[21],但卻沒有歸納整理傳統需求評審和新出現的需求評審(需求驗證確認類的實踐)之間的框架或者結構。

相關推薦

需求評審維度框架分析及其帶來啟示-3-典型需求評審

典型情境是指軟體開發的常見情境,本文選擇如下來進行分析: 1. 傳統瀑布模型開發下的需求評審 2. 使用IEEE Std. 1028的需求評審 3. 敏捷開發下的需求評審 傳統瀑布模型下的需求評審 對傳統瀑布模型現有需求評審的分析 傳統

需求評審維度框架分析及其帶來啟示-

摘要 近年來隨著CMMI、敏捷軟體開發的推進,出現了多種多樣的需求評審型別,這些型別超出了標準評審型別的範圍。根據這些情況進行分析,得到了一個新的軟體需求評審框架,這個新框架由5個維度組成: 1,組織形式;2,時機;3,側重;4,評審者;5,物件 分析了分別

如何拉動內需,擊中客戶深層需求,4經典案例分析

推銷員 機器 介紹 維生素 電話銷售 -s 綜合 就會 沒有 (第三個醫患案例僅作為啟發,不倡導醫生為之,在此聲明) 導讀:客戶的需求往往是多方面的、不確定的,需要去分析和引導。客戶的需求是指通過買賣雙方的長期溝通,對客戶購買產品的欲望、用途、功能、款

貪心演算法的經典問題分析和實現

問題1:活動安排問題 問題描述: 現在給你一個會場,有許社團需要在這個會場上活動, 已知各個社團在這個會場上活動的時間(起始時間和終止時間) 要求出來怎麼安排 能夠使得這個教室z在這一天之內接待儘可能多的社團  解題思路與演算法思想 已經知道

大資料學習:帶你從多維度分析大資料發展趨勢

如今“大資料”已不再是單純描述資料特徵的詞彙,而是一個多學科交融的熱點研究領域,其背後有著複雜和深刻的新理念。 今天我們帶大家從“技術、工程、科學和應用”這四個維度分析大資料的研究現狀與挑戰,探討未來研究的側重點和發展趨勢。 推薦下小編的大資料學習群;前面是251中間是956後面是502,不管

Instrumentation框架分析及其使用

本文旨在從Android系統原始碼出發,簡單梳理Instrumentation框架的行為及邏輯結構,供有興趣的同學一起學習 從am instrument談起 am instrument命令的執行 我們知道,命令列執行Android測試的命令是a

維度來談談視覺設計師如何闡述設計風格

設計風格是一種很虛的東西,對於大部分的 UI 設計師來說,都是如此。 相信很多人都是在一家小型的網際網路公司做設計,估計還是公司唯一的設計師,同時對設計風格又拿捏不定,總感覺是跟著產品經理或老闆的思路去做設計。比如老闆的要求是“大氣”,誰 TM 知道這“大氣”指的

晶片驗證全視之三: 驗證能力的維度

可能在貫穿到整個驗證系統思想裡面,我們都會不斷重複驗證人員該具備的素質。為了可以將抽象的詞彙具象出來,我們列出了驗證人員在驗證流程中需要具備的五個技術維度。接下來讓我分別解釋這五個維度: 完備性:該維度要求驗證的充分。無論你從專案經理、系統人員、設計人員

MySQL基礎篇(02):從維度出發,審視表結構設計

本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、資料場景 1、表結構簡介 任何工具類的東西都是為了解決某個場景下的問題,比如Redis快取系統熱點資料,ClickHouse解決海量資料的實時分析,MySQL關係型資料庫儲存結構化資料。資料的儲存則需要設計對應的表結構,清楚的表結構,有助於快

MySQL進階篇(01):基於多維度分析伺服器效能

本文原始碼:[GitHub·點這裡](https://github.com/cicadasmile/mysql-data-base) || [GitEE·點這裡](https://gitee.com/cicadasmile/mysql-data-base) # 一、伺服器效能簡介 ## 1、效能定義

根據NABCD原則完成的案例項目需求分析及其創新方法

同時 鋼琴 人類 項目需求 vivo 速度 面向 技術 上架 《well》 Need:在當下的知識經濟時代,社會效率在提升,社會競爭強度也在增大,現代社會對人的素質提出了更高的要求,這導致了越來越多的人心理壓力增大。well產品就是為了緩解人們心理壓力而開發的產品。首先人們

初學者想學數據分析,這Python庫,簡直就是為初學者量身定制

方便 代數 應用 最好 編寫 ack mage ipy 後端 如果你已經決定把Python作為你的編程語言,那麽,你腦海中的下一個問題會是:"進行數據分析有哪些Python庫可用?" Numpy 對於科學計算,它是Python創建的所有更高層工具的基礎。以下

使用Spark進行搜狗日誌分析實例——列出搜索不同關鍵詞超過10的用戶及其搜索的關鍵詞

log collect pre form 用戶 path space img ack 1 package sogolog 2 3 import org.apache.hadoop.io.{LongWritable, Text} 4 import org.apac

最主流的大資料處理框架的優勢對比

我深入分析了五個大資料處理框架:Hadoop,Spark,Flink,Storm,Samaza Hadoop 頂尖的框架之一,大資料的代名詞。Hadoop,MapReduce,以及其生態系統和相關的技術,比如Pig,Hive,Flume,HDFS等。Hadoop是第一個,在工業

如何構建滿足使用者需求的雲環境的步驟

無論你如何定義,雲就是你的使用者展現其在組織中的價值的另一個工具。當談論新的範例或者技術(雲是兩者兼有)的時候很容易被它的新特性所分心。由一系列無止境的問題引發的對話能夠很快的被髮展為功能願景清單,所有下面的這些都是你可能已經考慮到的: 是公有云、私有云還是混合雲? 會使用虛擬機器還是容器,或者是

Django框架擴充套件類的使用方法

1)ListModelMixin 列表檢視擴充套件類,提供list(request, *args, **kwargs)方法快速實現列表檢視,返回200狀態碼。 該Mixin的list方法會對資料進行過濾和分頁。 from rest_framework impor

面向物件分析的三模型和層次

在面向物件分析中,主要由物件模型、動態模型和功能模型組成。物件模型是最基本、最重要、最核心的。   用面向物件方法開發軟體,通常需要建立3種形式的模型,它們分別是描述系統資料結構的物件模型,描述系統控制結構的動態模型和描述系統功能的功能模型。一個典型的軟體系統使用資料結構(物件模型),執行操作(

JAVA小白系列之第分支:LinkedList容器深入分析

上一節我們瀏覽了ArrayList容器,來總結一下? 儲存資料的為一個名叫做elementData的陣列預設容量為10 擴容大小為原容量的一半即originSize+originSize>>2的大小 擴容方式為建立新的陣列並且通過陣列的複製來完成擴容 刪除

Linux的查詢命令:find,locate,whereis,which,type 及其區別【轉】

1. find find是最常見和最強大的查詢命令,你可以用它找到任何你想找的檔案。 find的使用格式如下:   $ find <指定目錄> <指定條件> <指定動作>   - <指定目錄>: 所要搜尋的目錄及其所

SEO的戰略要從這個幾維度去細緻分析

一個SEO從業者請新增連結描述如果在技術上犯錯,結局是網站被KO;如果在戰略上犯錯,結局是自己被KO,被KO的原因,往往不在技術層面,而在戰略層面。在戰略層面,我們經常給自己挖了一個又一個巨坑,然後把自己給埋了。常見的坑有以下三個:1.這個網站能提升UV/天!2.我們一年時間趕超競爭對手!3.老闆說:別人的S