HIT软件构造学习笔记-第二章
2.1软件生命周期与配置管理
大纲:
- 软件开发的基本过程
- 软件的配置管理
一.软件的生命周期(Lifecycle of a software)
From 0 to 1 —— 从无到有
From 1 to n —— 从有到好
-
分析设计
-
编码
-
测试
-
部署和运行
软件虽然不会磨损,但是需要维护和升级,需要增加新的功能
二.传统的软件开发过程
主要过程:
-
线性过程
-
迭代过程
常见的软件开发模型: -
瀑布过程:
1.线性过程最直接的体现
2.无法适应需求的增加和变化
3.与用户到最后一刻才能看到完整的软件
*军方和航天类的项目可以直接运用瀑布模型 -
增量过程
1.线性的推进过程
2.相当于多个瀑布模型的串行
3.将系统分为多个模块,要求模块接口十分精密,利于增加用户的需求 -
V模型
-
强调测试的模型
-
每个阶段产生的产品都必须通过test
-
原型模型
1.先设计软件界面(迭代),直到用户满意为止
2.目的是让用户提前确定自己的所有需求 -
螺旋模型
1.相当于加强版的原型模型
2.在原型模型的基础上加入了专业的风险分析和资金投入等等因素的分析
3.只适合用于开发周期长得软件
三.敏捷的开发过程
敏捷开发和传统开发的区别:
- 强调用户与开发人员的交互
- 可工作的软件比文档更加有用
- 强调客户协作(将客户加入到开发团队之中)
- 强调重视用户需求的改变
eg:极限编程
极限编程的主要思想和瀑布过程一样,但是,改变了不同阶段所做的事情,更加强调小规模的迭代以满足用户的所有需求。
四.软件配置管理:追踪和控制软件的变化
*代码,数据和文档都在管理的范畴之内
1.古老的版本控制:
通过复制文件并且修改文件名来实现版本控制,但是长时间后就会产生遗忘的现象
2.版本控制工具(自动化)
- 回滚到上一个版本
- 比较不同版本之间的差异
- 备份历史版本
- 合并不同的版本
一些需要了解的专业名词:
- 仓库(Repository):就是版本库,用来存储各种版本
- 工作拷贝(Working Copy):在开发者本地机上的工作目录
- 文件(File):独立配饰项目
- 版本(Version):
- 变化(Change or diff):两个版本的变化
- HEAD:是一个指针,指向程序员正在开发的版本
版本控制工具的三种类型:
- 本地:无法进行共享合作,只针对本地的机器建造得版本库
- 集中式:在一个主服务器中存放所有的版本
- 分布式:不同的版本存放在不同的远端服务器中
五.Git
Git是软件配置管理的典型例子
1.Git的结构
- workspace(工作目录)
- staging(暂存区)
- Local repository(本地库)
- Remote repository(版本库)
只有暂存区是虚拟的,其余三个结构都是真实存在文件夹的,暂存区通过文件的标识来区分文件是否进入了暂存区。
Git的每一个commit对象就是一个新的版本
commit对象有两种产生方式:、
- 通过commit命令产生
- 通过合并分支产生
commit对象的内容:
- 文件树的根节点tree
- author
- committer
- 父节点的指针
*与之前commit中未发生变化的文件,无需重复储存,只需要一个链接即可
2.2软件的构造过程,系统和工具
这部分只需要大家自己了解几种工具就可以,不是重点