• ベストアンサー

プログラムの解析(分析)方法

こんにちわ。 情報系の会社に入社し、パッケージのプログラム解析等 の作業をよくしているのですが、規模が大きく複雑なの で、うまく仕様をマトメきれていない感があります。 タイトルの通りですが、規模の大きなプログラムのロジッ クを理解するのに、どのような方法で解析されています か?効率の良い方法があれば、是非伝授してください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

規模が大きいといいますが、どのレベルかもわかりませんし どのようなシステムかもわかりませんし どう纏めきれていないのかもわかりませんので 適切な回答はできないかもしれませんがご了承ください。 解析するときにはシステム構築と同じ手順を踏むといいです。 プログラムを設計するときには内部設計と外部設計があります。 外部設計はユーザがプログラムを実行する時の「外見」を設計するもの。 外見とはどのようなオペレーションをするとどのような結果が返ってくる、といったものです。 内部設計は外部設計の仕様を満たす為のロジックを設計するものです。 調査する場合、まず外部設計のみに着目してください。 そして外部設計をカテゴリ分けします。 機能別、画面別などそのシステムに合ったカテゴライズで行ってください。 1つのカテゴリが噛み砕けるレベルまで小さくなったら内部を参照し、 コードから擬似コーディング(日本語の文字によるロジック記載)へ変換します。 このような感じでしょうか。

mttk1238
質問者

お礼

