本书从CDIO工程理念出发,围绕构思(Conceive)、设计(Design)、实现(Implement)、运作(Operate)四个方面展开阐述,以一种崭新的视角展现软件设计和体系结构的内容,尽可能做到覆盖面广和内容新颖,在保持经典内容的基础上,力求提供来自业界最新的内容和进展。 构思(C)给出一个软件要做什么的总体思路;设计(D)给出一个软件怎么做的方法和手段;实现(I)给出一个软件实际做出来的实现技术和路线;运作(O)给出一个软件如何成功运作的模式和方法。CDIO各个部分相对独立但又互有联系,能够让读者以全面的、主动的和实用的方式学习和掌握相关内容,并着重强调工程实践训练和综合能力培养。 本书可作为计算机相关专业本科生和研究生的教材,同时也是软件工程领域专业人员的优秀参考读物。
样章试读
目录
- 第一篇 构思篇(Conceive)
第1章 软件环境
1.1 软件与软件分类
1.1.1 软件的特点
1.1.2 软件的分类
1.2 程序设计语言与开发环境
1.2.1 程序设计语言
1.2.2 开发环境
1.3 数据库环境
1.3.1 关系数据库
1.3.2 面向对象数据库
1.3.3 非结构化数据库
1.4 平台环境
1.4.1 集成平台
1.4.2 虚拟化平台
1.4.3 云平台
1.5 软件工程环境
1.5.1 软件过程模型
1.5.2 软件工程经济学
1.5.3 软件过程管理
1.5.4 软件维护及演化
1.6 习题与思考题
第2章 软件需求
2.1 软件需求与需求工程概述
2.1.1 需求的定义
2.1.2 需求工程概述
2.2 需求获取
2.2.1 引言
2.2.2 需求获取的实质
2.2.3 常用方法
2.3 需求建模与分析
2.3.1 面向对象建模
2.3.2 过程建模
2.3.3 数据建模
2.4 需求规约与验证
2.4.1 需求规约
2.4.2 需求验证
2.5 需求管理
2.6 习题与思考题
第3章 软件体系结构
3.1 “4+1”视图模型
3.1.1 逻辑视图
3.1.2 开发视图
3.1.3 进程视图
3.1.4 物理视图
3.1.5 场景
3.2 软件体系结构的定义
3.3 软件体系结构的核心模型
3.4 软件体系结构描述方法
3.5 软件体系结构描述语言(ADL)
3.6 软件体系结构设计原则
3.7 基于体系结构的软件开发过程
3.8 软件体系结构的风格
3.8.1 管道-过滤器风格
3.8.2 分层风格
3.8.3 客户/服务器风格
3.8.4 浏览器/服务器风格
3.8.5 事件驱动风格
3.9 体系结构模式
3.9.1 从混沌到结构
3.9.2 分布式系统
3.9.3 交互系统
3.9.4 适应性系统
3.10 习题与思考题
第二篇 设计篇(Design)
第4章 软件设计
4.1 设计目标及要素
4.2 设计原则
4.2.1 抽象化
4.2.2 模块化
4.2.3 信息隐藏
4.2.4 模块的功能独立性
4.2.5 降低模块间耦合度的方法
4.3 设计规约
4.4 设计方法
4.4.1 结构化设计方法
4.4.2 面向对象的设计
4.5 习题与思考题
第5章 统一建模语言UML
5.1 UML核心概念
5.1.1 元素
5.1.2 具名元素
5.1.3 命名空间
5.1.4 可打包元素
5.1.5 可重定义元素
5.1.6 分类器
5.1.7 特性
5.1.8 注解
5.1.9 关系
5.2 UML关键字与版型
5.2.1 关键字
5.2.2 版型
5.3 UML图示
5.3.1 类图
5.3.2 对象图
5.3.3 包图
5.3.4 组件图
5.3.5 合成结构图
5.3.6 部署图
5.3.7 用例图
5.3.8 活动图
5.3.9 状态机图
5.3.10 交互图
5.3.11 顺序图
5.3.12 通信图
5.3.13 计时图
5.4 习题与思考题
第6章 设计模式
6.1 模式思维方法
6.1.1 模式的概念
6.1.2 模式的重要性
6.1.3 软件设计模式的分类
6.1.4 模式描述模板
6.1.5 模式思维的步骤
6.2 设计模式概述
6.2.1 创建型模式
6.2.2 结构型模式
6.2.3 行为型模式
6.3 习题与思考题
第7章 软件复用
7.1 概述
7.1.1 概念
7.1.2 软件复用的发展
7.1.3 可复用的软件制品
7.1.4 软件复用的分类
7.1.5 软件复用的困难与建议
7.1.6 软件复用的宗旨
7.2 分析复用
7.2.1 分析过程复用
7.2.2 分析制品复用
7.3 设计复用
7.3.1 设计过程复用
7.3.2 基于构件的设计复用
7.4 代码复用
7.5 测试复用
7.5.1 面向复用的测试用例设计过程
7.5.2 复用测试用例描述要素
7.6 习题与思考题
第8章 软件界面设计
8.1 软件界面设计概述
8.1.1 软件界面分析
8.1.2 软件界面开发过程
8.1.3 软件界面设计基本原则
8.2 人机界面基础知识
8.2.1 认知心理学
8.2.2 软件人机工程学
8.2.3 艺术设计
8.3 界面的定量分析
8.3.1 GOMS击键层模型
8.3.2 界面效率的测量
8.3.3 Fitts律和Hick律
8.4 人本界面
8.4.1 认知和关注点
8.4.2 界面模式与单调性
8.4.3 统一性和元动作
8.4.4 易用性和帮助机制
8.5 移动设备界面设计
8.6 习题与思考题
第三篇 实现篇(Implement)
第9章 Web开发技术
9.1 Web开发概述
9.1.1 运作原理及概念
9.1.2 开发语言及技术概述
9.1.3 Web应用的特点
9.2 Web服务器
9.2.1 Microsoft IIS
9.2.2 Apache
9.2.3 Tomcat
9.2.4 J2EE服务器
9.2.5 Nginx
9.3 服务器端开发技术及框架
9.3.1 Java技术
9.3.2 .Net技术
9.3.3 PHP技术
9.3.4 Ruby技术
9.3.5 MVC框架
9.3.6 Spring框架
9.4 Web前端开发技术
9.4.1 HTML
9.4.2 CSS层叠样式表
9.4.3 JavaScript技术
9.4.4 AJAX技术
9.4.5 Silverlight技术
9.5 习题与思考题
第10章 数据库开发技术
10.1 SQL语言
10.2 数据库和表
10.2.1 创建及删除数据库
10.2.2 创建表
10.2.3 修改表
10.2.4 删除表
10.3 索引
10.3.1 创建索引
10.3.2 删除索引
10.4 查询
10.4.1 SELECT语句
10.4.2 多表查询
10.4.3 子查询
10.4.4 集合运算
10.4.5 聚集函数
10.5 数据维护
10.5.1 插入
10.5.2 更新
10.5.3 删除
10.6 视图
10.6.1 创建视图
10.6.2 删除视图
10.7 游标
10.7.1 声明游标
10.7.2 打开和关闭游标
10.7.3 删除游标
10.7.4 应用游标
10.8 存储过程
10.8.1 存储过程创建与修改
10.8.2 执行存储过程
10.8.3 删除存储过程
10.9 触发器
10.9.1 创建触发器
10.9.2 删除触发器
10.10 习题与思考题
第11章 软件成本估算技术
11.1 软件成本估算的步骤
11.1.1 建立目标
11.1.2 计划所需的数据与资源
11.1.3 准确说明软件需求
11.1.4 尽可能详细地做出估算
11.1.5 采用多个独立的方法与资源
11.1.6 比较与迭代估算
11.1.7 跟踪与变更
11.2 软件成本估算的方法
11.2.1 算法模型
11.2.2 专家判断
11.2.3 通过推理来进行估算
11.2.4 帕金森估算
11.2.5 价格策略估算
11.2.6 自顶向下估算
11.2.7 自底向上估算
11.2.8 各方法的总结比较
11.3 基本COCOMO模型软件成本估算
11.3.1 模型定义与假设
11.3.2 软件开发模式分类
11.3.3 组织型基本COCOMO模型
11.3.4 其他模式COCOMO模型
11.4 习题与思考题
第12章 软件架构技术
12.1 构件技术
12.1.1 软件构件技术基础
12.1.2 基于构件的软件工程
12.2 软件架构综述
12.2.1 企业架构
12.2.2 业务架构
12.2.3 应用架构
12.2.4 信息架构
12.3 中间件
12.3.1 中间件的目标及地位
12.3.2 中间件的基本类型
12.3.3 常见中间件技术介绍
12.4 习题与思考题
第13章 软件集成技术
13.1 软件合成与软件集成
13.2 软件集成模式
13.2.1 集成适配器模式
13.2.2 集成消息器模式
13.2.3 集成正面模式
13.2.4 集成媒介器模式
13.3 企业应用集成
13.3.1 EAI的产生和意义
13.3.2 企业应用系统的分类
13.3.3 企业应用集成的基本原则
13.4 数据集成
13.4.1 数据集成的基本概念
13.4.2 参考数据模型
13.4.3 数据集成的元数据管理
13.5 基于消息服务的集成框架
13.5.1 消息传输模型
13.5.2 消息代理任务
13.5.3 消息代理拓扑结构
13.5.4 消息代理产品的选择
13.5.5 使用J2EE的企业消息传递
13.6 过程集成
13.6.1 工作流和工作流管理系统
13.6.2 跨组织过程集成
13.7 习题与思考题
第14章 软件测试技术
14.1 软件测试概述
14.1.1 软件测试技术的发展
14.1.2 软件开发与软件测试
14.1.3 软件测试基本原理与原则
14.1.4 软件测试模型
14.1.5 测试心理学
14.1.6 测试覆盖
14.2 软件测试管理
14.2.1 质量改进模型PDCA
14.2.2 测试需求
14.2.3 测试计划
14.2.4 测试设计及测试用例
14.2.5 测试执行
14.2.6 测试记录与跟踪
14.2.7 回归测试
14.2.8 总结与报告
14.3 软件测试技术
14.3.1 黑盒测试与白盒测试
14.3.2 手工测试与自动化测试
14.3.3 单元测试
14.3.4 数据库性能检查
14.3.5 压力测试
14.3.6 安全性测试
14.3.7 安装测试
14.3.8 环境测试
14.4 测试工具
14.5 习题与思考题
第四篇 运作篇(Operate)
第15章 软件架构师角色与职责
15.1 软件架构师的定义
15.2 软件架构师的工作场景
15.3 软件架构师的角色
15.4 软件架构师与其他角色的关系及区别
15.4.1 软件架构师与产品经理的关系及区别
15.4.2 软件架构师与项目经理的关系及区别
15.4.3 软件架构师与系统分析员的关系及区别
15.5 软件架构师的职责
15.6 软件架构师的所应具备的能力
15.7 软件架构师的工作评价标准
15.8 习题与思考题
第16章 软件运作模式
16.1 软件企业的崛起
16.1.1 大型科研项目的研究是软件业的萌芽
16.1.2 独立软件产品的出现预示软件业开始步入正轨
16.1.3 企业解决方案让软件业开始兴盛
16.1.4 个人电脑及互联网的普及让软件业繁荣
16.2 传统的软件运作模式
16.3 基于Free的运作模式
16.3.1 自由软件
16.3.2 免费软件
16.3.3 共享软件
16.3.4 案例
16.4 基于开源的运作模式
16.4.1 开源软件
16.4.2 开源软件盈利模式
16.4.3 案例
16.5 基于服务的运作模式
16.5.1 软件企业职能转变
16.5.2 基础设施即服务(IaaS)
16.5.3 平台即服务(PaaS)
16.5.4 软件即服务(SaaS)
16.6 习题与思考题
第17章 案例分析
17.1 Google搜索引擎
17.1.1 营销模式
17.1.2 运作分析
17.2 Twitter
17.2.1 营销模式
17.2.2 运作分析
17.3 Facebook
17.3.1 营销模式
17.3.2 运作分析
17.4 淘宝
17.4.1 营销模式
17.4.2 运作分析
17.5 习题与思考题
参考文献