智能軟件工程
朱少民、陶伊達
商品描述
作者簡介
目錄大綱
目錄
案例文檔等
電子材料
第1章什麼是軟件工程
1.1軟件工程誕生
1.1.1軟件工程的定義
1.1.2從三個視角看軟件工程
1.1.3軟件工程方法學
1.1.4軟件工程管理學
1.1.5軟件工程要素
1.1.6軟件工程的基本思想
1.1.7軟件工程知識體系SWEBOK
1.2軟件工程1.0
1.2.1瀑布模型的不足
1.2.2V模型詮釋軟件過程
1.3軟件工程2.0
1.3.1敏捷開發歷史
1.3.2敏捷開發原則
1.3.3極限編程
1.3.4行為驅動開發
1.3.5Scrum開發框架
1.3.6軟件即服務
1.4軟件工程3.0
1.4.1軟件工程3.0的特征
1.4.2軟件工程三個時代的比較
小結
思考題
參考文獻
第2章過去我們是如何開發軟件的
2.1軟件研發的三種基本思維
2.1.1產品思維
2.1.2項目思維
2.1.3工程思維
2.2軟件工程中的主要活動
2.2.1產品定義
2.2.2需求定義
2.2.3設計
2.2.4編程
2.2.5測試
2.2.6部署與運維
2.3開源軟件運動
2.4精益開發
2.4.1看板
2.4.2精益軟件開發實踐
2.5開發與運維的融合: DevOps
2.5.1DevOps的概念及其工具鏈
2.5.2經典案例: 鳳凰項目
思考題
參考文獻
第3章如何定義好的軟件需求
3.1軟件需求工程概要
3.2軟件有哪些需求
3.2.1業務需求
3.2.2用戶角色需求
3.2.3系統的功能需求
3.2.4系統非功能性需求
3.2.5其他需求類型
3.3真實需求的獲取
3.3.1需求獲取的過程
3.3.2傳統的需求獲取方法
3.3.3針對新產品的其他方法
3.3.4針對已有產品的其他方法
3.3.5智能需求獲取方法
3.4智能需求分析與定義
3.4.1去偽存真
3.4.2結構化分析方法
3.4.3面向對象的分析方法
3.4.4面向敏捷的分析方法
3.4.5場景分析方法
3.5需求評審
3.5.1如何確定傳統軟件需求的評審標準
3.5.2如何評審敏捷需求——用戶故事
3.5.3智能需求評審
3.6需求跟蹤與變更管理
3.6.1需求跟蹤
3.6.2需求變更管理
3.7業務架構
3.7.1業務架構的價值與構建
3.7.2業務架構的框架與工具
小結
思考題
參考文獻
第4章如何設計軟件
4.1軟件設計的基本原則
4.1.1抽象與精化
4.1.2模塊化
4.1.3信息隱藏
4.1.4關註點分離
4.1.5面向對象設計
4.1.6智能問答: 讓設計原則不再高冷
4.2軟件系統架構設計
4.2.1單體架構
4.2.2分布式架構
4.2.3面向服務的架構
4.2.4微服務架構
4.2.5無服務架構
4.3微服務架構設計
4.3.1如何定義“服務”
4.3.2如何實現服務間的溝通
4.3.3REST與消息機制
4.3.4AI輔助的軟件架構設計
4.3.5最佳實踐
4.4接口設計
4.4.1設計維度
4.4.2設計原則
4.4.3案例研究: 使用Cursor輔助的接口設計
4.5UI設計
4.5.1視覺
4.5.2交互
4.5.3原型
4.5.4智能化工具
4.6數據設計
4.6.1數據組織
4.6.2數據存儲
4.6.3AI輔助的數據設計
小結
思考題
參考文獻
第5章如何高效地進行軟件開發
5.1AI輔助編程
5.1.1代碼實現
5.1.2代碼理解
5.1.3代碼調試
5.1.4代碼可維護性
5.2軟件構建
5.2.1編譯和構建
5.2.2構建系統類型
5.2.3軟件包管理
5.2.4依賴管理
5.2.5最佳實踐
5.2.6Dependabot與智能構建
5.3軟件文檔
5.3.1讀者類型
5.3.2文檔類型
5.3.3文檔的重要性
5.3.4編寫高質量文檔的挑戰
5.3.5最佳實踐: 文檔即代碼
5.3.6AI文檔生成
5.4代碼審查
5.4.1關鍵要素
5.4.2工作流程
5.4.3自動化與智能化
小結
思考題
參考文獻
第6章如何保障軟件質量
6.1深入理解軟件質量
6.1.1什麼是質量
6.1.2軟件質量屬性
6.1.3軟件缺陷: 質量的對立面
6.2軟件質量工程體系
6.2.1傳統的質量管理體系
6.2.2構建軟件質量工程體系
6.2.3根據上下文定制SQES
6.3軟件測試目標、原則和類型
6.3.1軟件測試目標
6.3.2軟件測試的分類
6.3.3測試的原則
6.4智能測試分析與計劃
6.4.1LLM驅動測試需求分析
6.4.2生成測試計劃書
6.5智能測試設計與開發
6.5.1智能測試方法概述
6.5.2基於測試需求文檔生成測試用例
6.5.3基於業務流程圖生成E2E測試用例
6.5.4測試用例的復審
6.5.5生成功能測試腳本
6.5.6生成API測試腳本
6.6LLM驅動非功能性測試
6.6.1LLM驅動性能測試
6.6.2LLM驅動安全性測試
6.7智能測試評估
6.7.1智能缺陷定位
6.7.2評估測試覆蓋率
6.7.3測試報告生成
小結
思考題
參考文獻
第7章如何實現持續集成與持續交付
7.1持續交付
7.1.1軟件交付概述
7.1.2軟件交付的反模式
7.1.3持續交付的理念
7.2持續集成
7.2.1過程與方法
7.2.2最佳實踐
7.2.3智能化持續集成
7.3持續測試
7.3.1測試的分類
7.3.2與持續交付集成的持續測試策略
7.4部署與發布
7.4.1自動化部署
7.4.2低風險發布
7.5部署流水線
7.5.1執行流程解析
7.5.2定制的部署流水線
7.5.3部署流水線平臺與工具鏈
7.6雲原生的CI/CD
7.6.1“雲原生”概念
7.6.2搭建雲原生的CI/CD工作流
7.6.3智能雲
7.7智能化應用的CI/CD
7.7.1機器學習模型
7.7.2基於LLM的軟件應用
小結
思考題
參考文獻
第8章下一個版本如何開始
8.1軟件維護
8.1.1軟件維護的類型
8.1.2可維護性指標
8.1.3軟件腐化
8.1.4代碼重構
8.1.5智能維護和升級
8.2軟件演化
8.2.1遺留系統
8.2.2風險與挑戰
8.2.3遺留系統管理策略
8.2.4現代化與再工程
8.2.5架構重構
8.2.6棄用
8.3向智能化軟件演進
8.3.1任務智能化
8.3.2功能智能化
8.3.3過程智能化
小結
思考題
參考文獻
第9章如何更好地支持系統運維
9.1基礎設施維護與驗證
9.1.1基礎設施即代碼
9.1.2對基礎設施進行驗證
9.1.3系統運維工具
9.2A/B測試
9.2.1A/B測試設計
9.2.2A/B測試平臺與測試執行
9.2.3關於用戶體驗度量
9.3監控告警系統
9.3.1日誌分析及Elastic Stack的使用
9.3.2調用鏈分析及Skywalking的使用
9.3.3指標監控及Prometheus的使用
9.3.4監控系統解決方案
9.4安全性監控
9.4.1安全監控與審計框架
9.4.2智能安全監控
9.5智能運維
9.5.1從自動化運維到智能運維
9.5.2智能運維的典型場景
小結
思考題
參考文獻
第10章智能化浪潮下軟件工程的未來
10.1現狀
10.1.1需求
10.1.2設計
10.1.3實現
10.1.4質量管理
10.1.5維護與演化
10.2挑戰
10.2.1大模型在軟件工程任務上的局限性
10.2.2計算資源與基礎設施
10.3未來
10.3.1自然的人機交互
10.3.2端到端工作流
10.3.3隔離環境
10.3.4自學習與自適應
小結
思考題
參考文獻
附錄實驗