Revision Chapter2
本章主要讲软件的生命周期和配置管理。
包括了开发过程和配置管理两部分。
Chapter 2
1 SDLC——software development life cycle生命周期
- 主要过程包括:
- Planning
- Analysis
- Design
- Implementation
- Testing a Integration
- Maintenance
- 应当呈现出一种波浪形。
2 软件开发过程
2.1 传统开发过程
-
强调文档。
-
包括线性过程和迭代过程
-
线性过程
-
迭代过程
-
2.1.1 waterfall
从头到尾都是线性过程
- 前提:需求精细明确。
否则当更改需求时需要将前置条件全部重做一遍。
2.1.2 incremental
- 将一个大的工程分为若干个模块,一个模块对应一个waterfall。(串行)。
- 线性的
- 前提:模型架构开放,且接口需要精细化设计。
因为必须要求后形成的增量可以很容易地加到前面的增量中。
2.1.3 V-model
- 每个阶段形成的产品都应通过测试,且应当可以被测试。
- 本质上就是waterfall+测试
2.1.4 prototype
- 迭代
- 在需求不稳定时使用,为了让用户尽快明确需求。
- 把界面给用户获得反馈,不断修改直到用户满意为止。然后在根据界面进行开发。
2.1.5 spiral
-
迭代
-
本质上是prototype的改进,引入风险分析
-
条件:长周期开发软件适用,并对专业的风险分析专业人员有要求。
2.2 敏捷开发过程
-
尽快完成开发
-
不重视文档(和传统开发的区别)
-
快速迭代:
- 快速迭代&小规模持续改进,以快速适应变化
- 软件远比文档重要
- 用户作为开发协作的一部分,以跟进需求
- 强调需求的变换,要求能够灵活地响应变换
-
增量+迭代
- 每次处理一个小规模增量
-
3个Extreme:
- 用户参与
- 小步骤迭代
- 确认/验证
-
Model:极限编程(XP:extreme programming)
-
强调迭代的waterfall
- 每个阶段可迭代
- 阶段内无需产生特定文档
- 强调实时的review——2 people结对编程
- 测试驱动的开发:要求写代码前先根据需求写test用例
-
这要求编程人员有充足的编程经验
-
3 配置管理SCM——software configuration management
包括代码+数据+文档。
!不只有代码!
3.1 版本控制
3.1.1 版本号
3.1.2 原始方法
复制文件并更改文件名以体现版本之间的区别。
- 无法直观反映现今版本较之前版本的变化。
3.1.3 版本控制工具功能
-
individuals
- 回到上一个版本
- 比较两个version的差异
- 备份软件版本历史
- 获取备份
- 合并
-
teamwork
- 多个开发者合作
- 记录每个开发者的动作,便于“审计”
-
创建分支对某些功能进行扩充——便于多个开发者的合作
3.1.4 一些名词
- repository 仓库:储存各个版本
- working copy:工作拷贝,在开发者本地机器上
- file:文件,一个独立的配置项
- version/revision:版本
- change/diff:变化,版本之间的差异
- head:当前程序员工作的版本
3.1.5 VCS版本控制工具
3.1.5.1 分类
-
本地VCS:版本库和更新都在本地端,他人不可见。
无法协作。 -
集中VCS:所有version集中在一个版本库服务器
-
分布VCS:仓库存于server&每个本地computer
- git就是分布式的
- 避免了server停止服务带来的巨大不便
3.1.5.2 Git
-
其中黑色实线左侧为本地端,右侧为server端。
-
staging在机器上并没有实际存在的文件夹,而其余三个目录有真正的文件夹。
-
每个version都是一个对象,每次commit都会形成一个新的对象
-
Object graph:version之间的关系演化(是一个有向无环图)
- A→B:在B的基础上修改后形成A
- A→B:在B的基础上修改后形成A
-
-
合并也会生成一个commit对象
- 用到 当前需要合并的两个commit对象 以及 这两个commit的祖先 ,因为当前这些祖先中包含了当前合并对象中未更改的文件部分内容
-
commit
-
和之前commit中没有改变的文件,不需要重复存储
- !不是直接复制老版本的全部内容
-
Git理论上可以创建无穷多个分支,且 创建所需的时间和已经有的分支数量没有关系
-
4 软件构造的过程、系统和工具
4.1 广义的软件构造
-
programming languages编程语言
- IDE集成开发环境:如eclipse
-
modeling languages建模语言
-
比如UML
-
解决了代码不易理解的问题,便于中间建模评估软件架构
-
-
configuration languages配置语言
- 比如XML、JSON
- 控制程序执行时的各项行为
-
Review
-
静态代码分析工具
- 不需要执行程序
- 比如spotbugs、checkstyle
-
动态代码分析工具
- 执行程序并观察现象、收集数据、分析不足
- 如test、时间和空间效率性能
-
-
debugging&testing
程序开发的任何阶段的成果都必须可test。
不通过test→debug,定位发现错误根源 -
refactoring重构
不改变功能的前提下优化软件代码结构
4.2 狭义的软件构造
Build过程:
即编译、打包成可执行程序的过程。
上一篇: 搜罗的世界各地风景图片
下一篇: linux 下查看文件个数及大小
推荐阅读
-
笔记 Bioinformatics Algorithms Chapter2
-
笔记 Bioinformatics Algorithms Chapter2
-
Error:The SDK Build Tools revision (23.0.3) is too low for project ':app'. Minimum required is 25.0.
-
Python Algorithms – chapter2 基础知识
-
算法-chapter2递归与分治-概述
-
Chapter2:Android下Gradle的基本自定义构建
-
先进半导体材料与器件Chapter2(Ⅰ)
-
《Python编程:从入门到实践》个人学习笔记/心得(菜鸟瞎扯淡) Chapter2 变量和简单数据类型
-
The String 'Head' does not represent a revision number
-
The String 'Head' does not represent a revision number