系統分析師職責2 — 軟體需求控管與系統分析

軟體需求溝通及控管在軟體開發中一直是個大問題,尤其是需求的探討及整合到系統分析

AaronL
Mar 30, 2024

需求控管在軟體開發中一直是個系統開發成功與否的關鍵要素。PM、工程師、設計師,不同專業的人就像說著不同的語言,討論很難聚焦收斂,經常造成專案延期,或是成品跟當初的規劃完全不同。我們需要了解軟體需求的本質,並對它進行分層處理,是我們要處理軟體需求,而不是被發散的軟體需求牽著鼻子走。

Photo by Antenna on Unsplash

軟體需求是指為使用者解決問題或達到目標所需的條件或能力。

簡而言之,無論是開發軟體系統、新功能,甚至是調整網頁元素,都需要從使用者的需求出發,透過規劃和分類的方式將這些需求完整地描述出來。這個過程可以包括收集用戶需求、分析業務流程、設計系統架構等步驟,以確保最終交付的產品或系統能夠滿足用戶的期望並達到預期的目標。這便是需求控管即是系統分析師的一個核心任務。

在軟體開發過程中,溝通一直是一個重要的挑戰。不同角色的人,例如專案經理、工程師和設計師,常常使用不同的術語和思維方式,導致討論不易達成共識,進而造成專案延誤或最終成品與原始規劃相去甚遠。

那當收到一個系統需求時該怎麼辦❓

1️⃣ 理解需求:仔細閱讀並理解系統需求文件,確保對需求的內容和範圍有清晰的理解。

2️⃣ 需求分層:在處理系統需求時,我們必須意識到所有的利害關係人都可能提出需求,而這些需求並不僅限於開發新的功能項目。

因此,我們需要先對需求進行初步定義並進行分層處理。

這意味著我們需要確定每個提出的需求的來源,並根據其性質進行區分。有些需求可能是針對系統的問題或缺陷,而另一些可能是新功能的要求。透過這種分層處理,我們可以更好地管理和分配資源,並確保優先處理最關鍵的需求。

系統需求通常可分為三個層次:

  1. 商業流程層 (Business Process Layer):這一層次關注的是業務運作的流程和流程中的需求。這包括了企業中的核心業務流程和流程中所需的功能,通常是由業務人員提出的需求。
  2. 使用流程層 (Usage Process Layer):此層次考慮的是系統使用者的需求,即他們使用系統時所需的功能和功能。這包括了用戶的操作流程和他們對系統的期望,通常由用戶和設計師提出。
  3. 系統流程層 (System Process Layer):這一層次關注的是系統本身的流程和需求,例如數據庫管理、系統性能等。這些需求通常由開發團隊和系統架構師提出。

以一個實際的系統開發案例來說

當Sales成功談下一筆系統開發的case時,會由PM提供一版 產品需求規劃文件,這需求書基本上是圍繞著商業流程做說明,例如用戶下訂單、付款、發貨等或包括支持多種支付方式、管理庫存、處理退貨退款等。強調的是系統如何滿足實際業務或商業流程,以達到效益。

接著系統分析師依照PM所提出的商業需求後,商業需求如何做使用流程的設計如需要考慮系統使用者的需求,例如消費者和商家。使用流程層的需求包括用戶註冊、登錄、瀏覽商品、添加商品到購物車、查看訂單歷史等。

再者會與開發團隊進行系統流程層的討論,在這一層次,我們需要考慮系統的內部流程和功能,例如數據庫管理、安全性、性能優化等。系統流程層的需求可能包括數據庫設計、安全控制、日誌記錄等。

上述不同層次的需求皆可能在專案的不同階段提出,通常商業流程層會是PM最在地的點,而SA會專注於使用者流程及系統流程層作分析並給予方向或建議。

3️⃣ 收斂需求並與利害關係人協商,訂立系統開發範疇

專案經理透過流程控管系統開發範疇

