软件研发软件基础设施的建设

前言

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

推荐基础设施

我们目前已经构建了如下图所示的研发基础设施,基本满足我们团队的需求,此外我们也建立了资料共享的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: 有很多不同的软件可以用于3D打印的模型设计,以下是其中一些常用的: 1. Tinkercad:Tinkercad是一款非常易于使用的3D建模工具,适用于初学者和儿童。它提供了一个简单的界面,允许用户创建基本形状并将它们组合起来,以创建更复杂的模型。 2. Fusion 360:Fusion 360是一款全功能的3D建模软件,可以用于设计各种类型的模型。它具有强大的工具,包括参数化建模、装配和渲染,还有与其他CAD工具的无缝集成。 3. SketchUp:SketchUp是一款简单易用的3D建模工具,特别适合建筑师和设计师使用。它提供了一些有用的功能,例如平面图和辅助线,可用于快速创建精确的3D模型。 4. Blender:Blender是一款功能强大的3D建模软件,可用于创建复杂的模型、动画和游戏。它拥有大量的工具和功能,适用于有一定经验的用户。 5. OpenSCAD:OpenSCAD是一款基于代码的3D建模软件,可以用于创建参数化模型。它使用类似于编程的语法,可以让用户在模型中创建循环、条件语句等。 以上这些软件都有其独特的优点和适用场景,选择哪一个取决于用户的需求和经验水平。 ### 回答2: 在3D打印中,常用的软件设计模型有许多选择。以下是几个比较常见且好用的软件: 1. AutoCAD:AutoCAD是一种功能强大的CAD(计算机辅助设计)软件,适用于从简单到复杂的3D模型设计。它具有直观的用户界面和广泛的工具,使用户可以轻松创建和编辑模型。 2. SolidWorks:SolidWorks是一款专业的CAD软件,被广泛应用于3D模型的设计和制造。它提供了丰富的建模工具和功能,能够实现复杂模型的创建、分析和优化。 3. Fusion 360:Fusion 360是一款基于云端的CAD/CAM软件,拥有强大的设计和制造工具。它具有易学易用的界面,支持从草图到3D模型的无缝转换,并且可以与其他软件集成,提供更高效的工作流程。 4. Blender:Blender是一款开源免费的3D建模软件,适用于从简单的模型到复杂的动画制作。它提供了丰富的功能和插件,可以满足不同需求的设计师和艺术家的要求。 5. Rhino:Rhino是一款专业的3D建模软件,被广泛应用于工业设计和建筑设计等领域。它具有灵活的建模工具和强大的编辑功能,能够实现复杂模型的精确设计。 总而言之,选择合适的软件取决于设计需求和个人技能水平。以上提到的软件都具有各自的特点和优势,在3D打印中都是比较好用的选择。 ### 回答3: 在3D打印中,有许多软件可以用于设计模型,每个软件都有其优点和适用的特定场景。以下是几种常用的3D打印设计软件: 1. AutoCAD:这是一种非常流行的设计软件,广泛应用于建筑和工程领域。它具有强大的绘图功能,可以创建复杂的模型,并提供丰富的工具和选项来修改和编辑模型。 2. SolidWorks:这是一种专业的3D建模软件,被广泛应用于制造和工程领域。它提供了强大的实体建模和装配功能,使用户可以创建高度精确的模型,并进行详细的设计分析。 3. Blender:这是一种免费的开源软件,适用于各种3D设计和动画制作。它具有丰富的建模工具,可以创建复杂的模型,并支持材质、动画和渲染等功能。 4. SketchUp:这是一种用户友好的建模软件,适用于初学者和非专业设计师。它提供了简单而直观的界面,让用户可以快速创建简单的模型,并进行基本的编辑和修改。 5. Fusion 360:这是一种全面的设计软件,适用于各种3D设计和制造需求。它具有强大的建模和装配功能,支持多种文件格式,并提供协同设计和云存储的功能。 综上所述,选择哪种3D打印设计软件取决于用户的具体需求和技能水平。对于初学者来说,SketchUp和Blender可能是较好的选择,而对于专业设计师来说,AutoCAD、SolidWorks或Fusion 360可能更适合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值