軟件工程知識體系與職業道德
軟件工程的知識體系
兩類過程
一類是開發與維護過程,包括軟件需求、軟件設計、軟件構造、軟件測試和軟件維護;
另一類是支持和組織過程,包括軟件配置管理、軟件工程管理、軟件工程過程、軟件工程工具與方法、軟件質量。
10個知識域
1.軟件需求:軟件需求基礎、軟件過程、需求獲取、需求分析、需求規格說明、需求確認、時間考慮。
2.軟件設計:軟件設計基礎、軟件設計關鍵問題、軟件結構與體系結構、軟件設計質量的分析與評價、軟件設計記法、軟件設計的策略與方法。
3.軟件構造:軟件構造基礎、管理構造、實際考慮。
4.軟件測試:軟件測試基礎、測試級別、測試技術、與測試相關的度量、測試過程。
5.軟件維護:軟件維護基礎、軟件維護關鍵問題、維護過程、維護技術。
6.軟件配置管理:軟件配置過程管理、軟件配置標識、軟件配置控制、軟件配置狀態報告、軟件配置審計、軟件發行管理和交付。
7.軟件工程管理:項目啟動和范圍定義、軟件項目計划、軟件項目實施、評審與評價、項目收尾、軟件工程度量。
8.軟件工程過程管理:過程定義、過程實施與變更、過程評估、過程和產品度量。
9.軟件工程工具和方法:軟件工具(軟件需求工具、軟件設計工具、軟件構造工具、軟件測試工具、軟件維護工工具、軟件配置管理工具、軟件質量工具和其他工具問題) 軟件工程方法(啟發式方法、形式化方法、原型方法)
10.軟件質量:軟件質量基礎、軟件質量過程、時間考慮。
軟件工程是一門交叉學科
包含:
計算機工程、計算機科學、管理學、數學、項目管理、質量科學、系統工程
軟件工程 VS 計算機科學 【區別】
軟件的基礎是計算機,而軟件工程的基礎之一是計算機科學。
計算機科學的目標是研究計算理論與提高計算機能力
軟件工程為了解決客戶的具體問題,需要利用計算機科學的研究成果,其最終目標是為客戶提供解決問題的工具和技術。
換句話說,我們不需要很nb的技術,只要能夠解決客戶的要求即可。
一些對軟件工程的誤解
(注:M 代表誤解,R 代表現實。)
管理方的誤解
管理方的誤解主要來自對管理理論與實踐的結合、項目內部管理與項目的外包管理,管理方必須懂得如何從內部管理和控制軟件項目,並將理論知識應用於實踐。
M1: 我們已經有一本關於軟件生產的標准和過程的書,這還不能讓我們學習到需要的知識嗎?
R1: 相比最新的大型主機,工作站和PC,這會使我們在做高質量軟件開發時花費更多時間。
M2: 如果我們項目進度落后了,可以加入更多的程序員來趕進度。
R2: 軟件開發的機制和手工作業不一樣。在一個延遲了的軟件項目中加入新的開發人員只會讓它延遲更多。
M3: 如果我們將軟件項目外包給第三方,我們就輕松了,讓那個公司去完成它吧。
R3: 如果組織管理方不懂得如何從內部管理和控制軟件項目,即使將項目外包也無濟於事。
客戶方的誤解
客戶方的誤解主要來自於對軟件需求重要性的不理解。客戶必須配合開發方人員,在項目的早期階段盡可能明確需求,因為隨着開發的深入,需求變更對軟件的影響會有數量級的提升。
M1: 對目標的一般陳述就足以開始編程,我們可以今后再補充細節。
R1: 前期糟糕的項目需求定義,是導致軟件失敗的主要原因。
R2: 項目需求的確在不斷變化,但變化所產生的影響是根據變化提出的時間不同而不同的。
開發人員的誤解
在早期的軟件開發中,編程被視為一種藝術形式。而開發方對於軟件工程的誤解,主要來自於是否認可以工程化的思想來開發軟件。個人編程與軟件工程最根本的不同,就在於你是否理解程序與軟件的區別,是否能遵循工程規范而不是跟着藝術靈感去編寫程序。
M1: 一旦我們編程完畢並成功運行,我們的工作就結束了。
R1: “越早開始寫代碼,我們就會花費越長的時間去完成它”。工業數據顯示,軟件開發60%-80%的精力將耗費在軟件首次提交給用戶以后。
M2: 當我的程序運行之前,我沒有辦法評估它的質量。
R2: 一個最有效的軟件質量保證機制應當在項目的正式開始啟動時——可以通過技術報告體現。
M3: 唯一可交付的工作成果是一個成功運行的項目程序。
R3: 一個可運行的程序只是軟件結構的一部分,它還包含了許多其它因素,例如項目報告等。
M4: 軟件工程將會讓我們去創建大量不必要的文檔,並且總是使我們的進度放慢。軟件工程僅僅是文檔而已。
R4: 軟件工程並不是創建文檔,而是創建質量。更好的質量減少返工的概率。更少返工會讓項目更早交付。所有的文檔都是提高團隊溝通和質量所必須的。
軟件工程職業道德和責任規范
第一點,誠信:工程師們應當對他們的雇主和顧客時刻保持誠信而無論之前是否達成了關於誠信的協議。
第二點,能力:工程師們不應該虛誇他們的能力水平。他們不應該故意接受一份超出自己能力范圍的工作。
第三點,知識產權:工程師們應該了解當地的知識產權法律法規,如專利權、版權等。他們應該小心確保雇主和客戶的知識產權受到了保護。
第四點,濫用計算機:軟件工程師不以他們的工作職責為由濫用別人的電腦。濫用計算機的范圍很廣,從極小(在雇主的機器上玩游戲)到極其嚴重的(傳播病毒)。
一名合格的軟件工程師不僅要理解和掌握軟件工程的知識體系,還應該遵循軟件工程的職業道德與責任規范,才能擁有廣闊的職業發展前景。