我正在寻找流程建议,我在网站上看到了一些.我喜欢听到的是你在公司,或者只是你和你的爱好项目中特别使用的东西.任何链接到其他网站谈论这些主题当然是受欢迎的!
一些问题的答案基于:
用户如何向您报告错误/功能请求?你使用什么软件来跟踪它们?
错误/功能请求如何变成"工作"?你有计划的工作吗?你有没有一个时间表?
你有规格并遵循它们吗?它们有多详细?
你有技术领导吗?他们的角色是什么?他们自己做任何编程,还是建筑/指导?
你进行单元测试吗?它对你有什么帮助?你会说你的报道是什么?
你编码审查吗?在紧迫的期限内工作时,代码可读性会受到影响吗?你打算以后回去清理吗?
你有文件吗?您或您的公司对此感到满意吗?(类,每个方法和内部方法的描述?或者只是代码的棘手部分?)
您的SCM流程是什么样的?你使用功能分支,标签吗?你的"后备箱"或"主人"是什么样的?它是新开发发生的地方,还是代码库中最稳定的部分?
locriani.. 11
对于我的(小)公司:
我们首先设计UI.这对我们的设计绝对至关重要,因为复杂的用户界面几乎会立即疏远潜在买家.我们在纸上对设计进行原型设计,然后在决定设计细节时,准备View和任何适当的Controller代码,以便对设计进行连续的交互式原型设计.
当我们向可接受的用户界面迈进时,我们会为应用程序的工作流逻辑编写纸质规范.纸张价格便宜,而且通过设计进行搅拌可以保证您至少花费少量时间考虑实施而不是盲目编码.
我们的规格与我们的来源一起保持在修订控制中.如果我们决定进行更改,或者想要进行实验,我们会对代码进行分支,并立即更新规范以详细说明我们要使用此特定分支完成的操作.不需要对分支进行单元测试; 然而,它们是我们想要整合回主干的任何东西所必需的.我们发现这鼓励了实验.
规格不是神圣的,也不属于任何特定的个人.通过将规范应用于源控制的民主环境,我们鼓励不断的实验和修改 - 只要记录在案,我们就不是说"WTF"了.后来.
在最近的iPhone游戏(尚未发布)中,我们最终获得了近500个分支,后来转化为近20种不同的功能,大量的概念简化(进度条上的"点击取消"而不是单独的按钮) ,一些被拒绝的想法,以及3个新项目.最棒的是每个想法都有记录,因此很容易想象出这个想法如何改变产品.
在每次主要构建之后(主干中的任何内容都会更新,单元测试通过),我们尝试让至少2个人测试项目.大多数情况下,我们试图找到对计算机知之甚少的人,因为我们发现设计复杂性而不是简单性太容易了.
我们使用DOxygen生成我们的文档.我们还没有将自动生成纳入我们的构建过程,但我们正在努力.
我们不编码审核.如果单元测试工作,并且源不会导致问题,那可能没问题 - 但这是因为我们能够依赖程序员的质量.这可能不适用于所有环境.
单元测试一直是我们编程实践的神灵.由于任何新代码在没有适当的单元测试的情况下都无法传递到主干,因此我们的主干覆盖范围相当好,而且我们的分支机构覆盖范围适中.但是,它不能替代用户测试 - 只是一种有助于达到这一点的工具.
对于错误跟踪,我们使用bugzilla.我们不喜欢它,但它现在有效.我们可能很快就会推出自己的解决方案或迁移到FogBugz.我们的目标是在我们达到0已知错误状态之前不发布软件.由于这种立场,我们对现有代码包的更新通常相当少.
所以,基本上,我们的流程通常看起来像这样:
论文UI规范+计划» 心理测试 » 第1步
查看代码+单元测试» 用户测试 » 步骤1或2
纸张控制器和型号规格+计划» 心理测试 » 步骤2或3
型号和控制器代码+单元测试» 用户测试 » 步骤3或4
分支理念»规范»编码(无单元测试)» 心理测试 » 拒绝
分支理念»规格»编码(无单元测试)» 心理测试 » 验收 »单元测试» 主干 » 步骤2或4
已知错误»Bug Tracker»错误修复» 步骤2或4
成品»错误报告» 步骤2或4
我们的过程并不是完美的,但完美的过程也意味着完美的人类和技术 - 而且这种情况不会很快发生.我们在计划中经历的纸张数量是惊人的 - 也许我们是时候与Dunder Mifflin签订合同了?
对于我的(小)公司:
我们首先设计UI.这对我们的设计绝对至关重要,因为复杂的用户界面几乎会立即疏远潜在买家.我们在纸上对设计进行原型设计,然后在决定设计细节时,准备View和任何适当的Controller代码,以便对设计进行连续的交互式原型设计.
当我们向可接受的用户界面迈进时,我们会为应用程序的工作流逻辑编写纸质规范.纸张价格便宜,而且通过设计进行搅拌可以保证您至少花费少量时间考虑实施而不是盲目编码.
我们的规格与我们的来源一起保持在修订控制中.如果我们决定进行更改,或者想要进行实验,我们会对代码进行分支,并立即更新规范以详细说明我们要使用此特定分支完成的操作.不需要对分支进行单元测试; 然而,它们是我们想要整合回主干的任何东西所必需的.我们发现这鼓励了实验.
规格不是神圣的,也不属于任何特定的个人.通过将规范应用于源控制的民主环境,我们鼓励不断的实验和修改 - 只要记录在案,我们就不是说"WTF"了.后来.
在最近的iPhone游戏(尚未发布)中,我们最终获得了近500个分支,后来转化为近20种不同的功能,大量的概念简化(进度条上的"点击取消"而不是单独的按钮) ,一些被拒绝的想法,以及3个新项目.最棒的是每个想法都有记录,因此很容易想象出这个想法如何改变产品.
在每次主要构建之后(主干中的任何内容都会更新,单元测试通过),我们尝试让至少2个人测试项目.大多数情况下,我们试图找到对计算机知之甚少的人,因为我们发现设计复杂性而不是简单性太容易了.
我们使用DOxygen生成我们的文档.我们还没有将自动生成纳入我们的构建过程,但我们正在努力.
我们不编码审核.如果单元测试工作,并且源不会导致问题,那可能没问题 - 但这是因为我们能够依赖程序员的质量.这可能不适用于所有环境.
单元测试一直是我们编程实践的神灵.由于任何新代码在没有适当的单元测试的情况下都无法传递到主干,因此我们的主干覆盖范围相当好,而且我们的分支机构覆盖范围适中.但是,它不能替代用户测试 - 只是一种有助于达到这一点的工具.
对于错误跟踪,我们使用bugzilla.我们不喜欢它,但它现在有效.我们可能很快就会推出自己的解决方案或迁移到FogBugz.我们的目标是在我们达到0已知错误状态之前不发布软件.由于这种立场,我们对现有代码包的更新通常相当少.
所以,基本上,我们的流程通常看起来像这样:
论文UI规范+计划» 心理测试 » 第1步
查看代码+单元测试» 用户测试 » 步骤1或2
纸张控制器和型号规格+计划» 心理测试 » 步骤2或3
型号和控制器代码+单元测试» 用户测试 » 步骤3或4
分支理念»规范»编码(无单元测试)» 心理测试 » 拒绝
分支理念»规格»编码(无单元测试)» 心理测试 » 验收 »单元测试» 主干 » 步骤2或4
已知错误»Bug Tracker»错误修复» 步骤2或4
成品»错误报告» 步骤2或4
我们的过程并不是完美的,但完美的过程也意味着完美的人类和技术 - 而且这种情况不会很快发生.我们在计划中经历的纸张数量是惊人的 - 也许我们是时候与Dunder Mifflin签订合同了?
我不确定为什么这个问题被投了票.我认为这是一个很好的问题.谷歌搜索是一回事,并阅读一些随机网站,这些网站很多时候试图向你推销一些东西,而不是客观.另外一件事是要求那些开发人员/ IT管理人员分享他们的经验,以及哪些对他们的团队有效或无效.
现在这一点已经不在了.我相信很多开发人员都会指向"敏捷"和/或Scrum,请记住这些术语通常使用得非常松散,尤其是敏捷.我可能听起来很有争议,说这不是我的意图,但这些方法被过度炒作,尤其是Scrum,它更像是由Scrum顾问推销的产品,而不是"真正的"方法.话虽如此,在一天结束时,你必须使用对你和你的团队最有效的东西,如果它是敏捷/ Scrum/XP或其他什么,那就去吧.与此同时,您需要对此保持灵活性,不要对任何方法,工具或技术抱有信心.如果某些东西不适合你,或者你可以通过改变某些东西来提高效率,那就去吧.
更具体地说明您的问题.以下是对我有用的技术的基本总结(其中很多都是常识):
组织与特定项目相关的所有文档和电子邮件,并通过中心位置让其他人可以访问(我使用MS OneNote 2007并将其用于我的所有文档,进程,功能和错误跟踪等)
所有会议(您应尽量减少)应遵循行动项目,其中每个项目都分配给特定人员.任何口头协议都应写入书面文件.所有文档都添加到项目站点/存储库中.(在我的案例中MS OneNote)
在开始任何新的开发之前,请准备一份关于系统能够做什么(以及它不会做什么)的书面文档.致力于此,但要灵活应对业务需求.文件的详细程度如何?足够详细,以便每个人都能理解最终系统的功能.
时间表很好,但对自己和商业用户来说是现实和诚实的.我使用的基本准则:发布缺乏某些功能的质量和可用软件,而不是具有所有功能的错误软件.
你的开发人员之间有开放的沟通渠道.团队以及您的开发人员和业务团队之间,但在一天结束时,一个人(或几个关键人物)应该负责做出关键决策.
有意义的单元测试.但不要迷恋它.100%代码覆盖率!=没有错误,软件根据规格正常工作.
有代码标准和代码审查.承诺标准,但如果它在某些情况下不起作用则允许灵活性.
评论你的代码特别难以阅读/理解部分,但不要把它变成小说.
如果您已经在使用该类/方法,请返回并清理代码; 实现新功能,处理错误修复等.但不要仅仅为了重构而重构它,除非你没有别的事情要做,而且你很无聊.
最后也是更重要的项目:不要对任何特定的方法或技术抱有信念.借用每个方面的最佳方面,找到适合您和您的团队的平衡点.