与代码相关的需求和代码之间的联系

6

我希望能够找到一种简单的方法来连接需求/发布信息和源代码。 情况是,开发人员应该能够轻松地找到给定发布或CR创建的任何工件。 我的想法是引入一些新的注释来标记任何新类(我不确定是否适用于任何新方法),例如:

@ArtifactInfo(release="1.2" cr="cr123")

你还有其他的想法吗?也许你已经在使用类似的东西了?

保重, Marcin


根据您的礼仪和开发习惯,如果您是那种不经常更新文档的人,这将会带来更多的伤害而非好处...我不想想象在快速开发一个月且没有注释/ javadoc 更新后将其同步到 SVN。虽然这是个不错的想法,也许您应该将某些功能与 SVN 版本绑定? - Shark
1
Javadoc已经为类添加了@since标签。 - polypiel
我一直在使用 @since。我只是想知道是否有更好的选择... - Marcin Sanecki
这似乎是一个更适合放在CM存储库中而不是代码本身的任务。 CM提供非常具体的历史记录,检入注释可以包括与已更改/添加的代码相关的特定要求的引用。 使用像Trac或Redmine这样的集成票务系统使任何开发人员都可以根据此类信息轻松查看更改。 - Sticks
1个回答

6
我认为代码不是那种信息的正确位置。
看一下下面的虚构代码。
class Authenticator {

    login(String username, String password){
        User user = retrieveUserFromDatabase(username);
        throwIfWrongpassword(user, password);
        verifyUserAge(user)
    }

    void throwIfWrongpassword(User user, String password){
        //throws AuthenticationException if password is wrong
    }

    void verifyUserAge(User user){
        //verify that user is above 18 or account is authorized by a parent
    }

    void biometricLogin(String username, BiometricImage bioimg){
        User user = retrieveUserFromDatabase(username);
        verifyBiometricImage(user, password);
        verifyUserAge(user);
    }
}

这是几个要求的结果:
  • 用户必须进行身份验证才能访问系统
  • 用户可以使用生物识别认证代替密码认证
  • 未成年用户必须经过父母或类似人员授权。
所有这些要求都是在不同的时间点添加到软件的不同版本中的。类级别甚至方法级别的注释无法有效地将要求映射到代码。您必须使用“代码行”级别的注释。当然,这是不切实际的。
正确的方法是在使用源代码存储库和错误跟踪器时遵循一些最佳实践:
  • 1)每个要求对应于错误跟踪器上的一个或多个问题
  • 2)每个提交消息都以相应的问题键开头,例如“PROJ-123-一个好功能”
  • 3)当您发布(即增加您的软件版本)时,您告诉错误跟踪器这些问题在该版本中已解决。
如果您需要知道哪些要求在哪个版本中实现,请查询您的错误跟踪器。
如果您需要知道为给定要求生成的所有代码,请查询您的源代码存储库(按日志消息过滤提交)。
如果你需要了解给定代码行的要求,可以询问你的源代码仓库。GIT和SVN有一个“blame”命令,它会告诉你对于给定文件中的每一行代码,是谁提交的,何时提交以及提交消息(如果团队中的每个人都很好,则会包含问题编号) - 因此,这将作为那种假想的“代码行级别”注释。
使用“提交钩子”可以帮助你在组织中执行规则2)。
Maven与JIRA和其他缺陷跟踪器有一定程度的集成,也许它可以帮助自动化#3。但我并没有真正用它来做这样的事情。但是,如果它不能满足你的需求,你总可以请求更多信息 :-)

Tony,感谢您提供这个完整的解决方案。其中一些东西我已经在使用了。看起来我只需要调整我们的流程,然后我们就能更有效地跟踪变化了。 - Marcin Sanecki
httpunit 项目遵循这里提到的一些最佳实践。在提交 subversion 的消息中使用跟踪器 ID,然后由此脚本获取:http://httpunit.svn.sourceforge.net/viewvc/httpunit/trunk/httpunit/svnlog2releasenotes.ksh?revision=1105&view=markup结果显示在发布说明中: http://www.httpunit.org/doc/release_notes.html跟踪器评论通常指回 subversion。因此,追踪是从需求到代码。原则上,通过这些信息追溯回去是可能的。 - Wolfgang Fahl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接