描述软件系统的三个维度:
build- and run-time views:即构建时和运行时的视图
moment and period views:即某时刻和周期的视图
code and component views:即代码和组件的视图
moment | period | |||
code-level | compone-level | code-level | compone-level | |
build-time | 源码,抽象语法树,接口,类,方法 | 包,源文件,静态链接,库,测试用例 | 代码变化 | 配置项,版本 |
run-time | Code Snapshot(代码快照),memory dump(内存转储) | 包,库,动态链接,配置、数据库、中介软件、网络、硬件 | 执行跟踪 | 事件日志 |
过程调用图、消息图,并行,多线程,多进程,分布式进程 |
软件构建:视图之间的转换
传统软件构造过程模型分为线性的和迭代的。
瀑布模型:线性非迭代,顺序经过概念,启动,分析,设计,构建,测试,实现和维护阶段,利于使用,应对变化的时候代价高。
增量模型:非迭代,将整个产品分成不同的增量,逐一完成,以增量的方式实施瀑布模型。
V模型:用于验证和确认,是瀑布模型的扩展,强化测试
原型法:迭代的,软件原型设计是创建软件应用程序原型的活动,即正在开发的软件程序的不完整版本。其好处是在项目早期就可以获得用户的反馈,用户判断软件是否符合规格说明,对软件进行估算。
螺旋模型:迭代的,是一种风险驱动的过程模型。
软件配置管理(SCM):软件配置管理的任务是追踪与控制软件中的变化,其实际任务是版本控制和建立基线。基线是在某时间点上,通过评审和认可后的版本,作为后续变化的基点。
版本控制系统(VCS):版本是给软件的某个状态唯一的标识,可以记录不同开发人员的工作,以便于审计。
GIT:一个git仓库包含三个部分:.git目录(存储所有版本控制数据的仓库),工作目录(本地文件系统)和内存中的临时区域。每个文件一定处于三种状态中的一种:已修改(工作目录中的文件与.git存储库中的文件不同,但不在临时区域中),暂存(文件已修改并已添加到临时区域),提交(文件在工作目录和.git目录中保持相同)。