談談如何應對軟體開發中的需求變更

來源:互聯網
上載者:User

令人煩惱的需求變更    在軟體開發中,大家都會遇到過這樣的問題:客戶的一個新想法,就推翻了之前與客戶經過再三討論而確認定下來的需求。如果是功能性需求變更還會讓人容易接受一些,畢竟功能性需求不實現的話,是會大大影響到軟體產品的品質。但是一些非功能性的變更會讓人很頭疼,許多是看起來無關痛癢的、雞毛蒜皮的變更,卻是極為令人無語和無奈,甚至是煩惱和厭惡的。
    (1)什麼是軟體需求?    在IEEE中,軟體需求的定義是:使用者解決問題或達到目標所需的條件或功能。一般包含業務需求、使用者需求、功能需求、行業隱含需求和一些非功能性需求。業務需求反映了客戶對系統、產品高層次的目標要求;功能需求定義了開發人員必須實現的軟體功能。所謂非功能性需求,是指為滿足使用者業務需求而必須具有除功能需求以外的特性。包括系統效能、可靠性、可維護性、易用性和對技術和對業務適應性等。其中最常見的是軟體介面、操作方便等一系列要求。
    (2)非功能性需求變更的特點    讓我們從客戶角度和開發人員角度去看看非功能性需求的特點。首先,有些非功能性小需求從客戶角度看起來工作量不大,但是實際上開發人員要耗費比較長的時間去完成這些小功能。其次,許多非功能性需求,如介面美觀、操作方便等都是客戶頭腦一熱、或領導一拍腦袋就部署下去的需求,往往是原來在需求分析階段所沒有注意的內容。
    其實,非功能性需求是常常被輕視,甚至被忽視的。原因是非功能性需求描述很困難,它很難像功能性需求那樣,可以通過結構化和量化的詞語來描述清楚。在描述這類需求時候,我們經常採用軟體效能要好、操作要方便、軟體介面要美觀大方等較模糊的描述詞語。例如,易用性就同時涉及到美工和UI介面、人機工程、互動式設計、心理學、使用者行為模式等內容。這類描述詞語都是脫離了軟體的執行環境,是對人和相關的情境的描述,因此很難體現到軟體架構設計和具體的實現中。
     國內的很多軟體公司,對於這種情況趨之若鶩,認為是負擔,影響軟體公司的工作安排,工作量以及工作進度,直接導致了軟體公司的效益,幾乎是很多軟體公司的最大隱患,因此我們如何認識、對待這個普遍存在的問題就成了軟體公司以及員工需要解決的問題;
1) 首先,要從心理上徹底根除對需求變更的恐懼,從認識上明確需求變更是軟體開發過程中不可缺少的部分,從方針上明確需求變更的存在性和必然性;

a) 從軟體公司角度,認清自身存在的不足, 客觀面對需求的變更

b) 從職員角度,提高本身的業務和技術能力


2) 從技術角度上使需求變更的處理簡單化,明確化,增加可維護性;

a) 使用更好的技術手段,設計更靈活以用來適應更多變的需求;

b) 使用更完善的軟體工程的理念,讓軟體各個步驟細化,更易維護和修改;

c) 使用完善的測試流程,最大的降低需求變更帶來的軟體風險;


3) 對需求變更進行有效管理,讓需求變更可以正常化管理,做到有效處理需求的變更,用有限的資源獲得最大的效益;

a) 軟體的初期,就要考慮最大限度的減少將來可能存在的需求變更

b) 需求的控制,減少需求的來源,過濾不合理的需求

c) 文檔化管理,有備可查,有據可依;

d) 合適的公司體制和運作,找到一條適合自己公司發展的運作體制和管理員模式;


    可能大家覺得上面說的話有些空,那麼我就從技術角度上再具體的談談。    就像剛才說過的,需求變更是必然存在的。從技術的角度來降低或避免需求變更給我們帶來的影響就顯得極為重要。
    1. 設計之初,充分理解需求,更好對需求進行整理和規劃,預測可能變更的需求。需求難做,業務難做,非功能性的需求變更更是難做。所以當我們在收集了使用者需求後,不僅僅是簡單的分類,然後按部就班的開發,而是要深入挖掘需求,一些看似固定業務的需求,可能由於業務的變更而使得你的系統不能使用。我們要做的就是拆分需求,把一些可能會發生變化的需求拆開,改成工作流程可配置的。就像面向過程轉向物件導向的那樣,面向過程是死的,而物件導向重新組合後,就特別簡單。
    就說說我們剛做的這個收銀系統吧,使用者要求結賬時,要列印小票,並自動開啟錢箱。這就是最最原始的需求。但是我們最終把它做成了這樣:印表機是外部裝置,可以增刪和配置;列印次數可配置;列印樣式可配置;列印時,要判斷印表機狀態,非正常狀態要給出各種提示(不一一列舉);錢箱可以自動開啟,也可以手動開啟。另外還設定了許多功能配置:如禁用/啟用全部印表機,禁用/啟用某個印表機,是否列印訂單小票,是否自動開啟錢箱,是否顯示錯誤提示資訊等等()。    我們把這個固定的需求,拆分成可配置的,這樣就把這個需求可能的變更已經分析的差不多了。不論它怎麼變化,我們的應對都會變得從容。就在前2天部署的時候出現問題了,印表機是新買的,不只是什麼原因,在列印多個換行之後,就會失敗,不能繼續列印。這個問題是我們所料不及的,因為我們測的我們這裡的所有印表機,都完美列印,而新買的也是同品牌,同型號的印表機。最終分析出這個問題後,我們不用更改系統,只要修改一下小票樣式配置,就可以完美列印了。
小票樣式設定(圖):硬體設定(圖):單個印表機設定(圖):功能設定(圖):
    2. 系統完成之後,客戶再提新需求後,要分析這個需求的深層次含義,分析客戶要的到底是什麼。對於一些需求,如果適合於大部分客戶,而且改動很少,就可以完成,那麼可以在下個升級版本中整合。而對於某些非功能性的需求,改動太大,或者基本的核心功能都需要更改的話,那麼就不要先去急著實現,而是放置起來,等待系統需要進行大的升級或者重構時,再考慮添加。而且要防止客戶濫用提需求的權力,對於一些不合理的需求,還要去引導客戶,讓他們理解這個功能的不合理的地方,從而重新修改需求或者放棄。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.