第一到二章:软件构造基础知识,出现在选择题
1、软件构造的多维视图
code-level=代码的逻辑组织:接口、类、方法、属性
component-level=代码的物理组织:包文件、静态链接、库、etc
构建时=侧重于工程的原始时期。瞬间视角,则包括源码、包文件等,某段时期的视角,则包括代码的变化、VCS等
运行时=侧重于程序已经运行起来,程序被载入特定机器。逻辑实体在内存中体现(memory dump、代码快照属于code-level)、物理组织(包、库、动态链接、构型、数据库、中间件、网络)在硬件中体现等。
moment=某个瞬间的形态。一瞬的包结构、源码结构、代码快照、内存转储(也是对内存的一种快照)等。静态链接是程序的构建时的一瞬行为,动态链接是程序运行起来,运行时的一瞬行为。部署示意图等均是侧重于对系统的一瞬间状态的刻画,所以都属于moment视角。
period=某段时间内对系统变化的刻画。代码层面上,一段时间内的代码变化,执行时期栈的追踪,多线程等。组件视角上,版本变化、事件日志等
2、质量因素
外部因素:正确性、健壮性、可复用性、可扩展性等影响软件使用者的因素
内部因素:代码可读性、代码行数、代码逻辑、代码结构(内聚、耦合)、清晰度、规模等影响软件开发者的因素
正确性是最重要的外部质量因素
3、版本控制
SCM(软件配置管理)>=VCS(版本控制系统)
SCM:
- 追踪和控制软件的变化
- 软件配置项SCI:软件中发生变化的基本单元(文件:Component-Level
VCS:
- 本地版本控制系统:仓库存储于开发者本地机器,无法共享和合作
- 集中式版本控制系统:仓库存储于独立的服务器,支持多开发者之间的协作
- 分布式版本控制系统:仓库存储于:独立的服务器 + 每个开发者的本地机器
关于Git
基本指令:
git add:添加文件
git commit -m "message":提交到本地仓库
git commit -a:直接提交到本地仓库
git push origin master:提交到远程仓库
git pull origin master:从远程仓库pull
分支管理:
新建分支:git checkout -b branch_name
切换分支:git checkout branch_name | git checkout master
选择一个分支与当前分支合并:git merge