JP5462213B2 - ソフトウェア部品作成支援装置および方法 - Google Patents

ソフトウェア部品作成支援装置および方法 Download PDF

Info

Publication number
JP5462213B2
JP5462213B2 JP2011069442A JP2011069442A JP5462213B2 JP 5462213 B2 JP5462213 B2 JP 5462213B2 JP 2011069442 A JP2011069442 A JP 2011069442A JP 2011069442 A JP2011069442 A JP 2011069442A JP 5462213 B2 JP5462213 B2 JP 5462213B2
Authority
JP
Japan
Prior art keywords
variable
software component
cluster
data
source code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011069442A
Other languages
English (en)
Other versions
JP2012203777A (ja
Inventor
毅 福田
健太郎 吉村
吉高 新
洋平 杉山
敬一 会田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2011069442A priority Critical patent/JP5462213B2/ja
Publication of JP2012203777A publication Critical patent/JP2012203777A/ja
Application granted granted Critical
Publication of JP5462213B2 publication Critical patent/JP5462213B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、家庭用機器,産業用機器,医療寮機器等、電子制御を必要とする製品の特定の機能を実現するために、コンピュータシステムが組込まれている組込みシステムのソフトウェア部品作成支援装置および方法に関する。特に、携帯電話やデジタル家電、さらには自動車,鉄道,エレベータ等の輸送機器など、必要とする機能が多岐に亘るシステム,複数ハードウェア,複数ソフトウェアを組合せた規模の大きなシステムの、ソフトウェア開発,検証,保守支援に好適なソフトウェア部品作成支援装置および方法に関する。
エレベータ,自動車,建設機械等の技術分野では、いわゆる組込みソフトウェアによって制御対象を制御する組込み制御装置が用いられている。組込みソフトウェアは、従来の機械的機構や電気回路による方式に比べて柔軟かつ高度な制御が実現でき、ソフトウェアの部分的な変更によって多くの派生製品を開発できることが利点として挙げられる。
このような組込み制御装置、例えばエレベータ制御装置では、一定周期または割り込みによってタスクを起動し、行き先階指定ボタンやドア安全センサ等のセンサの入力に基づいて制御変数を更新し、ドア開閉用モータやかご駆動用モータなどのアクチュエータを制御する、いわゆるデータ駆動型の計算モデルが採用されている。
近年、組込み制御装置に求められる制御処理が年々複雑化するとともに、制御変数間の依存関係が複雑化し、ソフトウェアの開発が困難となっている。その一方で、ソフトウェア開発サイクルは短期化を求められている。これに対して、複雑かつ大型のソフトウェアを短期間で開発するには、既存のソフトウェアを出来るだけ効率よく再利用することが重要である。
ソフトウェアの再利用を効率良く行うためには、既存のソフトウェアのソースコードから再利用可能なソフトウェア部品をそのデータと制御構造によって抽出し、ソフトウェア部品ごとに管理することが知られている。この際、ソフトウェア部品の抽出は熟練者による経験に依ることなく、たとえ既存ソフトウェアを熟知していない者であっても容易に抽出可能であることが望まれる。
既存のソフトウェアから互いに依存関係のある文の集合を正しく抽出するため、変数とアドレスの対応関係を解析することで、たとえ共用体や配列,またはポインタを含むプログラムであっても、依存関係のあるプログラムの集合を抽出する技術が知られ、例えば特許文献1に記載されている。
さらに、シングルコアプロセッサ用のプログラムからマルチコアプロセッサ用のプログラムを作成するため,シングルコアプロセッサ用のプログラムから複数の関数(処理)を抽出し、抽出された関数をマルチコアプロセッサ上で並行処理する技術が知られ、例えば特許文献2に記載されている。
特開2009−237762号公報 特開2010−237968号公報
上記従来技術において、特許文献1に記載されたものは、注目する行,または注目する行に含まれる変数に関連したプログラム文を全て抽出する技術であり、同じプログラム文が重複して抽出されてしまうため、複数のソフトウェア部品を作成することが出来ない。
また、特許文献2に記載されたものは、既存のソースコードから関数単位でソフトウェア部品を作成しており、既存のソースコードが関数化されていることを前提としている。そのため、構造化(関数化)されていないソースコードに対してはソフトウェア部品が抽出できないといった課題がある。
本発明の目的は、上記従来技術の課題を解決し、複数のソフトウェア部品を作成する場合においても、同じプログラム文が重複して抽出されることを防ぎ、また、大規模・複雑化した組込みシステムの制御ソフトウェアにおいて、たとえ構造化されていないソフトウェアであっても、ソフトウェア部品を抽出することを可能とすることである。
本発明は、その一面において、ソフトウェアで記述されたコンピュータシステムが組込まれた組込みシステムのソフトウェア部品作成支援装置において、前記コンピュータに記述されたソースコードを入力とし、ソースコード中の変数依存関係を基にソフトウェア構造を解析し、再利用容易なソフトウェア部品を出力することを特徴とする。
本発明の望ましい実施態様においては、電子制御に搭載されている制御対象を制御するためのソフトウェアであるソースコードから、変数同士の依存関係を対応づけた変数依存関係データを抽出する変数依存関係解析手段と、前記変数依存関係データに基づいて、変数全体からなる集合を、少なくとも一つの変数で構成される変数クラスタに対応づけた変数クラスタデータを作成する変数依存関係ネットワーク解析手段と、前記変数クラスタデータに基づいて、ソースコードの部分集合であるソフトウェア部品を出力するソフトウェア部品作成手段とを有するソフトウェア部品作成支援装置において、前記ソフトウェア部品作成手段は、前記変数クラスタデータに基づいて、開発者が切り出し対象とする変数クラスタデータを指定可能な変数抽出対象選択手段と、前記変数抽出対象選択手段により選択された変数クラスタデータに基づき、前記ソースコードよりソフトウェア部品を少なくとも1つ作成することを特徴とする。
本発明によれば、組込みシステムとして大規模,複雑化されたソフトウェア(コンピュータプログラム)であっても、変数の依存関係に基づいたソフトウェア部品を作成可能であり、作業担当者が熟練者でなくても再利用容易なソフトウェア部品を作成することができる。
本発明の一実施の形態によるソフトウェア部品作成支援装置の全体構成を示すブロック図。 一実施の形態におけるソースコード解析部の構成を示すブロック図。 一実施の形態におけるソースコードデータを示す図。 一実施の形態における解析木データを示す図。 一実施の形態における変数依存関係リンクテーブルを示す図。 別の実施の形態における変数依存関係リンクテーブルを示す図。 一実施の形態における分析対象設定の構成を示す図。 一実施の形態における分析対象データを示す図。 一実施の形態における変数依存関係ネットワーク解析部を示すブロック図。 一実施形態における変数クラスタ解析部の処理を示すフローチャート。 一実施の形態におけるリンク切断前の変数依存関係ネットワーク図。 一実施の形態におけるリンク切断後の変数依存関係ネットワーク図。 一実施の形態における変数クラスタテーブルを示す図。 一実施の形態における変数クラスタ間リンクテーブルを示す図。 一実施の形態における変数重要度解析部の処理を示すフローチャート。 一実施の形態における変数重要度テーブルを示す図。 別の実施の形態における変数重要度テーブルを示す図。 一実施の形態におけるソフトウェア部品作成部の構成を示すブロック図。 一実施の形態によるクラスタ数が1つの場合の抽出対象設定部における表示画面例を示す図。 一実施の形態によるクラスタ数が2つの場合の抽出対象設定部における表示を示す図。 一実施の形態によるクラスタ数が3つの場合の抽出対象設定部における表示を示す図。 一実施の形態によるクラスタ数が4つの場合の抽出対象設定部における表示を示す図。 他の実施の形態による抽出対象設定部でモジュール性の変化を示す表示を示す図。 同じく、他の実施の形態による抽出対象設定部でモジュール性最大部の強調表示を示す図。 さらに他の実施の形態における抽出対象設定部における数値表示を示す図。 一実施の形態における抽出対象変数クラスタデータを示す図。 一実施の形態におけるソフトウェア部品抽出部の処理を示すフローチャート。 一実施の形態における抽出されたソフトウェア部品を示す図。 本発明を適用して好適なエレベータシステムの構成を示す図。
以下、図面を参照して本発明による一実施の形態を説明する。
ソフトウェア開発,検証,保守作業において、既存のソフトウェアを再利用することで効率よく派生製品を開発する方法として、既存のソフトウェアを部品化し、部品ごとに管理することが重要視されている。しかし、特にエレベータ等の組込みシステムでは、従来、機械式で行っておいた安全装置等の電子化が進められ、ソフトウェアが大規模・複雑化しており、既存のソフトウェアからソフトウェア部品を抽出するためには、膨大な作業量が必要とされている。
また、大規模・複雑化が進んだソフトウェアから、再利用容易なソフトウェア部品を抽出する工程は、既存のソフトウェア構造を熟知した熟練者の経験に頼る部分が大きく、初心者では極めて困難である。
図1は、本発明の一実施の形態による組込みシステムのソフトウェア部品作成支援装置1の全体像を示すブロック図である。
ソフトウェア部品作成支援装置1は、ソースコード解析部11と、ソフトウェア部品作成部12と、構成管理DB13とを備える。ソースコード解析部11は、構成管理DB13より既存の組込みシステムの制御ソフトウェアであるソースコードデータ131を入力とし、構文木データ132と,変数クラスタデータ133と,変数重要度データ134とを出力する。構文木データ132は、ソースコードデータ131中の変数同士の参照関係や条件文関係などの依存関係を解析し、ソースコード中における演算子とオペランドを節点と葉として表現したものである。変数クラスタデータ133は、少なくとも1つの変数で構成される変数クラスタにソースコードデータ131中の変数を分類したものである。変数重要度データ134は、変数クラスタデータ133と,ソースコードデータ131中の変数の重要度を示すものである。
ソフトウェア部品作成部12は,まず、ソースコードデータ131と、ソースコード解析部11の出力結果である構文木データ132と、変数クラスタデータ133とを入力とし、構文木データ132と変数クラスタデータ133よりソースコードデータ131中の変数依存関係に基づいて、ソフトウェア部品を抽出する。次に、ソースコードデータ131の抽出部品であるソフトウェア部品データ135と、抽出されたソフトウェア部品の実行順序を管理するソフトウェア部品実行順序データ136とを出力する。
ここで、ユーザ5は、ソフトウェア作成支援装置1に対し、ソフトウェア部品作成支援装置の実行環境であるコンピュータ2と、ソフトウェア部品作成支援装置1を操作するための操作端末である操作部3と、ソフトウェア部品作成支援装置1の実行状況を認識するための表示部4を用いて、ソフトウェア部品を作成することができる。
図2は、ソースコード解析部11の詳細な構成を示す図である。ソースコード解析部11は、変数依存関係解析部111と、分析対象設定部112と、変数依存関係ネットワーク解析部11とを備えている。変数依存関係解析部111は、ソースコードデータ131に基づいてソフトウェア実行時の変数更新処理における変数間依存関係を分析する。変数依存関係解析部111は、変数依存関係解析部111の分析結果である変数依存関係データ114と、変数依存関係データ114と操作部3によるユーザの操作とに基づいて分析対象とする変数を選択する。変数依存関係ネットワーク解析部11は、分析対象設定部112の設定結果である分析対象変数データ115と、変数依存関係データと分析対象変数データのいずれかに基づいてソースコードデータ131における変数依存関係ネットワークを分析して変数クラスタおよび変数重要度を分析する。そして、ソースコード解析部11は、変数依存関係解析部111より構文木データ132を出力し、変数依存関係ネットワーク解析部113より変数クラスタデータ133と、変数重要度データ134を出力する。
図3は、ソースコードデータ133の詳細を示す図である。ソースコードファイル1311は、関数xの処理手順と、関数yの処理手順と、関数zの処理手順とで構成されている。なお、ソースコードファイル1311で用いられている変数a,b,c,d,e,f,gはグローバル変数として定義されている。関数xにおいて、変数aを入力とし、変数bおよびcを更新する処理を行っている。関数yにおいて、変数eを入力とし、変数fおよびgを更新する処理を行っている。関数zにおいて,変数bとcを入力とし,変数dおよびeを更新する処理を行っている。
図4は、ソースコードファイル1311に基づいて変数依存関係解析部111が解析した構文木データ132の構成の一部である構文木データ1321〜1324を示す図である。構文木データ1321〜1324は、ソースファイル1311内の演算子とオペランドを木構造で示した構成を採っている。例えば、構文木データ1322は、ソースコードファイル1311(図3)の2行目“b=(b|a)”に対応した木構造となっている。
図5は、ソースコードファイル1311に基づいて変数依存関係解析部111が抽出した変数依存関係データ114の詳細な構成である変数依存関係リンクテーブル1141を示す図である。変数依存関係リンクテーブル1141は、リンクID,変数名(始点),変数名(終点)で構成され、変数依存関係を示している。例えば、リンクID1は、変数名(始点)がa、変数名(終点)がbである。リンクID1は、変数bの更新時に変数aを参照して演算を行っていることを示している。これは、ソースファイル31の2行目“b=(b|a);”に対応している。また、リンクID3は変数名(始点)がb、変数名(終点)がdであり、リンクID4は変数名(始点)がc、変数名(終点)がdである。リンクID3および4は、変数dの更新時に変数bおよび変数cを参照して演算を行っていることを示している。これは、ソースファイル1311の12行目“d=(b&c);”に対応している。
図6は、ソースファイル1311に基づいて変数依存関係解析部111が抽出した変数依存関係データ114の詳細な構成の別形態である変数依存関係リンクマトリクス1142を示す図である。変数依存関係リンクマトリクス1142は、始点となる変数名と、終点となる変数名からなるリンクをマトリクス形式で表現したものである。例えば、始点をa、終点をbとする要素は“1”となっており、変数bの更新時に変数aを参照して演算を行っていることを示している。また、始点をa、終点をdとする要素は“0”となっており、変数dの更新時には変数aを参照せずに演算を行っていることを示している。
なお、図6では、始点と終点が逆の要素も“1”とした例を示している。例えば、始点をa、終点をbとする要素は“1”となっており、その逆の要素である始点をb、終点をaとする要素も“1”としている。
図7は、分析対象設定部112の設定画面1121を示す図である。本画面では、変数依存関係ネットワークにおける分析対象とする変数を、ユーザがチェックすることによって選択する。例えば、設定画面1121では、分析対象から外された変数はなく、変数a〜gの全てが変数依存関係ネットワークの分析対象となっていることを示している。
図8は、分析対象設定部112により選択された分析対象変数データ115の詳細な構成である分析対象変数テーブル1151を示す図である。分析対象変数テーブル1151は、分析対象設定部112において、変数a〜gを分析対象とした場合の分析対象変数データである。
この例では、図7のデータのうち、始点と終点が逆の要素は削除した例を示している。例えば、始点をa、終点をbとする要素がリンクID1に存在するので、その逆の要素であり、図7に存在した始点をb、終点をaとする要素は、図8には存在させていない。
図9は、変数依存関係ネットワーク解析部113の詳細な構成を示す図である。変数依存関係ネットワーク解析部113は、変数依存関係データ114または分析対象変数データ115に基づいて、結合度が高く凝集度が低い変数のモジュール構成を示す変数クラスタデータ133を抽出する変数クラスタ解析部1131と、変数依存関係データ114または分析対象変数データ115に基づいて、変数の重要度を示す変数重要度データ134を抽出する変数重要度解析部1132とを備える。
図10は、変数クラスタ解析部1131の詳細な実行フローを示す図である。なお、図10で示す変数クラスタ解析はリンク媒介中心性コミュニティ解析(Newman法)を用いた場合の実行フローであるが、固有ベクトルコミュニティ解析を用いても良い。ステップS11310から処理が開始される。ステップS11311では、あるリンクが変数間の最短経路上に存在する度数を示すリンク媒介中心性の計算を、全てのリンクに対して実行する。ステップS11312では、リンク媒介中心性が最大値を取るリンクの切断を行う。ステップS11313では、全てのリンクを切断済みか否かを判定する。全てのリンクを切断済みの場合にはステップS11314に進み、リンクが残っている場合にはステップS11311に戻る。ステップS11314では、結合度が高く凝集度が低いモジュールの性質を示すモジュール性の指標を、リンク分割パターンごとに演算し、最もモジュール性の高いリンク分割パターンを、変数クラスタとして採用する。
モジュール性は、次のように計算される。変数依存関係ネットワークがk個のクラスタに分割されているとき、k×kのクラスタの関係を示す行列e=(eij)を作る。eijはクラスタiに分類される変数とクラスタjに分類される変数の間に張られる変数依存関係の数が、変数依存関係ネットワーク全体の依存関係に占める割合である。また、eの行和aを以下のようにとる。
Figure 0005462213
そして、モジュール性Qを次のように定式化する。
Figure 0005462213
例えば、後に分割パターンとして図12で示すクラスタ分割結果に基づいて対称行列eを求めると、eは次のようになる。
Figure 0005462213
このとき、モジュール性は約0.32(0.316・・・)と算出される。
図11は、変数依存関係ネットワーク113Aを図示したものである。これは有向グラフ記法に基づいているが,無向グラフを用いても良い。変数a,b,c,d,e,f,gをノードとし、分析対象変数テーブル1151で指定されているリンク情報をノード間のリンクとして表記したものである。さらに、各リンクの上部にリンクの媒介中心性指標が記載されている。また、モジュール性指標をネットワーク図横に“モジュール性=0.0”と表示する。
図12は、リンクが切断された変数依存関係ネットワーク113Bを図示したものである。これは有向グラフ記法に基づいており、変数a,b,c,d,e,f,gをノードとし、分析対象変数テーブル1151で指定されているリンク情報をノード間のリンクとして表記したものである。また、図11に記載された変数依存関係ネットワーク113Aにおいてもっともリンク媒介中心性が高いリンクである、“d→e”へのリンクが点線で図示されており、リンクが切断されたことを示している。また、モジュール性指標をネットワーク図横に“モジュール性=0.32”と表示する。なお、分析対象変数テーブル1151に基づくクラスタ分析では、変数依存関係ネットワーク113Bに示す分割パターンがモジュール性最大値を取るため、本分割パータンがクラスタ分割結果となる。
図13は、変数クラスタデータ133の詳細な構成である変数クラスタテーブル1331を示す図である。変数クラスタテーブル1331は、クラスタ1は変数a、b、c、dで構成され、クラスタ2は変数e,f,gで構成されていることを示している。
図14は、変数クラスタデータ133の詳細な構成である変数クラスタ間リンクテーブル1332を示す図である。リンクID101は、クラスタ1を始点とし、クラスタ2を終点とするリンクであり、そのリンクに対応する変数はdであることを示している。これはクラスタ分割によって、変数dはクラスタ1に、変数eはクラスタ2に分割されたことにより、分析対象変数テーブル1151におけるリンクID5におけるリンクがクラスタ間を横断するリンクとなり、かつその時の始点となる変数がdであるためである。
図15は、変数重要度解析部1132の詳細な実行フローを示す図である。図15では、次数中心性に基づく重要度分析フローを示しているが、推移確率行列固有ベクトル中心性や固有ベクトル中心性を用いても良い。ステップS11320から処理が開始される。ステップS11321にて変数のIDが初期化される。ステップS11322にてリンクのIDが初期化される。ステップS11323にて分析対象リンクに分析対象変数が含まれるか否かが判定される。含まれる場合にはステップS11324にて変数の次数中心性に1が加算され、含まれない場合にはステップS11325に進む。ステップS11325では分析対象のリンクIDが最終リンクか否かを判定し、最終リンクである場合にはステップS11327に進み、最終リンクではない場合にはステップS11326に進む。ステップS11326ではリンクIDに1を加算し、次のリンクを分析対象としてステップS11323に戻る。ステップS11327では分析対象変数が最終変数か否かを判定し、最終変数である場合にはステップS11329に進み、最終変数ではない場合にはステップS11328に進む。ステップS11328では変数IDに1を加算し、次の変数を分析対象としてステップS11322に戻る。ステップS11329で処理を完了する。
図16は、変数重要度データ134の詳細な構成である変数重要度テーブル1341を示す図である。変数重要度テーブル1341は、変数重要度として、図15に示した変数重要度解析部1132の詳細な実行フローに基づいて算出された次数中心性を示している。
例えば、変数aは、二つの変数b、cとリンクで接続されているため、重要度は2となる。また、変数dは、3つの変数b,c,eとそれぞれリンクで接続されているため、重要度は3を示している。
図17は、変数重要度データ134の詳細な構成である変数重要度テーブル1342を示す図である。変数重要度テーブル1342は、変数重要度として、推移確率行列固有ベクトル中心性を示している。
図18はソフトウェア部品作成部12の構成を示すブロック図である。ソフトウェア部品作成部12は変数クラスタデータ133と操作部3を用いたユーザ5の操作内容とに基づいて抽出対象とするクラスタを選択する抽出対象選択部122と,抽出対象選択部122にてユーザ5が選択した変数とクラスタの対応関係を示す抽出対象変数クラスタデータ123と,ソースコードデータ131と構文木データ132と抽出対象選択部122でユーザ5によって選択された抽出対象変数クラスタデータ123とに基づいて,ソフトウェア部品となるプログラムをソースコードデータ131より抽出し,かつ抽出されたソースコードに関数呼び出し方法を用いたインターフェースを作成するソフトウェア部品抽出部121とを備え,ソフトウェア部品データ135とソフトウェア部品実行順序データ136を出力する。
次に、本発明の大きな特徴である抽出対象設定(選択)部122における,変数クラスタデータの選択画面の例を説明する。
図19〜図25は、抽出対象設定部122(図1,図18)において、ユーザ5が、変数クラスタデータを選択するための画面例を示している。これらの画面を見ながら、開発者は、ソフトウェア部品作成対象となる変数クラスタデータを選択する。そして、選択された変数クラスタデータに基づき、複数のソフトウェア部品を作成することができる。
まず、図19〜図22は、本発明の一実施の形態によるクラスタ数が1〜4の場合の抽出対象設定部122における第1の表示画面例を示している。図19の抽出対象選択部の設定画面1221は、クラスタ数が1つの場合を示しており、a〜gの全ての変数が1つのクラスタに分類されている。また、モジュール性は0.00である。ユーザ5は、変数のクラスタ分割に対し、本分割を「選択」しても良いし、「次へ」を押してクラスタ分割を進めても良い。
図20は、抽出対象選択部122のクラスタ数が2つの場合の設定画面1222を示す図である。a〜dを一つのクラスタに分類し、残りのe〜gをもう1つのクラスタに分類した状態である。また,モジュール性は0.32である。
図21は、抽出対象選択部122のクラスタ数が3つの場合の設定画面1223を示す図である。a,cを一つのクラスタに分類し、b,dを他のもう一つのクラスタに分類し、残りのe〜gを最後のクラスタに分類した状態である。また,モジュール性は0.24である。
図22は、抽出対象選択部122のクラスタ数が4つの場合の設定画面1224を示す図である。a,cを一つのクラスタに分類し、b,dを他のもう一つのクラスタに分類し、e,gをさらに別のクラスタに分類し、fを最後のクラスタに分類した状態である。また,モジュール性は0.13である。
以上の表示画面を有することで、ユーザ5は変数クラスタのクラスタ数や、クラスタ内の変数グループ内容とモジュール性を基に、抽出すべきソフトウェア部品を容易に判断することが可能である。
図23〜図24は、他の実施の形態による抽出対象選択部122の設定画面を示す図で、横軸にクラスタ数、縦軸にモジュール性を示す座標を用いることで、図19〜図22の画面と異なり、クラスタ数に対するモジュール性の変化を容易に読み取ることができる。
図24は、図23で示した設定画面1225に対し、モジュール性最大をとるクラスタ数における点を強調表示するとともに、その点のモジュール性の値を示したものである。
これにより、ユーザ5は、より容易にモジュール性最大のクラスタ数を知ることが可能となる。
図25は、さらに他の抽出対象選択部122の設定画面1227を示す図である。クラスタ数とモジュール性の表示に、テーブル表記を用いることで、ユーザ5の認識容易性をサポートしている。
図26は、抽出対象選択部122においてユーザ5に選択された結果である抽出対象変数クラスタデータ123を示す抽出対象変数クラスタテーブル1231を示す図である。ここでは、抽出対象選択部122にて、ユーザ5がクラスタ数2,モジュール性0.32を選択した場合である。クラスタID101は、変数a〜dが分類されていることを表わしている。同様に、クラスタID102は、変数e〜gが分類されていることを示している。
図27は、ソフトウェア抽出部121の処理を示すフローチャートであり、ステップS12100から処理が開始される。ステップS12101にて、クラスタのIDが初期化される。ステップS12102にて、変数IDが初期化される。ステップS12103にて、変数を更新しているソースコード行番号を、構文木データより取得する。ステップS12104にて、行番号に基づいて、変数を更新しているソースコードを抽出する。ステップS12105にて、ソースコード抽出場所に、ステップS12104にて抽出したソースコードを呼び出す関数を作成する。ステップS12106にて、変数が最終変数かどうか確認する。変数が最終変数であった場合(YES)はステップS12108に進み、そうでない場合(NO)はステップS12107に進む。ステップS12107にて、変数IDをインクリメントして処理を続ける。ステップS12108にて、抽出したソースコードを結合し、ソフトウェア部品を作成する。ステップS12109にて、クラスタが最終クラスタかどうか確認する。クラスタが最終クラスタであった場合(YES)は、ステップS12111に進み、そうでない場合(NO)はステップS12110に進む。ステップS12110にて、クラスタIDをインクリメントして処理を続ける。ステップS12111にて、ソースコード抽出元であるソースコードを、ソフトウェア部品実行順序情報として登録する。ステップS12112にて処理を終了する。
図28は、ソフトウェア部品抽出部121により抽出されたソフトウェア部品1351,1352,およびソフトウェア部品実行順序情報1361を示す図である。この図においては、これまでの実例と同じく、抽出対象選択部122にてユーザ5がクラスタ数2,モジュール性0.32の値を指定した場合に得られるソフトウェア部品データ135とソフトウェア部品実行順序データ136を示している。ソフトウェア部品実行順序1361とソフトウェア部品1351,1352は、呼び出し関数にて接続関係にある。このような構造を持つことによって、ソフトウェア部品抽出前のソースコード1311と、変数の更新順序を同じくすることが可能である。また、ソフトウェア部品1351,1352と、ソフトウェア部品実行順序1361に対してモジュール性を表記することで、ユーザ5が変数クラスタ設定部122で設定した変数クラスタ情報を反映していることを容易に確認することができる。
図29は、本発明を適用して好適なエレベータシステム10000の構成を示す図である。エレベータシステム10000は、エレベータ制御装置6と、エレベータかご7と、複数のエレベータの協調動作を制御する群管理制御装置81と、他のエレベータかごを制御するエレベータ制御装置82を備えている。また、行き先階ボタンが押されたことを検知する行き先階ボタンセンサ91、ドアへの挟み込みを検知するドア安全センサ92、ドアの開閉をおこなうドア駆動モータ93、および、かごを昇降駆動するモータ94を備えている。さらに、エレベータ制御装置6、群管理制御装置81、およびエレベータ制御装置82の間の通信を行う通信回線95とで構成される。
ソフトウェア部品作成支援装置1にて作成されたソフトウェア部品データ135およびソフトウェア部品実行順序データ136は、メモリ61へと記憶される。マイクロプロセッサ62は、メモリ61に記憶されたソフトウェアに基づいて、入出力デバイスである行き先階ボタンが押されたことを検知する行き先階ボタンセンサ91と、ドアへの挟み込みを検知するドア安全センサ92と、ドアの開閉をおこなうドア駆動モータ93と、かごの上下動をおこなうかご駆動モータ94とを操作し、エレベータかご7の昇降制御を行う。
以上述べたように、本実施の形態を用いることにより、大規模・複雑化したソースコードであっても、変数の代入・参照関係を分析し、変数の依存関係に基づいたクラスタ毎にソフトウェア部品を抽出することが可能である。また、変数の依存関係を用いているため、熟練者の経験に依らず容易にソフトウェア部品を作成することができる。
また、組込みシステムをエレベータとした場合、ある特定の機能単位に依らないソフトウェア部分集合であるクラスタは、変数として少なくとも、ドアゾーンスイッチ,ファイナルリミットスイッチ,メンテナンスリミットスイッチ,方向リミットスイッチ,または終端階強制還俗スイッチのいずれかの状態を示す情報を含むことが望ましい。つまり、昇降路内に必要とされる定位置として決定することが好適であり、国際安全規格への対応,エレベータの構成部品の機械部品から電子部品への置き換えに依る高性能化,低コスト化を行う電子安全化への対応,安全性の説明責任,並びに遠隔アップデート等の点で望ましい。
なお、メンテナンスリミットスイッチとは、保守員が安全に作業を実施するための頂部隙間を確保する位置を明示するスイッチであり、方向リミットスイッチとは、乗りかごが終端階に到達したことを検出するスイッチであり、終端階強制減速スイッチとは、乗りかごが何らかの原因で過速状態になったときに定格速度以下まで強制減速させてバッファに衝突させるための位置を検出するスイッチである。
1:ソフトウェア部品作成支援装置、2:コンピュータ、3:操作部、4:表示部、5:ユーザ、11:ソースコード解析部、111:変数依存関係解析部、112:分析対象設定部、113:変数依存関係ネットワーク解析部、12:ソフトウェア部品作成部、121:ソフトウェア部品抽出部、122:抽出対象設定部、13:構成管理DB、131:ソースコードデータ、132:構文木データ、133:変数クラスタデータ、134:変数重要度データ、135:ソフトウェア部品データ、136:ソフトウェア部品実行順序データ。

Claims (6)

  1. 電子制御に搭載されている制御対象を制御するためのソフトウェアであるソースコードから、グローバル変数同士の依存関係を対応づけた変数依存関係データを抽出する変数依存関係解析手段と、
    前記変数依存関係データに基づいて、変数全体からなる集合を、少なくとも一つの変数で構成される変数クラスタに対応づけた変数クラスタデータを作成する変数依存関係ネットワーク解析手段と、
    前記変数クラスタデータに基づいて、ソースコードの部分集合であるソフトウェア部品を出力するソフトウェア部品作成手段
    を有するソフトウェア部品作成支援装置において、
    前記ソフトウェア部品作成手段は、
    前記変数クラスタデータと操作部を用いたユーザの操作内容とに基づいて、ソフトウェア部品作成対象となる変数クラスタデータを指定する変数抽出対象選択手段、
    指定された前記変数クラスタデータを、少なくともその分割されたクラスタ数とモジュール性の指標とを含めて表示する表示装置、及び
    前記表示装置に表示されたクラスタ数とモジュール性の指標とに基づいて、ユーザによって判定されたソフトウェア部品として適切なクラスタ分割数を指定し入力する操作手段を備え、
    指定入力された適切な前記クラスタ分割数に分割されたクラスタデータに基づき、前記ソースコードより、前記ソースコードと変数の更新順序が同じソフトウェア部品を少なくとも1つ作成することを特徴とするソフトウェア部品作成支援装置。
  2. 請求項1において、前記ソースコードと前記ソースコードより抽出したソフトウェア部分に対し、更新変数ごとにインターフェースを作成することを特徴とするソフトウェア部品作成支援装置。
  3. 請求項1において、前記モジュール性の指標は、前記変数クラスタデータに基づいて、分割されたクラスタ内の変数依存関係の数とクラスタ間の変数依存関係の数に基づいて算出されることを特徴とするソフトウェア部品作成支援装置。
  4. 請求項2において、前記インターフェースとして関数呼び出しを用いたことを特徴とするソフトウェア部品作成支援装置。
  5. 請求項1に記載のソフトウェア部品作成支援装置において、前記ソフトウェアはエレベータ制御ソフトウェアであり、前記変数として少なくとも、ドアゾーンスイッチ,ファイナルリミットスイッチ,メンテナンスリミットスイッチ,方向リミットスイッチ,または終端階強制減速スイッチのいずれかの状態を示す情報を含むことを特徴とするソフトウェア部品作成支援装置。
  6. 電子制御に搭載されている制御対象を制御するためのソフトウェアであるソースコードから、グローバル変数同士の依存関係を対応づけた変数依存関係データを抽出する変数依存関係解析ステップと、
    前記変数依存関係データに基づいて、変数全体からなる集合を、少なくとも一つの変数で構成される変数クラスタに対応づけた変数クラスタデータを作成する変数依存関係ネットワーク解析ステップと、
    前記変数クラスタデータに基づいて、ソースコードの部分集合であるソフトウェア部品を出力するソフトウェア部品作成ステップを有するソフトウェア部品作成支援方法において、
    前記ソフトウェア部品作成ステップは、
    前記変数クラスタデータと操作部を用いたユーザの操作内容とに基づいて、ソフトウェア部品作成対象となる変数クラスタデータを指定する変数抽出対象選択ステップ、
    指定された前記変数クラスタデータを、少なくともその分割されたクラスタ数とモジュール性の指標とを含めて表示する表示ステップ、及び
    前記表示ステップで表示されたクラスタ数とモジュール性の指標とに基づいて、ユーザによって判定されたソフトウェア部品として適切なクラスタ分割数を指定し入力する操作ステップを備え、
    指定入力された適切な前記クラスタ分割数に分割されたクラスタデータに基づき、前記ソースコードより、前記ソースコードと変数の更新順序が同じソフトウェア部品を少なくとも1つ作成するステップを備えたことを特徴とするソフトウェア部品作成支援方法。
JP2011069442A 2011-03-28 2011-03-28 ソフトウェア部品作成支援装置および方法 Expired - Fee Related JP5462213B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011069442A JP5462213B2 (ja) 2011-03-28 2011-03-28 ソフトウェア部品作成支援装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011069442A JP5462213B2 (ja) 2011-03-28 2011-03-28 ソフトウェア部品作成支援装置および方法

Publications (2)

Publication Number Publication Date
JP2012203777A JP2012203777A (ja) 2012-10-22
JP5462213B2 true JP5462213B2 (ja) 2014-04-02

Family

ID=47184686

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011069442A Expired - Fee Related JP5462213B2 (ja) 2011-03-28 2011-03-28 ソフトウェア部品作成支援装置および方法

Country Status (1)

Country Link
JP (1) JP5462213B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7031627B2 (ja) * 2019-03-13 2022-03-08 オムロン株式会社 解析装置、解析方法、及び解析プログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07141166A (ja) * 1993-11-19 1995-06-02 Ricoh Co Ltd クラスタ分析を用いたプログラム解析方法
JPH08190475A (ja) * 1995-01-05 1996-07-23 Fujitsu Ltd プログラム解析装置
JP2000089966A (ja) * 1998-09-08 2000-03-31 Hitachi Building Systems Co Ltd 既存プログラムのオブジェクト指向への移行方法
JP2001273169A (ja) * 2000-03-24 2001-10-05 Toshiba Corp プログラムテスト仕様書生成装置
JP2001325100A (ja) * 2000-05-15 2001-11-22 Mitsubishi Electric Corp プログラム解析装置
JP2004295425A (ja) * 2003-03-26 2004-10-21 Mitsubishi Electric Corp モジュール構造化支援装置
JP4996262B2 (ja) * 2007-01-16 2012-08-08 株式会社日立製作所 プログラム部品化支援装置
JP5041990B2 (ja) * 2007-11-29 2012-10-03 三菱電機株式会社 ソフトウェア部品抽出支援装置
JP5154975B2 (ja) * 2008-02-26 2013-02-27 日本電信電話株式会社 興味体系グラフ形成装置、興味体系グラフ形成方法、および、興味体系グラフ形成プログラム

Also Published As

Publication number Publication date
JP2012203777A (ja) 2012-10-22

Similar Documents

Publication Publication Date Title
CN106716934B (zh) 聊天交互方法、装置及其电子设备
WO2013088461A1 (ja) ソフトウェア解析プログラム、および、ソフトウェア解析システム
EP3940538A2 (en) Method and device for operator registration processing based on deep learning and electronic device
JP5516736B2 (ja) ソフトウェア保守支援装置及びそれにより検証した電子制御装置
CN106569900A (zh) 应用程序处理方法和装置
CN106164867A (zh) 数据的增量并行处理
CN1786907A (zh) 用于产生图形用户接口模型的方法和系统
CN112001175B (zh) 流程自动化方法、装置、电子设备及存储介质
CN108959068A (zh) 软件界面测试方法、设备及存储介质
US11714625B2 (en) Generating applications for versatile platform deployment
CN101196733B (zh) 用于确定处理系统中告警根本原因的方法和系统
CN104166570B (zh) 一种在线更新文件的方法、设备及系统
JP7309811B2 (ja) データ注釈方法、装置、電子機器および記憶媒体
KR20210036167A (ko) 어플리케이션의 테스트 자동화
JP5462213B2 (ja) ソフトウェア部品作成支援装置および方法
JP2011145996A (ja) レビューワ評価装置、レビューワ評価方法、及びプログラム
CN115469849B (zh) 一种业务处理系统、方法、电子设备和存储介质
CN114237182B (zh) 机器人调度方法及系统
JP5041990B2 (ja) ソフトウェア部品抽出支援装置
JP5210146B2 (ja) 情報制御システムおよび情報制御方法
CN109032907B (zh) 面向设备应用的数据监控方法及系统
CN114416099B (zh) 一种基于信息物理系统的模型集成方法及相关组件
CN114116683B (zh) 计算平台的多语法处理方法、设备及可读存储介质
CN111694574B (zh) 指令代码处理的方法、装置、设备以及存储介质
CN111930356B (zh) 用于确定图片格式的方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131022

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131211

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140116

R150 Certificate of patent or registration of utility model

Ref document number: 5462213

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees