软件开发过程管理系统、版本控制系统及它们之间的集成

简介:

前言:本篇文章对于软件管理系统与版本控制系统将作一定介绍,然后再介绍他们之间需要做的集成。

  1、先来谈谈版本控制系统吧

  Version Control System,简称VCS,属于软件配置管理(SCM)的一个部分。这个系统可能对于刚毕业的大学生来说比较陌生,几年前甚至对一些企业来说也比较陌生,简单来说这个系统主要是为了更好保存并调用文件(包括文本,代码,图像等)的各个版本。那为什么需要用这个系统来保存各个版本呢?

  这个就需要追述到没有版本控制系统之前的历史了,那个时候也有程序员,也要写代码,一开始大家写了代码就直接保存,后来发现一个问题,有一天代码改错了,其实前一天的代码是没问题的,但是已经保存了,没办法恢复到前一天了。怎么办呢?大家想出一个办法,你每次做了修改,就必须保存一个副本,以便以后需要。

  就这样,那个问题是解决了,但是后续问题又出来了,每天至少保存一个副本,副本是越来越多,但是一旦有一次我改错了,想去找原来正确的代码,我却没法一下子找到,因为副本太多了,我怎么知道那个副本里我是主要改了什么东西呢?办法又出来了,大家每次弄副本的时候,必须再用一个Excel文档记录那个副本改了什么,而且每个副本的名字必须统一,是XXX-1,XXX-2这样子,后缀是版本号。

  这个问题又解决了,但是新的问题还是不断出来,我发现之前代码没这个问题,但是现在代码有这个问题,但是代码好像没改啥,我想最好能比较一下,但是一看代码有几千行,让我怎么去比较这2个版本之间的差别啊(后来经过千辛万苦终于找到原因,原来是一个变量初值赋错了,可能是当初的笔误),好像很难解决啊!

  问题继续出来,同一个文件可能我在改,别人也在改,最后出了大问题,到底是谁改坏的呢,大家都不承认,因为是同一个源文件,放在同一个地方,大家谁需要的时候就去改,最后就不了了之了,因为根本查不出来的。

  问题还在出来,我在改这个文件,刚改完覆盖了服务器上的那个文件,孰不知有另外一个人也拿了这个文件改其他一个东西,我刚覆盖完,他也传上去把我的覆盖了,最后出问题了说是我的责任,妈的,我明明传上去了,谁叫他覆盖了。

  问题......问题还有很多,怎么解决呢?解决方案就是咱们说的版本控制系统,它的功能主要也就是我上面需要解决的各个问题,当然远远不止这些功能啦,以后再慢慢详说。

  目前流行的版本控制管理工具有Subversion,Clearcase,Perforce,AccuRev,VSS等等,其中Subversion是免费的,Perforce在美国硅谷那块用得比较多。

  2、再来说说软件开发过程管理系统吧

  所谓的软件开发过程管理系统,从广义上来说,需要包括整个软件工程的所有部分,包括需求分析,概要设计,编码,测试和部署与维护,不过今天我们说这个仅仅只包括开发与测试的阶段,也其实就是代码会一直改动的那段时间(做功能与修Bug)。

  还是按照上面介绍版本控制管理系统的方法来介绍软件开发管理系统。

  在没有这个系统之前,我们是怎样管理咱们的开发过程(包括修Bug)的呢?一般情况下,领导发给Email给你说,某某某,今天你把这个功能做了,这就完了,然后出来的问题就是,你有没有做完,他不来问他就不知道,即使你跟他说了,由于功能太多,他也忘记了。所以呢,大家就想出办法,分配任务的时候,需要用Excel文档来记录,做什么事情,负责人是谁,什么时候做好的,代码放在哪里都得记上。

  这个办法的确是很好,大家都很兴奋,以为一切都控制之中了,但是渐渐地问题又来了,功能很多,Bug又很多,都记录在Excel文档上,今天发我一份,明天发我一份,我太忙了,都来不及去更新这些内容,但是每天还是有新的发过来,到最后,不知道哪一份Excel文档是最新的,这个Feature有没有做,这个Bug有没有修,我自己都忘记了。

  三个臭皮匠顶个诸葛亮,大家一合计,有了解决方法,不要这么多Excel文档了,就一个吧,所有的都记在一个上面,放在一个地方,大家自己上去更新,虽然办法是好,但是有时候还是忘记去更新。不过经常有人提醒我去更新,基本上也没落下啥。

  但是不久以后问题还是再次出现了,经理想看看某段时间,小张修了多少Bug,做了多少功能,算了好久愣是没算出来,一看原来是,每个开发和测试记录的时间方式都不一样,有些人喜欢用年月日,有些人喜欢再加具体时间,有些人只用月日,纵是Excel有再强的功能也没法找出来。

 唉,看来还得强制大家用统一格式啊,好了,问题总算解决了,但是福无双至,祸不单行啊,不久又出问题了,做的功能和发现的Bug越来越多,但是一个功能或者修一个Bug又不一定一天能搞定,经常弄完以后想去更新Excel,发现那个条目不知道在哪里了,太多了,而且有时候运气好很快找到,想一下子把做好的几个状态改掉也没法去做,因为不是连在一起的,得一个个找到,按住Ctrl,然后再去改,太麻烦了,实在受不了了!

  呵呵,问题还不止这个了,有一个功能,有两个再不同时间都做过,后来有一个人去改了状态,但是最后发现这个功能有问题,他们两个人谁也不承认是自己改的状态。

  ......

  渐渐地,大伙儿经常忘记去更新了(唉,也没个自动提醒功能),产品质量越来越差,人心越来越差了。。。

  然后呢,大伙儿都知道了,软件开发过程管理系统横空出世了,全部解决以上的所有问题,当然也是远远不止这些功能啦,还包括了那个自动提醒功能了,呵呵。

  目前流行的软件开发过程管理系统主要有,DevSuite,ClearQuest,Bugzilla等等,其中TechExcel 的 DevSuite 是覆盖整个软件生命周期的,Bugzilla是免费的,DevSuite对于中小团队也是免费的

  3、两者的集成使用

  好了,终于介绍完了这两个系统,比较简单,大家如果想了解更多的话,可以到网上去找找。

  现在开始来讲他们的集成,这里所谓的集成,大家其实一想就明白了,版本控制系统只能管理代码的各个版本的,那么它们的集成也必然是跟这个有关的,我们还是以问题的方式开始这个部分。

  作为开发,我们经常做功能和修Bug,但是有件事情不知道大家有没有碰到过,你做完一个功能或者修了一个Bug后,很久以后,测试人员发现还有问题,需要你再去改,那个时候你已经忘记代码是哪一块了,所以你就吭哧吭哧去看代码,找了好久才找到。

  还有件事情,有一次你修了一个Bug,后来你再次碰到一个类似的Bug,虽然你找到了当初修的那个Bug描述,但是你却还是不知道当初怎么修的,所以呢,再次吭哧吭哧去翻代码,浪费大量时间,也许你终于找到那块代码,但是却发现这块代码后来被改过好几次了,也就是有N多个版本了,你不知道哪一个版本是你改的那次,头疼啊,还是再研究研究......

  在这个时候,我们就在想,现在已经有了开发管理系统,对每一个功能和Bug都有任务条进行管理的,那么在我针对这个写Code的时候,是否能把该部分Code的修改时的版本与这个任务条做关联,使得以后我只要找到这个Bug(相对Code而言,有软件开发系统,找到一个Bug是一件非常容易的事情,不管这个Bug多么久远了),就能知道当初我在哪里写的Code,而且知道是改的是那个Code文件的哪个版本。这样子对我们的开发工作是帮助很大的。

  既然有这个需求,各大系统提供商当然不会坐视不管,纷纷推出自己的产品,使得代码可以跟任务相关联,例如Perforce里有Job可以跟代码关联,AccuRev 中Task可以跟代码关联,当然做的最好的还是TechExcel的VersionLink工具,可以跟主流的大多数版本管理工具集成,也就是说如果你们公司用的是Subversion,VersionLink就可以跟Subversion集成,使得Subversion里的代码与DevSuite里的任务关联,如果你们用的VSS,VersionLink可以跟VSS集成,让VSS里的代码与DevSuite里的任务做关联。

  当今世界,开发相关工具是越来越多,但是独立的工具越来越没有市场地位,能够集成在一起使用的工具才是真正大家需要的,因为软件开发各个部分本来就应该是紧密结合在一起的,以前之所以有不同的产品,主要是行业还在摸索阶段,现在到了成熟阶段,要尽可能使流程流畅,所以当然是谁能有一整套的无缝集成的解决方案谁才是王者了,所以呢,各个部分的集成就变得异常重要了。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
