2009-08-17 76 views
34

在瀏覽所有關於SO的答案時,我發現了一些在我看來是更常見的軟件開發管理誤解之一:「[軟件開發]計劃是您需要進行的所有活動的合理詳細描述。什麼是一個好的軟件開發計劃?

因此問題:什麼是好的軟件開發計劃?它可以被簡化爲工作分解結構; WBS是軟件開發計劃最重要的東西嗎?

+1

推薦閱讀:「代碼完成」。現在自己讀,這會幫助你理解。 – KdgDev 2009-08-17 13:15:26

回答

40

軟件開發計劃是一個計劃,您將如何開發您打算開發和交付的軟件。

雖然我知道你們年輕鞭撻者都認爲軍隊是一羣白癡,但他們實際上在這方面有很多經驗,而且他們與許多商業公司不一樣,想到了必須做的事情完成。這包括了一些需要考慮的事情上非常痛苦的教訓,禮貌的項目失敗,因爲這些事情都沒有考慮。

我在2010年4月10日對此進行了更新。我之前列出的DOD-STD-2167A光源已經黑了,所以有必要改用MIL-STD-498。不幸的是,1998年MIL-STD-498被取消,國防部現在期望承包商使用IEEE/EIA-12207。然而,IEEE標準並不像啤酒一樣自由。

有關軟件開發計劃大綱,請參閱DI-IPSC-81427A

當你讀到的是需要解決的事情的清單,你可能會得到的印象是,其中一些段落的是,像海軍條例,血寫的。這個印象有一個原因:他們是。項目失敗是因爲他們沒有及時解決這些問題。

http://sepo.spawar.navy.mil/SW_Standards.html見:你可以下載一個.zip的標準,所有的數據項目說明(規格爲單獨的文檔)。 (是的,我知道美國國防部已經從DOD-STD-2167A轉移到了IEEE的商業標準,但是IEEE在你的左腎指控手臂,腿部和移植的權利,他們的標準。DOD標準是免費的啤酒)

編輯: 固定鏈接1

+0

很好的答案!此外,DO-178B/C還包含軟件開發計劃中應包含的內容的定義。 – JustADude 2013-01-18 14:29:41

5

軟件開發計劃是一個特定類型的項目計劃。雖然WBS很重要,但它只是在表面上刮擦。

一個全面的項目計劃應該有:

  1. 範圍計劃(包含WBS)
  2. 進度計劃
  3. 成本計劃
  4. 質量計劃
  5. 人員計劃
  6. 溝通計劃
  7. 風險計劃
  8. 採購計劃。關於這些計劃

更多信息可以在

The project Management Body of Knowledge.

中找到更具體的指導,推進見Code Complete 2

+1

沒錯,OP應該檢查Code Complete 2書。這是一本很棒的書,它將向您展示實際生活中的軟件開發計劃。 – 2009-08-17 15:36:00

18

「[軟件開發]計劃是您需要進行的所有活動的合理詳細描述」。

這通常不能存在。

如果你確實有完全瞭解的所有要求,你必須完全瞭解所有技術問題,你可以寫這樣的文件。

但是,如果您正在做一些事情新的 - 用戶尚未安裝的東西 - 或者您正在使用任何新技術,您甚至不能提供對活動的「合理」詳細描述你需要承擔。

您可以提供一個概述,其中將總結您需要做的一些事情。但是,當你探索需求時,用戶會發現事物,學習並改變主意。修改計劃。在您探索技術時,開發人員將發現事物,學習並修改計劃。

它不可能那麼辛苦 - 人們總是這樣做。

該計劃的受衆是管理層。管理人員希望對所有活動進行「合理」詳細的描述。隨着用戶和開發人員瞭解需求和技術,細節會發生變化。這使得「合理的」測試非常非常難以滿足。細節不斷變化時,詳細程度是「合理的」?

計劃的變更可以(並且確實)每天到達。大多數管理者不希望每天更改計劃。所以太多的細節變得「不合理」。爲了制定一個不經常改變的計劃,該計劃實際上需要是活動的總結。「軟件開發計劃」的唯一可行版本是在向用戶發佈功能方面定義的一系列目標 - 而不是活動方面。

總之,人們一直在做。在30多年的軟件開發中(其中大部分是作爲軍事分包商),對規劃的幻想有一種幻想,它根本不是事實。項目被「合理詳細」的計劃取消,過於詳細的計劃和沒有計劃。

的確,計劃往往是取消的主要原因。爲什麼?通過「合理詳細」的活動清單,任何學習都意味着該計劃是錯誤的。由於該計劃與實際執行不一致,所以一定是錯誤的。拋硬幣。如果您認爲執行錯誤,請取消該項目,以免不遵循該計劃。如果您認爲該計劃是錯誤的,請修正計劃以匹配現實世界。計劃越詳細,越是看起來「正確」,越有可能認爲執行是錯誤的。

底線

軟件開發計劃可以是一個幻想文檔,作爲「瀑布式」開發方法的一部分,其中各種事情都被預先超過規定,並且變化(從學習隨着團隊進展而變化)受到懲罰。

OR

軟件開發計劃是一個Agile burndown chart,僅僅顯示了要完成的衝刺。 「合理」的細節水平實際上很低 - 這只是一個總結。它在每次衝刺回顧期間都會發生變化。

+0

+1然而,即使敏捷也需要一些先期發現來爲積壓奠定基礎。只是在說'。 – Brenden 2013-10-10 17:59:19

+0

@Brenden先行發現不是答案的重點,它是「計劃」的重點。是。在敏捷中,您會先發現要開始積壓的東西,這通常是他最後一段中提到的「只是一個總結」。從此以後,基於以前衝刺和產品市場測試的結果,衝刺改變將鼓勵學習。基本上,一個「計劃」是一個不好的方法,但是一個有增長空間的總結不是。這就是我從這個答案中獲得的,也是我個人的經歷。 – 2015-03-10 22:39:30

0

我的感覺是,在的軟件開發項目應在兩個部分

  1. 軟件管理來devided
  2. 的軟件開發

在項目管理中,例如公司的目標一切多餘可能的事情,項目規劃,項目監測,估算,時間表預訂,缺陷跟蹤等都可以涵蓋..

在項目中Deve lopement項目生命週期將保持如全瀑布

相關問題