软件构造课笔记:第3章——软件构造过程与配置管理

软件构造过程与配置管理

软件开发生命周期(SDLC)

传统软件流程

基础类型:线性过程,迭代过程

现有模型:瀑布过程,增量过程,V字模型,原型过程,螺旋模型

选择依据:用户参与程度(适应变化能力)、开发效率(管理复杂度)、开发出软件质量

瀑布过程:线性推进,阶段划分清楚,整体推进 ,无迭代 ,管理简单, 无法适应需求 ,增加/变化

增量过程:线性推进,增量式(多个瀑布的串行),无迭代,比较容易适应需求的增加

敏捷开发

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

Agile=增量+迭代:每次迭代处理一个小规模增量。

极限的用户参与,极限的小步骤迭代,极限的确认/验证

软件配置管理(SCM)和版本控制系统

软件配置管理是追踪和控制软件的变化工具,核心在于版本控制和基线的确立

软件配置项是指软件中发生变化的基本单元(例如文件)

基线是指软件持续变化过程中的“稳定时刻”(例如对外发布的版本)

CMDB是配置管理数据库,用于存储软件的各配置项随时间发生变化的信息 + 基线.

版本:为软件的任一特定时刻( 派一个唯一的编号,作为“身份标识”)

 

版本控制系统分为三类

本地版本控制系统:仓库存储于开发者本地机器无法共享和协作

集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作

分布式版本控制系统:仓库存储于独立的服务器 + 每个开发者的本地机器

git:经典的版本管理工具

存储库三个部分:本地CMDB,工作目录(本地文件系统),暂存区(隔离工作目录和git仓库)

项目文件三个状态:已修改,已暂存,已提交

Git的所有操作都是在一个图数据结构(对象图)上进行,从另一台机器/服务器复制git项目意味着复制整个对象图

在工作目录对某些文件作了修改之后,Git将这些文件标为“已修改”, 可提交本次更新到仓库。  逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复

基本git命令如下:

  1. 初始化仓库:git init

  2. 克隆远程仓库:git clone <repository-url>

  3. 添加文件到暂存区:git add <file1> <file2> ...

  4. 提交更改:git commit -m "Commit message"

  5. 查看提交历史:git log

  6. 查看当前状态:git status

  7. 拉取远程分支的更改:git pull <remote-name> <branch-name>

  8. 推送本地更改到远程仓库:git push <remote-name> <branch-name>

  9. 查看分支列表:git branch

  10. 切换分支:git checkout <branch-name>

  11. 创建新分支:git branch <new-branch-name>

  12. 删除分支:git branch -d <branch-name>

  13. 合并分支:git merge <branch-name>

  14. 解决合并冲突:

    • 手动编辑冲突文件,然后使用 git add 将解决后的文件添加到暂存区。
    • 提交更改以完成合并。
  15. 查看远程仓库信息:git remote -v

  16. 添加远程仓库:git remote add <remote-name> <repository-url>

  17. 重命名分支:git branch -m <old-branch-name> <new-branch-name>

  18. 查看文件更改差异:git diff

  19. 撤销工作目录中的更改:git checkout -- <file-name>

  20. 重置暂存区和工作目录:git reset git clean

  21. 查看配置信息:git config --list

  22. 设置全局用户名:git config --global user.name "Your Name"

  23. 设置全局邮箱:git config --global user.email "you@example.com"

  24. 拉取远程分支并自动创建本地分支:git fetch <remote-name> <branch-name>

  25. 比较当前分支与远程分支的差异:git diff <remote-name>/<branch-name>

GitHub:一个基于网络的Git服务器和互联网托管服务。

它提供了Git的所有分布式版本控制和SCM功能,并添加了自己的功能。

它为每个项目提供访问控制和几个协作功能,如错误跟踪、功能请求、任务管理和Wiki。

私有和免费存储库(用于开源项目)

软件的一般建设流程

编程:
用途上划分:编程语言,建模语言,配置语言,构建语言
形态上划分:基于语言学的构造语言,基于数学的形式化构造语言,基于图形的可视化
编程语言工具:集成IDE

下面是IDE所包含的组件


建模语言:建模语言是任何人工语言,可以用来表达由一组一致的规则定义的结构中的信息、知识或系统的语言,目的是可视化、推理、验证和交流系统的设计。

典型建模语言:UML。

配置语言:
配置语言用于形成配置文件,程序配置参数和初始设置。应用程序应提供工具来创建、修改和验证其配置文件的语法;某些计算机程序仅在启动时读取其配置文件。其他人则会定期检查配置文件是否有更改。

审核和静态代码分析:
代码评审:代码评审是对源代码的系统检查(同行评审)。

旨在发现在初始开发阶段被忽视的错误,提高整体质量。

评审以各种形式进行,如结对编程、非正式演练和正式检查。

正式代码评审会议:结构化检查代码和文档缺陷
轻量级代码评审:通常比正式的代码检查需要更少的开销。
利用工具进行静态代码分析:是对在没有实际执行程序的情况下执行的计算机软件的分析。
动态代码分析:
执行程序并观察现象、收集数据、分析不足

调试和测试:
测试:发现错误

调试:定位错误、发现错误根源

重构:
不改变功能前提下优化代码。

重构是改变软件系统的过程,即它不改变代码的外部行为,但又改进其内部结构。重构会带来短期的时间/工作成本,以获得长期的利益,并对您的系统的整体质量进行长期的投资。

 

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值