互联网时代,以众包分享为核心信息在时间和空间方面实现了质的跨越,各种新业务、新计算的模式兴起,软件呈现出线上线下紧密融合、规模大并发性高、周期短更新快、开放普适环境等特点。软件从业人员面对的主要挑战有:①如何实现以用户为导向的复杂多变软件需求;②如何构造具有柔性可变特征的软件形态;③如何完成以快速敏捷为特征的软件开发过程;④如何适应以普适移动为特点的软件开发及应用环境。
针对这些挑战,本书从软件构造应用生命周期的过程维度,软件制品演化的形态维度,体现互联网快速、敏捷、协同特点的管理维度等出发,建立了互联网时代的软件工程方法框架。具体内容如下。
(1)软件过程维度。其覆盖了从业务架构、软件分析与设计、软件架构及开发,测试及部署、运维管理,以及项目管理等过程。体现为业务和数据驱动结合的需求全程获取以及软件的持续提交和优化,是当前软件领域关注的方向。
(2)软件形态维度。该方法框架是以业务流程为核心的服务动态聚合和自主适应。体现为流程而不是功能成为业务构件,服务而不是对象成为IT构件,服务动态交互而不是功能组件配置成为软件构造的主流。因此,微服务和容器的结合成为开发人员新宠。
(3)项目管理维度。该方法框架的重点是群体协同开发,体现为提交的反复性、工作的协同性、过程推进的敏捷性、基于敏捷和增量迭代的项目管理成为核心特征。因此,Scrum DevOps结合的软件项目管理模式逐渐成为主流。
考虑到三个维度交织在一起,难以分离却互相影响。面向从事业务咨询、软件开发、系统运维等人员的需求,本书以业务模型驱动的服务系统设计及优化为主线展开,覆盖了信息建模、软件设计、系统运维等领域,涉及方法框架、业务建模、系统架构、实现部署、软件验证、项目管理等内容。
本书在方法框架方面,从定制开发、套件实施、业务驱动架构等三种软件开发模式出发,结合互联网环境下的软件架构演化历程,阐述了软件全生命周期的过程,以及相关的工具支撑相关角色;在业务建模方面,重点阐述了业务架构和建模原则,并以流程为核心,总结了基于任务、数据、事件、状态等四种建模方法,进而阐述了面向工作流执行的流程分析和优化方法;在系统架构方面,基于模型驱动架构,讨论了界面、流程、数据等三种要素驱动的软件架构方法;在系统实现及部署方面,重点阐述了软件前端开发技术栈,以及基于容器的持续集成过程和持续部署;在软件验证方面,分别从正向的Web软件测试和反向的日志数据驱动模型生成等不同途径开展,并重点阐述了数据驱动的系统构造应用途径;在项目管理方面,阐述了项目管理过程及软件工程管理的重要知识域,讨论了互联网下的众包开发及趋势。
在本书即将出版之际,衷心感谢各位参与编写的老师和同学。其中沈备军撰写了第11章及12章,以及第1章第3节的部分内容;任锐撰写了第7章及第8章;杜佳薇、黄顺婷同学参与了较多章节内容的编写以及相关案例的建模;还有于晗、叶聪聪、黎哲明、路丽菲、孙秉义、孙晏、高策、张坚鑫、李桐宇、孙浩然等同学为本书的编写提供了多种支持和帮助,在此一并表示感谢。
第1章 绪论
1.1 互联网时代的软件系统
1.1.1 互联网时代的软件特点
1.1.2 互联网时代的软件挑战
1.2 互联网时代的软件工程思想
1.2.1 覆盖全生命周期动态获取的软件需求
1.2.2 基于业务流程交互集成的软件形态
1.2.3 基于敏捷协同和增量迭代的软件过程
1.2.4 以用户体验为中心持续演进的软件验证
1.3 互联网时代的软件工程方法框架
1.3.1 模型驱动业务建模及转换的软件过程维度
1.3.2 基于服务动态交互及聚合的软件形态维度
1.3.3 敏捷开发与运维一体化的项目管理维度
第2章 互联网时代的软件开发模式
2.1 软件开发模式的演化
2.1.1 基于定制开发的软件构造模式
2.1.2 基于套件实施的软件实施模式
2.1.3 基于模型驱动架构的软件配置模式
2.2 软件架构的演化
2.2.1 软件架构的演化阶段
2.2.2 基于MVC模式的互联网软件架构
2.2.3 以业务为中心的微服务架构
2.3 基于流程的软件开发实施过程
2.3.1 软件的开发实施过程
2.3.2 软件开发相关角色及职责
第3章 面向复杂软件构造的业务架构
3.1 面向复杂软件构造的业务模型
3.1.1 业务模型概述
3.1.2 业务模型的作用和意义
3.1.3 业务建模与软件建模
3.2 业务架构方法
3.2.1 业务架构及要素
3.2.2 业务架构原则
3.2.3 业务建模方法及发展
3.3 典型的企业业务框架
3.3.1 Zachman框架
3.3.2 CIM-OSA框架
3.3.3 ARIS框架
3.3.4 PERA框架
3.3.5 DEM方法
3.3.6 业务框架比较
第4章 业务流程建模方法
4.1 基于任务的流程建模方法
4.1.1 基于任务的建模
4.1.2 任务的执行控制
4.2 基于数据的流程建模方法
4.2.1 数据分类及建模
4.2.2 数据流图
4.2.3 数据流图与业务流程图比较
4.3 基于事件的流程建模方法
4.3.1 事件过程链基础
4.3.2 基于事件过程链的流程建模
4.3.3 基于扩展事件过程链的流程建模
4.4 基于状态的流程建模方法
4.4.1 离散事件动态系统
4.4.2 Petri网理论
4.4.3 基于Petri网的流程建模方法
第5章 业务流程模型的分析及执行
5.1 面向流程执行的工作流建模
5.1.1 工作流建模过程
5.1.2 流程定义模板
5.1.3 资源分类及标注
……
第6章 业务模型驱动的软件配置实现
第7章 软件前端开发技术
第8章 软件系统的持续集成与部署
第9章 软件的Web测试
第10章 数据驱动的软件持续优化
第11章 软件项目管理
第12章 基于互联网群体智能的软件开发