软件构造——软件构造过程与配置管理
软件构造过程与配置管理
传统的软件开发过程模型
- 两种基本类型:
- 线性模型
- 迭代模型
- 现有的其它模型:
- 瀑布模型
- 流程:需求、设计、实施、验证、维护
- 特征:线性推进、阶段划分清晰、整体推进、无迭代
- 优点:管理简单
- 缺点:无法适应需求变化
- 增量模型
- 特征:线性推进、增量式(多个瀑布的串行)、无迭代
- 优点:容易适应需求增加
- V字模型
- 特征:瀑布模型的延伸扩展
- 原型过程
- 特征:迭代
- 螺旋模型
- 特征:迭代,多轮迭代基本遵循瀑布模式,每轮迭代有明确的目标,遵循”原型“过程,进行严格的风险分析才可进入下一轮迭代
- 选择过程模型的依据:
- 用户参与度、适应变化的能力
- 开发效率、管理复杂度
- 开发出的软件的质量
敏捷开发
- 敏捷开发的概念:通过快速迭代和小规模的持续改进,以快速适应变化。每次迭代处理一个小规模增量,敏捷 = 增量 + 迭代
- 敏捷开发的特征:
- 极限的用户参与
- 极限的小步骤迭代
- 极限的确认、验证
- 敏捷开发的方法:极限编程XP
Git
- Git仓库的三个组成部分:
- 本地的版本控制数据
- 工作目录:本地文件系统
- 暂存区:隔离工作目录和git仓库
- 每一个文件都属于以下三种状态之一:
- 已修改:在工作目录中的文件与git仓库中的文件不同但是该文件并不在暂存区
- 已暂存:文件已经被修改但是被添加到了暂存区
- 已提交:修改的文件被从暂存区提交到了git仓库中
- git中的对象图:
-
git对象图用来记录git项目的历史信息,版本之间的演化关系图,是一个有向无环图
-
git的所有操作都是在一个对象图上进行的
-
git对象图存储在仓库的.git目录下
-
从一台服务器clone git项目意味着复制整个对象图git clone URL local_repository
-
A->B:在版本B的基础上做出变化形成了版本A
-
每一个结点都是一次commit,每个commit指向一个父亲
-
分支:多个commit指向同一个父亲
-
合并:一个commit指向两个父亲
-
git对象图只存储变化的文件对于未发生变化的文件只存储一份副本
- git命令:
- 跟踪新文件,将修改的文件放入暂存区:git add
- 检查当前文件状态,哪些修改了但还没有暂存,哪些暂存了但还没提交:git status
- 查看已暂存和未暂存的更新,查看没有暂存的文件更新了哪些部分:git diff
- 查看已暂存的文件与上次提交之间的差异:git diff - -cached
- 提交更新:git commit
- 跳过使用暂存区域,把所有已经跟踪过的文件暂存起来并一并提交,git commit -a
- 移除文件:git rm
- 获取当前配置的所有远程仓库:git remote
- 添加一个远程仓库:git remote add [shortname] [url]
- 从远程仓库抓取数据到本地:git fetch
- 从一个仓库或本地的分支拉取并整合代码:git pull
- 将本地仓库中的数据推送到远程仓库: git push [remote-name] [branch-name]
- 查看某个远程仓库的详细信息:git remote show [remote-name]
- 从本地移除远程仓库:git remote rm
广义的软件构造过程
- 编码Programming
- 代码评审Review and static code analysis
- 动态代码分析Dynamic code analysis
- 调试与测试Debugging and testing
- 重构Refactoring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理