為什麼需求在軟件工程中很重要?
已發表: 2021-10-05在本文中,我們將討論需求在軟件開發中的重要性以及為什麼在構建應用程序時忽略需求階段不是一個明智的想法的原因。
“工作軟件優於綜合文檔。 ”這是敏捷宣言的一部分。
從表面上看,這種說法似乎暗示需求無關緊要,不值得花時間。 一些開發人員和他們的客戶放棄了適當的文檔。 但這是一個錯誤。
讓我們先來稍微解釋一下軟件開發方面的需求。
APP開發有什麼要求?
當應用於軟件開發時,需求的定義不會發生顯著變化。 需求只是指定產品應該包括哪些功能以及這些功能應該如何工作。 你如何接近他們很重要。
收集和分析需求是敏捷和瀑布方法中軟件開發過程的初始階段之一。 在想法驗證階段的需求階段,客戶和開發人員之間必須就最終產品應該做什麼以及如何做達成一致。 應用程序開發中的要求通常非常詳細。
如何定義軟件需求
在軟件開發中可以有多種類型的需求。
業務需求
為什麼客戶需要這個應用程序? 乍一看,這些信息可能看起來是不必要的,甚至是多餘的。 畢竟,您有一個客戶想要付錢給您來構建應用程序。 你為什麼要關心他們的理由?
好吧,如果您為自己所做的事情感到自豪並努力打造優質產品,那麼您應該像關心什麼和如何做一樣關心為什麼。
業務需求的重要性在於它們提供了最終目標的願景。 有了目標,開發人員可以設置優先級。 他們還可以運用他們的專業知識來提供更好的解決方案來實現這些目標。 大多數公司將業務分析包含在開發過程中是有原因的。
如果沒有明確的業務需求,就可能做出錯誤的決策。 會減慢開發速度、擾亂最後期限並導致額外開發階段的決策。
軟件要求
有兩種類型的需求:功能性需求和非功能性需求。 簡單來說,區別如下:
功能需求是什麼需求——這個系統的設計目的是什麼? 顧名思義,它們描述了軟件的功能。
非功能性需求是如何需求——這個系統將如何做它設計要做的事情? 這些要求描述了每個功能在什麼條件下應該如何表現,應該有什麼限制等等。
兩者齊頭並進。 非功能性需求補充並定義了功能性需求。 例如,假設我們正在製作一個消息應用程序。
在這種情況下,主要的功能要求是:
- 該應用程序必須能夠發送消息。
- 該應用程序必須支持文件和媒體傳輸。
- 等等。
這些非常簡單,很容易理解為什麼功能需求很重要:它們概述了功能。 在這個例子中, 非功能性需求可能如下:
- 該服務必須在所有主要瀏覽器中提供完整功能:Microsoft Edge、Google Chrome(最新兩個版本)、Mozilla Firefox(最新兩個版本)、Opera、Safari(最新版本)。
- 必須支持移動佈局。
- 等等。
如你看到的, 功能需求基本上是必須包含在系統中的功能列表. 另一方面,非功能性需求是特定的。 它們是定義開發和測試條件所必需的。
確實,迭代敏捷過程需要在開發的任何階段引入更改的可能性,但這並不意味著完全取消要求。 你只需要讓它們變得靈活。
如果沒有指定精確的參數,就不可能理解一個功能是否完全按照它應該的方式設計。
必須徹底分析和記錄需求。 為什麼? 因為如果不這樣做,很多事情都會出錯。
未記錄要求的達摩克利斯之劍
質量保證專家最了解軟件需求的重要性。 當項目需求沒有正確佈置時,QA 會受到最大的打擊。 想像一下,在沒有明確指導方針應該做什麼以及應該如何做的情況下,試圖確定軟件是否被正確實施。 這完全是瘋了。
然而,這個問題不僅影響測試人員。 沒有官方規格意味著以下內容:
- 對於成品甚至功能的構成沒有明確的理解。
- 客戶不知道在開發結束時會發生什麼,也不知道他們付出了什麼。
- 開發人員束手無策,不得不根據所說的內容以及他們自己的理解來弄清楚功能的細節。
- 錯誤。 他們無處不在。

