如何寫出一條完美的需求?

2021-01-13 民機圈

一、前言

如何將「需求」表達為清晰、準確的文本,這裡面還是有很多學問的。

本文在系統工程的框架內,結合國際系統工程學會 INCOSE 發布的指南,對如何編寫需求提供解讀。如各位讀者能結合飛機設計的工程實踐,則效果更好。

此外,在全球一體化和主製造商-供應商合作模式的背景下,我們所接觸的「需求」通常以英文呈現,本文的示例也採用英文表達,但其基本原理在各種語言之間應該是相通的。

二、為什麼要把需求文本化?

首先,需要明確一點:對於需求定義,自然語言(文本)不是一種完美的表達方式。

尋常的自然語言表達,難以保證表述清晰、準確、無歧義。因此近年來,出現了SysML建模方法、表格模板方法等一些替代措施,用來表述需求。

但這些方法也有缺陷,他們覆蓋的範圍和概念有限,且存在表達、追溯、管理等諸多問題。

根據全球航空製造業的實踐情況,文本化的需求仍是必要的,其優勢主要體現在:

對於表達的概念或對象,沒有任何範圍限制;其句型和語法結構,可以實現有效追溯。

三、兩個概念

需求層級

需求存在於系統工程的多個層級,ARP4754A中的V模型也表達了類似觀點。從最高層級的航空公司等客戶需求,到最底層級的軟硬體設備需求,需求的表達也越來越具體、越來越詳盡。

在最高層級,理想的需求不應該指定具體的實現方案(應允許多種設計);而在最低層級,需求的表述,反而需要限定在一個非常具體的解決方案。

需求的分配和分解

Allocation and Decomposition

隨著設計的開展,需求自上而下進行傳遞,這一過程包括兩個方面:分配和分解。

需求的分配存在於各個層級之間,例如從飛機級分配到系統級。一旦完成分配,就可以將其分解為多個需求(需求分解是設計過程的重要組成)。

分配/分解的需求與源需求之間,應保持雙向追溯關係。

四、需求特點 Characteristics

特點1:必要的

Necessary

每一條需求都應該是必要的

需求都是有成本的,不必要的需求會導致非增值的工作、額外的成本和不必要的風險。

如果一條需求移除後仍可滿足目標、或此需求的目標已被其他需求滿足、或此需求的作者不能說明其合理性,則這條需求是不必要的。

特點2:獨立於實現

Implementation Independent

需求用於說明什麼是必需的,而不說明用什麼來滿足

用「實現的表達方式」來寫需求,可能會忽略更好的實現方案,而真正需要解決的問題可能無法得到正確識別,進而影響下一層級需求定義。

因此,對於一條寫好的需求發問:「為了什麼目的」?如果需求是以實現的方式表達的,那麼問題的答案,可能才是真正的需求。

特點3:明確的

Unambiguous

一個需求只能有一種解釋

需求的意圖必須由編寫者、設計人員以及V&V人員以同樣的方式理解。以下方法可以減少歧義:

使用正確的語法;使用統一定義的術語和縮略語;使用精確的量詞和限定詞;使用約定的語言形式;使用主動語態,不含形容詞、副詞、代詞;使用適當的非文本表示,如圖形或表格等。

特點4:完整的

Complete

需求本身的表述應是完整的

雖然充分理解一條需求可能需要閱讀上下文或其引用的文件,但需求本身應該是一個完整的句子,不需要其他語句就能理解其基本含義。

單條需求的理解不依賴於其他需求,可以提高需求分解、分配、確認和驗證等工作的有效性。

特點5:指向單一

Singular

一條需求只涉及一個中心思想

將需求限制在一個功能、特性或約束上,避免使用「和(and)」引入多個關注點。

單條需求只涉及一個關注點,可以提高需求分解、分配、確認和驗證等工作的有效性。

特點6:可行的

Feasible

需求應該是可行的、可實現的

在現有技術和工程方法的基礎上,對成本、進度、技術難度和風險進行評估,避免出現需求無法實現的情況(例如100%的籤派可靠度要求,1E-100/FH的安全性指標等)。

特點7:可驗證

Verifiable

需求必須可驗證,否則無法判斷它是否得到正確實現

