關鍵字:管理 控制 軟件開發
軟件開發的管理和控制 軟件開發是一項很復雜的工作,對于軟件開發的管理和控制,現在有一門專門的學科:軟件工程。在這方面有許多國家標準和國際標準。許多公司也有相應的文檔模版,及相關規定,F在不談技術角度來規范軟件開發的管理和控制,從管理和實踐的角度來探討軟件開發的管理和控制應遵循的的一些原則。
對于軟件開發項目中,經常出現兩種極端情況,一種是創造了新的生產率和質量的紀錄;一種則完全是一場災難,不是被取消就是拖延很長時間。前者如在很短的時間內,為了趕進度,在幾乎不可能的時間內開發出一套軟件產品,創造了軟件開發的記錄,滿足了上級所要求的上機日期,由于開發時間太短,過于倉促,上機時,問題百出,試運行時間長達幾個月或一年半載的,而且程序一改再改,維護工作量大。
后者,如某套系統未弄清楚需求,或因設計問題,開發失敗。通過提煉這些成功和失敗的例子,軟件項目成功或失敗的根本原因可能會更清晰一些。
在討論這些原因之前,我們先來說明一下什么情況可以稱為失敗的軟件項目。
1. 由于費用超支或計劃執行超時而終止。
2. 完成計劃的時間或費用超過了原計劃的50%。
3. 由于質量或性能上的原因引起和客戶的糾紛。
下面我們將按其影響大小的順序排列說明5種錯誤的實踐方式。
錯誤1:沒有軟件項目開發的歷史數據
缺乏軟件開發的歷史數據是大多數軟件項目失敗的關鍵所在, 這樣的結論也許使很多人感到吃驚,但事實就是如此。沒有一個可靠的軟件開發的歷史數據會使項目經理,程序員,客戶對于軟件開發的過程缺少清醒的認識。
假設現在你正在管理一個軟件項目,而這個項目還沒有一個公司在36個月內完成。作為一個負責的經理,你作了一個比較細致和保守的估計,然后告訴你的客戶和你的手下說你認為這個項目需要36-38個月完成。然而常常有這樣的情況發生:你的客戶和程序員要求把時間壓縮到18個月?蛻粢环矫嫦M浖M早投入使用而產生經濟效益,一方面也想壓縮項目時間作為一個討價還價的籌碼;而程序員一方面可能過于自信,一方面盡早結束項目也能使他們多賺點錢。而此時你的手頭上也沒有一個可靠的軟件開發的歷史數據,在他們的壓力下你同意了18個月的計劃,于是一場災難開始了。
在項目的開始階段你發現計劃被拖延了,于是開始向程序員們施加壓力,要求他們加快進度,程序員為了追求進度而不得不把其它指標放在一邊,這些問題不斷的積累下來而項目經理卻蒙在鼓里。到了項目中后期這些質量問題會不斷暴露出來,而且互相關聯并且難以解決,甚至有些是系統設計的問題,這時才發現好多模塊要推倒重來,18個月完成計劃變成了天方夜譚。雖然上面只是一個虛擬的例子,但在實際中這種情況比比皆是。問題的關鍵就在于軟件開發的歷史數據是反映軟件開發隊伍的能力的標尺,沒有了這個標尺,
就無法對軟件的開發過程有一個清醒的認識。
錯誤2:不重視使用軟件費用估值工具軟件和計劃工具軟件
軟件開發方法述評
60年代中期開始爆發了眾所周知的軟件危機。為了克服這一危機,在1968、1969年連續召開的兩次著
名的NATO會議上提出了軟件工程這一術語,并在以后不斷發展、完善。與此同時,軟件研究人員也在不斷
探索新的軟件開發方法。至今已形成八類軟件開發方法。
一、Parnas方法
最早的軟件開發方法是由D.Parnas在1972年提出的。由于當時軟件在可維護性和可靠性方面存在著嚴重問題,因此Parnas提出的方法是針對這兩個問題的。首先,Parnas提出了信息隱蔽原則:在概要設計時列出將來可能發生變化的因素,并在模塊劃分時將這些因素放到個別模塊的內部。這樣,在將來由于這些因素變化而需修改軟件時,只需修改這些個別的模塊,其它模塊不受影響。信息隱蔽技術不僅提高了軟件的可維護性,而且也避免了錯誤的蔓延,改善了軟件的可靠性,F在信息隱蔽原則已成為軟件工程學中的一條重要原則。
Parnas提出的第二條原則是在軟件設計時應對可能發生的種種意外故障采取措施。軟件是很脆弱的,很可能因為一個微小的錯誤而引發嚴重的事故,所以必須加強防范。如在分配使用設備前,應該取設備狀態字,檢查設備是否正常。此外,模塊之間也要加強檢查,防止錯誤蔓延。
Parnas對軟件開發提出了深刻的見解。遺憾的是,他沒有給出明確的工作流程。所以這一方法不能獨立使用,只能作為其它方法的補充。
二、SASA方法
1978年,E.Yourdon和L.L.Constantine提出了結構化方法,即SASD方法,也可稱為面向功能的軟
件開發方法或面向數據流的軟件開發方法。1979年TomDeMarco對此方法作了進一步的完善。
Yourdon方法是80年代使用最廣泛的軟件開發方法。它首先用結構化分析(SA)對軟件進行需求分
析,然后用結構化設計(SD)方法進行總體設計,最后是結構化編程(SP)。這一方法不僅開發步驟明
確,SA、SD、SP相輔相成,一氣呵成,而且給出了兩類典型的軟件結構(變換型和事務型),便于參照,
使軟件開發的成功率大大提高,從而深受軟件開發人員的青睞。
三、面向數據結構的軟件開發方法
Jackson方法
1975年,M.A.Jackson提出了一類至今仍廣泛使用的軟件開發方法。這一方法從目標系統的輸入、
輸出數據結構入手,導出程序框架結構,再補充其它細節,就可得到完整的程序結構圖。這一方法對輸
入、輸出數據結構明確的中小型系統特別有效,如商業應用中的文件表格處理。該方法也可與其它方法結
合,用于模塊的詳細設計。
Jackson方法有時也稱為面向數據結構的軟件設計方法。
Warnier方法
1974年,J.D.Warnier提出的軟件開發方法與Jackson方法類似。差別有三點:一是它們使用的圖形
工具不同,分別使用Warnier圖和Jackson圖;另一個差別是使用的偽碼不同;最主要的差別是在構造程序
框架時,Warnier方法僅考慮輸入數據結構,而Jackson方法不僅考慮輸入數據結構,而且還考慮輸出數據
結構。
四、問題分析法
PAM問題分析法。PAM(ProblemAnalysisMethod)是80年代末由日立公司提出的一種軟件開發方法。
PAM方法希望能兼顧Yourdon方法、Jackson方法和自底向上的軟件開發方法的優點,而避免它們的缺陷。它的基本思想是:考慮到輸入、輸出數據結構,指導系統的分解,在系統分析指導下逐步綜合。這一方法的具體步驟是:從輸入、輸出數據結構導出基本處理框;分析這些處理框之間的先后關系;按先后關系逐步綜合處理框,直到畫出整個系統的PAD圖。從上述步驟中可以看出,這一方法本質上是綜合的自底向上的方法,但在逐步綜合之前已進行了有目的的分解,這個目的就是充分考慮系統的輸入、輸出數據結構。
PAM方法的另一個優點是使用PAD圖。這是一種二維樹形結構圖,是到目前為止最好的詳細設計表示方法之一,遠遠優于NS圖和PDL語言。
這一方法在日本較為流行,軟件開發的成功率也很高。由于在輸入、輸出數據結構與整個系統之間同樣存在著鴻溝,這一方法仍只適用于中小型問題。
五、面向對象的軟件開發方法
面向對象技術是軟件技術的一次革命,在軟件開發史上具有里程碑的意義。
隨著OOP(面向對象編程)向OOD(面向對象設計)和OOA(面向對象分析)的發展,最終形成面向對象的軟件開發方法OMT(LbjectModellingTechnique)。這是一種自底向上和自頂向下相結合的方法,而且它以對象建模為基礎,從而不僅考慮了輸入、輸出數據結構,實際上也包含了所有對象的數據結構。所以OMT徹底實現了PAM沒有完全實現的目標。不僅如此,OO技術在需求分析、可維護性和可靠性這三個軟件開發的關鍵環節和質量指標上有了實質性的突破,徹底地解決了在這些方面存在的嚴重問題,從而宣告了軟件危機末日的來臨。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/