對社會的影響
軟體工程師透過創造套用系統而影響整個社會。這些套用系統為用戶創造價值但有時候也會製造災難。
套用
軟體工程師創建套用軟體給人們使用。
工程套用通過激勵開發者以新的方法解決問題來影響軟體工程.比如,消費者用的軟體強調低成本,醫用軟體強調高質量,而網際網路商業軟體重視如何能快速的發展.
•會計
•分析:數據採集,與資料庫關係密切,決策支持系統。
•航空公司訂位服務
•銀行業:自動櫃員機,支票處理,信用卡。
•商業:貿易,拍賣(EBay),逆向拍賣,條碼掃描器。
•編譯器:數據分析器,最佳化器,解釋器,連線器,載入器。
•通信:電子郵件,即時通信,網上語音服務,日曆調度及協調,聯絡經理。
•電腦圖像:動畫,特別效果為視頻或電影服務,編輯器,後期處理。
•密碼學
•資料庫
•嵌入系統:由於嵌入系統的特殊性,不論是軟體工程師或傳統的工程師都會參與編寫嵌入系統的控制系統。汽車軟體,航空電子學軟體,供暖,通風和空調(HVAC)軟體,醫療設備軟體,電話軟體,遙測軟體.
•工程:所有傳統工程分支都已經大量採用軟體來協助日常工作。工程師用電子表格比用計數機更多,而對於其產品的設計,例如路橋和大型電力設備等,電腦輔助設計更是不可少,並配合上特別設計的軟體來進行設計,分析及模擬等各種活動。這些計畫與軟體在多方面有相似之處,除了因為工作的結果包含了電子檔案以外,計畫亦經歷了分析/設計/實踐和測試四個階段。電腦輔助設計(CAD),電子設計自動化(EDA),數值分析,模擬。
•檔案:FTP,檔案分享。
•金融:債券市場,期貨市場,股票市場。
•遊戲:撲克,多人參與冒險遊戲,視頻遊戲。
•資料庫系統,支持幾乎所有領域,實驗室資訊系統,實驗室數據的管理,管理資訊系統,財務及人事數據的管理。
•物流業:供應鏈管理。
•製造業,電腦輔助生產(CAM),分散式控制系統(DCS)。
•音樂,音響效果,音樂合成。
•網路和網際網路,域名系統(DNS),協定,路由器。
•辦公包,文字處理,電子表,演示。
•作業系統,嵌入式,圖形,多任務處理,實時。
•機器人
•信號分析,圖象處理,視覺信息的編碼解碼,信號處理,信號的編碼解碼,語音處理,文字識別,筆跡辨認。
•模擬,支持幾乎所有領域工程,軟體模擬可以比物理工程模型更廉價地創建且更靈活地改變。
•科學:基因組學。
•交通管制系統,航空交通管制系統,海上交通管制系統,陸上交通管制系統。
•訓練系統,鑽井,模擬系統,測試。
•可視化,支持幾乎所有領域,體系架構,工程,科學。
•投票系統
•網際網路,瀏覽器,伺服器。
災難
軟體曾是許多著名災害的重要原因。
•阿麗亞娜-5運載火箭
•火星探測器
•丹佛國際機場
•Therac-25- 因軟體設計時的缺陷造成六起醫療事故的一种放射治療機器。
技術和實踐
有技術的軟體工程師運用技術及不同範疇的實踐來改進生產力及質素。從而編程更快更容易。下列的技術和方法是在生產中天天被使用到的。
軟體工程主題
許多技術和做法(幾乎所有)是軟體工程所特有的,儘管其中很多與計算機科學是共同的。
程式設計語言
•程式語言列表
•腳本語言
•COBOL
•C
•C++
•C#
•Fortran
•Java
•Perl
•PHP
•Python
•Tcl
•Visual Basic
編程范型,基於程式語言技術
•面向方面的程式設計(面向方面的編程)
•功能分解
•面向對象程式設計(面向對象的編程)
•Post-object programming
•結構化程式設計
資料庫[編輯]
•層次結構式資料庫
•對象資料庫
•關係資料庫
•SQL/XML
•SQL
圖形用戶界面[編輯]程式設計工具
•配置管理和源碼管理
•並行版本系統
•編譯
•修訂控制系統
•編輯器
•程式編輯器
•文字編輯器
•文字處理器
庫[編輯]
•軟體部件
設計語言[編輯]
•統一建模語言
模式,一些通用的編程以及項目管理的技術
•反模式
•設計模式
軟體開發過程和方法 (計算機科學)
•敏捷軟體開發
•敏捷軟體開發
•Crystal
•極限編程
•精益軟體開發
•Scrum (in management)
•重量級
•Cleanroom
•ISO 12207,軟體生命周期過程
•ISO 9000andISO 9001
•RUP
•過程評價框架
•CMMandCMMI
•ISO 15504(SPICE)
系統平台[編輯]
平台結合了計算機的硬體和作業系統。平台變得越來越強大和廉價的同時,操作和工具被更廣泛地使用。
•BREW
•克雷超級計算機
•DEC微型計算機
•IBM大型機
•LinuxPC
•Mac OS和Mac OS XPC
•Microsoft .NET網路軟體平台
•Palm OSPDA
•Sun工作站
•WindowsPC(Wintel)
其他套用[編輯]
•通信
•結對編程
•代碼重構
•Software inspections/代碼審查
•代碼復用
•系統統整(Systems integration)
•團隊合作
•軟體驗證及確認
其他工具[編輯]
•決策表
•軟體特色
•Story
•用例
計算機科學主題
•排序算法
•編譯器理論
數學主題
離散數學(Discrete mathematics)是軟體工程學的重要基石。
•集合
其他
•統計學