软件生命周期与配置管理
开发模式、配置管理、版本控制
2.1开发模式
两个过程模式:线性过程、迭代过程
五个模型:Waterfall (Linear, non-iterative) 瀑布过程、– Incremental (non-iterative) 增量过程、V-Model (for verification and validation) V字模型、Prototyping (iterative) 原型过程、Spiral (iterative) 螺旋模型。
2.1.1 瀑布过程
线性推进、阶段划分清楚、整体推进、无迭代、管理简单、无法适应需求增加/变化。
2.1.2 增量过程
线性推进:增量式(多个瀑布的串行)无迭代( 比较容易适应需求的增加)
2.1.3 原型过程
在原型上持续不断的迭代,发现用户变化的需求。(时间代价高,但开发质量也高。)
2.1.4 螺旋过程
非常复杂的过程:多轮迭代基本遵循瀑布模式、每轮迭代有明确的目标,遵循“原型”过程,进行严格的风险分析,方可进入下一轮迭代。
2.2 配置管理、版本控制
Software Configuration Management (SCM)
Version Control System (VCS)
2.2.1 配置管理
软件配置管理:追踪和控制软件的变化
CMDB:配置管理数据库(git 仓库)
2.2.2 版本控制
回滚到上一个版本、比较两个版本的差异、备份软件版本历史、获取备份、合并。
2.3 利用Git进行版本控制
.git 文件夹就是本地的CMDB。
Git的基本操作:
将变更存入本地的仓库:
git commit
将变更存入远程仓库
git push
分支操作
切换当前分支:git checkout [branch name]
创建并且换分支:git checkout -b [new branch name]
合并分支:git merge [branch name] (将括号内分支合并至当前分支)
同步(从远程仓库获取最新版本):git fetch
2.4 软件开发的过程
广义的软件构造:构建(build) 编码(coding) 重构(refactoring) 调式(debug) 测试(test) 性能分析(dynamic code analysis) 代码评审(Code review Static code analysis)
狭义的软件构造:Validate(验证)Compile(编译)Link(链接)Test(测试)Package(打包)Install(安装)Deploy(应用)
build工具:Make, Ant, Maven, Gradle, Eclipse
2.4.1 编码
从用途上划分:
编程语言:C,C++,Java,Python
建模语言:UML
配置语言:XML
构建语言:XML
从形态上划分:
基于语言学的的构造语言、基于数学的形式化构造语言、基于图形的可视化构造语言。
2.4.2 代码评审
结对编程 、 走查 、 正式评审会议 、 自动化评审。
动态分析:要执行程序并观察现象、收集数据、分析不足。
2.4.3 调试和测试
测试:发现程序是否有错误。
调试:定位错误、发现错误根源。
2.4.4 重构
在不改变功能的前提下优化代码
浙公网安备 33010602011771号