2月前
|
存储 传感器 编解码
LabVIEW风力涡轮机的雷电流测量系统中集成高速摄像机
LabVIEW风力涡轮机的雷电流测量系统中集成高速摄像机
22 1
|
20天前
|
人工智能 移动开发 IDE
安利几款与钉钉平台无缝集成打通账号认证的企业文档管理系统
钉钉是很多中小企业都爱用的产品,开通账号就能直接使用了,应用生态非常丰富,尤其是AI技术的应用,走在行业前列。但仍有很多企业对于全面拥抱SaaS服务充满了顾虑,尤其在内部资料的管理这块,即使钉钉在线文档已经提供了非常优秀的协作体验,不少客户仍更偏爱私有部署在局域网里面的企业文档管理系统。那么能将企业内部部署的文档管理系统集成到钉钉平台上面,和钉钉文档并行使用呢?市面上又有哪些企业文档管理系统软件支持与钉钉的集成呢?这也是很多企业客户的疑问。
安利几款与钉钉平台无缝集成打通账号认证的企业文档管理系统
|
8天前
|
监控 安全 搜索推荐
企业应用集成(EAI):连接企业系统的技术探索
【6月更文挑战第25天】企业应用集成(EAI)技术连接异构系统,实现数据共享和业务流程优化。EAI包括界面、业务过程、应用和数据集成,提升协同效率、降低成本、改善客户体验、支持创新及强化风险管控。实施涉及规划、需求分析、选择方案、开发测试、部署监控及维护优化。EAI在企业信息化中扮演关键角色。
|
8天前
|
监控 Devops 测试技术
DevOps实践:持续集成与持续部署(CI/CD)在现代软件开发中的作用
【6月更文挑战第24天】本文深入探讨了持续集成(Continuous Integration,简称CI)和持续部署(Continuous Deployment,简称CD)在现代软件开发生命周期中的核心作用。通过阐述CI/CD的概念、优势以及实施策略,文章旨在为读者提供一套完整的理论框架和实践指南,以促进软件开发流程的高效性和产品质量的提升。
|
15天前
|
存储 持续交付
现代软件开发中的快速迭代与持续集成
在当今快节奏的软件开发环境中,快速迭代与持续集成成为关键。本文探讨了如何利用现代技术和工具,通过持续集成实现高效的软件开发和快速迭代,以及这些实践对开发团队和产品质量的积极影响。
14 3
|
5天前
|
消息中间件 Java 机器人
Spring Boot与NATS消息系统的集成方法
Spring Boot与NATS消息系统的集成方法
|
2月前
|
人工智能 自然语言处理 安全
构建未来:AI驱动的自适应网络安全防御系统提升软件测试效率:自动化与持续集成的实践之路
【5月更文挑战第30天】 在数字化时代,网络安全已成为维护信息完整性、保障用户隐私和企业持续运营的关键。传统的安全防御手段,如防火墙和入侵检测系统,面对日益复杂的网络攻击已显得力不从心。本文提出了一种基于人工智能(AI)技术的自适应网络安全防御系统,该系统能够实时分析网络流量,自动识别潜在威胁,并动态调整防御策略以应对未知攻击。通过深度学习算法和自然语言处理技术的结合,系统不仅能够提高检测速度和准确性,还能自主学习和适应新型攻击模式,从而显著提升网络安全防御的效率和智能化水平。 【5月更文挑战第30天】 在快速迭代的软件开发周期中,传统的手动测试方法已不再适应现代高效交付的要求。本文探讨了如
|
2月前
|
监控 测试技术 持续交付
构建高效持续集成系统的策略与实践
【5月更文挑战第28天】 在快速迭代的软件开发过程中,持续集成(CI)系统是确保代码质量和加速交付的关键。本文将探讨构建一个高效、可靠的CI系统的关键策略,并通过实际案例分析如何实现这些策略。我们将讨论自动化测试、容器化部署、监控和日志记录等主题,以及它们如何共同作用以提升开发流程的效率和稳定性。通过实施这些策略,团队可以显著减少集成问题,并缩短从开发到部署的时间。
35 2
|
2月前
|
运维 Kubernetes jenkins
构建高效自动化运维系统:基于容器技术的持续集成与持续部署实践
【5月更文挑战第28天】 在现代软件工程实践中,持续集成(CI)和持续部署(CD)已成为提升开发效率、确保产品质量的关键环节。本文旨在探讨如何利用容器技术构建一套高效、可靠的自动化运维系统,以支持敏捷开发流程和微服务架构。通过对Docker容器及Kubernetes集群管理工具的深入分析,我们提出了一种结合Jenkins实现自动化测试、构建与部署的完整解决方案,并讨论了其在现实业务中的应用效果和面临的挑战。
|
2月前
|
监控 jenkins 测试技术
理解并实现持续集成(CI)与持续部署(CD):加速软件开发的关键步骤
【5月更文挑战第27天】本文介绍了CI/CD在加速软件开发中的关键作用。CI(持续集成)通过频繁集成代码并自动构建测试,减少错误,提高开发速度和代码质量。实现CI需要版本控制系统(如Git)、自动化构建工具(如Jenkins)和测试框架。CD(持续部署)则进一步自动将通过测试的代码部署到生产环境,提供快速反馈,降低风险。实现CD需配置管理工具(如Ansible)、容器技术(如Docker)和云基础设施。CI与CD结合,形成高效开发流程,最佳实践包括保持主干干净、自动化所有流程、持续监控、快速回滚和持续学习。