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