传统软件的过程模型

基本的类型

线性过程、迭代过程

现有的模型

瀑布过程、增量过程、V字过程、原型过程、螺旋模型

选择合适的过程模型的依据

用户参与度有多大
开发效率/管理复杂度
开发出的软件的质量

waterfall(sequential,non-iterative)

requirements -> design -> implementation -> verification -> maintenance
线性推进
阶段划分清楚
整体推进
无迭代
管理简单
无法适应需求增加

incremental(non-iterative)

系统被分成很多小的开发项目
首先处理最高优先级的需求
某一部分一旦被开发出来就被冻结了
线性推进
增量式(多个瀑布模型的串行)
无迭代
比较容易适应需求的增加

V-Model(for verification and validation)

可以是瀑布模型的一个扩展
测试之后的检查环节结束之后,再回去修改

prototyping(iterative)

software prototyping是开发出一个软件的原型,但是不是软件的最终版本

过程

确认基本需求
开发原型
评审
增强提升原型
如下图所示,也就是在原型上不断的迭代,发现用户变化的需求

好处

卡发出来之后由用户试用/评审,发现问题反馈给开发者,开发者修改原有的实现,继续交给用户评审
循环往复这个过程,直到用户满意为止,时间代价高,但开发质量也高

spiral(iterative)

多轮迭代几倍遵循瀑布模式
每轮迭代由明确的目标,遵循原型过程,进行严格的风险分析方可进入下一轮迭代

agile development(敏捷开发)

通过快速迭代和小规模的持续改进,以快速适应变化
agile = 增量+迭代
每次迭代处理一个增量

特点

极限的用户参与
极限的小步骤迭代
极限的确认/验证

extreme programming(XP)

软件配置管理(SCM)

追踪和控制软件的变化

软件配置项

软件中发生变化的基本单元(例如:文件)

baseline(基线)

软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)

CMDB(配置管理数据库)

存储软件的各项配置项随时间发生变化的信息+ 基线

版本控制(VCS)

古老的版本控制方法:通过过复制文件并修改文件名

版本

为软件的任一特定时刻的形态指派一个位移的编号,作为“身份标识”

意义何在

回滚到上一个版本
毕竟哦啊两个版本的差异
备份软件版本历史
获取备份
合并
在多个开发者之家共享和协作
记录每个开发者的动作,便于“审计”

术语

仓库:软件配置管理中的配置管理数据库
工作拷贝:在开发者本地机器上的一份项目拷贝
文件:一个独立的配置项
版本:在某个特定时间点的所有文件的共同状态
变化:即code churn:两个版本之间的差异
HEAD:程序员正在其上工作的版本

本地版本控制系统

仓库存储与开发者本地机器,无法共享和协作

集中式版本控制系统

仓库存储与独立的服务器,支持多开发者之家的协作

分布式版本控制系统

仓库存储于独立的服务器+每个开发者的本地机器

git

git repository

git仓库由三个部分

  1. .git :本地的CMDB
  2. 工作目录:本地文件系统
  3. 暂存区:隔离工作目录和git仓库(staging area)
    每一个文件属于上述三种状态之一

object graph

版本之间的演化关系图,一条边A->B表征了“在版本B的基础上做变化,形成了版本A”

commit

是对象图中的节点
多个commit之间的关系一般来说由三种:

  1. 每个commit指向一个父亲
  2. 多个commit指向同一个父亲:分支
  3. 一个commit指向两个父亲:合并
    一个branch是一个指向一个commit的名字
    head指向当前的commit
和传统的版本控制系统

传统VCS存储版本之间的变化(行)
git存储发生变化的文件(而非代码行),不变化的文件不重复存储

git command

git merge

实际上是将当前分支于master分支合并,也就是两个分支同时指向当前分支

others


欢迎关注公众号BBIT
让我们共同学习共同进步!

