説明

ソフトウェアの開発支援方法

【課題】 オブジェクト指向分析設計にはその詳細設計は進めづらく、実装作業の検討に時間を費やし、試行錯誤のための労力を必要とする。
【解決手段】 オブジェクト指向プログラミングによるソースコード(b)を解析し、このソースコードを構成するクラス、変数、関数、処理単位、グループを表記する図データ及びこれらの間の参照、値設定、消滅、関数呼出、引数、クラス指示、クラス生成の関係を示す矢印線分データからなる図表記データを作成し、この図表記データにしたがってソースコードを図表記し、この図表記(a)から問題箇所がある場合には修正したソースコードに従って再度図表記を行う。図表記は、ソースコードに対応した詳細表示と、この詳細表示の関数やクラスの内部構造を省略して1つの図形に集約してその図形と外部の図形の接続関係のみを維持して描いた簡略表示とがある。

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報処理分野におけるソフトウエア工学、特にオブジェクト指向プログラミングの設計、実装、およびプログラムの再利用のためのソフトウェアの開発支援方法に関する。
【0002】
【従来の技術】オブジェクト指向プログラミングでは、オブジェクトと呼ばれる機能上の単位を中心にしてプログラムやソフトウェアシステムを設計・実現するのに、さまざまなオブジェクト指向分析設計方法論等にのっとり分析設計の作業が進められている。実装作業は詳細設計に従って行われる。プログラムの修正、または仕様の変更などがあると、最終的にはソースコードを修正して対応している。
【0003】
【発明が解決しようとする課題】オブジェクト指向分析設計の作業者にとって、アプリケーションが新規な内容である場合では、詳細設計は進めづらく、実装作業と平行して作業が行われる場合が生じる。
【0004】このとき、作業者は、実装作業を行いながら、プログラムの質を向上させるための検討に時間を費やし、試行錯誤を行いながら作業を進めることになる。
【0005】この課題を解決するためには、一度作成したプログラムソースコード、または、過去に作成されたソースコードを分析し、詳細設計の見直し作業にかかる労力を軽減し、プログラムの再利用性を高めることが望まれる。
【0006】本発明の目的は、オブジェクト指向プログラミングによるプログラムの設計・実装及び再利用を容易にするソフトウェアの開発支援方法を提供することにある。
【0007】
【課題を解決するための手段】本発明は、オブジェクト指向プログラミング言語としてC++言語を対象にし、ソースコードを解析してその内容を図で表記することにより、プログラムの理解を助けるようにしたものであり、以下の方法を特徴とする。
【0008】オブジェクト指向プログラミングによるソースコードを解析し、このソースコードを構成するクラス、変数、関数、処理単位、グループを表記する図データ及びこれらの間の参照、値設定、消滅、関数呼出、引数、クラス指示、クラス生成の関係を示す矢印線分データからなる図表記データを作成し、前記図表記データにしたがってソースコードを図表記し、この図表記から問題箇所がある場合には修正したソースコードに従って前記図表記を行うことを特徴とする。
【0009】前記、図表記は、ソースコードに対応した詳細表示と、この詳細表示の関数やクラスの内部構造を省略して1つの図形に集約してその図形と外部の図形の接続関係のみを維持して描いた簡略表示とを行うことを特徴とする。
【0010】
【発明の実施の形態】本実施形態は、ソースコードを解析してその内容を図表記データに対応させ、図を描く。
【0011】この図表記は、アルゴリズムについては表現しないが、データの依存関係や関数の呼出し関係などの静的な情報を表現する。また、この図は詳細表示、簡略表示の区別を持ち、適宜使い分けることができる。これにより、プログラムの構造を理解しやすくする。
【0012】図表記データを説明する。データは、下記表1に示すように、クラス、変数、関数、処理単位、グループ、矢印線分からなる。矢印線分は、参照、値設定、消滅、関数呼出、引数、クラス指示、クラス生成、の7種類がある。
【0013】
【表1】


【0014】図表記データは、一般に色付き有向グラフとよばれるデータと類似しているが、クラス、関数はその図中に図を含む点が異なる。ソースコードを解析しこれらの図を描くための図表記データを作成する。図表記データのデータ構造を下記表2に示す。
【0015】
【表2】


