软构期末复习1-3章

1.软件构造的多维度视图及其划分

大体上分为build-time和run-time两大类,分别对应视图中的两排。

在build-time中,又按照时刻和时期、代码层面和成员层面区分开,总共分为上图中9块。需要记住此图。画红色的地方是重点。

2.内部/外部的质量指标

外部的质量指标有:正确性、健壮性、可扩展性、可复用性等

  • 正确性:软件产品执行其规约定义的确切任务的能力
  • 健壮性:软件系统对异常情况做出适当反应的能力
  • 可扩展性:使软件产品易于适应规约的变化的能力
  • 可复用性:软件中的各部分构建其他不同应用程序服务的能力

内部的质量指标有:代码行数、低耦合、可读性、可理解性、清洁度等

3.软件配置管理SCM与版本控制系统VCS

3.1 软件配置管理(Software Configuration Management)

SCM是一种监视软件中更新操作的系统,软件的任何组成部分(源代码、数据、文档、硬件、各种环境)都可以随软件生命周期的时间而更新,因此可以被记录下来。

其核心是对于版本控制和基线的确立。其中,基线是指软件持续变化过程中的“稳定时刻”,如对外发行版本。

3.2 版本控制系统(Version Control System )

版本是为软件的任一特定时刻(Moment)的形态指派一个唯一的编号,作为在在整个开发过程中的“身份标识”,而版本控制就是对每次更改的不同版本进行记录,保留备用。

版本控制系统分为本地版本控制系统、集中式版本控制系统、分布式版本控制系统三种。本地的只能用于本地机器,集中式的可以支持多台机器之间进行协作,分布式是上述两者的统一。

传统的版本控制软件是记录每次更改的内容,需要的时候再根据记录进行更改;而现在最流行的版本控制工具git则是记录每一本完整的版本,需要的时候直接提取即可,极大地提高了软件的效率。

3.3 git

git是一种分布式版本控制工具。

3.3.1 git的结构和原理

一个git仓库有3个部分:

  • .git仓库(配置管理数据库,存储软件的各配置项随时间发生变化的信息和基线)
  • 工作目录:本地文件系统
  • 暂存区:用来隔离工作目录和git仓库

文件在git仓库的3个状态:

  • 已修改:刚在工作区改完,还没有放到暂存区
  • 已暂存:将在工作区改完的版本add到暂存区
  • 已提交:将在暂存区的版本commit到.git仓库,此时工作目录的版本与git仓库的版本保持一致

除此之外,git还有远程仓库,支持多人协作功能,如果想要将本地仓库的内容提交到远程仓库以供别人使用,则还需要push到远程仓库。当然,如果你想使用别人的远程仓库的内容,也需要先从远程仓库pull下来。

git的所有操作都是在一个图数据结构上进行的,git对象图存储在存储库的.git目录中。从另一台机器/服务器复制git项目意味着复制整个对象图。

对象图是一个有向的无环图,一条边A→BA\rightarrow BA→B表示“在版本B的基础上做出变化,形成了版本A”;每个$ \rightarrow$指向一个父亲,如果有多个commit指向同一个父亲,则为一个父亲产生了多个子节点,即为branch;如果是一个commit指向多个父亲,则表示多个父亲节点合并形成了子节点,即为merge

每次commit都会在git仓库中形成一个新的节点,这个节点包含所有文件的完整快照。每个节点中包含以下信息:根节点、作者、提交者、备注信息等

3.3.2常用git命令:

git init//初始化git仓库
git add//将工作目录下的版本提交到暂存区
git add readme.md//将文件添加到暂存区,开始对这些文件进行跟踪
git commit//将暂存区文件提交到本地仓库
git push//将本地仓库的文件提交到远程仓库(服务器)
git status//查看当前文件状态
git diff//查看工作区和暂存区快照之间的差异,即修改后未add的内容
git commit -a//跳过git add步骤,直接将所有修改过的文件暂存起来并提交
git rm//从git中移除某个文件,不再跟踪,也将原文件删除
git fetch//从远程仓库抓取文件到本地,但不与本地的合并
git pull//与fetch类似,但是还会与本地合并
git branch//查看本地分支
git branch phase//创建本地分支phase
git checkout phase//切换到分支phase
git checkout -b phase1//创建分支phase1并切换到phase1分支
git merge phase//将分支phase合并到main分支上,需要在主分支(main)上进行操作
git branch -D b1//强制删除分支

