哈工大软件构造第3章学习笔记

过程与配置管理

1.传统的开发模型

两种基本类型:线性过程、迭代过程

1.1线性过程

1.1.1瀑布过程

特点:线性推进、整体推进、非迭代
优点:管理简单
缺点:无法适应需求增加/变化
在这里插入图片描述

1.1.2 增量过程

特点:线性推进、增量式(多个瀑布的串行)、非迭代
优点:比较容易适应需求的增加
在这里插入图片描述

1.1.3 v-model

V 模型可以看作瀑布模型的优化,它仍然是线性推进的,瀑布模型存在的问题大多在 V-model 中也存在。
每个开发阶段都有相应的测试对齐进行验证,但是测试与开发是串行而非并行进行的,也就是测试需要等开发完成后再开始。
在这里插入图片描述

1.1.4 原型过程

开发出来之后由用户试用/评审,发现问题反馈给开发者,开发者修改原有的实现,继续交给用户评审,循环往复这个过程,直到用户满意为止。重点在于在原型上持续不断地迭代发现用户变化的需求。
特点:迭代推进
优点:开发质量高
缺点:时间代价高
收到阿萨德

1.2 敏捷开发

敏捷开发,即通过快速迭代和小规模的持续改进,以快速适应变化。

敏捷宣言四个维度:
个体和互动高于流程和工具
工作的软件高于详尽的文档
客户合作高于合同谈判
响应变化高于遵循计划
在这里插入图片描述敏捷 = 增量 + 迭代,每次迭代处理一个小规模增量。

在这里插入图片描述

2.软件配置管理和版本控制

2.1 SCM与VCS

软件配置管理:追踪和控制软件的变化。

软件配置项(SCI):软件中发生变化的最小单元。

基线:软件变化过程中的“稳定时刻”。

为了存储各配置项随时间变化的信息和基线信息,就有一个数据库来管理这些内容,即配置管理数据库==(CMDB)==。

VCS分为三种:
1.本地版本控制系统:仓库存储在本地开发系统,无法合作和共享;
2.集中式版本控制系统:仓库存储在独立的服务器上,支持多开发者之间的合作,但没办法抵抗服务器崩溃导致无法开发的风险;
3.分布式版本控制系统:仓库存储于在每个开发者的本地机器+独立的服务器。

2.2 Git

Git是一个分布式版本控制系统

一个 Git 仓库分为三个部分:
.git 目录:本地的 CMDB
工作目录:本地文件系统
暂存区:.git 目录中的一个文件,隔离工作目录和 Git 仓库
在这里插入图片描述
git是一个典型的分布式管理系统。其选用的数据结构是一张有向无环图,每次commit会在图上增加一个新的节点,并将HEAD指向这个节点。通常一个子节点有一个父节点,当一个父节点有多个子节点时说明创建了一个分支,而当一个子节点有多个父亲节点时说明进行了合并。

在这里插入图片描述
结点
一个 commit 存储一个树形结点。tree 中包含了数个 blob;每个 blob 是一个压缩了的仓库文件,不保存文件名信息。
对于每个文件的每个版本(或是不同文件名但相同内容的文件),Git 只会存储一个 blob,而允许多个 commit tree 指向同一个 blob。
一个 commit 中与之前相比未发生变化的文件,无需重复存储。文件未发生变化,则后续多个版本始终指向同一个 blob;文件发生变化了,存储两份不同的 blob,两个版本指向不同的 blob。
在这里插入图片描述

3. 软件构造的一般过程

3.1 代码评审

结对编程
走查
正式评审会议
自动化评审

3.2 性能分析

动态分析:执行程序并观察现象、收集数据、分析不足
Profiling:对代码的运行时状态和性能进行度量,发现代码中的潜在问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值