3 Software Construction Process and Configuration Management
目录
3 Software Construction Process and Configuration Management
1 Software Development Lifecycle (SDLC)
2 Traditional Software Process Models
4 Software Configuration Management (SCM) and Version Control System (VCS)
5 Git as an example of SCM tool
6 General process of software construction
1 Software Development Lifecycle (SDLC)
本课程主要涉及第4部分
2 Traditional Software Process Models
考试要求根据需求区分出软件开发过程(软件过程模型)
在实际场景中能选择合适的过程模型(根据需求选择合适的模型)
要知道每个过程模型的优缺点
线性过程:当用户的需求非常明确时选择
迭代过程:开发的每一步都和用户确认,然后修改
传统的过程模型:
瀑布模型(是线性过程)
用户只有在开发的最后一个阶段才能看到程序,这使调整非常困难
增量模型:将系统分为很多小模块,每个模块都是可运行的
后一个增量的开发不能影响前一个增量
局限性:接口需要非常简单成熟的,需求也需要是比较稳定的
V模型:验证
每个阶段都测试,现实中用不到
原型模型(是迭代模型):先提供一个可供评价的原型
搞清用户的需求再开发(若用户觉得原型可以了,之后不能反悔)
先做界面(甚至是画一张图)
可能会忽略对整体系统的设计,故系统的结构可能不太好
螺旋模型(是迭代模型)
比别的过程多一个风险分析阶段(对于长周期的大工程来说,可以避免风险;小程序不需要)
四个象限
传统过程模型的每个阶段都会输出详细的文档(传统过程中产生的大量文档能保证程序的质量)
开发周期可能是几个月
3 Agile Development
敏捷模型
短周期(1-10周),快速,比如手机app
- 开发者之间每天都做交互
- 几乎不需要文档(要求开发人员有丰富经验)
- 客户需要参与到开发过程中(传统过程:写个合同,软件开发完成后若客户觉得不行,则开始打官司)
- 快速适应变化(可以适应不稳定需求,比原型模型更适应)
极限编程
强调短周期迭代,采用测试优先(开发与测试过程绑定在一起)
(传统过程是先编码再测试)
4 Software Configuration Management (SCM) and Version Control System (VCS)
版本控制相关术语
SCM,Software Configuration Management
VCS(Version Control System)有3种
缺点:难以同步,浪费空间
5 Git as an example of SCM tool
Git是分布式的
考试时通常会给一条git命令,要求说明版本的变化
remote repository:远程仓库
staging:暂存区(是虚拟的,没有实际空间),存打上修改标签的文件,commit会将所有带修改标签的文件提交到本地仓库
git通过文件的状态确定文件处于那个目录(区域)中
考试时会这样问:文件已暂存,位于那个目录? 答:位于staging
节点结构
BLOB,Binary Large OBject 二进制大对象
commit对象形成的图是DAG(Direct Acyclic Graph有向无环图)(注意!没有环,新版本不能指向老版本)
将分支merge时,一个子对象就有两个父对象(最多有两个)
传统VCS与Git的区别:
传统 在某个版本下很难创建的分支
git 理论上可以创建任意多个分支
考试时可能:给出图要求写出命令,或给出命令要求画图
关于远程仓库有4个命令:clone、push、pull、fetch
多人协作(远程操作)
需要将远程端的版本与本地版本合并后再push(git会检测是否合并了最新的版本)
GitHub比git多了fork,pull-stream(考试不涉及GitHub)
6 General process of software construction
(本节不考)
代码评审(Code review)主要用于大型项目,本课不做
静态代码分析(Static code analysis)推荐使用以下自动化工具(不过本课程不做要求,因为课时不够)
动态代码分析(Dynamic code analysis)主要是测性能(用工具分析时、空性能)
代码重构:不改变程序的功能,优化代码,将类的结构变得清晰
eclipse也有重构工具(能把类中相同的部分抽取,生成一个新的类)