软件集成策略故事连载----对项目的不利影响竟然这么大

 

2对项目的不利影响竟然这么大

    项目经理老刘跟晓川说,等这一轮集成做完,一起聊一聊。晓川听了有点紧张。不过想一想,自己已经很努力了,也没有什么可担心的。其实关键是程序员提交的质量。倒正好可以借这个机会跟领导沟通一下。

 

周一早上。老刘先是说了些感谢的话,感谢晓川的辛苦工作。晓川听了很欣慰。接着,老刘用笔记本给晓川展示了一张巨大的图,跟他说,这是项目的任务计划图。好复杂啊,晓川看得一愣一愣的。老刘见状,转向白板,在白板上给晓川画了张简单的图。如图 1所示。


 晓川,我想让你了解,你的工作对于这个项目有多重要。看这张图,这是一个典型的例子。开发任务 BCD要想开始,必须在开发任务 A完成之后。类似这样一个一个任务串在一起,就决定了项目至少需要多久才能完成。这个你能理解吧?

能。

但是现在 A任务完成后, BCD任务不能立即开始。即便是 BCD任务的人手已经到位了也不行。你知道细节。

嗯,A任务完成后,要等到下一轮集成时才能去集成。而集成本身也需要时间,要等集成结束, A任务对应的改动进了基线才行。这时候大家才能看到 A任务的成果, B任务才能开始。晓川很熟悉。

现在要等多久?老刘问。

嗯, 那要看我这边集成需要多久。刚结束的一次是整整一周。哦,不止是集成的时间。还要算上等待集成的时间。如果刚好是周一上午完成的,那几乎不用等。如果不巧 是周二完成的,或者就晚了一步,是周一下午完成的,那就要先等上两个星期。也就是说,平均要先用一个星期等待进入集成环节,再用一个星期等待完成集成。

晓川说完,陷入沉思。以前只是觉得自己的工作很辛苦,没想到,整个项目都在看着我,指望我快些、再快些……

我知道你很辛苦,晓川,老刘说,现在你也知道我多么期待你把工作做得更好。你有什么好主意吗?

晓川:我觉得关键是开发人员提交代码的质量。如果他们在提交前保证代码是可以编译通过的,那集成的时候就不会有构建问题了。现在昀费时间的就是集成的时候反复构建。

老刘:你是说,大部分时间是用在反复构建上,而不是在这之前的版本合并上?

晓川:对, 是这样。比如这次集成,星期一下午一点开始处理大家的提交。您知道,大家的代码改动,都在各自的任务分支上。所谓提交,就是告诉我,等到集成时,要把他的 分支合并到集成分支。在我合并的过程中,可能会遇到版本合并冲突,我就要协调,谁提交的,就找谁解决。快下班的时候我给所有的还有提交没有处理的程序员发 了邮件,让他们待命,准备解决冲突。这样,到晚上九点的时候,所有的版本合并冲突都解决完了。而后面的时间,就都费在反复构建上了。

老刘:好。那看来反复构建昀费时间。然后你的思路是,如果程序员提交的版本都是能构建的,你这里就不需要反复构建了?

对。这样的话,说不定周二早上,任务 BCD就可以开始了。 晓川很有信心。

如果程序员的提交都没问题,你确定你构建的时候就肯定没问题么?老刘降低了语速,一个字一个字地说。

那当然,但是……晓川意识到了什么,好像这里的逻辑看似简单明确,其实并不是严格的推理。

这样吧,我看到你有一些想法,这很好。你再想一想。多调查调查,看看现在究竟是什么原因需要反复构建。也跟大家聊聊。总之,请你帮忙想想办法,缩短从任务 A完成到任务 B可以启动这中间的时间。

本文节选自《软件集成策略》一书

董越 .
电子工业出版社出版。

转载于:https://www.cnblogs.com/broadview/p/3326519.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uboot源码——汇编阶段的start.S文件

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、总结 1、关于阶段的定义 第一阶段,即在内部SRAM运行的阶段,简单地理解为汇编阶段。此阶段主要涉及start.S文件,在cpu/s5pc11x/目录下。第一阶段以ldr pc _sta…

机器学习算法之旅

在理解了我们需要解决的机器学习问题之后,我们可以思考一下我们需要收集什么数据以及我们可以用什么算法。本文我们会过一遍最流行的机器学习算法,大致了解哪些方法可用,很有帮助。 机器学习领域有很多算法,然后每种算法又有很多延…

Android Handler的使用方法

如何让程序5秒钟更新一下Title.首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示: package com.example.androidhandletest; import java.util.Timer;import java.util.TimerTask; import android.os.Bundle;import andro…

windows 下查看进程占用

2019独角兽企业重金招聘Python工程师标准>>> //查找出占用8086端口进程的ID netstat -nao | findstr8086 //本机输出效果为: TCP 0.0.0.0:8086 0.0.0.0:0 LISTENING 804 //很显然,进程ID是804 //找出ID为804的进程名 …

