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)すべての要件は、バグトラッカーの1つ以上の問題に対応しています
- 2)すべてのコミットメッセージは、「PROJ-123-素晴らしい機能」のような対応する問題キーで始まります
- 3)リリースを行うとき(つまり、ソフトウェアバージョンをインクリメントするとき)、バグトラッカーにそれらの問題がそのバージョンで修正されたことを伝えます。
どのバージョンでどの要件が実装されているかを知る必要がある場合は、バグトラッカーに問い合わせてください。
特定の要件に対して生成されたすべてのコードを知る必要がある場合は、ソースコードリポジトリに問い合わせてください(ログメッセージでコミットをフィルタリングします)
特定のコード行の要件を知る必要がある場合は、ソースコードリポジトリに問い合わせてください。GITとSVNには、特定のファイルについて、コードの各行、誰がいつコミットしたか、およびコミットメッセージ(チームの全員が優れている場合は問題番号が表示されます)を通知する「blame」コマンドがあります。 boy)-したがって、これは架空の「コード行」レベルの注釈として機能します。
「コミットフック」を使用すると、組織でルール2)を適用するのに役立ちます。
Mavenは、JIRAやその他のバグトラッカーとある程度統合されており、#3の自動化に役立つ可能性があります。しかし、私は実際にはそのように使用していません。しかし、それがあなたが必要とすることをしないならば、あなたはいつでももっと頼むことができます:-)