不同類型的需求可以採用不同的驗證方法,這將影響需求的編寫方式。例如對於功能性需求,通常需要通過試驗來驗證其功能正常。因此在編制需求時,其功能表徵(行為)應表達清楚。

特點8:正確的

Correct

需求應正確地反映利益攸關方的期望

需求中所表達的功能、性能要求應該是正確的。

需求在分解或推導時,應基於對更高層級需求的正確解釋和理解。分析過程如引入假設,則這些假設也應得到確認。

特點9:合規的

Conforming

需求的格式,應符合需求編寫規則,符合公司使用的標準規範

所有需求都遵從同一格式要求時,需求本身就更易於編寫、理解、評審。

五、需求編寫規則 Rules

規則1:需求編寫要精確

Precision

使用定冠詞

例如使用 「the」 而不是 「a」,以避免歧義。

錯:The system shall provide a time display.

對:The system shall display the Current_Time.(Current_Time需在術語表中定義)

使用主動語態

執行動作的實體應該是主語。

錯:The Identity of the Customer shall be confirmed.

對:The Accounting_System shall confirm the Identity of the Customer.(Accounting_System等需在術語表中定義)

主語與其層級匹配

例如系統需求應該為 「The system shall ...」,子系統需求應該是 「The subsystem shall ...」。

使用術語表中定義的術語

自然語言含義豐富,一個詞可能有多種理解。在需求中,含義的模糊會導致歧義和驗證困難。而術語表則規定了特定單詞的特定含義。

避免使用不精確的量詞

例如 「some」、 「many」、 「almost」、 「close to」、 「sufficient」、 「approximately」、 「appropriate」、 「reasonable」,同時應指定其單位和數值範圍。

錯:The Flight_Information_System shall display the current altitude to approximately 1 meter resolution.

對:The Flight_Information_System shall display Current_Altitude plus or minus 1 meter.

避免使用副詞

因為副詞常常導致需求含義模糊、不可驗證。

錯:The Flight_Information_System shall usually be on line.

對:The Flight_Information_System shall have an Availability of at least xx% over a period of at least yy hours.

避免使用形容詞

因為形容詞常常導致需求含義模糊、不可驗證。

錯:The Flight_Information_System shall display the Tracking_Information for relevant aircraft.

對:The Flight_Information_System shall display the Tracking_Information of each Aircraft located less than or equal to 20 kilometers from the Airfield.

避免使用免責條款

例如 「as much as possible」、「where possible」、「if practicable」。因為其常常導致需求含義模糊、不可驗證。

錯:The GPS shall, where there is sufficient space, display the location of the User_Location.

對:The GPS shall display the User_Location.

避免使用開放式條款

例如 「including but not limited to」、「etc.」、「and so on」。因為常常導致需求含義模糊、不可驗證。

錯:The ATM shall display the Customer Account_Number, Account_Balance, and so on.

對:The ATM shall display the Customer Account_Number.

對:The ATM shall display the Customer Account_Balance.

對:The ATM shall display the Customer .......

規則2:需求編寫要簡潔

Concision

避免多餘的不定詞

應避免使用 「... be able to...」、「... be capable of ...」。

錯:The Weapon_Subsystem shall be able to store the location of all Ordnance.

對:The Weapon_Subsystem shall store the location of all Ordnance.

使用獨立的子條款

需求有一個描述基本功能和需要的主句,其他場景、性能、約束可以作為主句的補充條款。

錯:The Navigation_Beacon shall provide Augmentation_Data for 8-20 meters accuracy at least 99.7% of the time to each Maritime_User during Harbor/Harbor Approach (HHA) maneuvering.

對:The Navigation_Beacon shall provide Augmentation_Data to each Maritime_User engaged in Harbor/Harbor_Approach_maneuvering (HHA), at an accuracy of 8-20 meters at least 99.7% of the time.

規則3:需求編寫應無歧義

Non-ambiguity

使用正確的語法

尤其是多種語言之間需要翻譯時。

錯:The Weapon_Subsystem shall storing the location of all ordnance.

對:The Weapon_Subsystem shall store the location of all Ordnance.

使用正確的拼寫

拼寫錯誤將導致混淆。

錯:The Weapon_Subsystem shall store the location of all ordinance.

對:The Weapon_Subsystem shall store the location of all Ordnance.

使用正確的標點

不正確的標點會導致需求中子條款的混淆。