MySQL数据库增删改查

常用的数据类型: int:整数类型,无符号的范围【0,2^32-1】,有符号【-2^31,2^31-1】 float:单精度浮点,4字节64位 double:双精度浮点,8字节64位 char:固定长…

chmod的理解

ll file 共有是十位第一位:如果是 - 表示它是文件第一位:如果是d 表示它是目录剩下的333 分别表示 属主u属组g其他用户o所以如下:转载于:https://blog.51cto.com/zlong37/1567472

中国象棋程序的设计与实现(五)--回答CSDN读者的一些问题

最近写了很多文章,同时,也上传了很多免积分的FansUnion原创的优质资源,有兴趣的同学可以看来我的CSDN博客瞧瞧 http://blog.csdn.net/FansUnion。近期,收到了不少读者的评论、反馈、留言。对于其中的一些问题,我想专门…

第九周项目6-穷举法之年龄几何

张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们的年龄为前4项的等差数列的前20项。 构建代码: /**Copyright (c) 2014,烟台大学计算机学院*All gight reserved.*文件名称:temp.…

JavaScript操作大全整理(思维导图七--字符串函数)

7. JavaScript 字符串函数 转载于:https://www.cnblogs.com/yuxia/p/3360824.html

进入shell的两种方法

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 方法一:在图形界面中打开终端 在图形界面下,进入 Shell 的方法是使用 Linux 桌面环境中的终端模拟包,也就是我们常说的终端,这样在图形桌…

SQL Server 固定角色

1、 查看固定服务器角色 execute sp_helpsrvrole; 管理: execute master..sp_addsrvrolemember logingNameneeky rolenamesysadmin; go execute master..sp_dropsrvrolemember logingNameneeky rolenamesysadmin; go 2、 查看固定数据库角色成员 execute sp_helprol…

如何在我们项目中利用开源的图表(js chart)

最近觉得应该把自己在技术上的一些心得记录在博客里面跟大家分享,一起讨论,一起成长! 这篇随笔主要为介绍chart在项目中的运用,因为在我们看到一些开源的chart时候,是使用纯js 或者建立在一些插件(例如:jqu…

cobbler get-loaders 通过代理下载

2019独角兽企业重金招聘Python工程师标准>>> cobbler 版本是2.6.3,可以通过系统环境变量设置proxy,支持 HTTP_PROXY、HTTPS_PROXY、FTP_PROXY 三个变量。 cobbler 版本是2.6.6时,需要从/etc/cobbler/settings 中增加proxy_url_ex…

分析busybox的源码

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考博客 busybox详解_linuxarmsummary的博客-CSDN博客 一、前言 因为uboot给内核传参的bootargs中有“init/linuxrc”这个项目,而由前面的分析可知/linuxrc这个二进制文件位于根文件系统中&…

彻底解决zend studio 下 assignment in condition警告

最近在mac系统下安装zend studio作为php开发工具,把以前的代码导入,发现项目中有很多 “assignment in condition”的警告,造成原因是在条件判断的if、while中使用了如下类似的做法: if ($res $other)while (($row $res->fet…

c# 连接各种数据库 Access、Server等

1.C#连接连接Access程序代码:usingSystem.Data;usingSystem.Data.OleDb;..stringstrConnection"ProviderMicrosoft.Jet.OleDb.4.0;";strConnection"Data SourceC:BegASPNETNorthwind.mdb";OleDbConnection objConnectionnewOleDbConnection(strConnection)…

〖Linux〗Kubuntu设置打开应用时就只在打开时的工作区显示

有没有遇到一种情况: 在工作区1打开了应用程序Google Chrome; 这个时间感觉它打开速度比较慢,就快捷键切换到工作区2了; 结果这个时候,Google Chrome就直接在工作区2打开,多不爽?! &…

搭建Spring MVC 4开发环境八步走

Spring MVC作为SpringFrameWork的产品,自诞生之日,就受到广泛开发者的关注,如今Spring MVC在Java中的发展可谓是蒸蒸日上,如今如果再有开发者说,不了解Spring MVC,或许就被人笑掉大牙。煽情的话就不说了&am…

address already in use: jvm_bind

这是用Myeclipse写网上书店时遇到的错误,错误的意思是8080端口被占用,解决问题的方式是找到占用8080端口的进程关闭就可以了, 在dos下输入netstat -ano 即可查看所有的 然后根据PID关闭进程,在任务管理器中,找到进转载…

【linux】学习6

鸟哥13章的东西 shell script速度较慢,适合用于系统管理,但不适合处理大量数值运算 var$((运算内容)) 可以用来做变量的加减乘除求余运算 total$(($firstnum*$secnu)) declare -i total"$firstnum*$secnu" 上面两句功能一样,建议用…