第一章
1. 多维视图
(1)阶段:构建 || 运行
(2)动态:时刻 || 周期
(3)级别:代码 || 组件
2. 阶段划分、各阶段构造活动
(1)构建阶段
·代码-时刻:源代码由基本程序块及其依赖关系进行逻辑组织。
·代码-周期:添加、修改、删除从一个版本到另一个版本的文件。
·组件-时刻:源代码通过文件,目录,包,库及其依赖关系进行物理组织。
·组件-周期:版本控制、软件演变。
(2)运行阶段
·代码-时刻:快照图着眼于目标计算机内存中的变量级执行状态,内存转储显示运行的程序状态信息。
·代码-周期:执行日志追踪
·组件-时刻:软件包、库、动态链接、配置、数据库、中间件、网络、硬件部署图
·组件-周期:软件追踪(开发人员)、事件记录(系统管理员)
3. 内部/外部质量指标
(1)外部
·正确性:符合规格范围和计划目标
·健壮性:响应规格范围外的异常情况
·可扩展性:提供增加新功能的空间
·可复用性:使软件模块能够被其他程序使用
·兼容性:跨平台、跨软件交互
·效率:程序运行过程中对CPU、内存、硬盘等的占用情况
·可移植性:从一个环境转移到另一个环境
·易用性:不影响专业用户的前提下便于初学者使用
·功能性:软件提供功能的多少
·及时性:高效率大致完成以占领市场
·可验证性:保证软件的效果
·完整性:各个模块间不会被非法访问所干扰
(2)内部
·代码可读性:代码可理解性、函数规约、评审及演练
·圈复杂度:用来衡量一个模块判定结构的复杂程度,合理的预防错误所需测试的最少路径条数。
·耦合度/内聚度:追求低耦合、高内聚
- 耦合度:多个模块间的相互联系。
- 内聚度:模块内部语句或语句段之间的联系。
第二章
1. 软件配置管理(SCM)与版本控制系统(VCS)
(1)软件配置管理(SCM)
·基本概念:版本控制(主要工具)、基线(版本变化基础)、检入(解封上传)、检出(锁死下载)
·软件配置管理是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性,对提交的各个版本进行保存和管理,注明名称、标识符、文件状态、版本、作者、日期等。
(2)版本控制系统(VCS)
·版本控制系统是一个软件,帮助软件开发人员团队工作并维持他们完整的工作历史,允许开发者同时工作,不会重写每个人的改变,维持每个版本全部的历史,新功能完成前不将其加入软件。
·具有仓库(核心)、主干(目录)、标签(版本描述)、分支(并行创建另一条线)、工作副本(仓库快照、私人空间)、提交更改(私人空间到中央服务器)、日志功能(记录不同开发人员作品)
·三种管理模式:本地、集中式(云端交互)、分布式(直接或云端交互)
·特点:可靠、可还原、可备份、可合作、支持多个文件、可审查历史
2. Git/GitHub
(1)Git存储库:.git目录(存储所有版本控制数据)、缓存区、本地工作目录
(2)文件的三种状态:修改、分阶段(文件已修改并已添加到暂存区)、提交
(3)Git中的对象图:Git所有操作的基础,存储在存储库的.git目录中,不重复保存无变化文件,多个提交可共享副本。
(4)分支:commit -> branch -> merge
(5)GitHub:一个面向开源及私有软件项目的托管平台,只支持git 作为唯一的版本库格式进行托管。