HIT软件构造 软件生命周期 配置管理相关推荐

  1. 软件的基于生命周期开发方法

    软件的基于生命周期开发方法 ​ 早期软件开发处于一种无序状态,经历软件危机之后,开始采用系统工程方法论指导开发,根据软件开发的的生命周期将整个开发划为5个阶段(规划阶段.分析阶段.设计阶段.实施阶段. ...

  2. 软件开发的生命周期描述

    软件项目的生命周期: 项目计划 需求分析 设计(概要设计和详细设计) 编码 测试 发布 维护 项目计划阶段:走访客户,进行交流沟通,获得客户原始需求. 对客户的需求和市场等进行调研,分析,编写可行性分 ...

  3. 第一章:第1章 CRM核心业务介绍--概述,crm架构,公司组织结构,软件开发的生命周期,crm项目的核心业务介绍。...

    第一章:第1章 CRM核心业务介绍 1. 什么是crm项目: 1,CRM(Customer Relationship Management)客户关系管理是管理企业与客户之间关系的新型管理机制.终极目标 ...

  4. 简单了解软件开发的生命周期和流程、思想

    所有知识体系文章,GitHub已收录,欢迎老板们前来Star! GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual 既然我们以后从事的 ...

  5. 【软件构造】课件精译(三)软件生命周期与配置管理

    一.本章概述 1.软件开发的生命周期 2.传统软件开发模型(瀑布模型.增量模型.V模型.原型法.螺旋模型) 3.敏捷开发和极限编程 4.协同软件开发 5.软件配置管理 6.Git 7.总结 二.本章目 ...

  6. 软件生命周期管理研讨会有感

    主办方:省软件协会 地点:武汉光谷软件园C6栋1楼报告大厅 与会者:多数为武汉软件公司,宜昌除我公司外未见公司参加 会议时间:2011-12-8 14:00 – 17:00 讲师:微软中国 开发工具技 ...

  7. 软件开发生命周期(SDLC)完全指南

    译者:陈峻 软件开发生命周期(Software Development Life Cycle,SDLC)包含了软件从开始到发布的不同阶段.它定义了一种用于提高待开发软件质量和效率的过程.因此,SDLC ...

  8. 软件测试常见概念(软件生命周期、软件开发模型、软件质量模型、软件缺陷管理、软件测试概述、软件测试分类、软件测试与软件开发、软件测试原则、黑盒测试方法、白盒测试方法、性能测试)

    文章目录 1. 软件概述 1.1 软件生命周期 1.2 软件开发模型 1.2.1 瀑布模型 1.2.2 快速原型模型 1.2.3 迭代模型(增量模型或演化模型) 1.2.4 螺旋模型 1.2.5 敏捷 ...

  9. er图用什么软件_从软件开发生命周期看商业智能 BI 数据仓库建模

    关于商业智能 BI 的介绍面对不同的企业客户可以从很多不同的角度展开,比如从业务角度.管理角度.数据架构角度.IT 信息化建设角度.BI 实施方法论角度等,不同的视角可以帮助企业更加全面的了解商业智能 ...

  10. 奇安信专家:近八成软件存开源漏洞 供应链需全生命周期安全防护

     聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...

最新文章

  1. mysql 触发器编程_【mysql的编程专题】触发器
  2. hdu 5285(染色法判断二分图)
  3. Java多线程之多线程工程代码编写思维方式
  4. 面试题:InnoDB 中一棵 B+ 树能存多少行数据?【面试不翻车,翻车就跑路】
  5. Go中的三种排序方法
  6. 根深才能叶茂:基础软件突破亟待产业界携手创新完善生态
  7. Java的继承和python的继承_Java ,python面向对象的继承及其区别
  8. Flutter异常Another exception was thrown: A RenderFlex overflowed by 5.0 pixels on the bottom解决方案
  9. java/php/net/python志愿者管理系统程序设计
  10. 大于/小于/等于 的缩写
  11. 基于ssm与maven,使用easyui--tree生成类似部门管理树形结构图
  12. 前端单元测试到底要怎么写?看这一篇就够了
  13. 数学知识的一些常用公式
  14. java咖啡机如何清洗_这样清洗咖啡机最简单有效
  15. Google Pay India(UPI) 印度
  16. Android 基础知识4-3.8 SeekBar(拖动条)详解
  17. Springboot:拦截器和过滤器
  18. V模型 W模型 H模型
  19. Build a web app fast: Python, HTML JavaScript resources
  20. Pandas把某一列日期的月份加减 月份前进或后退

热门文章

  1. android apk更新下载以及安装
  2. JPA学习笔记(1)——什么是JPA
  3. 斐讯n1卡在android,斐讯N1,看本地高清电影请务必刷coreelec
  4. 管理信息系统期末复习
  5. 推荐一些程序猿学习的网站
  6. (三)cuda8和cuda10的切换
  7. 2 4G高频PCB天线设计
  8. 截图软件 : Snipaste
  9. 迭代法动态生成谢尔宾斯基三角形
  10. 各个音阶的频率_各音源的频率范围表