確定專案範疇是專案管理中至關重要的一步。在此過程中,專案經理通常會與系統分析師合作,收斂並協商需求,確定系統開發的範疇,並訂立開發的實際起點和工時預算。

系統分析師在此階段會提供系統流程圖作為整體開發範疇總纜,並有相對應的功能開發人天規劃,這份規劃是拆解商業需求後的系統需求如

  • 系統流程圖
  • 系統架構圖
  • 評估的系統開發人天與預計的開發時程
  • 待交付的事項清單

以上資訊以協助專案經理達成專案啟動前的評估。

4️⃣ 系統模組規劃

系統模組規劃是SA的一項重大任務,此任務影響到系統的擴充性及功能的合理性,並會影響系統開發後的維運穩定性。

舉例來說,在專案管理系統的開發中,若使用者希望新增任務關聯功能和人力資源專案圖,系統分析師會先對這兩個功能進行歸類,以確定它們應該屬於哪個模組。在這個例子中,任務關聯功能將被歸類到Task Management Module(任務管理模組),而人力資源專案圖則會歸類到Project Management Module(專案管理模組)。

接著,每個模組會有自己的功能清單,對於這些功能項目會進行編號以便於團隊管理和開發。透過這樣的分類和編號,可以確保各功能在系統中有清晰的歸屬和管理方式,有助於順利進行系統開發和後續的維護工作。

模組 — 功能清單範例

5️⃣ 系統分析

每個功能開發前都需要進行完整的系統分析。首先,我們會明確了解功能的輸入和輸出,並與使用者確認期望的輸出結果。為了確保整體方向正確,通常會先建立基礎的功能wireframe。

接下來是進行細部分析。我們會確定功能的核心是什麼,了解周邊系統的相關性,並決定使用現有功能的修改還是全新開發。一旦實作方式確定,我們就會定義功能的細節,包括初步設計資料模型、功能流程以及每個輸入值的來源。最後,我們會與開發團隊進行討論,確認整體可行性。

這個流程確保了在開發任何功能之前,我們對系統的理解是完整而清晰的。通過細致的分析,我們能夠降低開發過程中出現問題的風險,並確保最終產品能夠滿足使用者的需求。

6️⃣ 撰寫系統規格文件

上述的專案啟動後,系統分析師便會開始製作系統規格文件,具體來說,系統規格文件可能包括以下內容:

  1. 商業目的: 描述功能的商業目標、背景和對業務的影響。
  2. 功能需求: 詳細列出功能所需完成事項,包括使用者界面、系統操作、數據處理等方面的要求。 → 可解讀成功能的硬需求說明軟體應該如何進行任務
  3. 非功能性需求: 包括性能要求、安全性要求、可靠性要求等方面的需求,這些需求通常不直接與特定功能相關,但對系統的整體性能和品質有重要影響。:→ 說明軟體應該將任務完成得多好?
  4. 技術架構和設計: 描述功能所采用的技術架構和設計方案,包括系統架構圖、資料庫設計、集成方案等。這些信息可以幫助開發團隊理解系統的整體結構和運作方式。
  5. 測試案例: 測試案例包括功能測試、性能測試、安全測試等各個方面的測試項目和流程,確保系統的品質和穩定性。

這個過程會反覆地與需求端及開發端溝通協調,以完成最終的系統開發文件。

這篇文章強調了在軟體開發中對需求的全面理解和有效管理的重要性,並提供了一個系統性的方法來應對這些挑戰。通過分層管理需求、溝通協商、系統模組規劃和系統分析等步驟,可以提高專案的成功率和最終產品的品質。

```
🍣謝謝你的閱讀!如果有任何回饋或有興趣的主題,歡迎留言給我
👍如果單純想給我一點鼓勵,請給我 1–10 個拍手;
✅如果覺得文章對你有點幫助,請給我 11–30 個拍手;
```

--

--

AaronL

作為一名天秤座有著注重平衡和和諧的個性,喜歡透過交流和分享來擴展知識