1、朱治平成功大學資訊工程系,提升軟體工程能力以強化軟體公司競爭力,The process of solving customers problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraintsOther definitions:IEEE: (1) the application of a systematic, disciplined, quantifiable approach to the
2、development, operation, maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).The Canadian Standards Association: The systematic activities involved in the design, implementation and testing of software to optimize its production and supp
3、ort.,What is Software Engineering?,1. 團隊組織和資源管理能力2. 軟體工程流程與管理能力3. 運用工具與技術能力,軟體工程能力三面向,1. 組織結構 - 軟體開發設有軟體管理人員 - 軟體品質保證設有管理報告管道 - 軟體介面設有專門人員負責管控 - 軟體開發有實施建構管理 - 組織設有軟體工程流程改良人員,團隊組織和資源管理能力,2. 資源、人員及訓練 - 專案經理給與專業訓練 - 軟體開發人員給與專業訓練 - 審查人員給與專業訓練,- 有一定的機制來保持對軟體工程最新技 術的認知 - 對最新軟體工程技術的適用性有一定的 評估機制 - 對最新軟體工程技術
4、有一定的機制來決 定何時將它加入開發流程中 - 有固定的機制來管理及支援新技術的導入 - 對於已不適用的技術有固定機制來識別及 取代它,3. 技術管理,1. 標準及程序 - 專案開發須遵循建立好的發展流程 - 建立的發展流程須包含使用的工具及技術 - 專案開發前需經正規審查程序 - 專案發展中需有定期審查程序 - 設有機制確保下包商遵循建立好的發展流程 - 軟體發展流程的每一步驟有稽核機制 - 有訂好的機制來評估存在的設計及程式碼之重用性,軟體工程流程及其管理能力,- 建立可適用任何專案的編碼標準 - 建立單元測試案例的製作標準 - 建立程式碼可維護性標準 - 建立組織內部審查標準 - 建立程
5、式碼審查標準 - 建立程式碼規模估計正規程序 - 建立軟體開發時程產生程序 - 建立軟體成本預估正規程序 - 建立確保軟體設計團隊了解軟體需求機制 - 建立可適用於每一適當專案的人機介面標準,2. 流程的度量 - 需蒐集軟體設計錯誤數據 - 需蒐集軟體編碼及測試錯誤數據 - 需維護規畫及實際軟體開發人員能力數據 - 需對軟體建構項目的軟體規模數據進行維護 - 需對進行單元測試的軟體模組剖析數據進行維護 - 需量測及紀錄正規審查及一般檢查的涵蓋率 - 需量測及紀錄功能測試的測試涵蓋率 - 需追蹤正規審查的修正行為至完全排除為止 - 需追蹤測試異常報告的修正行為至完全排除為止 - 需追蹤程式碼錯誤
6、的修正行為至完全排除為止,3. 資料管理與分析 - 建立管控跨計畫的流程資料庫以儲存流程資料 - 對正規審查蒐集到的資料進行分析 - 對程式碼檢查及測試所獲錯誤資料進行分析以決 定殘留錯誤的可能分佈及其特性 - 對錯誤進行分析以決定與流程相關的原因 - 有錯誤原因分析機制 - 有錯誤原因審查以決定必須的流程改變預防錯誤 - 有啟動錯誤預防行動機制 - 對每一專案進行審查效率分析 - 對主要開發流程軟體生產力進行分析,4. 流程控制 - 公司管理階層對每一專案狀況有常態審查機制 - 建立定期進行軟體工程流程評估及改良機制 - 建立機制識別及解決系統工程中影響軟體的問題 - 建立獨立機制讓專案經理
7、能注意到整合與測試問題 - 建立能確保符合軟體工程標準的機制 - 建立機制確保軟體從需求到整個設計具可追蹤性 - 建立機制用於控制軟體需求改變 - 執行審查活動 - 建立機制用於控制軟體設計的改變 - 建立機制確保軟體從細部設計到編碼具可追蹤性,- 執行程式碼檢查活動 - 建立機制用於控制程式碼的改變 - 對發展流程中軟體工具進行建構管理 - 建立機制確保適當的回歸測試常態的被執行 - 執行測試案例審查活動,建立自動的建構控制來控制及追蹤改變活動運用電腦工具協助追蹤需求到設計到編碼運用高階語言進行系統開發運用自動化測試工具進行測試運用工具量測測試涵蓋率運用工具追蹤每一功能是否被測試驗證過運用自動化工具分析軟體元件大小及其改變活動運用自動化工具分析軟體複雜度,運用工具與技術能力,- 運用自動化工具分析模組間交互參照 - 運用互動式原始程式碼除錯工具 - 對開發及維護人員提供互動式文件製作工具 - 提供電腦工具追蹤及描述軟體發展狀態 - 運用迅速雛形法設計人機介面 - 運用迅速雛形法設計軟體關鍵效能元素,