目录
一、软件开发生命周期(SDLC)
planning→analysis→design→implementation→testing&integration→maintenance→planning……
二、传统的软件发展模型
两种基本类型:线性过程、迭代过程
模型:瀑布过程、增量过程、V字模型、原型过程、螺旋模型
瀑布模型:线性推进,阶段划分清楚,整体推进,无迭代,管理简单,无法适应需求增加/变化
增量过程:线性推进,增量式(多个瀑布串行),无迭代,比较容易适应需求的增加
V字模型:作业观念→需求和架构→细节设计→实现→结合、测试、确认→系统确认和检验→使用和维护→第一步……
原型化:在原型上持续不断的迭代发现用户变化的需求;迭代:开发出来之后由用户试用/评审,发现问题反馈给开发者,开发者修改原有的实现,继续交给用户评审
螺旋型:多轮迭代基本遵循瀑布模型,每轮迭代有明确的目标,遵循原型过程,进行严格的风险分析,方可进入下一轮迭代
三、敏捷开发
敏捷开发:通过快速迭代和小规模的持续改进,以快速适应变化
敏捷=增量+迭代(每次迭代处理一个小规模增量)
极限的用户参与、极限的小步骤迭代。极限的确认/验证
四、软件配置管理和版本控制系统
软件配置管理:追踪和控制软件的变化
软件的任何组成部分都可能随着软件生命周期的时间而更新
软件配置项:软件中发生变化的基本单元
基线:软件持续变化过程中的稳定时刻(例:对外发布的版本
版本:为软件的任意特定时刻的形态指派一个唯一的编号,作为身份标识
版本控制术语:仓库、工作拷贝、版本、变化、HEAD
集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作
分布式版本控制系统:仓库存储于独立的服务器+每个开发者的本地机器
五、Git
六、软件构造的一般进程
编码→构建→代码评审→性能分析→测试→调试→重构
1、编码:编程语言、编程工具(集成开发环境)、建模语言、配置语言、构建语言
2、代码评审:结对编程、走查、正式评审会议、自动化评审
3、性能分析:
动态分析:要执行程序并观察现象、收集数据、分析不足
对代码的运行时的状态和性能进行度量,发现代码中的潜在问题
4、测试&调试:
测试:发现程序是否有错误;调试:定位错误、发现错误根源
5、重构:在不改变功能的前提下优化代码