書本介紹
軟體需求十步走——新一代軟體需求工程實踐指南
新一代軟體需求工程的表現為工作階段劃分、需求獲取方式、關係定位和指導思想不同。需求規劃是新一代需求工程中的最大亮點,它的工作是將業務、對象和信息化體系作為研究對象,採用科學研究、體系架構設計、信息資源規劃的方法,編制出具有系統性、科學性、前瞻性的需求規劃成果。需求規劃的成果中包括形勢分析、業務體系分析、對象體系分析等內容。它為需求開發中的需求獲取奠定了堅實的基礎。需求規劃工作的原則是“業務定性、定量、定細節,系統定性、定量、定巨觀”。本書由原理篇、知識篇、方法篇、套用篇、組織篇等構成。
書本目錄
第1篇原理篇
第1章對軟體需求的反思 2第2章重新解讀軟體需求 17
第3章軟體需求工程概論 26
第4章需求工程的過程改進 62
第5章軟體需求的風險管理 82
第6章軟體工程與需求工程 104
第2篇知識篇
第7章知識體系的構建方法 130第8章需求工程的知識構成 136
第9章需求工程的基礎知識 140
第10章需求工程的專有知識 199
第11章需求工程的特有知識 231
第3篇方法篇
第12章需求工程的方法觀 264第13章分析計算方法 267
第14章結構化分析方法 284
第15章面向對象分析方法 294
第16章需求統一模式方法 305
第17章需求管理工具 316
第18章需求形式化描述方法 320
第19章面向問題域的需求分析方法 323
第4篇規劃篇
第20章需求規劃的思路和過程 332第21章業務研究 335
第22章套用建模 382
第23章系統規劃 420
第24章分析計算 427
第25章報告編制 453
第26章規劃評審 461
第5篇開發篇
第27章需求開發的思路和過程 470第28章需求獲取 473
第29章需求分析 514
第30章需求編寫 549
第31章需求驗證 563
第6篇管理篇
第32章需求管理的思路 578第33章需求版本控制 586
第34章管理變更請求 588
第35章需求跟蹤能力 604
第7篇組織篇
第36章建立需求分析體系 614第37章需求分析部門的組織結構 624
第38章需求分析部門的管理工作 629
第39章需求分析部門的業務工作 635
作者簡介
楊巨龍,筆名老莊,畢業於中國人民解放軍信息工程大學。20多年來一直在金融、高校、政府、軍隊等行業和領域從事軟體設計、開發和管理方面的工作,曾擔任過多家IT公司的技術總監和總架構師。2009至2010年在清華大學網路行為研究所從事信息諮詢規劃方面的學習和研究,期間曾承擔過多個國家部委的“十二五”信息化規劃報告的編制工作。現為自由職業者,專注於為IT企業或IT人員提供包括軟體編碼哲學、軟體需求分析方法論、大型系統體系架構設計、信息資源規劃、大數據和雲計算技術等的諮詢、培訓、培養服務。書本試讀
序
軟體需求是軟體項目和產品開發的起點,更是用戶和開發團隊之間溝通的基礎。經典的瀑布模型確定了需求獲取和確認的起始地位,現代軟體的多變、持續演化帶來了需求管理的要求。可以說,軟體需求的獲取、規約、驗證和管理在軟體開發中占有舉足輕重的關鍵位置,軟體需求工程也早已成為軟體工程中一門獨立關鍵的研究學科。理論上說,獲取的需求足夠完整、正確,特別是形式化可驗證的情況下,採用程式變換、模型變換等技術可以開發出高質量的軟體。但如此確定的需求實際上很難獲得。工程化的方法仍然是現實解決軟體需求問題的主要方法。這也就意味著需求工程的研究必須與現實的開發現狀結合起來,考慮需求相關的方方面面。
軟體需求工程的研究和相關書籍、學術文章不少。這本書出自在軟體開發一線長期實踐的開發人員之手,更多地是從實踐中整理、組織出的經驗方法,結合了傳統學術、工程方法,也形成了一個較全方位的需求工程的介紹。其中,我們比較欣賞它專門強調的業務知識驅動。實際的需求獲取中,緊密結合軟體套用方,充分理解套用領域知識才可能獲得有效準確的需求。
前言
需求從客戶那裡來,軟體需求到開發人員那裡去,最終客戶和軟體開發組織共同拿著軟體需求對軟體產品進行驗收,所以軟體需求是面向客戶方和軟體開發方,將雙方的訴求進行有機結合,最終形成雙方持有的一個契約。將雙方的訴求進行有機結合正是需求分析人員要做的事,這個事被稱為軟體需求分析。有
軟體需求分析中的“分析”一詞是一個集合辭彙,是將邏輯方法中的定義、劃分、歸納、演繹、推理、假設、論證等統統納入其中的。作者認為要想做好分析工作首先要對這些邏輯方法很清楚,要學會綜合使用。分析的對象有兩個:客戶的需求和軟體構成的要素,分析的目的是能夠使客戶的需求和軟體的要素建立匹配關係。
簡單點說,要做好軟體需求分析工作就是“一法兩點”,“一法”是說要掌握邏輯方法,“兩點”是說要懂客戶業務知識和軟體知識。
一個具有“完整性、準確性、無二義、變化可控”等特徵的軟體需求只有藉助邏輯方法才能做到。“軟體需求十步走”是筆者多年從事軟體需求分析工作經驗的總結,每一步都有分析、綜合、歸納、演繹等邏輯方法的運用。其實邏輯方法並不難,只要有心留意、用心體會,你會發現你在工作中大量運用邏輯方法,它並不是一個神秘的東西。
本書的關鍵點:軟體需求十步走
新一代軟體需求工程由需求規劃、需求開發、需求管理三個分項工程構成,這三個分項工程圍繞軟體需求的活動可以劃分為軟體需求的業務活動和軟體需求的管理活動兩類。軟體需求的業務活動由需求規劃的業務研究、套用建模、系統規劃、分析計算、報告編制、規劃評審6項業務活動和需求開發的需求獲取、需求分析、需求編制、需求驗證4項業務活動,總計10項業務活動構成;軟體需求的管理活動由需求管理的基線、版本、狀態、變更、跟蹤5項管理活動構成。業務需求是需求規劃的業務活動的產物,用戶需求和系統需求是需求開發業務活動的產物,業務需求、用戶需求、系統需求三個部分構成了軟體需求。需求管理活動貫穿所有的需求業務活動,確保軟體需求的進度、質量和成本。新一代軟體需求工程的業務活動和管理活動的時序過程如下圖所示,這是本書的關鍵點。
簡單的說,新一代軟體需求工程的軟體需求工作的特點是“兩階段、十步走”。通過“兩階段、十步走”讀者就可以得到由業務需求、用戶需求和系統需求組成的高質量的軟體需求。
本書的新觀點:創新方能解決問題
當前軟體需求和軟體需求工程有7個主要問題需要解決,而這7個主要問題本書都提出了相應的應對之策和解決方法。
(1)難點問題:軟體需求的不完整、不準確、變化不可控、一致性等難點問題是導致軟體項目失敗的主要原因之一,人們也花了大量時間和精力力圖來解決,比如將軟體需求分析從軟體工程中剝離出來採用工程化的方法來提高軟體需求質量,再比如採用UML工具來實現軟體需求到軟體設計的自動化轉化,但軟體需求這幾個問題還是沒有得到根本性的解決。本書認為解決這一問題需要以業務為核心,從業務需求開始,面向業務的問題和目標,借用形式邏輯方法中的演繹、推理、假設、論證等方法得到一個邏輯上完整、準確、一致、對變化已做了假設的業務需求,基於這樣的業務需求再採用各種軟體需求分析方法才能從根本上解決軟體需求的這一難點問題。
(2)性能問題:能用、好用、耐用是軟體產品必須具備的特性,在軟體需求中能用是歸為功能需求範疇,而好用、耐用等歸為非功能需求的質量屬性範疇中,也即人們通常說的性能指標。這些指標是後期軟體系統體系架構、實現技術、設備選型設計時的主要依據,性能指標不準確一方面會造成客戶成本預算不合理進而導致設備資源浪費,另一方面會帶來軟體產品的“性能噩夢”。長期以來對於性能基本都採用的是一種粗放式的經驗估值法,這種方法往往會帶來為解決性能問題所消耗的資源遠遠大於程式設計和代碼開發的資源消耗。為解決性能問題,本書提出將性能設計放在需求規劃階段並且進行定性定量計算的觀點,同時還給出了一個基於模型的定量計算方法。
(3)範疇問題:業務需求是客戶提出的,軟體需求是將客戶的業務需求作為前置條件,軟體需求產生的第一個文檔是基於客戶的業務需求整理出項目的視圖與範圍文檔。業務需求不是軟體需求工作範疇中的。筆者認為這種工作邊界的劃分也是軟體需求出現問題的原因之一,所以本書將業務需求納入到軟體需求工作範疇中,並明確提出了業務需求是軟體需求的第一性觀點。需求規劃的工作任務之一正是業務需求,需求規劃以科學研究方法論作為理論指導,採用文獻研究法通過對客戶已有的工作成果進行研究來分析客戶的業務需求。通過需求規劃的業務研究力求實現“不是客戶告訴需求分析人員業務需求,而是需求分析人員要向客戶講述業務需求”的目標。
(4)鴻溝問題:業務和軟體之間的鴻溝問題。業務和軟體是兩個不同的領域這是事實,但這兩個領域在抽象層面是相同的卻一直沒有被明確指出,導致很多需求分析人員一直處於迷茫中。客戶和需求分析人員採用原型法、用例圖、自然語言等方式在業務和軟體之間架起橋樑,這些方法只可治標不能治本。本書明確提出了業務和軟體是同一個抽象在兩個不同領域的實現即一體兩面的觀點,並基於這一觀點提出了在業務抽象層面用歸納和演繹的方法得到完整的、準確的業務邏輯,然後將其映射到軟體抽象層面得到完整的、準確的軟體邏輯的映射方法,通過這一方法力求解決業務和軟體之間的鴻溝問題。
(5)關係問題:需求工程和軟體工程的關係問題是需求工程的核心問題。這兩個問題一直沒有給出清晰的界定和說明。給人感覺需求工程是雞肋,因為用需求工程方法做的軟體需求並未比原有方法做的軟體有什麼質的不同。本書對需求工程和軟體工程之間的關係定位是“需求工程是圓心,客戶業務是核心,軟體工程是圓點”並對這一關係進行了相應的闡述。本書所講的新一代軟體需求工程是在繼承當前的軟體需求工程基礎上引入需求規劃這一概念,並且明確了需求規劃是需求工程的核心。
(6)觀念問題:軟體需求分析的觀念遠遠滯後於時代發展的問題。隨著社會的進步和軟體技術的不斷發展,業務和信息的融合速度越來越快,所以當前任何一個軟體系統都必須是開放、一體化的。而當前的軟體需求觀念還是以軟體系統自身為中心,通過接口的形式來體現其開放性,而在一體化方面尚沒有任何動作。本書提出在新形勢下的軟體需求分析工作是在面向“全系統、全業務、全信息”的,包括客戶業務全局分析和信息系統的巨觀設計的規劃基礎上展開的用戶需求和系統需求分析,從而使基於這樣的軟體需求開發出的軟體產品具備加以一體化的特性。
(7)地位問題:需求分析部門在組織中的地位問題。大部分IT企業或IT管理部門普遍存在“輕業務、重技術、輕需求、重編碼”的現象,究其原因大家認為軟體開發是技術驅動而非業務驅動,這種認知也直接導致需求分析工作在組織中的地位遠遠低於軟體開發工作,在組織形態中也就沒有固定的、獨立的、與軟體開發組織並列的需求分析組織。由於需求分析重視程度不夠,從而導致軟體項目或產品的質量低,直接造成了很多項目型軟體企業在經營上步履維艱。作者在本書中依據軟體需求工程理論結合多年來的管理經驗站在IT企業角度給出了企業如何建立軟體需求分析體系的辦法。希望通過這個體系使IT企業由“重技術、輕業務”實現向“重技術、重業務”的轉型,IT企業主動通過業務研究找到存在的問題然後利用手中的技術加以解決,通過技術實現客戶的業務創新,這樣可以使IT企業不僅成為客戶的手,而且成為客戶的腦。
本書的內容點:原理套用、組織保障
本書是按照原理、套用、組織、前沿這樣一個順序進行新一代軟體需求工程的描述。原理部分的描述是由需求工程原理篇和需求工程知識篇兩個部分構成,通過原理部分的內容讀者可以了解到新一代軟體需求工程有別於傳統軟體需求工程的構成、過程、特點、價值及知識,建議讀者仔細閱讀一下需求工程知識篇,將會對你未來從事其他工作時也有一定的幫助。套用部分的描述是由需求方法篇、需求規劃篇、需求開發篇、需求管理篇4部分構成,其中方法篇是把規劃、開發、管理中要用到的方法進行了集中描述,這樣的布局主要是為了在規劃、開發、管理描述時可以更專注於其套用過程的描述。組織部分描述了組織應如何建立需求分析體系。需求工程前沿篇主要介紹了需求工程領域的最新研究成果多視點需求工程。
新一代軟體需求工程過程是由需求規劃、需求開發的業務活動構成的業務過程和需求管理的管理活動的管理過程構成的。需求規劃的業務活動特點是“業務定性定量定細節、系統定性定量定巨觀”;需求開發的業務活動特點是“操作定性定量定細節、功能定性定量定細節、性能定性定量定細節、接口是定性定量定巨觀”;需求管理的管理活動特點是“三控、五管、兩協調”。
書本慨括
本書一共分為7篇、39章。需求工程原理篇
第1章對軟體需求的反思 軟體需求已經成為軟體開發工作中的“阿喀琉斯之踵”,要使軟體需求做到完整、準確、清晰、變化可控等絕不是一個簡單的事,需要重新定位軟體需求並藉助邏輯的方法才是解決之道
第2章
重新解讀軟體需求 新一代軟體需求強調軟體需求分析工作是在一個全息的業務背景和一個信息系統的巨觀設計的基礎上展開的用戶需求和系統需求分析
第3章
軟體需求工程概論 新一代軟體需求工程是由需求規劃、需求開發、需求管理三個部分構成,需求規劃是傳統軟體需求工程所沒有的
第4章
軟體需求的過程改進 需求工程的過程不是一成不變的,會隨著新的理論、實踐中的總結、軟體開發技術、軟體項目規模等要求需要對過程進行適應性改造
第5章
軟體需求的風險管理 把軟體需求風險始終放在第一位,記住凡事預則立、不預則廢。軟體需求的風險就是讓把軟體需求中的關鍵點提取出來加以重點關注
第6章
軟體工程與需求工程 “需求工程是圓心,客戶業務是核心,軟體工程是圓點”是需求工程和軟體工程間關係的真實寫照
需求工程知識篇
第7章知識體系的構建方法 事物的知識是由知的知識和識的知識構成。識的知識是以知的知識為核心的
第8章
需求工程的知識構成 需求工程的知識體系是由基礎知識體系、專用知識體系、特有知識體系三個部分構成
第9章
需求工程的基礎知識 形式邏輯中演繹、推理、假設、論證等方法對於解決軟體需求中“不完整、不準確、總在變、不一致”問題具有幫助
第10章
需求工程的專有知識 需求工程的專有知識包括軟體工程、軟體體系架構和信息資源規劃
第11章
需求工程的特有知識 需求規劃是新一代軟體需求工程有別於傳統的軟體需求工程,需求規劃就是想從“業務全局、系統全局、信息全局”的高度來做需求分析工作
需求工程方法篇
第12章需求工程的方法觀 方法的使命就是要將問題的結構和規律展現出來
第13章
分析計算方法 分析計算是需求規劃方法與傳統需求分析方法有本質區別的地方之一。分析計算包括系統支撐能力計算和業務發展能力計算
第14章
結構化分析方法 結構化的分析(又稱SA)方法是本書在需求規劃中的業務建模、系統建模和體系建模所採用的方法
第15章
面向對象分析方法 在需求分析中本書採用面向對象的分析方法作為用例分析和功能需求分析的方法
第16章
需求統一模式方法 需求統一模式方法和軟體設計模式的思想一樣的,也是將大部分軟體系統的需求進行歸類描述的一種模式
第17章
需求管理工具 藉助需求管理工具可以做到文檔與現實的一致、跟蹤每個需求的狀態、建立與軟體開發活動的關係鏈等
第18章
需求形式化描述方法 形式化需求規格說明(簡稱形式化規格說明)意味著用嚴格的數學知識和符號來構建系統的需求模型,使需求模型更加嚴密、無二義性和易於推理
第19章
面向問題域的需求分析方法 面向問題域(PD)的需求分析方法是一種新的需求分析方法。與結構化需求分析方法和面向對象的需求分析方法相比,其需求建模風格明顯不同
需求工程規劃篇
第20章需求規劃的思路和過程 需求規劃工作是面向“全業務、全信息、全系統”,採用分析綜合、歸納演繹的邏輯方法整理出組織與對象的業務邏輯模型,在此業務的邏輯模型基礎上進行系統的規劃
第21章
業務研究 業務研究就是借鑑科學研究方法通過資料研究、現場調研還原一個完整的、準確的、邏輯的業務面貌
第22章
套用建模 套用建模的內容包括業務建模、系統建模、體系建模
第23章
系統規劃 系統規劃是根據業務研究中組織結構、業務事項、業務數據的規模和用戶對業務目標的期望,並結合套用建模的成果對支撐這種規模和套用所需的信息系統構成內容的一種規劃
第24章
分析計算 分析計算包括系統支撐能力計算和業務發展能力計算
第25章
報告編制 需求規劃報告不僅是需求開發工作的基礎,也將是軟體開發工作的指導性檔案,還是下一次信息化建設的基礎
第26章
規劃評審 規劃評審是檢查需求規劃報告的一項工作,是對需求規劃階段工作成果一次完整性、準確性、合理性、規範性的檢查
需求工程開發篇
第27章需求開發的思路和過程 需求開發工作是“以技術為核心、以業務為輔助”作為指導思想,以要說清楚軟體系統“做什麼”的軟體需求規格說明為目標
第28章
需求獲取 這裡的需求獲取和傳統需求工程中需求獲取最大的不同,一是無須與客戶進行面對面的交流來獲取需求,二是只需將需求規劃的工作成果作為需求獲取的第一來源
第29章
需求分析 需求分析工作分為分析和綜合兩部分工作。分析工作在於找出需求信息間內在的聯繫和可能的矛盾,而綜合工作就是去掉這些矛盾來建立軟體系統的功能、數據的邏輯模型
第30章
需求編寫 軟體需求的規劃說明是由業務需求、用戶需求和系統需求構成。而這些需求都在過程文檔中,如果將這些文檔看做一粒粒珍珠的話,那我們需要一根線將其穿成一個珍珠項鍊,穿起珍珠的這根線就是軟體需求規格說明
第31章
需求驗證 需求驗證嚴格來說是檢驗軟體需求規格說明,這是需求開發的最後一項活動,是對前期或階段工作成果的一次完整的檢查
需求工程管理篇
第32章需求管理的思路 需求工程的需求業務活動由需求規劃中的6個業務活動和需求開發的4個業務活動總計10項業務活動組成,構成了需求工程的業務主線。需求工程的需求管理活動的目標就是確保需求業務活動能夠按進度要求、質量要求、成本要求生產出高質量的軟體需求
第33章
需求版本控制 軟體需求基線是由各階段需求業務活動的工作成果文檔和文檔內各部分內容的版本號的集成。軟體需求基線工作的落實藉助這些工作成果文檔和文檔內部分內容版本號來實現的
第34章
管理變更請求 對於軟體開發工作來說每一次需求變更不是在做加法,而是在做乘法,雖然乘數是1,但被乘數會因為需求變更的層次高低而放大。所以需求變更是一個非常嚴肅的工作
第35章
需求跟蹤能力 建立需求能力矩陣對於實際發生需求變更時可以通過該矩陣遍歷出與變更需求相關的各個工作元素,而不至於陷入需求變更的困局中。需求能力矩陣除了可以輕鬆應對需求變更,而且還可以基於它建立一個需求工程全局管理視圖
需求工程組織篇
第36章呼籲建立需求分析體系 “千夫所指人人相輕”這種不重視軟體需求的觀念體現在一個個軟體項目只是表象,其癥結在於長期以來“輕業務、重技術”的理念已根深蒂固
第37章
需求分析部門的組織結構 “什麼樣的工作職能,將決定建立什麼樣的組織結構”
第38章
需求分析部門的管理工作 需求分析部門的管理思路是“抓兩端、促中間、一條業務線、專業化分工”
第39章
需求分析部門的業務工作 需求分析部門的業務工作主要由需求業務和需求開發業務兩部分組成