哈工大软件构造期末复习(根据老师复习提纲整理)相关推荐

  1. 哈工大软件构造期末复习

    系列文章目录 哈工大软件构造期末复习(最终章) 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 哈工大软件构造期末复习(最终章) 前言 一.github指令 ...

  2. 哈工大软件构造期末知识点总结

    哈工大软件构造试题构成: 1.30-45分的选择题,10-20题 2.55-70分的简答与设计题,5-6题 考试知识点(不全面): 1.git工具的知识点 2.Java设计模式(一共有23个,主要考察 ...

  3. 哈工大软件构造期末复习1

    Chapter 1: Views and Quality Objectives of Software Construction 1.1 Multi-Dimensional Views of Soft ...

  4. 2021哈工大软件构造期末考点复习笔记

    第一节 多维视图和质量目标 软件构造多维度视图 红色标注为重点(考试会考选择题) Moment 特定时刻的软件形态 Period 软件形态随时间的变化 AST (Abstract Syntax Tre ...

  5. 哈工大软件构造 复习

    哈工大软件构造试题构成: 1.30分的选择题 2.70分的简答题 2019考试知识点(重要的,但不涵盖全部考试范围): 1.git工具的知识点(没有考察命令行,考察的主要是git的演变及各部分的作用) ...

  6. 2022哈工大软件构造lab1小结(知识点)

    哈工大软件构造lab1小结 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 问题一 使用的库 异常处理机制 字符串内容检查 写入文件 问题二 problem 3:画一 ...

  7. 哈工大软件构造课程知识点总结(一)

    系列文章目录 哈工大软件构造课程知识点总结(一) 哈工大软件构造课程知识点总结(二) 哈工大软件构造课程知识点总结(三) 哈工大软件构造课程知识点总结(四) 哈工大软件构造课程知识点总结(五) 哈工大 ...

  8. 哈工大软件构造课程知识点总结(二)

    系列文章目录 哈工大软件构造课程知识点总结(一) 哈工大软件构造课程知识点总结(二) 哈工大软件构造课程知识点总结(三) 哈工大软件构造课程知识点总结(四) 哈工大软件构造课程知识点总结(五) 哈工大 ...

  9. 哈工大软件构造课程知识点总结(三)

    系列文章目录 哈工大软件构造课程知识点总结(一) 哈工大软件构造课程知识点总结(二) 哈工大软件构造课程知识点总结(三) 哈工大软件构造课程知识点总结(四) 哈工大软件构造课程知识点总结(五) 哈工大 ...

最新文章

  1. 第二届全国大学生智能汽车竞赛获奖名单
  2. 40.简述操作系统中调用过程?
  3. ecshop goods.php,重命名ecshop的商品页goods.php为shangpin.php
  4. python多线程_干货|理解python多线程和多进程
  5. GCC的__attribute__ ((constructor))和__attribute__ ((destructor))
  6. RHEL5下unixODBC 与 sqliteodbc 连接配置
  7. java基于Springboot+vue的鲜花销售商城网站
  8. 家庭局域网_如何查看局域网内所有ip?
  9. 米粒搜---团购信息搜索软件 Android平台
  10. android 自定义组件 属性值,自定义组件之自定义属性
  11. 基金购买和赎回线下业务
  12. ActivitiUFLO2Snaker流程引擎对比分析
  13. Windows10制作双系统来越狱 ios13.3.1(非常方便,不要U盘)
  14. 使用Scanner收集你的身高体重,并用三目运算符判断BMI的范围
  15. rsync同步脚本示例,带有exclude参数说明
  16. 中国医科大学22春《病理学(本科)》在线作业【标准答案】
  17. 快商通董事长肖龙源:逐浪AI大潮,职业教育应紧握机遇,赋能产业
  18. 用python的pandas打开csv文件_python读写数据读写csv文件(pandas用法)
  19. WebBowser 实现淘宝网自动登录
  20. android apk安装工具,安卓装机必备工具!一键批量安装应用apk

热门文章

  1. vivado17.4支持w25q128的方法
  2. NJ 时钟自动调整功能(SNTP)
  3. php 短信验证 云之讯,python3.7实现云之讯、聚合短信平台的短信发送功能
  4. poj 1102 LC-Display(模拟)
  5. 程序员都是吃青春饭,40岁以后怎么办?转行大数据是不错的选择
  6. Kubernetes 忘记token解决方案
  7. Word2003文档中字数统计在哪?
  8. 学HTML5要英语数学吗,数学和英语不好的人能学编程吗?
  9. python 椭圆曲线_Python、Sympy和椭圆曲线
  10. 第八届蓝桥杯 java B组 日期问题