未記錄的要求會導致各方溝通不暢。 客戶和開發人員對相同術語的不同理解並不罕見。 尤其是當我們談論一家對客戶的業務並不熟悉的外包開發公司時。
反過來,溝通不暢會為不斷的返工、更改和錯誤修復鋪平道路。 有可能一切都會按計劃進行而沒有記錄的要求,但這很渺茫。 通常,這條鏈條以中斷的截止日期和成本結束。
為了確保項目開發順利進行,每個團隊成員都必須以相同的方式理解產品的所有部分及其開發過程。 為確保開發人員能夠像客戶一樣看到產品的每個功能,制定了軟件需求規範 (SRS)。
細節決定成敗:什麼才是好的軟件需求規範?
現在,實際的軟件需求規範可能非常詳細,也可能只是功能的概述。 詳細程度取決於許多因素。
參與項目的每個人都很容易理解高質量的需求。 這包括客戶,他們可能精通也可能不精通技術方面。 一些公司需要一份非常技術性和細節豐富的要求清單,而另一些公司則更喜歡外行的要求。
無論您的文檔技術含量如何,都有管理軟件需求的一般規則。 甚至還有一個官方標準:IEEE Std 830-1998,“軟件需求規範的推薦做法”。 根據標準,這是一個好的 SRS 應該是什麼:
正確。 這個很容易。 SRS 的正確性由客戶和開發人員根據他們達成的協議進行驗證。 SRS 應符合技術規範和所有其他管理項目文件。
明確的。 SRS 的主要目的之一是消除誤傳。 這就是為什麼每個需求規範都必須寫成只有一種可能的解釋。 SRS 包含詞彙表並不罕見。
完成。 應用程序越複雜,SRS 就需要越詳細。 完整的 SRS 涵蓋從性能要求到功能的方方面面。 它還對設計設置了某些限制。 但是,它從未指定確切的設計。 它只提供參數。
一致。 內部一致性意味著 SRS 中的任何語句都不會與同一 SRS 中的其他語句相矛盾。 這是包含詞彙表的另一個原因——以便文檔中的任何對象、過程和規範都用精確的術語指定。
排名重要性和/或穩定性。 在大多數情況下,有必須的要求和想要的要求。 軟件需求規范清楚地標記這兩種類型很重要。 這將有助於開發人員和項目經理為項目制定分步計劃。
可驗證。 必須有一種方法來測試您包含在 SRS 中的每個要求。 要被認為是可驗證的,需求必須包含可衡量的和具體的概念。
可修改。 這是指SRS結構。 為了在需要實施變更時不打亂項目工作流程,SRS 需要明確且易於變更,並且不應重複要求。
可追溯。 應該很容易識別 SRS 中規定的每個要求的來源。
這些是建議。 實際上,公司可以根據項目、客戶和團隊的不同,放棄其中的一些要點。 但是有一些指導總是好的。
無論您是專攻 iOS 和 Android 應用程序開發還是 Web 開發,要求都很方便。 它們是通用文檔。 它們的外觀通常取決於開發人員及其客戶。
由於SRS應該對所有相關方都易於理解,因此設計它們的最佳方式也存在爭議。 有些人喜歡表格,有些人喜歡列表。 有些開發人員更喜歡他們的規範作為數據流圖和圖表的可視化形式。 沒有單一的正確方法來製作需求規範文檔。
結論
以下是當軟件需求派上用場時最常見的幾點:
- 了解目標
- 估算開發成本
- 制定全面的時間表
- 設定優先事項
是否記錄需求是每個開發人員自己決定的事情。 需求的價值取決於項目的規模。 在 Mind Studios,我們更喜歡有條不紊,因此我們記錄了所有需求。 如果您對我們的工作方式感興趣或對一般要求的價值有疑問,請通過我們的聯繫表格聯繫我們。