前言

决定团队效率的不仅仅是成员的技术水平,团队的组织形式,还有一个关键因素就是软件研发的基础设施因素,团队再牛技术再好没有合适的基础设施往往都是事倍功半。本文将介绍经过两年的积累我们搭建的一套零成本的软件研发基础设施,特别适合于无法直接连接互联网的团队。毕竟互联网上已经有相当成熟的软件研发基础设施,而且对于小团队来说还基本是免费的,具体的请出门百度。
顺便提一句由于技术栈不一样可能需要的基础设施略有差别,请根据自身情况自行裁剪。

推荐基础设施

我们目前已经构建了如下图所示的研发基础设施,基本满足我们团队的需求,此外我们也建立了资料共享的wiki,docker的镜像仓库以及适应特殊网络的持续部署系统。

版本管理系统

说到基础设施,第一个要介绍的就是版本管理系统。若一个团队没有版本管理系统,那只能说明这个团队要么是一个人要么是属于石器时代。就算只有一个人,其实也需要版本管理系统来支持对比,回滚,分支。
目前最流行的版本管理系统非Git莫属,强烈推荐使用Git来作为新团队的版本管理系统。但由于历史原因我们采用的是SVN,对于身处于局域网中的我们影响到还不是很大。
这里特别提一下,使用SVN的话也能有一些好处那就是能尽量保证主线的一致性,因为其支线和合并功能并不是特别好使。
我们使用的VisualSVN作为服务端,至于客户端就看个人喜好了,可以使用TortoiseSVN或IDE内嵌的,问题都大。

Bug管理系统

Bug管理系统也是支持研发的一大利器,哪个团队能开发出没有Bug的产品,与其说是没有不如说是不愿意看到,同时Bug管理系统记录缺陷及时进行修复。
这里需要说明的是能修复的Bug就直接修复,不能修复的在录入,不要让Bug管理系统成为Bug的最终归属地。
我们搭建的是BugFree,简单实用。

持续集成系统

持续集成系统是现代软件研发团队的标志,高效的团队离不开持续集成系统的支持。它能够自动构建,自动测试,自动部署产品,不断地确认产品的质量,及时发现问题和缺陷。
我们采用的Jenkins作为我们的持续集成系统,免费开源功能强大,插件众多。
持续集成系统需要版本管理系统的支持,还可以与后面的质量自动检查系统配合使用。
需要注意的是Jenkins构建过程是十分消耗内存和CPU的应当为其找到合适的硬件,同时注意配置系统来及时清理构建产物,我们最开始的jenkins莫名的挂掉,后来发现可用空间为0,好几百G的构建文件。。。
同时Jenkins支持集群,要是团队比较大,产品庞大可以考虑使用集群的方式来搭建持续集成系统。

代码自动质量评价系统

产品质量的另一大利器是代码自动质量评价系统,这个系统可以自动评价项目中的源码的质量情况,找到可能的缺陷和问题,以及不符合编码规范的地方。
我们最开始使用功能的checkStyle等IDE插件来实现这个工作,后来发现了sonar系统,效果杠杠的项目的编码质量上了一个大台阶,技术债务大幅下降。
需要注意的是清理技术要适度,过分的追求0债务往往是不合适的。

依赖仓库

我们采用的maven进行项目构建,同时我们又是身处局域网中,依赖下载我们的一个大问题,经过调研确定可以搭建nexus作为局域网仓库。
需要注意的是,局域网内开发,在开始时会经常遇到局域网仓库没有依赖的现象,我们的做法是在外网通过项目的pom下载依赖后,再将外网的本地仓库同步到局域仓库。

代码评审系统

为了进一步提高产品的质量,我们每天进行代码审查,开始我们通过IDE来进行代码review有时候发现不是很方便,后来我们搭建了Upsources来辅助进行代码审查,效果还不错。
一个意外收获是由于有统计信息的存在,大家提交代码的频率高了很多,同时SVN的严重冲突现象基本消失了。
需要注意的是Upsources是商业产品,但小于10人的团队可以免费使用,怎么用大家都懂了吧。。。。

其他基础设施

除了上文的这些系统我们还搭建了doukuwiki来实现资料的共享、docker的镜像仓库来进行镜像的管理、finesse作为我们的验收测试系统。

总结

需要注意的是,随着技术的发展,基础设施始终处于一个动态的演化过程,基础设施是为了提高团队的工作效率,产品的质量。不能忽视团队和项目的实际情况,过于追求新奇的基础设施,对于产品或团队造成负面影响,这就是舍本逐末。
对团队来说最重要的基础设施就是版本管理系统+持续集成系统+Bug管理系统,有了这些系统可以更高效的支撑团队的研发。
磨刀不误砍柴工,愿大家都有一个好的平台。

