web-dev-qa-db-ja.com

ドキュメントのないCMSやフォーラムシステムのような大きなシステムを知るための最良のアプローチは何ですか?

私の問題は次のとおりです。 Wordpress、Drupal、Symfonyのようなフレームワーク、PhpBBのような大きなフォーラムシステムなど、まったく新しいシステムについて知る必要があります。
ドキュメントがまったくないが、コードは優れているとしましょう。

私がやっていることはindex.phpから始めて、最初のインクルードをクリックすることです。これにより、次のファイルに移動します。しかし、その後、別のファイルを要求し、そのファイルが別のファイルを要求するため、最後にどこから始めたかを忘れてしまい、前の要求であった手がかりがありません。

だから私の質問は、これを行うための良い方法はありますか?アプリケーションフローなどのチャートを描くようなものです。新しいシステムを知りたいときは、まず、何が何の後に、どのファイルが続くのか、「全体像」を知りたいと思います。システムのどの部分、どの関数がいつ呼び出されるかなどを実行します。

基本的に私がやりたいのは、新しいシステムを起動するときに このようなアプリケーションフロー を書くことだけです。

時間と混乱をあまりかけずにこれを行うための良い方法はありますか?
このためのソフトウェアやデバッグツールはありますか?
ここで適用できるこの状況のチャートタイプはありますか?
コードを深く掘り下げて、それほど重要ではない部分に多くの時間を浪費することなく、大きなシステムを理解するための小さなトリックやヒントを提案できますか?

4
kissgyorgy

この質問は非常に幅広いので、いくつかの一般的なアドバイスだけです。

時間と混乱をあまりかけずにこれを行うための良い方法はありますか?

私が知っているのは1つだけです。システムの作成者に説明を求めてください。著者のいずれかを把握できない場合は、リエンジニアリングを開始する必要があります-ショートカットはありません。

このためのソフトウェアやデバッグツールはありますか?

独自のプログラムのデバッグに使用するのとまったく同じツール。たとえば、システムが主にPHPで記述されている場合は、お気に入りのPHPデバッガーを使用します。

ここで適用できるこの状況のチャートタイプはありますか?

あなたはすでに自分でフローチャートを提案しました。実際、基盤となるデータベースがある場合は、ERモデルを追加します(またはERMの代わりにUMLクラス図を利用します)。

コードを深く掘り下げて、それほど重要ではない部分に多くの時間を浪費することなく、大きなシステムを理解するための小さなコツやヒントを提案できますか?

ここで私があなたに与えることができる唯一の一般的なヒント:データモデル(および永続データを格納するために使用されるあらゆるテクノロジー)の分析を開始します。しかし正直なところ、正しいことはシステムと何を達成しようとしているかに大きく依存します。

3
Doc Brown