《互聯(lián)網(wǎng)時代的軟件工程》以企業(yè)級軟件系統(tǒng)的分析、設計和運維為主線,從軟件構造應用生命周期的過程維度,軟件制品演化的形態(tài)維度,體現(xiàn)互聯(lián)網(wǎng)快速、敏捷、協(xié)同特點的管理維度等三個維度,完整描述了互聯(lián)網(wǎng)下的軟件信息建模、設計、部署運維相關的理論方法與技術等。該書內(nèi)容全面、突出重點,注重實踐性和應用性。
《互聯(lián)網(wǎng)時代的軟件工程》是高等院校計算機專業(yè)、信息管理類專業(yè)的教材,適合于計算機類和信息管理類的高年級本科生和研究生學習,也可作為業(yè)務咨詢、軟件開發(fā)、系統(tǒng)運維等從業(yè)人員的培訓教材或參考指導書。
互聯(lián)網(wǎng)時代,以眾包分享為核心信息在時間和空間方面實現(xiàn)了質(zhì)的跨越,各種新業(yè)務、新計算的模式興起,軟件呈現(xiàn)出線上線下緊密融合、規(guī)模大并發(fā)性高、周期短更新快、開放普適環(huán)境等特點。軟件從業(yè)人員面對的主要挑戰(zhàn)有:①如何實現(xiàn)以用戶為導向的復雜多變軟件需求;②如何構造具有柔性可變特征的軟件形態(tài);③如何完成以快速敏捷為特征的軟件開發(fā)過程;④如何適應以普適移動為特點的軟件開發(fā)及應用環(huán)境。
針對這些挑戰(zhàn),本書從軟件構造應用生命周期的過程維度,軟件制品演化的形態(tài)維度,體現(xiàn)互聯(lián)網(wǎng)快速、敏捷、協(xié)同特點的管理維度等出發(fā),建立了互聯(lián)網(wǎng)時代的軟件工程方法框架。具體內(nèi)容如下。
。1)軟件過程維度。其覆蓋了從業(yè)務架構、軟件分析與設計、軟件架構及開發(fā),測試及部署、運維管理,以及項目管理等過程。體現(xiàn)為業(yè)務和數(shù)據(jù)驅(qū)動結合的需求全程獲取以及軟件的持續(xù)提交和優(yōu)化,是當前軟件領域關注的方向。
。2)軟件形態(tài)維度。該方法框架是以業(yè)務流程為核心的服務動態(tài)聚合和自主適應。體現(xiàn)為流程而不是功能成為業(yè)務構件,服務而不是對象成為IT構件,服務動態(tài)交互而不是功能組件配置成為軟件構造的主流。因此,微服務和容器的結合成為開發(fā)人員新寵。
(3)項目管理維度。該方法框架的重點是群體協(xié)同開發(fā),體現(xiàn)為提交的反復性、工作的協(xié)同性、過程推進的敏捷性、基于敏捷和增量迭代的項目管理成為核心特征。因此,Scrum DevOps結合的軟件項目管理模式逐漸成為主流。
考慮到三個維度交織在一起,難以分離卻互相影響。面向從事業(yè)務咨詢、軟件開發(fā)、系統(tǒng)運維等人員的需求,本書以業(yè)務模型驅(qū)動的服務系統(tǒng)設計及優(yōu)化為主線展開,覆蓋了信息建模、軟件設計、系統(tǒng)運維等領域,涉及方法框架、業(yè)務建模、系統(tǒng)架構、實現(xiàn)部署、軟件驗證、項目管理等內(nèi)容。
本書在方法框架方面,從定制開發(fā)、套件實施、業(yè)務驅(qū)動架構等三種軟件開發(fā)模式出發(fā),結合互聯(lián)網(wǎng)環(huán)境下的軟件架構演化歷程,闡述了軟件全生命周期的過程,以及相關的工具支撐相關角色;在業(yè)務建模方面,重點闡述了業(yè)務架構和建模原則,并以流程為核心,總結了基于任務、數(shù)據(jù)、事件、狀態(tài)等四種建模方法,進而闡述了面向工作流執(zhí)行的流程分析和優(yōu)化方法;在系統(tǒng)架構方面,基于模型驅(qū)動架構,討論了界面、流程、數(shù)據(jù)等三種要素驅(qū)動的軟件架構方法;在系統(tǒng)實現(xiàn)及部署方面,重點闡述了軟件前端開發(fā)技術棧,以及基于容器的持續(xù)集成過程和持續(xù)部署;在軟件驗證方面,分別從正向的Web軟件測試和反向的日志數(shù)據(jù)驅(qū)動模型生成等不同途徑開展,并重點闡述了數(shù)據(jù)驅(qū)動的系統(tǒng)構造應用途徑;在項目管理方面,闡述了項目管理過程及軟件工程管理的重要知識域,討論了互聯(lián)網(wǎng)下的眾包開發(fā)及趨勢。
在本書即將出版之際,衷心感謝各位參與編寫的老師和同學。其中沈備軍撰寫了第11章及12章,以及第1章第3節(jié)的部分內(nèi)容;任銳撰寫了第7章及第8章;杜佳薇、黃順婷同學參與了較多章節(jié)內(nèi)容的編寫以及相關案例的建模;還有于晗、葉聰聰、黎哲明、路麗菲、孫秉義、孫晏、高策、張堅鑫、李桐宇、孫浩然等同學為本書的編寫提供了多種支持和幫助,在此一并表示感謝。
第1章 緒論
1.1 互聯(lián)網(wǎng)時代的軟件系統(tǒng)
1.1.1 互聯(lián)網(wǎng)時代的軟件特點
1.1.2 互聯(lián)網(wǎng)時代的軟件挑戰(zhàn)
1.2 互聯(lián)網(wǎng)時代的軟件工程思想
1.2.1 覆蓋全生命周期動態(tài)獲取的軟件需求
1.2.2 基于業(yè)務流程交互集成的軟件形態(tài)
1.2.3 基于敏捷協(xié)同和增量迭代的軟件過程
1.2.4 以用戶體驗為中心持續(xù)演進的軟件驗證
1.3 互聯(lián)網(wǎng)時代的軟件工程方法框架
1.3.1 模型驅(qū)動業(yè)務建模及轉(zhuǎn)換的軟件過程維度
1.3.2 基于服務動態(tài)交互及聚合的軟件形態(tài)維度
1.3.3 敏捷開發(fā)與運維一體化的項目管理維度
第2章 互聯(lián)網(wǎng)時代的軟件開發(fā)模式
2.1 軟件開發(fā)模式的演化
2.1.1 基于定制開發(fā)的軟件構造模式
2.1.2 基于套件實施的軟件實施模式
2.1.3 基于模型驅(qū)動架構的軟件配置模式
2.2 軟件架構的演化
2.2.1 軟件架構的演化階段
2.2.2 基于MVC模式的互聯(lián)網(wǎng)軟件架構
2.2.3 以業(yè)務為中心的微服務架構
2.3 基于流程的軟件開發(fā)實施過程
2.3.1 軟件的開發(fā)實施過程
2.3.2 軟件開發(fā)相關角色及職責
第3章 面向復雜軟件構造的業(yè)務架構
3.1 面向復雜軟件構造的業(yè)務模型
3.1.1 業(yè)務模型概述
3.1.2 業(yè)務模型的作用和意義
3.1.3 業(yè)務建模與軟件建模
3.2 業(yè)務架構方法
3.2.1 業(yè)務架構及要素
3.2.2 業(yè)務架構原則
3.2.3 業(yè)務建模方法及發(fā)展
3.3 典型的企業(yè)業(yè)務框架
3.3.1 Zachman框架
3.3.2 CIM-OSA框架
3.3.3 ARIS框架
3.3.4 PERA框架
3.3.5 DEM方法
3.3.6 業(yè)務框架比較
第4章 業(yè)務流程建模方法
4.1 基于任務的流程建模方法
4.1.1 基于任務的建模
4.1.2 任務的執(zhí)行控制
4.2 基于數(shù)據(jù)的流程建模方法
4.2.1 數(shù)據(jù)分類及建模
4.2.2 數(shù)據(jù)流圖
4.2.3 數(shù)據(jù)流圖與業(yè)務流程圖比較
4.3 基于事件的流程建模方法
4.3.1 事件過程鏈基礎
4.3.2 基于事件過程鏈的流程建模
4.3.3 基于擴展事件過程鏈的流程建模
4.4 基于狀態(tài)的流程建模方法
4.4.1 離散事件動態(tài)系統(tǒng)
4.4.2 Petri網(wǎng)理論
4.4.3 基于Petri網(wǎng)的流程建模方法
第5章 業(yè)務流程模型的分析及執(zhí)行
5.1 面向流程執(zhí)行的工作流建模
5.1.1 工作流建模過程
5.1.2 流程定義模板
5.1.3 資源分類及標注
……
第6章 業(yè)務模型驅(qū)動的軟件配置實現(xiàn)
第7章 軟件前端開發(fā)技術
第8章 軟件系統(tǒng)的持續(xù)集成與部署
第9章 軟件的Web測試
第10章 數(shù)據(jù)驅(qū)動的軟件持續(xù)優(yōu)化
第11章 軟件項目管理
第12章 基于互聯(lián)網(wǎng)群體智能的軟件開發(fā)