一、要点概览
1、软件=exe
2、软件工程=过程+方法+工具
3、软件工程的重要性:生产高质量软件的保证
4、步骤:灵活、可适应的过程
5、工程产品:程序+数据+文档
正文部分
- 计算机软件是世界上最重要的技术,也是“意外效应法则”的典例子
- “意外效应法则”:就是副作用
1.1软件的本质
软件 = 产品 = 产品交付载体
1.1.1软件的本质
硬件会磨损,软件会退化,变更是软件退化的根本原因
1.1.2软件的应用领域
1、系统软件:Windows
2、应用软件:Halo
3、Web/APP
4、嵌入式
5、人工智能软件:GPT
6、产品线软件:Office三件套
7、科学软件:Matlab
1.1.3遗留软件
就是比你年龄还大的软件,又臭又硬
为什么不全给他换了?承担了业务的核心功能
1.2定义软件工程学科
软件工程:将工程化的思想应用于软件
软件工程是层次化的:质量关注点—过程—方法—工具
1.3软件过程
过程=基于方法,使用工具,实现过程中的活动+动作+任务
任务 属于 动作;动作 属于 活动
1.3.1过程框架
定义了一套完整的活动即为一个过程框架,框架对团队具有指导作用,但是应该是灵活了,团队可以在一个活动中选择适合自己的任务集和工作集。
通用过程框架由五个部分组成:
1、沟通:明确需求,确定功能
2、策划:进度计划
3、建模:进一步理解需求并完成设计
4、构建:coding and testing
5、部署:交付给客户
通用过程框架的5个活动适用于所有软件构建,不同的软件可能会有不同的迭代过程,每个迭代过程交付一个软件增量;
1.3.2普适性活动
普适性活动:贯穿软件项目始终的、对5个通用活动的 补充,普适性活动可在项目开始后的任何合适的时间执行,且可以与其他普适性活动配合使用;
典型的普适性活动:
1、技术评审:检查产品的质量
2、项目跟踪和控制:把控项目进度
3、可复用性管理:对可复用构建的处理
4、工作产品的准备和生产
5、质量控制
……
具体的会在本书后面详细讲述
1.3.3过程的适应性调整
5个通用过程活动的顺序、普适性活动具体执行细节……因项目而异,应当灵活运用:过程框架适应团队 > 团队教条地执行某个过程框架
1.4 软件工程实践
一些基本概念地解释
1.4.1 实践的精髓《how to solve it》
1、理解问题(沟通和需求分析……
2、策划解决方案(策划和建模……
3、实施计划(coding……
4、检查结果(testing……
每一个步骤可能由很多事情要做,也有可能背简单掠过,但是,至少,你有了解决问题的方向。
1.4.2 通用原则
实践过程中所提倡的七个原则:
1、存在价值
2、保持简洁
3、保持愿景
4、关注使用者
5、面向未来
6、提前计划复用
7、认真思考
1.5这一切是如何开始的
源于一个需求,可能是一句话带过的东西……但是却决定着整个业务的生死。
1.6 小结
略
习题与思考题
1:
场景: 开发团队决定优化某个关键算法以提高性能。
意外效应: 优化后,可能引入了新的 bug 或导致其他部分的性能下降。有时候,为了解决一个问题而进行的优化可能导致意外的后果。
新增功能导致用户混淆:
场景: 添加了新功能,以提升用户体验。
意外效应: 用户可能感到困惑,因为新功能的引入可能会改变他们熟悉的界面或工作流程。这可能需要额外的培训或文档以解释变化。
升级依赖项引发兼容性问题:
场景: 对项目中的某个库或框架进行升级,以获得新的功能或修复漏洞。
意外效应: 升级后,可能出现与其他依赖项不兼容的问题,导致整个系统的崩溃或错误。这需要额外的时间来解决兼容性问题。
性能优化引发资源消耗增加:
场景: 进行一系列性能优化,以降低系统的响应时间。
意外效应: 可能导致系统的内存或处理器占用增加,甚至可能导致其他系统组件的性能下降。这需要在性能优化和资源消耗之间找到平衡。
增加安全措施导致用户体验下降:
场景: 引入额外的安全层,以提高系统的安全性。
意外效应: 用户可能需要经历更多的身份验证步骤,导致用户体验下降。在安全性和用户友好性之间需要找到权衡。
2:IT改变世界、黑客
3:变更
4、增量小一点
5、不能,没有银弹
6、AI
7、不是
8、集中式存在某个框架活动中