錯:The Navigation_Beacon shall provide Augmentation_Data to each Maritime_User, engaged in Harbor/Harbor_Approach_maneuvering (HHA) at an accuracy of 8-20 meters at least 99.7% of the time.

對:The Navigation_Beacon shall provide Augmentation_Data to each Maritime_User engaged in Harbor/Harbor_Approach_maneuvering (HHA), at an accuracy of 8-20 meters, at least 99.7% of the time.

點評:逗號錯誤,會使人誤以為accuracy與maneuver有關,而不是與Augmentation_Data有關。

使用正確的連詞

例如不使用 「both X and Y」,而使用 「X and Y」;不使用 「X and/or Y」,而是將其分為兩條需求;不使用 「/」 符號,以避免多種理解。

規則4:需求指向應單一

Singularity

使用單句

需求應是一個簡單的肯定性陳述句(一個主語,一個動詞,一個賓語),並可由相關從句限定。

避免使用組合句型

應避免使用 「and」、「then」、「unless」、「but」、「as well as」、「however」、「whether」、「meanwhile」、「otherwise」,建議編寫多條需求。

錯:The user shall either be trusted or not trusted.

對:The Security_System shall categorize each user as one of the following: Trusted, Not_Trusted.

避免闡述需求目的

需求中不應包含目的等信息,應避免使用 「in order to」、「so that」、「thus allowing」,這些信息可以放在需求的 Rationale 一欄。

錯:The Database shall store Account_Balance information until it is at least 10 years old in order to satisfy the demands of the auditors.

對:The Audit_System shall store Account_Balance information relating to at least the last 10 years.

避免使用從屬文本

例如括號中的多餘信息,這些信息可以放在需求的 Rationale 一欄。

錯:The Control_Unit shall disconnect power from the Boiler when the water temperature exceeds 85 °C (usually towards the end of the boiling cycle.)

對:The Control_Unit shall disconnect power from the Boiler when the water temperature exceeds 85 °C.

對列表中的每一項編寫需求

避免模稜兩可的概括。

錯:The software packages (i.e., the HLT algorithm, the selection control, the data access) shall be documented for the maintainer.

對:The maintenance documentation shall include descriptions of each HLT algorithm.

對:The maintenance documentation shall include descriptions of the selection control.

對:The maintenance documentation shall include descriptions of the data access.

當需求中描述的行為異常複雜,可以指向獨立的圖、表、模型等。

錯:The control system shall close Valves A and B within 5 seconds of the temperature exceeding 95 °C and within 2 seconds of each other.

對:When the Product temperature exceeds 95 °C, the Control System shall close Input Valves as specified in timing diagram 6.

規則5:需求應完整

Completeness

避免使用代名詞

應避免使用 「it」、 「this」、 「that」、 「he」、 「she」、 「they」、 「them」,必要時可以重複專有名詞。

錯:The controller shall send the driver his itinerary for the day.

對:The Controller shall send the Driver_Itinerary for the day to the Driver.

避免通過閱讀標題才能理解需求

需求本身應該是完整的,不應該通過閱讀標題,才能完成對需求的理解。

標題示例:Alert Buzzer Requirements

錯:It shall sound for no longer than 20 minutes.

對:The Alert Buzzer shall sound for no longer than 20 minutes.

規則6:需求應可實現

Realism

避免使用無法實現的理想值

錯:The system shall have 100% availability.

對:The system shall have an Availability of greater than or equal to 98%.

規則7:需求應明確適用的條件

Conditions

明確需求所適用的條件

有時需求僅在某些條件下適用,這種情況下應在相關需求中寫明該條件,不能讓讀者從上下文中去推斷。

錯:In the event of a fire:

Power to all electromagnetic magnetic fire door catches shall be turned off.

All security entrances shall be set to Free_Access_Mode.

All fire escape doors shall be unlocked.

對:In the event of a fire, the Security_System shall turn off power to all electromagnetic magnetic fire door catches.

In the event of a fire, the Security_System shall set all security entrances to the Free_Access_Mode.

In the event of a fire, the Security_System shall unlock all fire escape doors.

如給出條件列表,應清晰表明是滿足任一條件即可,還是滿足全部條件才行。

錯:The Audit_Clerk shall be able to change the status of the action item when:

- the Audit _Clerk originated the item;

