2009-04-30 3 views
0

私はちょうどHeroicショップに加わりました。コードはきれいで質が高いようですが、話すべきドキュメントはありません。 (コードは小さなグループによって作成され、管理されていました)。したがって、新しいエンジニアは設計を決定するためにソースからリエンジニアリングする必要があります。プロジェクトが小規模なチームから大規模なチームに移行しているので、次の雇用者がそれらをより早く学ぶことができるように、アプリケーションを学ぶ努力を文書化したいと思います。既存のコードを文書化しています

「ドキュメント既存」+アプリケーションのクイック検索|コードはあまり得られません。私はこれがよくある質問であると確信しているので、別の議論への言及が最もよいかもしれません。

提案がありますか?

答えて

3

どのような言語ですか?言語によっては、doxygenのようなものが非常に役に立ちます。

5

もう一つの簡単な出発点はwikiです。システム/アプリケーションの高水準構造を文書化または図化することで、誰もが適切な出発点を持つようにすることが優先事項であり、ウィキは情報を入手するのに便利な方法です。 (ドキュメントは、元の3からこのレベルではなかった場合、私は驚かれることと思いますが、私は、彼らは非常に迅速に有益な何かをwhompことができるに違いない...)

1

VSdocmanhttp://www.helixoft.com)は、ドキュメントを生成するための優れたツールですC#とVB.NETの場合彼らはまたVB6のためのツールを持っています。 14日間の試用版をダウンロードできます。価格は.NET版で229ドル、VB6で79ドルでした。

3

マニュアルの一部を自動テストの形で実行することを検討してください。 (a)実際にコードであることを理解していることを確認し、(b)後で何かを壊すかどうかを知らせる回帰テストを構築します(たとえば、 Xを変更するとYに副作用が発生します - コードでも可能です。に慣れています)。

既存のコードにテストを追加する方法がわからない場合は、マイケルフェザーズの優れた本 "Working Effectively with Legacy Code"を手に入れてください。 (容易に)読み取り可能なヒトおよび-skimmableドキュメントとして

FitFitNesse要件グリッドで表すことができ、特に人間可読が、実行、試験、(これらの入力 - >これらの出力)を生成することができます。

1

Jeff K.が言っていることをバックアップすると、できるだけ広いプライバシ(理想的にはあなたのユーザーにも)が広がったWikiに行きます。人々がそれが始まったことを知ったら、各プログラムのスタブを入れておくと、アップデートのいくつかの反復を触媒するのに十分であり、驚くほど速く書類を完成させることができます。エンジニアは文書化することを嫌うかもしれませんが、間違って見えるものを修正することはできません。

最悪の場合、誰も編集しなかったリビジョン管理されたドキュメントが完成します。今よりも悪いことではありません。

1

コードの複雑さによって、私はいくつかのことをしました。

あなたはおそらく、各メソッド/関数/オブジェクト/何でも(あなたは言語に言及していません)、それが何をしているのかを理解しようとします。理解するのに1分以上かかる何かがある場合は、理解できなかったことを理解し、次の時間にそれを取らないようにコメントを書いてください。

非常にうまく設計されていない限り、すべての部品が互いにどのように関連しているかを理解するのは難しい場合があります。各ルーチンの入口/出口でデバッグ出力を表示し、スタックダンプを使用すると、どのようにしてどのような場所が得られたかを知ることができます。デバッガは、このようなことを理解するために素晴らしいことができます。

私が本当に役に立つと分かった最後のツールは、プロファイラです。 Eclipse用の無料のプロファイラプラグインがありました(名前は忘れていますが、多くはあるとは思いません)、実行中のコードの素晴らしいシーケンス図が作成されます。これは、コードが何をしているかを理解するために私が見た中で最も優れたツールです。当時はセットアップが少し難しかったですが、それを続けると、それは実行可能であり、価値があります。

私はプロファイラをオンにして、1つのボタンを押す/ 1つのタスクを実行してから、そのボタンの「実行」を保存しました。

私は些細なクラスを除外して半妥当なサイズにしました(一部は2ページ、1つのシーケンスダイアグラムは4x6枚の用紙を印刷しました(ランドスケープ))。私はそれらをまとめて録音し、それらを私の立方体の壁に置き、そのことから地獄を研究/文書化しました。

シーケンス図が正しく完了したら、途中でロックします。いくつかのコードを理解しようとしていて、シーケンス図を使用していない場合は、それらを調べてください。私はおそらく、私が見てきた最も有用な設計ドキュメンテーションツールだと思います。

0

コードにコメントが少なすぎるか不十分な場合、Doxygenは価値が限定されます。ただし、コード構造と依存関係を理解するために使用することはできます。 (プロファイラのようなものは、その動作を理解するのに最適です)私は、依存関係を理解するのに役立つ画像を見つけ、UMLツールを使ってコードを実行し、デザインをリバースエンジニアリングします。 Graphvizを使って同様のクラス図を得ることができます。これはDoxygenとかなり簡単に統合できます(オブジェクト指向でないコードの場合でも)。

関連する問題