官术网_书友最值得收藏!

十、不變的只有變化

需求變化最根本的來源是人對于世界的認識規律。人類必須通過實踐才能認識世界;同樣,軟件本身也必須通過使用和開發的實踐,才能認識清楚其需求。因為軟件的需求往往就是人對世界的認識。

1.軟件業正致力于應對需求變化

只有軟件被生產并應用起來,人才能真正地對其有正確的認識,基于這些認識,軟件中的設計錯誤才有可能被改正。這個過程循環不止,軟件項目本身如果跟不上這個節奏,就可能慘敗。如何能以最低成本進行這個循環,減少每次修改造成的浪費,是應對這種反復修改的重要手段。

在人類真正清晰、完整地認識世界之前,需求變化都是不會停止的。所以我們要做的不是去拒絕變化,而是把需求變化看成軟件開發中最重要的一環。軟件業發展至今,業界已經在軟件工程學上取得了很多突破,我們應該去學會使用這些知識,去更好地控制需求變化,讓需求變化為軟件項目服務,而不是阻礙項目的發展。

需求變化所導致的問題,往往不是狹義的軟件開發技術能解決的。于是軟件業先輩們苦苦思索解決之道,軟件項目管理、軟件需求管理、軟件開發管理等學科就萌芽了。結構化編程、面向對象分析方法、瀑布式開發模式、敏捷開發模式、持續集成、ITIL等軟件管理知識不斷被提出并整理出來。

另外,在軟件開發語言、開發工具等方面,也有大量為了解決軟件開發危機而出現的新技術、新語言。從匯編到C語言,然后到基于虛擬機的Java,再到現在諸多的腳本語言LUA、PYTHON、JS、PHP、RUBY,善于解決并發問題的過程化語言Erlang、Haskell、Scheme,等等,無一不在提高軟件開發者的工作效率。開發工具從傳統的GCC、Vi、Make到現在的IDE集成環境,再到插件式的IDE——Eclipse平臺,都有著長足的進步。而設計模式、架構模式更是在不斷地總結各種新環境下解決開發問題的經驗。

現在的軟件開發,已經從以往的對硬件性能的控制,全面轉向以提高軟件開發效率這方面。我把這些知識統稱為軟件工程知識。

2.提高開發效率是根本方法

所有的軟件工程知識,最后都是為了達到一個根本目標——提高軟件的開發效率。因為只有提高開發效率,才能真正從本質上解決軟件項目管理的難題。

開發效率的提升,會讓項目進度加快,同樣會降低開發工作的強度,進而降低BUG的出現概率。

開發效率提高之后,軟件不僅能更快地發布,而且還能更快地獲得用戶反饋進而能盡快修正開發方向。

同樣更高的開發效率能在市場上保持強大的競爭力,不再怕對手的抄襲,因為就算抄也來不及。

開發效率提高還能省出更多的開發人員和資源,用來提高項目的安全性、穩定性、運行性等非功能目標,讓軟件在另外一個層面產生競爭優勢。

然而,提高軟件開發效率絕非易事,因為軟件開發到現在為止,最主要的“瓶頸”還是開發者本身。至今還沒有哪種機器能做到“讓一行行的軟件代碼和數據快速而高質量地生產出來”。而且更要命的是,沒有一種作品像軟件那樣苛刻。比如說,一篇文章有個別用詞不當,不會導致文章不可讀;圖畫有一兩處敗筆還能算一幅圖畫;音樂演奏的一點點失誤也尚可忍受。而軟件則要求人類百分之百地去實現邏輯,這種勞動的壓力遠遠大于一般的腦力勞動。

要解決最常見的軟件項目的開發難題——需求變更,提高開發效率是根本之道,而開發效率地根本所在是人。只有讓人去掌握諸多軟件知識,讓人去關注開發效率,才能真正地應對需求變更。

以人為本,是軟件項目管理的核心。

主站蜘蛛池模板: 阿城市| 芒康县| 沙洋县| 虎林市| 泗水县| 邹平县| 萝北县| 岗巴县| 偃师市| 汪清县| 迁西县| 太白县| 贺兰县| 通城县| 奈曼旗| 汽车| 扎囊县| 雷州市| 卢湾区| 金川县| 宁国市| 横山县| 洛隆县| 叶城县| 隆尧县| 宁都县| 雅安市| 广南县| 观塘区| 乐清市| 镇巴县| 海林市| 乳山市| 咸宁市| 汉川市| 峨眉山市| 鄂托克旗| 科技| 墨脱县| 乌鲁木齐市| 东台市|