- the Audit _Clerk is the actionee;

- the Audit _Clerk is the reviewer.

對:The Audit_System shall allow the Audit_Clerk to change the status of the action item when any one of the following conditions hold:

- the Audit _Clerk originated the item;

- the Audit _Clerk is the actionee;

- the Audit _Clerk is the reviewer.

或者

對:The Audit_System shall allow the Audit_Clerk to change the status of theaction item when all of the following conditions hold:

- the Audit _Clerk originated the item;

- the Audit _Clerk is the actionee;

- the Audit _Clerk is the reviewer.

規則8:需求應唯一

Uniqueness

對需求進行分類

分類後容易檢查和識別需求的重複、衝突、丟失等問題。

每項要求只表達一次

對於同一要求,應避免存在多種表達。例如:

The system shall provide report of financial transactions.The system shall provide a financial report.

二者有重複,前者是後者的子集。

規則9:需求應考慮容差

Tolerance

需求中涉及數值時,應考慮其容差,定義可接受值的範圍。

錯:The Pumping_Station shall maintain the flow of water at 120 liters per second for 30 minutes.

對:The Pumping_Station shall maintain a flow of water at 120 ±10 liters per second for at least 30 minutes.

規則10:需求應可量化

Quantification

需求中應使用具體可量化的目標

應避免使用 「fast」、「maximum」、「minimum」、「optimum」、「nominal」、「best practices」、「user-friendly」 等。

錯:The system shall use minimum power.

對:The system shall limit the power consumption to less than 50% of the current solution.

使用確定的時間限制

應避免使用 「eventually」、「at last」 等不確定的時間關鍵詞。

錯:Continual operation of the pump shall eventually result in the tank being empty.

對:The Pump shall remove at least 99% of the Fluid from the Tank in no more than 3 days of continuous operation.

規則11:需求應可追溯

Traceability

每一條需求應該有唯一編號。即使此需求被刪除,其編號也不應被其他需求重複使用。

在父需求和子需求集之間,應建立追溯關係。其目的是確保子需求的必要性/充分性,建立各層需求之間的分配/分解關係,並清晰表明方案是如何滿足需求的。

父子之間的追溯關係可以是多對多,例如一條子需求可以同時追溯到多條父需求。

每一條需求都應連結到相關的 V&V 活動、V&V 證據,以確定每一條需求是正確的,或已得到滿足。

如一條需求需要指向另外一份文件,建議只引用文件編號,以增強可讀性。引用文件的版本、標題等信息可以在專門章節裡集中列出。

六、結尾

OK,寫出一條完美的需求,你覺得難嗎?嗯,難嗎?

相關文章,點擊閱讀:

SAE ARP4754A之「八大過程」、「七大計劃」,了解一下!商用飛機高度複雜產品的研發管理飛機和系統設計 「雙V」 是什麼?「確認」 和 「驗證」 有區別嗎?SAE ARP4754A 初探與入門!SAE ARP4761 初探與入門!

參考文獻:INCOSE-TP-2010-006-01 Guide to Writing Requirements

