我正在建立一个Java开发商店,目前仅供我自己作为唯一的开发人员,但随着业务的增长需要雇用其他人。显然,我希望将其设置得正确,以便随着更多人的加入,他们可以立即提高工作效率。请帮助建议我想做的事情,以及做这些事情的工具。
这就是我认为我需要的东西:
答案 0 :(得分:6)
我喜欢Hudson的持续集成构建,我喜欢JIRA进行问题跟踪。 Eclipse有两个插件。
Hudson可以观看软件存储库并重建那些使用已更改资源的项目。
如果你需要比javadoc更多的文档(这是很多),那么考虑一下Wiki。易于使用,有一点结构,您可以将其按摩成PDF。
源代码控制是一个错误。太多可供选择。对于一个小型开发团队来说,可以从subversion或CVS开始(这是旧的但具有最高的IDE支持),当你长大并了解自己的需求时,就转移到更好的开发团队。大多数人都有svn或cvs的迁移工具。从例如移动更难git到Mercurial,你肯定希望有一个实现多个。记住要有源控制存储库的良好备份 - 这是您的业务。频繁的rsyncs,通常是磁带。
我的主显示器旋转90度。这允许我一次看到许多行而不是几行。 (由于某种原因,传统说编辑区域应该宽而短,这可能在单词中起作用,但在代码中不能超过72个字符的代码中起作用)
关于Eclipse的注意事项:使用源存储库为每个项目创建一个工作区!使用Java编辑器保存功能可以在每次保存时重新格式化代码 - 这使得它在前面更具可读性,并且在源库中更好,因为更改标记在正确的版本中。
编辑:CI服务器需要比开发机器更好的原因是因为每次将内容检查到源存储库时它都会运行所有测试。过了一会儿,这需要时间。
就我个人而言,我发现测试适用于库例程。它们指明哪些有效,哪些无效。为整个应用程序编写好的测试更难,但是你可能想从头开始研究它,因为它可以确保一切都适用于每次检查。如果你不熟悉这个概念,写一个评论。 / p>
无论您选择哪个部件,如果他们能够一起工作,您将会很高兴。例如,Hudson知道如何与JIRA交谈。 JIRA知道如何查看CVS。
答案 1 :(得分:5)
要了解大量人员如何构建良好的软件开发环境,请阅读joels test
的12个点。此列表不包含对您更重要的内容。让客户让他们支付和管理合法的东西和税收。
答案 2 :(得分:4)
最重要的是,合适的员工:
工具/流程:
从管理角度来看,我会尝试
答案 3 :(得分:3)
我们一直在使用:
版本控制:
问题跟踪:
持续整合:
开发环境:
分析器:
机制的文档:
其他工具:
答案 4 :(得分:3)
以下是我们的五位开发人员团队在一年内使用的开发堆栈:
在我们的例子中,这个开发堆栈在Ubuntu(工作站组件:Eclipse IDE,Maven)和CentOS(服务器组件:Maven,Nexus,Subversion,Trac,Hudson,Sonar)下运行。
至于文档,LaTeX(Ubuntu下的TexLive和Kile)可以很好地支持高质量的PDF生成。 Subversion可以像应用程序源一样管理文档源。允许制作简单的多页文档和大型多章书。
希望这有帮助。
答案 5 :(得分:3)
分布式源代码/版本控制(Subversion?)
错误跟踪(Trac会这样做吗?)
文档(内部和面向客户)
在内部,我更愿意沟通文档,除非你真的愿意花时间保持内部文档的更新。 Javadoc您的集成点(内部/外部API),但尽量保持您的代码和构建脚本尽可能自我记录。
那就是说,需求文档很有用。我建议使用一个跟踪系统来处理错误和要求。 JIRA允许您创建分层问题,但在您需要之前我不会为此烦恼。
Trac包含一个Wiki,虽然太多内容会变得陈旧,但它可以很方便。
面向客户的文档遍布地图 - 很大程度上取决于您正在做什么。如果你需要大手册(打印或HTML或在线帮助),FrameMaker + DITA Open Toolkit是一个不错的组合,但是FrameMaker许可证会让你回到1000美元。
在某一点上,这会影响企业传播(marcom和PR),这是一种不同的动物。
团队沟通
Google Talk(或您选择的即时消息框架),电子邮件以及偶尔的Skype电话会议可能都是您所需要的。
内部维基和/或内部博客可能不错,但即使您添加了更多开发人员,也可能不会马上使用它们。 Trac包含一个维基。
频繁的自动化建设
从CruiseControl切换到Hudson让这里的每个人都更加快乐 - 两个团队独立做出了同样的决定,他们都很满意。 Hudson的灵活性,易于配置和闪亮。
我还没有被Maven说服。我怀疑它的价值取决于您希望自动下载所有开源库的最新版本的程度。
可能需要确保自动测试在签到过程中通过?
答案 6 :(得分:2)
Subversion 不分布式方法 - 改为Mercurial,Bazaar或git!
是的,Trac会进行错误跟踪(除此之外 - 检查out!)。
文档确实是必须的,但我不确定你在问什么 - 工具呢?为什么不只是javadoc?
对于沟通,您可以使用许多工具,例如Skype,电子邮件,多种IM等等 - 我认为您需要更好地表达您的具体问题以获得具体建议。谷歌浪潮一旦成熟可能会很好,但它还没有生产就绪。
对于持续构建签出CruiseControl - 当然它也运行测试& c。
你可以为我提到的任何构建系统(甚至是旧的svn ;-)编写“触发器”来运行一些测试套件,如果失败则拒绝提交。
答案 7 :(得分:2)
还有一些项目:
您的每一个要点可能都是社区维基。虽然最后你可能不太关心每个领域的最佳品种,但更关心它们与你的IDE或彼此的整合程度。
另外,如果您真的希望让新的队友快速上手并运行,请考虑尽可能多地将您的开发环境放入源代码管理中,这样您就可以将“dev-env”项目签出到新计算机上立即启动并运行!
答案 8 :(得分:2)
您的一个规范(在您的问题中)说:
也许确保自动化 测试通过办理登机手续 过程
我建议这是必要的。查看this matrix of continuous integration servers以查看哪一个符合您的要求。
答案 9 :(得分:2)
如果您只是自己作为唯一的开发人员,但在某些时候进行扩展,根据您正在开发的内容,可能值得查看平台即服务(PaaS)产品,例如https://www.openshift.com或https://www.heroku.com/,它们都提供开发者帐户,但您可以根据需要扩展到付费帐户。
OpenShift为Jenkins提供CI盒式磁带,因此您可以在几分钟内完成一次使用Jenkins和JBoss AS或WildFly等应用服务器的DVCS(git),根据您的需求和方式很多时候你想专心在本地设置它,我更倾向于使用PaaS。
答案 10 :(得分:1)
不要使用Trac,而是考虑Redmine。它允许您在一个问题跟踪系统中存储多个项目。然后,您可以为每个项目使用相同的设置,而不必拥有N个Trac实例。
答案 11 :(得分:1)
对于初学者来说,SVN对您来说已经足够了。肯定得到一个bugtracker。 JIRA很好,但不是免费的。强制执行“没有bugtrecker票证就没有提交”的规则。这样您就可以跟踪开发。在每次进入主分支后进行巡航控制并运行构建+单元测试。应在单独的分支上进行更大的更改,然后将其合并到主分支中。
投资一个好的IDE(我建议使用intelliJ IDEA)和一个好的分析器(我推荐JProfiler)。他们不是免费的,但他们绝对物有所值。