软件工程-实践者的研究方法
第二次读这本书,好好地好好地理解一遍。
第一章:软件的本质
软件的本质
定义软件
软件是逻辑而非物理的系统元素,因此软件不会“磨损”
软件的应用领域
1:系统软件
2:应用软件
3:工程/科学软件
4:嵌入式软件
5:产品线软件
6:人工智能软件
遗留软件
是指那些年代久远的软件,它们诞生于几十年之前,不断被修改以满足商业需要和计算平台的变化。它们的特点是维护代价高,演化代价高。
软件变更的本质
在行业中占主导地位的四大类软件
1:WebApp
在网页上提供计算力的应用
2:移动App
在移动平台上专门设计的软件。
3:云计算
前端访问(客户)+后端支撑(数据库,计算力)
4:产品线软件
一种软件密集型系统+公用可管理特性(通用接口),例如AresRTT
第二章:软件工程
2.1定义软件工程
将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;
2.2软件过程
软件过程是工作产品构建时所执行的一系列活动、动作和任务的集合。
活动:主要实现宽泛的目标,与应用领域、项目大小、结果复杂性或者实施软件工程的重要程度没有直接关系。例如:项目的前期立项
动作:如体系结构设计,包含主要工作产品生产过程中的一系列任务。比如架构开发,建模。
任务:具体的编码实现,比如一个单元测试
2.2.1过程框架
过程框架也叫做:“通用的框架活动”,包括
沟通
策划
建模
构建
部署
2.2.2普适性活动
软件项目跟踪和控制
风险管理
软件质量保证
测量
软件配置管理
可复用管理
工作产品的准备和生产
2.2.3过程的适应性调整
2.3软件工程实践
2.3.1实践的精髓
1:理解问题(沟通和分析)
2:策划解决方案(建模和软件设计)
3:实施计划(代码生成,也就是写代码)
4:检查结果的正确性(测试和质量保证)
2.3.2通用原则
第1原则:存在价值
第2原则:保持简洁
第3原则:保持愿景
第4原则:关注使用者
第5原则:面向未来
第6原则:提前设计复用
第7原则:认真思考
2.4软件开发神话
2.5这一切是如何开始的
第3章:软件过程结构
3.1通用过程模型
过程流:
1线性过程流:
2迭代过程流:
3演化过程流:
4并行过程流:
3.2定义框架活动
继续细分框架活动:
沟通包括:
策划包括:
建模包括:
构建包括:
部署包括:
3.3明确任务集
也就是做事情的列表:
小型项目任务集:
大型项目任务集
3.4过程模式
即哪种开发过程,是开中的一种解决方案,一种比较通用的问题解决方法。
三种类型:
1.步骤模式
2.任务模式
3.阶段模式
第四章:过程模型
4.1惯用过程模型
4.1.1 瀑布模型
4.1.2 增量过程模型
4.1.3 演化过程模型
4.1.4 并发模型
4.1.5 演化过程的最终评述
4.2 专用过程模型
4.2.1 基于构件的开发
4.2.2 形式化方法模型
4.2.3 面向方面的软件开发
4.3 统一过程
4.3.1 统一过程的简史
4.3.2 统一过程的阶段
第五章:敏捷开发
5.1 什么是敏捷
5.2 敏捷变更及变更成本
5.3 什么是敏捷过程
5.3.1 敏捷原则
5.3.2 敏捷开发战略
5.4 极限编程
5.4.1 极限编程过程
5.4.2 工业极限编程
5.5 其他敏捷过程模型
5.5.1 Scrum
5.5.2 动态系统开发方法
5.5.3 敏捷建模
5.5.4 敏捷统一过程
5.6 敏捷过程工具集
第六章:软件工程的人员方面
6.1 软件工程师的特质
6.2 软件工程心理学
6.3 软件团队
6.4 团队结构
6.5 敏捷团队
6.5.1 通用敏捷团队
6.5.2 XP团队
6.6社交媒体的影响
6.7 软件工程中云的运用
6.8 协作工具
6.9 全球化团队
第二部分:建模
7.1 需求工程
7.2 建立根基
7.2.1 确认利益相关者
7.2.2 识别多重观点
7.2.3 协同合作
7.2.4 首次提问
7.3 获取需求
7.3.1 协作需求收集
7.3.2 质量工程部署
7.3.3 使用场景
7.3.4 获取工作产品
7.3.5 敏捷需求获取
7.3.6 面向服务的方法
7.4 开发用例
7.5 构建分析模型
7.5.1 分析模型的元素
7.5.2 分析模式
7.5.3 敏捷需求工程
7.5.4 自适应系统的需求