1、范圍沒有圈定就開始細化
細化工作是由需求分析人員完成的,一般是根據用戶提出的描述性的、總結性的短短幾句話去細化的,提取其中的一個個功能,并給出描述(正常執行時的描述和意外發生時的描述)。
當細化到一定程度并開始系統設計時,范圍會發生變化,那細節用例的描述可能就有很多要改動。如原來是人工手動添加的數據,要改成根據信息系統計算出來,而原來的一個屬性的描述要變成描述一個實體等。
2、沒有指定需求的基線
需求的基線是指是否容許需求變更的分界線。
隨著項目的進展,需求的基線也在變化。是否容許變更的依據是合同以及對成本的影響,比如軟件整體結構已經設計出來,是不容許改變需求范圍的,因為整體結構會對整個項目的進度和成本有初步預算。隨著項目的進展,基線將越定越高(容許的變更將越少)。
3、沒有良好的軟件結構適應變化
組件式的軟件結構就是提供了快速適應需求變化的體系結構,數據層封裝了數據訪間邏輯,業務層封裝了業務邏輯,表示層展現用戶表示邏輯。
但適應變化必須遵循一些松耦合合原則,各層之間還是存在一些聯系的,設計要力求減少會對接口入口參數產生變化。如果業務邏輯封裝好了,則表示層界面上的一些排列或減少信息的要求是很容易適應的。如果接口定義得合理,那么即使業務流程有變化,也能夠快速適應變化。因此,在成本影響的容許范圍內可以降低需求的基線,提高客戶的滿意度。
三、需求變更控制
前面已經說過了,在軟件開發項目開始之前,就要消除“絕不允許發生需求變更”的思想。在項目進行,一旦發生需求變更,更不要不一味的抱怨,也不要去一味地迎合客戶的“新需求”,而是要管理和控制需求變更。
1、 分級管理客戶需求
軟件開發項目中,“客戶永遠是對的”和“客戶是上帝”并不完全的正確,因為在已經簽定的項目合同中,任何新需求的變更和增加除了影響項目的正常進行以外,還影響到了客戶的投入收益,所以有的時候項目經理反倒應該為客戶著想。