软件研发软件基础设施的建设相关推荐

  1. 首都电子商务平台和软件环境的建设

    首都电子商务平台和软件环境的建设 --首都信息发展股份有限公司总裁 陆首群教授 首都电子商务平台是一个能够承载B2C.C2C.B2B.G2B等多种电子商务模式的应用载体,并能为广大用户提供整合性.多对 ...

  2. 软件开发团队建设思路谈

    什么样的软件开发团队出什么样的产品,今天我们要讲讲软件团队的建设思路,同时谈谈为什么我们叫挨踢项目团队. 什么叫挨踢项目? IT项目,特别是软件开发项目,都属于"挨踢"项目的范畴. ...

  3. 嵌入式软件架构的六个步骤(二)软件基础设施

    软件架构这东西,众说纷纭,各有观点.在我看来,软件架构是软件系统的基本结构,包含其组件.组件之间的关系.组件设计与演进的规则,以及体现这些规则的基础设施.软件架构,从来不是一件容易事,它贯穿在产品的整 ...

  4. 软件团队的建设和软件开发管理[zz老秦]

    软件团队的建设和软件开发管理 毕业以后一直在从事软件工作,历经了10年坎坷,现在是一家IT企业的软件开发主管.在不断的摸索.失败.成功中,有不少的经验和教训,希望能和一些成长中的软件从业者分享. 软件 ...

  5. 苍狼敏捷软件开发团队建设指南-1-团队模型

    前言 说明:本文介绍了一种团队模型及其建设指南,是苍狼敏捷软件方法的其中部分,并不是通用的团队建设指南,供参考. 本团队模型的特点是更加接近于传统团队模型,与Scrum的团队模型有巨大区别. 目的 本 ...

  6. 做软件与团队建设——对带研发团队和管理的总结

    刚接手了一个团队,接到通知需要在公司领导面前说一下自己的研发和管理思路,总结了这几年的思想,写了如下的记录:已经在公司领导前讲过了,得到了还不错的反馈. 1 做软件 原则:

  7. 漫谈我国主流人工智能软件基础设施

    https://www.toutiao.com/a6688549367021830667/ 一.百度AI开放平台 将百度在人工智能领域积累的技术以API或SDK等形式对外共享的在线平台.提供全球领先的 ...

  8. 任正非公开信深度解读:两年怎样改变了华为?

    2016年8月,一位华为内部署名"泥瓦客"的海归程序员,写下了一篇<华为到该炸掉研发金字塔的时候了>的文章,从组织.流程.环境.工具等四方面怒斥在华为做研发之不易.此文 ...

  9. DevOps infra | 互联网、软件公司基础设施建设(基建)哪家强?

    国内公司普遍不注重基础设施建设,这也是可以理解的.吃饭都吃不饱,就别提什么荤素搭配,两菜一汤了.但也不能全说是这样,还是有很多公司投入大量的人力物力去做好公司的基建,比如很多阿里和美团的小伙伴对公司的 ...

  10. 清华大学软件学院院长王建民:以数字基建为契机,加强工业互联网大数据软件建设...

    来源:中国电子报 作者:清华大学软件学院院长王建民 本文约3250字,建议阅读5分钟 工业互联网大数据软件基础设施建设对工业领域激活大数据资产.导入智能化技术具有重大基础支撑作用. 编者按:3月4日, ...

最新文章

  1. ASP.NET的WebFrom组件LinkButton编程
  2. Linux服务器运行sh文件提示权限不够解决方法?飞腾服务器Permission denied问题授权方法
  3. 设置 JAVA_HOME
  4. 【CyberSecurityLearning 67】Metasploit(MSF)
  5. 数据库 / 事务的隔离级别
  6. springboot 压测 50并发 线程等待_Spring Boot中三款内嵌容器的使用
  7. javascript经典实例_JavaScript 经典实例收集整理
  8. Linux stmac网卡代码分析 -- open
  9. jQuery教程08-属性筛选选择器
  10. 作者:李崇纲,男,北京金信网银金融信息服务有限公司常务副总经理。
  11. opencv空间色彩转换
  12. 考研数学三部曲之大话线性代数
  13. Hibernate中配置C3P0连接池
  14. 删除计算机共享信息命令,win10系统使用命令将网络共享删除的操作办法
  15. 跟着锅子一步步学习32位汇编(3)---MOV和XCHG指令
  16. 电脑连接android智能电视的一种方法
  17. 如何编写python爬虫_如何完整写一个爬虫框架
  18. RabbitVCS安装
  19. 收费版ESX 与免费版ESXi的区别
  20. python tokenize()_tokenize- 用于Python源代码的Python – Python语言服务(Python教程)(参考资料)...

热门文章

  1. ios开发防止App被抓包(可正常请求)
  2. 《大数据技术原理与应用》林子雨(第二版)--总结
  3. Oracle数据库锁表查询
  4. 数据库多表查询时,返回值该如何接收问题
  5. Vue使用阿里iconfont图标
  6. windows/system32/winload.exe系统无法登录报错428的快速解决方法
  7. Tools_Procexp找文件被哪个进程占用
  8. win7下虚拟显示器完成记(virtual monitor)——VDI显卡透传场景
  9. Xmind模板文档分享——学习记录(4)
  10. 史上最全 IT 类学习资源