代码中的需求和代码之间的连接

时间:2012-07-30 09:48:55

标签: java version-control requirements

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

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

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

保重, 马尔钦

1 个答案:

答案 0 :(得分:6)

IMO代码是这种信息的错误位置。

看看下面的虚构代码。

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有一个“责备”命令,它会告诉你,对于给定的文件,每行代码,谁提交它,何时以及提交消息(如果团队中的每个人都是好的话,它会有问题编号)男孩) - 所以这将作为假设的“代码行”级别注释。

使用“提交挂钩”可以帮助您在组织中实施规则2)。

Maven与JIRA和其他bug跟踪器有一定程度的集成,也许它可以帮助自动化#3。但我并没有像那样使用它。但如果它不能满足您的需求,您可以随时ask for more: - )