アプリ版:「スタンプのみでお礼する」機能のリリースについて

C++ソースからUMLを使った設計書を起こしたいです。
設計書等は一切ありません。
総ステップ数12万超です。複数のcppファイルに分かれています。
オブジェクト指向に基づいて開発されているので、クラスからクラスへと更には別のcppファイルへと呼び出されていくので、どこから見ていったら良いか悩んでいます。
まずはクラス図から作った方が良いのでしょうか?
C++ソースから設計書を起こすには、どこから手を付けたら良いか、アドバイスお願いいたします。

A 回答 (2件)

ANo.1の回答と同じく、Doxygenがお勧めです。

フリーで使えます。
Doxygenでなくても、他にも静的コード解析ツールが沢山あります。
http://ja.wikipedia.org/wiki/%E9%9D%99%E7%9A%84% …

業務でなさるのでしたら、QAC (http://www.toyo.co.jp/ss/qac/index.html)なんてのもありますが、かなりの予算が必要ですのであまりお勧めしません。

> まずはクラス図から作った方が良いのでしょうか?
> C++ソースから設計書を起こすには、どこから手を付けたら良いか

意外とこういうことについて体系立てて説明したものって無いんですよね。で、私はどうしているかというと、ツールを使っていません。次のような方針でコード解析しています。

--------------------------------------------
1.プログラムが提供する主要な機能を理解する。
(1) そのプログラムが提供する機能を大雑把にリストアップする。
(2) コンパイル、ビルドして動かしてみる。(使ってみる)

2.プログラムの論理構造を図示する。
(1) ディレクトリ構造やファイル名などから構造を推理する。
(2) 各ファイルのヘッダコメントからそのクラス(モジュール)の概要を書き出す。
(3) 集中して読み解くべき主要なクラス(モジュール)を絞り込む。
(4) 絞り込んだクラス(モジュール)について、呼び出し関係を図示する。

3.プログラムの処理構造を把握する。
(1) デバッガを使って、プログラム起動から待機状態にまるまでの初期化処理の流れを追いかける。
(2) 1.で最初にリストアップした主要な機能を実行して、処理の流れを追いかける。

4.自分で機能を追加してみる。
--------------------------------------------
私は、自分で機能を追加できるようになったら、もう充分そのプログラムを理解したといっていいんじゃないかと思っています。

それがどんな機能を提供するプログラムなのか知らないでコードを読み始める無謀な人はいないと思いますが念のため。仕様書があればベストですが、なくてもREADME.TXTみたいなファイルがどこかにあれば多少は推測できるかと思います。

今回kanakokanakoさんが飛び込もうとしているソースコードは12万行という大海なわけですが、本当にコード深くまで潜って読む価値のある部分は全体の1~2割程度の2~3万行ではないかと予想します。重要そうなクラス(モジュール)は、ファイル名やファイルサイズ(=1つのファイルの論理コード行数)から推測できます。そして、そういう重要な部分はそのドメインの専門知識が無いとソースコードを読んでも(仮に仕様書があってその仕様書を読んだとしても)意味がわからないから厄介なのですが・・・

今回何のためにソースから設計書を起こすことになったか存じませんが、誰が何のために読む仕様書なのか、狙いを外さない仕様書になることをお祈りします。

単にファイル名や関数の役割をだらだらと書き連ねた設計書はゴミです。労力の無駄。誰もそんなもの読みません。設計者の意図が、コンセプトがわかる仕様書を書いてくれ!と、言おうと思ったら私が仕様書を書く立場になっていました (^-^;A
    • good
    • 1
この回答へのお礼

丁寧な回答ありがとうございます。
そうですね、12万ステップ全部見ていこうとすると、どこから見たら・・・と途方に暮れてしまうのですが、概要から順々に理解していこうと思います。

お礼日時:2008/07/03 18:33

Doxygenで

http://svn.wikimedia.org/doc/ のようなものを自動生成し、そこから設計書を作成していくのがよいかと思います。
コードから関数などをリンクでたどれるようになるので解析の助けになりますし、作成する設計書のクオリティにもよりますが、クラス図とコラボレーション図はそのまま使えるかもしれません。

参考URL:http://www.fides.dti.ne.jp/~oka-t/doxygen.html
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
是非参考にさせていただきます。

お礼日時:2008/07/02 18:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!