10万行を超えるコードを使用して、既存のC++プロジェクトを拡張する必要があります。
私の質問は、そのようなプロジェクトをどこからどのように始めるかです。
コードが十分に文書化されていない場合、問題はさらに大きくなります。大規模なプロジェクトでコードフローを研究するための自動化されたツールはありますか?
ありがとう、
10万行を超えるコードを使用して、既存のC++プロジェクトを拡張する必要があります。
私の質問は、そのようなプロジェクトをどこからどのように始めるかです。
コードが十分に文書化されていない場合、問題はさらに大きくなります。大規模なプロジェクトでコードフローを研究するための自動化されたツールはありますか?
ありがとう、
何かに触れる前に、ソース管理を使用してください。
あなたのための本があります: レガシーコードで効果的に働く
これはツールではなく、コードをよりよく理解して変更するために使用できるさまざまなアプローチ、プロセス、および手法に関するものです。それはほとんどC++の観点からさえ書かれています。
Diomidis Spinellisによる本「CodeReading」には、より大規模で未知のプロジェクトに関する概要と詳細な知識を得る方法に関する多くのアドバイスが含まれています。
第6章では、そのトピック(大規模プロジェクトへの取り組み)に焦点を当てています。また、ツール(Ch。9)とアーキテクチャ(Ch。8)に関する章には、役立つヒントが含まれている場合があります。
しかし、この本は「コード」を(読むことによって)理解することについて書かれています。メンテナンス手順に直接取り組むことはありません。
オブジェクト指向のリエンジニアリングについて、現在ネット上で無料で入手できる別の良い本があります: http://www.iam.unibe.ch/~scg/OORP/
私が最初にすることは、製品の要件を見つけることです。
このサイズの製品が要件なしで開発されることはほとんど考えられません。
要件を熟読することで、次のことができるようになります。
それ以外の場合は、コードを見て、開発者の意図を推測しようとしています...
最初に行う必要があるのは、コードがどのように機能するかを理解することです。そこにあるドキュメントを読んでから、プログラムがデバッガーの下で動作するのを見てください。メインの関数/ループを見てから、ゆっくりとプログラムの奥深くまで進んでいくと、物事がどのように動作しているかについてかなり良いアイデアを得ることができます。あなたの後に続く他の人がより良い立場から始めることができるように、あなたがあなたの発見を書き留めることを忘れないでください。
EXTRACT_ALLタグを設定してDoxygenを実行し、コードベースのすべての関係を文書化します。コードフローには役立ちませんが、アプリケーション全体の構造と設計に関してある程度の光を当てることができれば幸いです。
PC でコードを実行できる場合は、通常はプロファイリング出力からコールグラフを作成してみてください。
また、cscope、ctags、lxr などの相互参照ツールも役立ちます。あ
時間をかけて読んだり、クラス図を作成したり、理解するのに時間がかかったコードの部分にコメントを追加したりすることは、コードベースに慣れ、それを変更/拡張する準備を整えるためのステップです。
非常に優れたオーストリアのプログラマーは、プログラムを理解するには、まずプログラムが使用するデータ構造を理解する必要があると私に言いました。