軟件開發中為什么盡量不要變更需求
- 2020-09-08
- 0
? ? ? 在軟件開發中,大家都會遇到過這樣的問題:客戶的一個新想法,就推翻了之前與客戶經過再三討論而確認定下來的需求。如果是功能性需求變更還會讓人容易接受一些,畢竟功能性需求不實現的話,是會大大影響到軟件產品的質量。但是一些非功能性的變更會讓人很頭疼,許多是看起來無關痛癢的、雞毛蒜皮的變更,卻是極為令人無語和無奈,甚至是煩惱和厭惡的。
? ? (1)什么是軟件需求?
? ? 軟件需求的定義是:用戶解決問題或達到目標所需的條件或功能。一般包含業務需求、用戶需求、功能需求、行業隱含需求和一些非功能性需求。業務需求反映了客戶對系統、產品高層次的目標要求;功能需求定義了開發人員必須實現的軟件功能。所謂非功能性需求,是指為滿足用戶業務需求而必須具有除功能需求以外的特性。
? ? (2)非功能性需求變更的特點?
? ? 讓我們從客戶角度和開發人員角度去看看非功能性需求的特點。首先,有些非功能性小需求從客戶角度看起來工作量不大,但是實際上開發人員要耗費比較長的時間去完成這些小功能。其次,許多非功能性需求,如界面美觀、操作方便等都是客戶頭腦一熱、或領導一拍腦袋就部署下去的需求,往往是原來在需求分析階段所沒有注意的內容。
? ? (3)為什么增加需求軟件公司會根據工作量增加費用?
? ? 軟件開發公司最大的成本其實是人力成本,如上面所說的,有時候客戶提出的需求,從客戶的的角度看起來工作量并不大,但實際上開發人員需要耗費較長的時間去處理這些需求,這其中增加了時間,在無形中也增加了軟件開發公司的開發成本,所以當客戶提出與原需求表不一樣的需求是,軟件開發公司會進行評估,如果工作量不大或是與開發原需求的時間差異不大的可以免費幫忙修改,但如果新提出的需求開發起來真的需要耗費較長時間或與原需求差異,則會增加一定費用的原因。
? ? 其實,非功能性需求是常常很難做到客戶滿意的。原因是非功能性需求描述很困難,它很難像功能性需求那樣,可以通過結構化和量化的詞語來描述清楚。在描述這類需求時候,我們經常采用軟件性能要好、操作要方便、軟件界面要美觀大方等較模糊的描述詞語。例如,易用性就同時涉及到美工和UI界面、人機工程、交互式設計、心理學、用戶行為模式等內容。這類描述詞語都是脫離了軟件的執行環境,是對人和相關的場景的描述,因此很難體現到軟件架構設計和具體的實現中。
? ? 所以,關于非功能性需求在項目開發中往往是很難做到盡善盡美的,通常非功能性需求都是需要到項目開發成型,功能性需求測試通過沒有BUG以后,才會逐步進行優化??赡芎芏嗳艘苫鬄槭裁丛陧椖块_發過程中不能將功能性需求和非功能性需求同時兼顧,原因如下:
? ? (1)功能性需求可以通過結構化和量化的詞語來描述清楚,描述清楚的需求,在開發過程中對比于非功能性需求開發起來效率、速度都更快。
? ? (2)非功能性需求需要與客戶多次溝通,且每個人的理解能力、審美、操作習慣等因素都不會是一致的,所以哪怕多次溝通,但結果也有和客戶的想法出現差異的情況,那么多次修改就會延長項目開發的周期,導致項目周期已經到了,但是功能性需求卻并未全部完成;
? ? (3)功能性需求才是一個軟件、網站使用的核心部分,而非功能性需求則是稱托功能性需求的一個輔助部分,大多數客戶開發軟件、網站都希望能夠在約定的時間內完成開發并投入使用,但若是功能性需求尚未完成,則表示程序無法正常運行,所以在開發過程中軟件開發公司會將功能性需求進行優先開發,直至功能性需求BUG修復完成以后,才會逐步進行非功能性需求的優化。
? ? (1)什么是軟件需求?
? ? 軟件需求的定義是:用戶解決問題或達到目標所需的條件或功能。一般包含業務需求、用戶需求、功能需求、行業隱含需求和一些非功能性需求。業務需求反映了客戶對系統、產品高層次的目標要求;功能需求定義了開發人員必須實現的軟件功能。所謂非功能性需求,是指為滿足用戶業務需求而必須具有除功能需求以外的特性。
? ? (2)非功能性需求變更的特點?
? ? 讓我們從客戶角度和開發人員角度去看看非功能性需求的特點。首先,有些非功能性小需求從客戶角度看起來工作量不大,但是實際上開發人員要耗費比較長的時間去完成這些小功能。其次,許多非功能性需求,如界面美觀、操作方便等都是客戶頭腦一熱、或領導一拍腦袋就部署下去的需求,往往是原來在需求分析階段所沒有注意的內容。
? ? (3)為什么增加需求軟件公司會根據工作量增加費用?
? ? 軟件開發公司最大的成本其實是人力成本,如上面所說的,有時候客戶提出的需求,從客戶的的角度看起來工作量并不大,但實際上開發人員需要耗費較長的時間去處理這些需求,這其中增加了時間,在無形中也增加了軟件開發公司的開發成本,所以當客戶提出與原需求表不一樣的需求是,軟件開發公司會進行評估,如果工作量不大或是與開發原需求的時間差異不大的可以免費幫忙修改,但如果新提出的需求開發起來真的需要耗費較長時間或與原需求差異,則會增加一定費用的原因。
? ? 其實,非功能性需求是常常很難做到客戶滿意的。原因是非功能性需求描述很困難,它很難像功能性需求那樣,可以通過結構化和量化的詞語來描述清楚。在描述這類需求時候,我們經常采用軟件性能要好、操作要方便、軟件界面要美觀大方等較模糊的描述詞語。例如,易用性就同時涉及到美工和UI界面、人機工程、交互式設計、心理學、用戶行為模式等內容。這類描述詞語都是脫離了軟件的執行環境,是對人和相關的場景的描述,因此很難體現到軟件架構設計和具體的實現中。
? ? 所以,關于非功能性需求在項目開發中往往是很難做到盡善盡美的,通常非功能性需求都是需要到項目開發成型,功能性需求測試通過沒有BUG以后,才會逐步進行優化??赡芎芏嗳艘苫鬄槭裁丛陧椖块_發過程中不能將功能性需求和非功能性需求同時兼顧,原因如下:
? ? (1)功能性需求可以通過結構化和量化的詞語來描述清楚,描述清楚的需求,在開發過程中對比于非功能性需求開發起來效率、速度都更快。
? ? (2)非功能性需求需要與客戶多次溝通,且每個人的理解能力、審美、操作習慣等因素都不會是一致的,所以哪怕多次溝通,但結果也有和客戶的想法出現差異的情況,那么多次修改就會延長項目開發的周期,導致項目周期已經到了,但是功能性需求卻并未全部完成;
? ? (3)功能性需求才是一個軟件、網站使用的核心部分,而非功能性需求則是稱托功能性需求的一個輔助部分,大多數客戶開發軟件、網站都希望能夠在約定的時間內完成開發并投入使用,但若是功能性需求尚未完成,則表示程序無法正常運行,所以在開發過程中軟件開發公司會將功能性需求進行優先開發,直至功能性需求BUG修復完成以后,才會逐步進行非功能性需求的優化。
看完你這個去更新了個IOS7結果忘記備份了,我的照片我的短信啊,你妹的!
頂~~~~尼瑪配圖才是亮點
web2.0的風格還沒練熟,現在有特么的流行扁平化了,設計師難當啊
學習了,感謝分享
臨近下班,插上硬盤尋找蒼老師的時候無意中發現...