【0016】これら図表記データを用いて描いた図と、そのソースコードの例を図1に示す。クラスA,Bの矩形の中にはそのクラスで定義された変数と関数が配置される。関数の図形の中には、その関数の中で定義された変数とその関数の持つ引数と処理単位およびグループが配置される。矢印線分はクラス、変数、関数、処理単位、グループの図形同士を結ぶ。但し、値設定と消滅の矢印線分の始点は図形に結ばれず、その関数の図形内にある。
【0017】参照の矢印線分は、図2にも示すように、情報の流れを表わす。始点が変数データに接続している時、その変数の値が参照されている。終点が変数データに接続している時、その変数への値の代入が行われている。以上の場合もう一つの端点は処理単位に接続している。始点が関数に接続している時、その関数の戻り値が参照されている。終点が関数に接続している時は、簡略表示であり、その関数内でその参照矢印線分の始点のデータが参照されている。関数の図形の内部で関数の輪郭線から変数に向けて参照の矢印線分が引かれている時、その変数はその関数の引数である。
【0018】関数呼出の矢印線分は、図3に示すように、処理の流れを表現する。始点は処理単位図形に接続され、終点は関数図形に接続される。終点の関数が呼出され処理がその関数に移る。戻り値は参照されない。関数が引数を伴う場合は変数から処理単位へ向けた引数の矢印線分を引く。始点が関数に接続している時は簡略表示であり、その関数の中から終点の関数が呼出される。
【0019】クラス宣言された変数は、図4に示すように、クラス指示の矢印線分により、そのクラス図形と結ぶ。この時、名前による参照かポインタによる参照かは区別しない。
【0020】この図の用い方について例を示す。オブジェクト指向分析設計では一つの関数にあまり多くの仕事をやらせるのではなく、手続きとして分割できる処理は分割し、独立した役割をになわせることが望ましい。図5R>5に示すように、関数内の表記図形が互いに接続関係のない図形になる場合は、関数functionが図の点線を境に二つに分割可能であることを示している。
【0021】図6は、2つの関数「function_1」と「function_2」が部分的に同じパターンの処理を含んでいる場合である。変数「varA」,「varB」,関数「function_3」,「function_4」はともに関数の外にあるが点線の領域Rに対して同じ接続の仕方で接続していることが読み取れる。
【0022】従って、図7に示すように、図6の共通部分を抜き出しこれを「function_6」とし、「function_1」と「function_2」はそれぞれ「function_7」と「function_8」に置き換えることによりプログラムの整理ができる。
【0023】簡略表示は、関数やクラスの内部構造を省略し1つの図形に集約し、その図形と外部の図形の接続関係のみを維持して描いた図形である。図8〜図10に段階的な簡略表示の例を示す。図8で詳細表示された関数「initialize」と「wakeup」を簡略表示したものが図9である。さらに図9のクラス「schedule」を簡略表示したのが図10である。これにより細かい情報は無視した、プログラムの全体的な構造が表現される。
【0024】図11は、本実施形態に従ったソースコードからの図表記とプログラム修正作業の手順を示す。ソースコードを読み込んで図表記データを作成し(S1)、このデータにしたがって図を表記し(S2)、この図表記から問題点が無いか検討し(S3)、問題箇所がある場合(S4)にはソースコードを修正して再度の図表記に戻る(S5)。
【0025】
【発明の効果】以上のとおり、本発明によれば、ソースコードを解析してその内容を図で表記することにより、プログラムの理解・修正ができるようにしたため、プログラムの設計・実装及び再利用を容易にし、プログラムの詳細設計から実装までの試行錯誤等の労力を少なくし、生産性の向上を図ることができる。
【図面の簡単な説明】
【図1】本発明の実施形態を示す表記図(a)とソースコード(b)。
【図2】実施形態における参照の矢印線分の例。
【図3】実施形態における関数呼び出しの矢印線分の例。
【図4】実施形態におけるクラス宣言の変数の例。
【図5】実施形態における関数の分割の例。
【図6】実施形態における同じパターンを持つ関数の例。
【図7】実施形態における共通部分を抜き出した例。
【図8】実施形態における関数の詳細表記例。
【図9】実施形態における関数の簡略表記例。
【図10】実施形態における関数の簡略表記例。
【図11】実施形態におけるプログラムの修正作業手順。

【特許請求の範囲】
【請求項1】 オブジェクト指向プログラミングによるソースコードを解析し、このソースコードを構成するクラス、変数、関数、処理単位、グループを表記する図データ及びこれらの間の参照、値設定、消滅、関数呼出、引数、クラス指示、クラス生成の関係を示す矢印線分データからなる図表記データを作成し、前記図表記データにしたがってソースコードを図表記し、この図表記から問題箇所がある場合には修正したソースコードに従って前記図表記を行うことを特徴とするソフトウェアの開発支援方法。
【請求項2】 前記、図表記は、ソースコードに対応した詳細表示と、この詳細表示の関数やクラスの内部構造を省略して1つの図形に集約してその図形と外部の図形の接続関係のみを維持して描いた簡略表示とを行うことを特徴とする請求項1に記載のソフトウェアの開発支援方法。

【図2】
image rotate


【図3】
image rotate


【図4】
image rotate


【図5】
image rotate


【図1】
image rotate


【図6】
image rotate


【図7】
image rotate


【図10】
image rotate


【図11】
image rotate


【図8】
image rotate


【図9】
image rotate


【公開番号】特開平10−214180
【公開日】平成10年(1998)8月11日
【国際特許分類】
【出願番号】特願平9−17275
【出願日】平成9年(1997)1月31日
【出願人】(000006105)株式会社明電舎 (1,739)