相關焦點

  • 英國女數學家寫出了製作完美「月餅」的數學公式
    英國女數學家寫出了製作完美「月餅」的數學公式來源:武漢英中 周粟
  • 如何寫出高分作文
    語文試卷作文的分值佔比是很大的,然而很多同學對於寫作文感到頭疼,看著題目不知該如何下筆,腦袋空空沒有寫作素材,那麼我們該如何寫出一篇高分作文呢?今天筆者就給大家一些方法,希望可以幫助正在為寫作而發愁的你。
  • 程式設計師如何寫出高質量的代碼程序
    編碼是程式設計師最重要的工作,每個程式設計師都希望自己可以寫出優雅,高性能,高質量的代碼,對於大師級別的程式設計師,他們的寫的代碼就和藝術品一樣,你會忍不住發出驚嘆,他們怎麼可以創造出如此驚豔的作品出來。下面筆者就以自己的淺薄學識和一些經驗來總結下優秀的程序應該具有的特點。
  • 需求分析師如何撰寫需求規格說明書?
    本文將分享一般的需求說明書該如何撰寫,有哪些格式,需要注意什麼等方面,力求使需求說明書看起來規範、專業。enjoy~需求分析師的一個主要工作就是寫需求說明書。國內對於需求說明書的格式並沒有一套標準規範,每家公司有每家公司自己的需求說明書格式,在我從事的三家公司,我寫過三種格式不同的需求說明書,這樣造成的一個後果就是因為沒有一套標準格式的需求說明書,假如去其他公司的話,又得拋棄原有的書寫格式,重新習慣其他公司的需求說明書格式。這樣,對於一個有經驗的需求分析師而言,在書寫需求說明書這塊,他就會和新人沒有什麼差別,無優勢可言。
  • 產品經理如何寫出一份「簡練」的PRD
    本文作者工作於BAT大廠,工作期間寫過多份PRD,將結合作者個人經驗並結合大廠同事的寫法,總結一下如何寫出一份「簡練」的PRD。 後端RD:後端研發主要關注所設計的產品需要存儲哪些數據,需要如何建表存儲這些數據,這些數據是否需要支持增、刪、改、查等功能,以及為了操作這些數據需要為產品提供哪些接口; 前端FE:前端FE主要關注後端接口如何與前端界面相結合,調取後端哪個接口,並用怎樣的方式為後端收集入參,在收集入參時前端是否要做額外的限制,以及後端返回的出參如何轉化為前端的提示等
  • 古體詩詞在當代:如何寫出古意和新意
    古體詩詞跟現代詩詞創作能否兼容並蓄,怎樣才能寫出新意……在近日由《詩刊》社中國詩歌網在北京主辦的詩人張珂《蕭月集》新書首發式暨研討會上,業內人士對這些問題進行了探討,認為當代詩人在融匯古今、把握時代脈搏的基礎上,可以寫出具有當代風骨的優秀古體詩詞。張珂既寫古詩詞也寫現代詩,提供了一個非常好的切入點。
  • 如何寫出抓住僱主眼球的英文求職信
    那麼如何寫出精彩的求職信呢?   There are 6 key points you should include in your covering letter:   求職信應該包括6個關鍵內容:   1. First of all, say that you would like to apply. 首先要說你希望申請這份工作。
  • 匯報稿如何寫出單位成績,牛人都用這些方法!
    匯報稿如何寫出單位成績,牛人都用這些方法!(作者:書香四溢)在各類文字材料中,估計筆桿子們寫的最多就是匯報稿,一方面與上級檢查調研比較多有關,另一方面,及時主動匯報成績也是工作所需。那麼,寫匯報稿如何寫出成績,掐準問題呢?這裡有幾個小妙招供大家參考。1. 講成績用歸納寫單位成績這一塊,要善於運用歸納法,就是將單位幾年來所取得的成績、所做的大事情,都一一列舉出來,分主題進行歸類。比如說,單位領導慰問困難職工、節假日代職工值班等,這一類事件都統一歸類到「關心職工」這一主題裡去。
  • 亂倫、性虐…女中學生寫出十多篇「性愛小說」
    本報訊 南京一名16歲的女中學生寫出了十幾萬字的情感小說。小說的內容涉及「三角戀」、「亂倫」、「同性戀」、「性虐待」、「吸毒」,有的甚至是赤裸裸的性生活描寫。昨天,晨報記者對這位「校園作家」進行了獨家專訪。  站在記者面前的「校園作家」臉上架著一副寬邊眼鏡,身著休閒運動衫,散發著幾分秀氣和活力。
  • 亞馬遜listing優化專題:1.標題的完美公式。
    寫出優質的銷售文案,轉化顧客。這是藝術。 現在我就將亞馬遜listing分解為10個部分,教你如何做到「讓機器人和顧客都開心」,一起來看吧。 (1)標題 完美標題的公式: [MAIN KEYWORD] by [BRAND NAME] | [HIT 3 KEYWORDS WITH HIGH SEARCH VOLUME] + [VALUE PROP] + [STYLE OR QUANTITY IF APPLICABLE
  • 軟體需求過程如何與整個工程過程相吻合?
    打開APP 軟體需求過程如何與整個工程過程相吻合? 汽車電子硬體設計 發表於 2021-01-11 09:58:01 本部分介紹了軟體需求過程,針對剩下的五個主題,並展示了需求過程如何與整個軟體工程過程相吻合。
  • 需求彈性
    需求彈性是指由於影響需求的諸因素發生變化後,需求量做出反應的程度。  各種商品的需求彈性是不同的,通常用需求彈性係數來表示需求彈性的大小。需求彈性係數是需求量變動率與價格變動率的比值。  需求彈性和需求彈性係數的要點  需求彈性係數的數值可以是正值,也可以是負值,這取決於有關兩個變量的變動方向。若它們同方向變動,則Ed為正值;反之,Ed為負值。  需求彈性是指價格變動所引起的需求量變動的程度,即需求量變動對價格變動的反應程度。  同一條需求曲線上不同點的需求彈性係數大小並不一定相同。
  • 庫珀有氧運動寶典01:完美平衡+全面健康的3個需求
    但是,它現在的位置,與太陽處於理想的平衡距離,我們的星球處於一個完美的位置,能使生命形式保持著令人興奮的繁衍。人體只是宇宙的另一部分,它意味著完美的平衡。我們的身體是這樣被建造的:我們只需要這麼多的運動,不多也不少;我們只需要這麼多特定種類的食物;我們只需要這麼多適量的睡眠,以便從日常生活的緊張和壓力中解脫出來。
  • 東莞商務英語如何寫出合格的E-mail?
    如何寫出合格的E-mail ? 接下來請大家認真學習。 後續會分享更多英語知識,請關注本站: 1. 標題 Subject Line: 郵件的標題要簡要、明確的概括整個郵件的內容。
  • 施一公:如何一個通宵寫出一篇Nature?
    (這是初稿,你看看如何,我們可以試試《科學》)我仔細一看,天啊!一共7頁,四個多小時Jeremy已經把文章的整體寫完了,只是缺少Method和 references。 讓我鬱悶的是,他根本沒有用我的初稿。 【其實,寫文章貴在一氣呵成。我也沿襲了Jeremy的風格。
  • 如何建完美的沙灘城堡
    建一座完美的沙灘城堡有什麼秘訣呢?英國伯恩茅斯大學環境與地理科學教授、巖石碎片研究奠基人馬修·羅伯特·本奈特曾經受邀對這個問題進行研究。他認為,科學上有公式可以解決。  首先,水和沙子的配比十分關鍵。沙子的強度取決於單獨沙粒的性質和沙粒之間的水分。沙粒越尖銳,它們就會越好地「鎖定」在一起。沙粒經過的運輸越多,它就會變得越圓滑。而沙粒越細小,其中保存的水分就越多。
  • 完美英語怎麼說?
    完美英語怎麼說:Perfect釋義:完備的;完美的;完全的;準確的;地道的;優秀的;最佳的音標:英 [pfkt , pfekt] 美 [prfkt , prfekt]Flawless釋義:完全潔淨級;無瑕級;無瑕;無暇;音標:英 [flls] 美 [flls]Consummate釋義:完美;完成
  • 需求彈性的分類範圍
    一般情況下,不同類商品的需求彈性也是不同的,為了揭示某種商品及其在某一價格的彈性高低,通常根據需求彈性係數大小進行分類:  1.|Ed|=0,表明無論價格如何變動,需求量都固定不變,始終有△Q=0,需求曲線是一條與橫軸垂直的線,此時稱需求完全無彈性,或稱需求彈性為零。  2.
  • 「人」字加一筆,高人能夠寫出九個字,你能寫出幾個
    也許還有其他符合條件的字,但小編只能寫出這麼多了。可見,有條件限制的加偏旁,只能寫出有限的字,而這一點往往被人忽視,因為漢字太多了。沒寫之前,會認為這太簡單了,寫過之後,才知道這也是有一定難度的。而正因為這一點,讓很多人馬失前蹄。
  • 拆書|《刻意練習》:沒有天賦,如何寫出好文案?
    作者:李小墨 來源:深夜書桌(ID:shenyeshuzhuo) 原標題:《刻意練習》:普通人如何從平庸到優秀,再到卓越?那像莫扎特那樣的人又如何解釋呢? 艾利克森在《刻意練習》裡破解了莫扎特的天才傳說。 作為歷史上最著名的神童之一,莫扎特被認為擁有無法解釋的天才,也因此他一直被作為一個典型例子,用來證明某些與生俱來的才華,往往只有少數幸運的人才能擁有,其他人並不具備。這些少數的幸運兒不同凡響,是因為他們天賦異稟。