丁寧なご回答ありがとうございます。 なるほど。解析するときにも、システム構築と同じ 手順を踏むといいんですね。 私の場合、ただ我武者羅にPGのロジックを解析してた だけなので、時間はかかるし理解できない仕様を作って しまっていたのかもしれません。 ただ、システムの一部にあるモジュールの解析なので 画面はないんですよねぇ・・・(笑) とにかく、実践してみます。 ありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQLの解析資料の作り方

    仕事のメンテナンスで他の人が作ったSQLの解析を 多く行うのですが、複雑なSQLや10以上のテーブルを 結合して何をどうしているかを、解析した以外の人間が 一目で見て分かるような資料をどのように作ったらいいか 困っています。 何か良い表現方法やまとめかたをご存知の方がいらっしゃったら 教えていただきたいです。 現在は、どのテーブルからどの結合条件でどの抽出条件で などのまとめかたで記述をしているのですが、ぱっと見 わかりづらく、伝わりにくいので解析後時間がたってしまうと わけがわからなくなり困っております。 よろしくお願いいたします。

  • 数値解析についての質問です。お願いします

    以下の問題をプログラム、あるいはエクセルを用いて解きたいのですがどのように解いたらよいのかわかりません。お願いします dx/dt=1/2(1-x),x(0)=0.1の解を以下の方法で求めよ 1、オイラー法を用いて求めよ。時間刻みhを0.5、時間範囲を0<=t<=20とする。解析値、解析解、相対誤差を表にまとめよ。数値解、解析解の時間的変化をグラフで示せ(解析解)= 1/1+9e^-0.5t 2、オイラー法をルンゲクッタ法に変え同条件で解け

  • ソフトウェア解析に必要なもの

    あるパッケージソフトの解析をしなくてはならなくなりました。 目的としては、解析後にそのソフトの開発(機能追加)を行いたいという事です。 VC++メインのWinアプリケーションなのですが、 SOAP,XML,java,CORBA,VBA なども使っているようです。 現在、手元にあるものは、 ・パッケージソフト本体 ・ユーザ対象のインストール・操作マニュアル ・プログラム設計書??  ⇒ざっと見たところ、↓のような感じでした。   ・クラス階層図   ・クラス定義    ・public関数名・引数名・戻り値名(説明は無い)    ・メンバ変数名・型(説明は無い)   ・関数ベースのシーケンス図    アクションに対して、関数がキックされる順番を    記したもの。 上記の状態で、今後パッケージの追加機能を行うためには、何が必要かを調査するように言われています。 とりあえず、私が必要だと思っているのは、 ・要求仕様書 ・アーキテクチャ解説書  ⇒どこに何の技術が使われているのか。 ・開発ツール、コンポーネント一覧(名称・バージョン) ・関数定義仕様書  ⇒関数の動作、引数、戻り値について文章で説明   されているもの。 ・ソースコード といったところなのですが、他に絶対に必要だと思われるものはありますでしょうか? 上記の内容だけでは、分かりにくいところもあるかと思い ますが、本当に困っています。 足りない情報があれば補足しようと思いますので、どうぞ よろしくお願い致します。

  • 複数のプログラムを使った作業を自動化する

    複数のプログラムを使った作業を自動化する方法を検討しています. 作業の目的は,解析のために画像を複数回に渡って所定の変換を行うことです.作業の行程は多いですが,毎回同じ作業です. 作業の内容としては, プログラムAを立ち上げる.メニューバーをクリック.「開く」をクリックして,所定の位置に格納されたファイルを選択して開く.ファイルを変換する処理を行う.特定の名前をつけて,保存する.プログラムBを立ち上げる.先ほど保存したファイルを開く.ファイルを変換する処理を行う.上書き保存する.プログラムCを開く.... と言った具合で,約20行程からなっています.その中の一部の変換には約1分ほど時間が掛かるものも含まれます.ほとんどの工程はクリックのみで行われますが,一行程だけプログラム上でパラメーターを6つの欄の中にそれぞれ64,64,32,8,8,1などと入れる必要があります. 上記の処理を行うのは64bitのwindows7のマシンが中心です.まずはこのマシンで作業ができればいいのですが,解析は32bitのVistaやXpを搭載した別のマシンで行う場合もあり,それらでも共有できる方法の方がより望ましいです.フリーソフトもしくは有料のソフトでこれを実現できるようなものはあるでしょうか?もしなければ,必要なプログラム言語などを勉強しようかと思っております.現時点では全くそれに関する知識がなく,この作業に適した方法を教えて頂けると幸いです.尚,せっかく覚えるのであれば,とっつきやすく,汎用性のある方法がいいと思います. 以上,宜しくお願い致します.

  • プログラムの設計方法を学ぶには

    プログラムの動作原理、記述はある程度できます。 実際個人で組んだりしたことも何度もあります。 ※研究用とかスクリプトとかの小規模なものです。 しかし、もう少し大きなものや、複雑なもの、もしくは安定した動作をさせるには もう少し高いレイヤーというか設計手法的なものを学ぶ方が良いのではと考えております。 MVCとかオブジェクト指向など概要は分かるのですが、 実際に設計するにあたっての方法論など学ぶには良い本/サイドなど無いでしょうか。 職業プログラマになりたいと言うわけでは無いのですが、 書くのは好きなのでもうちょっとスキルを上げたいと思っています。 とりあえずは、取っ掛かり的なもの、幅広く網羅しているものを学んで、 実際に必要なものを深く学びたいと思います。 その他、アドバイスなどありましたらお願いします。 ちなみに言語はC,javascript,pythonなどを使ってます。 シェルスクリプト、awkもよく使います。

  • プログラムドキュメント管理方法

    プログラム仕様書の電子データの管理方法についてです。 現在、ドキュメント管理はシステム化されていません。 プログラム仕様書はEXCELで作成しています。 稼働中のプログラムの仕様書は「最新バージョンホルダ」に入っています。 改善が発生すると、「最新バージョンホルダ」から「修正用ホルダ」に修正対象ドキュメントをコピーします。 修正前、修正後を作ります。 改善が完了し、プログラムが本番登録されたときに、「最新バージョンホルダ」に修正後をコピーします。 「履歴ホルダ」に修正前と修正後をコピーします。 以上の手順を全て手作業で(PCのエクスプローラを使って)行っています。 この手順ですと、うっかりミスによる齟齬が発生していてもなかなか発見できません。 良い管理手法や、参考になる管理手法が掲載されているサイトをご存知でしたら教えてください。 また、お勧めのドキュメント管理のフリーソフトをご存知でしたらご紹介をお願いします。 お忙しいところ恐れ入りますが、よろしくお願いします。

  • プログラムのサブルーチン・関数化の方法について

    プログラム作成法に関する包括的な質問です。 ある物理シミュレーションプログラムを作成してまあ、満足できるというか当たり前の計算結果にはなりました。 それなりに複雑ではあり、それでおしまいにしたいところですが、本当はそれはもっと大きなプログラムの一部になるものです。ちゃんと動作したからこそ、パーツとして役に立つな、ということです。そこで、それをサブルーチンなり、関数なりにして外部から呼び出すように変更していくうまい方法がないでしょうか。全体を考えて構築しなおすべし、ということになるのか、あるテクニックでうまく処理できるということはないでしょうか。モジュールとかパッケージ化とかの技法で比較的簡単に処理できるとかです。変数名の重複(同じものであっても区別してもらいたい)とか変数のスコープとか呼び出し側、呼ばれ側の通信についてです。そういうのが得意なのがC++だろうとは思いますが、できればFortranで処理したいのです。Fortran95はgfortranがあるので利用できます(これは誰でもでしょうが)。 以前から全く前進しない問題で、仕方ないから全部考え直すとして組み上げていくことが多いです。私は普通はまず全体を作ってから細かいパーツに入っていくようにしますが、今回はその逆の行き方なのですが。プログラム開発に多くの人が関わるようなものだと、一人一人のコンセプトで作成して他のプログラムとのつなぎの部分だけちゃんとしていればよし、というようになっていると思いますが。gitとかsubversionとかです。 具体的な質問ではないですが、考え方をお尋ねしたいと思います。参考になるサイトとか情報でも結構です。よろしくお願いします。

  • 自分のプログラムのスキルのなさについて(長くなりますが申し訳ありません)

    皆様のお知恵や経験を拝借したいと思い、質問させて頂きます。 今年の9月で入社3年目になる26歳のSE(プログラマ)です。 未経験から入社したので3年間あっという間でしたが、 3年経った今でも、自分の中でちっともスキルがついていないように思われます。 メイン作業はほぼプログラム開発でしたが、簡単なロジックの考え方や組み方などといったものに、 今でも手間取ってしまい(努力はしているつもりなのですが)、 また仕様の読解力も貧しく、なかなか仕様を理解できません。 発想や応用といったものが自分には根本的に欠落しているように思われます。 プログラムは場数と慣れだと会社の先輩方は言いますが、僕には一向に慣れません。 先輩方は丁寧に教えて下さっているのにも関わらず自分がこんなじゃ情けなくなってきます。 3年と言えば中堅に入るにも関わらず自分の能力を考えると非常に不安です。 今までは同じ会社の人間がいる所で一緒に作業していたので、わからない事や ピンチの時は何度も助けてもらいましたが(それがまたいけないのでしょうが)、 次のプロジェクトは自分一人で常駐しなければいけないという可能性が出てきまして、 何としてでもやり遂げなければと思っています。 しかし、その事を考えるとほんとうに不安でしょうがありません。 それと同時に自分にはプログラムのセンスがなくこの業界に向いてないのではないかと思ってしまいます。 仕事には得手不得手があると思いますが、自分にはこの仕事が不得手なのでしょうか? 長々と書いてしまいましたが、どなたか意見やアドバイス、叱咤激励など何でもいいので、 ご回答の程、宜しくお願い致します。

  • 複雑な抽出条件のプログラム

    お世話になります。 現在事務作業で、あるアプリケーションから吐き出される、 カンマ区切りのCSV形式のテキストデータを特定条件で 必要項目を抽出しExcelに貼り付けるという作業を手作業で行なっております。 それをプログラム化出来たらなと思い質問してみました。 作業内容なのですが、 まず、1行目がテキストデータ(日付などが記載されている)となっており、 実データが2行目から書かれており、 3列目の項目に特定の数字がある行の中から、 さらに5列目の項目に特定の文言(2バイト文字)を見つけ、 5列目と重複する行は、破棄。 ただし、10列目の日付(YYYY/MM/DD)の、MMが違えば残す。 そして、その残った行の中から、1,2,3,10,11,13列目のみをエクセル等で吐き出す。 という作業を3ヶ月ほど、エクセルのフィルターという機能を使いながらやっているのですが、 200件、300件となると、相当な時間がかかり、下手するとExcelの桁あふれ、 65000行超えやメモリー不足で固まったり…となかなか大変です。 この作業を何とか一本のプログラム?マクロと言いますか、VBAと言いますか、 そういった物を使って効率化できないかと考えています。 当方、プログラム等使ったこともなく、またExcelの関数を使ってみたのですが あまりに複雑すぎて挫折してしまいました。 こちらに居られる皆様に、この難しい抽出⇛書出を行ういい方法があれば教えて下さい。 今後、吐き出されるCSV形式が変わった時でも対応できるよう 自分でも理解して使いたいと思っています。 当方の環境、WindowsXP、Office2007となります。 よろしくお願いします。

  • パソコンの「プログラムと機能」でのアンインストール

    パソコンの「プログラムと機能」でアンインストールしたいプログラムが有りますが、どうしてもアンインストール出来ずに困っております。何か方法がありましたら教えてください。削除したいソフトは、Windows ドライバーパッケージですが、動作不良を起こしたので再インストールしようとしてアンインストールしたところ、何故か残ってしまったものです。「プログラムと機能」の画面で「アンインストール」を選択して「クリック」すると別窓が開いて「デバイスドライバーのウイザード」なるものが表示されます。この画面が出るとokをクリックしない限り、他の操作はできません。と、言ってokを押しても元に戻るだけです。更に、しつこくアンインストールの窓をクリックし続けると「現在、他の作業中なので、この作業が終わるまで待て。」と云う窓が現れますが、数時間放置しても変化は有りません。宜しくお願いいたします。