關於《軟件工程化》的“化”


英文”Software Egineering“的后一個詞,本身就是一個動名詞,在中文里,我們翻譯為名詞”工程“,屏蔽了其”動詞“屬性。19698年NATO召開SE會議的目的是解決軟件開發存在的經費、工期、質量(功能和非功能)等不可預測,無法計划,大量項目失敗的危機。提出來向傳統工程,例如,機械、建築、制造工程等學習,讓軟件生產過程也能看見,摸得着。把”一抹黑“的、”變魔術“的軟件開發過程,變成為:有序的、有計划的、可見的、可預測的(質量、工期、成本),進一步,可以向前追溯,查出責任,甚至要求負法律責任的工程過程。

研究SE的目的是提高軟件生產力。而軟件生產力源於: 勞動的人、所使用的工具和設備、工藝方法、以及把前面三個組織起來的生產過程。

對於傳統工程,勞動過程,無論是福特公司的流水線、還是建築工程過程,其勞動過程可以事先規定下來,進行重復勞動。但是,人們認為軟件生產是不行的,因為每個項目的需求都不一樣、工期、質量和經費也不同,你如何重復勞動?

Humphery 提出了軟件勞動的程序問題,最終演變為CMM/CMMI模型,他本人獲得了美國總統頒發的大獎。他認為一個軟件組織要從無序的勞動過程,提升為可重復的(Repeatable),然后是標准化或能夠統一定義生產過程,再到可預測的量化管理,最終,能持續地對軟件勞動過程進行優化。這個理論解決了不相同軟件需求條件下的,軟件勞動過程的工程有序性。 小到一個軟件企業,大到一個國家或行業組織,要不斷改進其組織管理能力,就可以提高組織的軟件生產力。

用“工程化”的目的是為了表達軟件勞動過程的可變性,以及需要不斷改進的過程。同時,軟件勞動的工具與環境、勞動的人、工藝與方法也是需要不斷地被改進,這些也是一個“工程化”改進過程。

對於“工程化”的另一個解釋是德國人於1994年提出的“Enginering of Software Development”,即,軟件開發的工程化,把Engineering放到前面,強調其作為一個動名詞的動的側面。

在中國,1992年,梁思禮先生(原航天工業部總工程師)在中國載人航天工程啟動時,提“軟件工程化”,其目的是要求軟件工程技術人員向其他傳統工程人員學習,把軟件的研發、測試、發布和使用,搞成像火箭制造工程一樣的,可以看得見的、有據可查的(可向前追溯的)、能夠預測出軟件故障(錯誤率)的、經費和工期可控的勞動過程,徹底消滅軟件研制中的“自我設計、自我編程、自我測試,一包到底(三自一包)”的黑箱現象,通過工程質量的提高,解決軟件質量。他說道:如果我們一下子做不到,那就當小學生,把美國的NASA、波音、SEI當做大學生,我們總歸會學會的。這樣,我們的軟件生產能力才可以提高上去,質量和可靠性才是可預測的。

這個指導意見是成功的,在何新貴為組長的軟件工程專家組的帶領下,航天領域的軟件工程管理者和技術人員一起,保證了載人航天工程中軟件的質量。中國國家科技最高獎獲得者獲得者王永志對此給予了高度的評價,認為:梁先生提倡的軟件工程化發揮了很大的作用。

《軟件工程化》一書的英文,開始時時“Engineering of Software”,但編輯部認為作為一本教材還是保持“Software Engineering”為好。

北京郵電大學的一位副校長,直接提出改版時,應該改為:Engineering of Software,以強調軟件工程是一個不斷進步和改進的過程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM