标签:git 迭代 模型 配置管理 构造 开发者 版本 软件
软件构造基础
二、软件构造过程与配置管理
课程目标
- 了解软件开发的基本过程
- 了解传统软件开发过程模型,包括线性和迭代模型(瀑布模型、增量模型、原型模型、螺旋模型和 V 模型)
- 了解并实践敏捷开发
- 了解软件配置管理(SCM)
- 学习如何使用 Git 进行日常 SCM 任务(个人开发的基本命令,协作开发的高级命令)
- 了解软件构建的一般流程(设计→编程→调试→测试→构建→发布)
- 使用Eclipse IDE作为Java构建环境和工具
- 了解用于审查和静态分析、调试(转储、日志记录)和测试以及动态分析/剖析的典型工具
- 学习狭义的软件构建过程(构建Build:验证 → 编译 → 链接 → 测试 → 包 → 安装 → 部署)
- 使用其中一种构建工具(make、Ant、Maven、Gradle、Eclipse IDE)构建您自己的 Java 项目
1、软件开发生命周期Software Development Lifecycle (SDLC)
- From 0 to 1 从无到有
- From 1 to n 从有到好
2、传统软件过程模型Traditional Software Process Models
- 每个阶段都会输出详细文档,开发周期长
- 两种基本类型:
迭代过程(开发的每一步都与用户确认,再修改)和线性过程(用户的需求非常明确) - 目前存在的模型:
- 瀑布过程:
线性推进,阶段划分清楚,整体推进,无迭代,管理简单,无法适应需求增加/变化 - 增量过程
线性推进,增量式(多个瀑布的串行),无迭代,比较容易适应需求的增加(需要接口简单成熟,需求稳定) - V字模型
适用于验证,每个阶段都测试(少见) - 原型过程
在原型上持续迭代发现用户变化的需求,知道用户满意为止
时间代价高,但开发质量也高(先提供一个原型,再了解用户的需求进行开发)
迭代:开发出来之后由用户试用/评审,发现问题反馈给开发者,开发者修改原有的实现,继续交给用户评审 - 螺旋模型
过程非常复杂:多轮迭代基本遵循瀑布模式;每轮迭代有明确的目标,遵循“原型”过程,进行严格的风险分析方可进入下一轮迭代(多了风险分析阶段,对长周期大工程可以避免风险)
- 选择合适的过程模型的依据:
- 用户的参与度——适应变化的能力
- 开发效率/管理复杂度
- 开发出的软件的质量
3、敏捷开发Agile Development
开发周期短,几乎不需要文档,如手机app
敏捷开发:通过快速迭代和小规模的持续改进,以快速适应变化
Agile = 增量 + 迭代 :每次迭代处理一个小规模增量
- 极限的用户参与(客户参与到开发中)
- 极限的小步骤迭代
- 极限的确认/验证(开发者之间每天做交互)
极限编程:强调短周期迭代,采用测试优先
4、软件配置管理(SCM)和版本控制系统(VCS)Software Configuration Management and Version Control System
SCM
- 软件配置管理:追踪和控制软件的变化
- 软件配置项(SCI):软件中发生变化的基本单元(例如:文件)
- 基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)
- 配置管理数据库(CMDB):存储软件的各配置项随时间发生变化的信息+基线
Versioning
版本:为软件的任一特定时刻的形态指派一个唯一的编号,作为身份标识 V 1.6(major) .1(minor) .5(patch)
- 版本控制的作用:
- 对个人:
- 回滚到上一个版本
- 比较两个版本之间的差异
- 备份软件版本地址
- 获取备份
- 合并
- 对团队
- 在多个开发者之间共享并协作
- 记录每个开发者的动作,便于审计
- 对个人:
版本控制术语
- 仓库:即SCM中的CMDB
- 工作拷贝:在开发者本地机器上的一份项目拷贝
- 文件:一个独立的配置项
- 版本:在某个特定时间点的所有文件的共同状态
- 变化:即code churn,两个版本之间的差异
- Head:程序员正在其上工作的版本
VCS
- 本地版本控制系统:仓库存储于开发者本地机器,无法共享和协作
- 集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作
- 分布式版本控制系统:仓库存储于独立的服务器+每个开发者的本地机器
Git
命令:
创建:git init
暂存:git add <file name>
提交:git commit -m “commit message”
链接:git remote add origin <URL>
推送:git push -u origin master
创建分支:git checkout -b <branch name>
切换分支:git checkout <branch name>
合并分支:git merge <branch name>
删除分支:git branch -d <branch name>
四个区域
工作目录(workspace directory):本地文件系统
暂存区(staging area):隔离工作目录和Git仓库
本地CMDB(local repository)
远程CMDB(remote repository)
Object Graph:版本之间的演化关系图,一条边A->B表示,在版本B的基础上作出变化,形成了版本A。
分支:多个commit指向同一个父亲
合并:一个commit指向两个父亲
标签:git,迭代,模型,配置管理,构造,开发者,版本,软件 来源: https://blog.csdn.net/qq_52979026/article/details/118416238
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。