説明

ソフトウェア開発支援装置及びプログラム

【課題】ソフトウェア開発において、各処理(関数)間の関係をユーザに対して容易に理解できる態様で提示する。
【解決手段】ソースコード記憶部12は、開発対象となるソフトウェアに対応したソースコードを記憶する。制御部14は、ユーザによる所定操作に応じて、ソースコード記憶部12に記憶されているソースコードを読み出し、所定の条件に基づいて、関数間の関連性を解析し、その結果を解析結果記憶部13に格納する。また、制御部14は、ユーザによる所定操作に応じて、解析結果記憶部13に記憶されている解析結果を読み出し、読み出した解析結果に基づく解析結果表示画面を表示部11に表示させる。また、制御部14は、ユーザによる所定操作に応じて、ユーザが指定した関数のソースコードを編集可能な態様で表示部11に表示させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェアの開発を支援する技術に関する。
【背景技術】
【0002】
例えば、LSI(large scale integration)等の設計において、仕様書作成、ソースコード作成、試験仕様書作成の各ツールを統合し、相互にデータ交換できるようにした設計支援技術は、従来より知られている(例えば、特許文献1等)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2003−6250号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、機能追加型の手法で、ソースコードの作成(コーディング)等のソフトウェア開発を行う場合、開発者(ユーザ)は、他の処理(関数等)との関係を意識しながら、適切な位置に新たに追加する処理を組み込み、適切なコーディング等を行う必要がある。しかしながら、過去(即ち、既存)の処理間の関連性等を、いわゆる見える化で作業者に提示して、ソフトウェア開発を支援する技術について、未だ有効な提案がなされていないのが実情である。
【0005】
本発明は、上記実情に鑑みてになされたものであり、ソフトウェア開発において、各処理間の関係をユーザに対して容易に理解できる態様で提示して、ユーザによるソースコードの作成を支援するソフトウェア開発支援装置等を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明に係るソフトウェア開発支援装置は、
ユーザからの操作を受け付ける入力部と、
開発対象となるソフトウェアに対応したソースコードを記憶するソースコード記憶部と、
ユーザによる所定操作に応じて、前記ソースコード記憶部に記憶されているソースコードを読み出し、所定の条件に基づいて、関数間の関連性を解析するソースコード解析部と、
前記ソースコード解析部による解析結果を記憶する解析結果記憶部と、
ユーザによる所定操作に応じて、前記解析結果記憶部に記憶されている前記ソースコード解析部による解析結果を読み出し、読み出した解析結果に基づく解析結果表示画面を所定の表示装置に表示させる解析結果表示部と、
ユーザによる所定操作に応じて、ユーザが指定した関数のソースコードを編集可能な態様で前記表示装置に表示させるコーディング受付部と、を備えることを特徴とする。
【発明の効果】
【0007】
本発明によれば、ユーザは、各処理間の関係を認識しつつ、ソースコードの作成を行うことが可能になるため、ソフトウェアの開発における作業の効率化や品質の向上が図れる。
【図面の簡単な説明】
【0008】
【図1】本発明の実施形態に係るソフトウェア開発支援装置の構成を示すブロック図である。
【図2】本実施形態のソフトウェア開発支援装置が備える制御部の構成を示すブロック図である。
【図3】メイン画面の一例を示す図である。
【図4】呼出関数表示画面の一例を示す図である。
【図5】親子画面の例を示す図である。
【図6】データアクセス画面の一例を示す図である。
【図7】呼出関数表示画面にて、関数を追加する場合を説明するための図である。
【図8】ソースコード編集画面の一例を示す図である。
【図9】ソースコード作成支援処理の手順を示すフローチャートである。
【図10】解析結果表示処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、本発明の一実施形態について図面を参照して詳細に説明する。
【0010】
図1は、本発明の実施形態に係るソフトウェア開発支援装置1の構成を示すブロック図である。このソフトウェア開発支援装置1は、特に、機能追加型の手法でソフトウェア開発する場合において、ユーザによるソースコード(プログラムコード)の作成を支援する装置である。
【0011】
このソフトウェア開発支援装置1のハードウェア構成は、一般的なパーソナルコンピュータと同等である。即ち、ソフトウェア開発支援装置1は、何れも図示しないが、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)等から構成される制御装置、読み書き可能な不揮発性の半導体メモリやハードディスクドライブ等から構成される外部記憶装置、キーボード、マウス、キーパッド、タッチパッドやタッチパネル等から構成される入力装置、CRTや液晶モニタ等から構成される表示装置等を備える。
【0012】
ソフトウェア開発支援装置1は、機能的には、図1に示すように、入力部10と、表示部11と、ソースコード記憶部12と、解析結果記憶部13と、制御部14と、を備える。
【0013】
入力部10は、ユーザからの入力操作を受け付け、受け付けた入力操作に係る信号を制御部14に送出する。
【0014】
表示部11は、制御部14の制御の下、ユーザ操作用の画面の表示を行う。
【0015】
ソースコード記憶部12は、開発対象となるソフトウェア(例えば、空調制御用のソフトウェア)に対応したソースコードを記憶する。ソースコードは、所定のプログラミング言語に従って記述されたプログラムコードであり、本実施形態では、C言語の仕様に従って記述されている。ソースコード記憶部12において、ソースコードは、例えば、タスク単位で記憶されている。
【0016】
解析結果記憶部13は、詳細は後述するが、制御部14によって実行された、ソースコード記憶部12に記憶されているソースコードの解析の結果を記憶する。
【0017】
制御部14は、入力部10、表示部11、ソースコード記憶部12及び解析結果記憶部13を制御し、それに付随して、これらとの間でデータの授受を行う。制御部14は、機能的には、図2に示すように、ユーザI/F部140と、ソースコード解析部141と、解析結果表示部142と、コーディング受付部143と、を備える。これらの各機能部は、CPU等が、ROM又は外部記憶装置に記憶されている、所定のプログラムを実行することで実現する。このプログラムは、ソフトウェア開発支援装置1にて、ユーザに対してソースコードの作成を支援するための一連の処理を行うためのアプリケーションソフトウェアである。
【0018】
ユーザI/F部140は、ユーザにより、入力部10を介して、上記のプログラム(ソースコード作成支援プログラム)を起動させるための所定操作が行われると、図3に示すような、ソースコードの作成を支援するためのユーザ操作用のメイン画面301を表示部11を介して表示する。メイン画面301は、GUI(Graphical User Interface)の態様で表示され、図3に示すように、ソースコードの解析ボタン302、解析結果の表示ボタン303、終了ボタン304等から構成される。ユーザI/F部140は、メイン画面301上におけるユーザの操作を受け付け、その内容に応じて、後述する各機能部を起動させる。メイン画面301は、終了ボタン304が、ユーザにより押下されると閉じられ、これにより、CPU等による上記のソースコード作成支援プログラムの実行が終了する。
【0019】
ソースコード解析部141は、メイン画面301にて、ユーザにより、ソースコードの解析ボタン302が押下操作されることで起動する。先ず、ソースコード解析部141は、ユーザに対して、どのタスクのソースコードを解析対象とすべきかを問い合わせるための画面(図示せず)をメイン画面301上にポップアップ表示させる。かかる画面にて、ユーザにより所望のタスクが選択されると、ソースコード解析部141は、ソースコード記憶部12に記憶されている当該タスクのソースコードを所定条件の下で解析する。
【0020】
例えば、ソースコード解析部141は、当該タスクのトップレベルの関数において、呼び出している関数を順番にピックアップする。さらに、ピックアップした各関数毎に、呼び出している関数を順番にピックアップし、これを、最下層の関数(呼び出している関数がない関数)まで順次繰り返す。なお、呼び出している関数が、全て、OS等により提供される汎用関数である場合には、当該呼び出し元の関数を最下層の関数とする。
【0021】
また、例えば、ソースコード解析部141は、同一の外部変数にアクセスする関数をピックアップする。
【0022】
また、例えば、ソースコード解析部141は、関数や引数のデータ型が一致する関数をピックアップする。また、例えば、ソースコード解析部141は、機能が類似している可能性が高い関数をピックアップする。ここで、機能の類似は、例えば、関数名の一部が一致していたり、ソースコード中に記述されたコメントの中の所定のキーワードが一致する等で判定する。
【0023】
ソースコード解析部141は、以上のようにして解析した結果を解析結果記憶部13に格納する。
【0024】
解析結果表示部142は、メイン画面301にて、ユーザにより、解析結果の表示ボタン303が押下操作されることで起動する。解析結果表示部142は、起動すると、解析結果記憶部13に格納されているソースコード解析部141の解析結果に基づく画面をメイン画面301上にポップアップ表示する。その際、複数の条件に対応した複数の解析結果が格納されている場合には、解析結果表示部142は、先ず、ユーザに対して、どの条件における解析結果を表示すべきかを問い合わせるための画面(図示せず)をメイン画面301上にポップアップ表示させる。かかる画面にて、ユーザにより所望の条件の解析結果が選択されると、解析結果表示部142は、ユーザが選択した条件の解析結果に基づく画面をメイン画面301上にポップアップ表示する。
【0025】
図4は、ソースコード解析部141により、当該タスクのトップレベルの関数において、呼び出している関数を順番にピックアップした結果を表示した画面(呼出関数表示画面401)の一例を示している。ここでは、1回のループにおける呼び出し順が判るように、各関数の関数名を示すアイコンが順番に並べられている。なお、各アイコン上に、関数名の代わりに、あるいは、関数名と併せて、当該関数の通称(例えば、設定温度変更処理等)を表示してよい。この通称は、ソースコードにおける所定位置のコメントから抽出してもよい。
【0026】
また、上記の呼出関数表示画面401において、ユーザが所望の関数名を示すアイコンを選択操作すると、当該関数において、呼び出している関数を順番にピックアップした結果を表示した、同様の呼出関数表示画面401が表示される。以降、上記した最下層の関数以外の関数に対応したアイコンでは、選択されると、同様の呼出関数表示画面401が表示される。呼出関数表示画面401は、終了ボタン402が押下操作されると閉じられる(非表示となる)。
【0027】
また、解析結果表示部142は、呼び出し元と呼び出し先の関数の関係を図5のように表した画面(親子画面501A、501B)を表示してもよい。図5の(a)で示す親子画面501Aでは、関数“XXXfuncA()”が、関数“XXXfuncA2()”と、関数“XXXfuncC1()”とを呼び出していることが示されている。
【0028】
また、図5の(b)で示す親子画面501Bでは、関数“XXXfuncA()”が、関数“XXXfuncA2()”と、関数“XXXfuncC1()”と、関数“XXXfuncE5()”とを呼び出していることが示されている。さらに、関数“XXXfuncA2()”が、関数“XXXfuncD3()”を呼び出していて、関数“XXXfuncE5()”が、関数“XXXfuncC2()”を呼び出していることが示されている。
【0029】
親子画面501A、501B共に、それぞれの終了ボタン502A、502Bが押下操作されることで閉じられる。
【0030】
また、解析結果表示部142は、ソースコード解析部141により、同一の外部変数にアクセスする関数をピックアップした結果を、図6に示すような画面(データアクセス画面601)を表示することでユーザに示すこともできる。図6に示すデータアクセス画面601の例では、int型の外部変数“XXX_DATA”に対して、関数“XXXfuncA()”、関数“XXXfuncB()”及び関数“XXXfuncD()”がアクセスしていることを示している。
【0031】
また、データアクセス画面601において、矢印の向きにより、当該アクセスが、参照又は更新の何れかあるかが示されている。この例では、関数“XXXfuncA()”は、外部変数“XXX_DATA”に対して、参照及び更新を行い、関数“XXXfuncB()”は、外部変数“XXX_DATA”に対して、参照のみを行い、関数“XXXfuncD()”は、外部変数“XXX_DATA”に対して、更新のみを行うことが示されている。データアクセス画面601は、終了ボタン602が押下操作されることで閉じられる。
【0032】
また、ユーザは、例えば、呼出関数表示画面401を介して、当該関数に新たな関数を追加したり、あるいは、呼び出し先の関数を削除することができる。ユーザは、例えば、メイン画面にて表示される図示しない操作ボタンや、マウス等による所定操作により、関数の追加や、削除等を行うことができる。例えば、呼出関数表示画面401にて、図7に示すように、所望の位置に、指定した関数名を示すアイコンを追加することで、新規あるいは既存の関数を、当該呼び出し元の関数のソースコードに自動的に追加することができる。図7の例では、関数“XXXfuncA()”と関数“XXXfuncB()”との間に、関数“XXXfuncAA()”を追加させる場合を示している。
【0033】
追加する関数が新規の場合、当該関数名の関数(のソースコード)が、自動的に生成される。なお、この時点においては、当該ソースコードには、予め規定されたコメント等が記述されているのみであり、実際の処理内容(コード)は記述されていない。実質的なコーディング作業は、後述するソースコード編集画面にて行う。
【0034】
また、呼出関数表示画面401にて、削除した場合も同様に、その結果が、当該呼び出し元の関数のソースコードに反映される。なお、呼び出し元の関数のソースコードへの反映は、終了ボタン402が押下操作されたタイミングで確定する(即ち、反映後のソースコードが、ソースコード記憶部12に格納される。)。
【0035】
また、ユーザは、解析結果表示部142によって表示される上記の各画面において、所望の関数名を示すアイコンに対して、ダブルクリック等の操作を行うことで、対応する関数のソースコードを編集可能な態様で表示させることができる。コーディング受付部143は、関数名を示すアイコンに対して、ユーザにより上記のような操作が行われると、当該アイコンに対応するソースコードをソースコード記憶部12から読み出し、図8に示すように、読み出したソースコードを編集可能なソースコード編集画面801をメイン画面301上にポップアップ表示する。
【0036】
なお、本実施形態では、新規に追加した関数のソースコードであって、ソースコード編集画面801にて編集が完了していないソースコードは、ソースコード記憶部12に記憶されない。したがって、そのようなソースコードは、RAM等に一時的に保存され、コーディング受付部143は、ソースコード記憶部12ではなくRAM等から、ユーザが選択したアイコンに対応するソースコードを読み出す。
【0037】
ユーザは、ソースコード編集画面801にて、キーボードやマウス等を用いて、所定のプログラム言語(本実施形態では、C言語)に則ったプログラムコードを入力する(コーディングする)ことができる。ユーザによりソースコードの編集作業が行われ、終了ボタン802が押下操作されると、コーディング受付部143は、当該編集されたソースコードをソースコード記憶部12に格納する。なお、終了ボタン802が押下操作された際、コーディング受付部143は、当該ソースコードが所定の条件を満たしているか否かをチェックする。例えば、当該関数の通称(処理名称)が、コメントとして、記述されていない場合、エラーメッセージを表示し、ユーザに対して、処理名称の記述を促す。
【0038】
また、ユーザは、図5の親子画面501A、501Bや、図6のデータアクセス画面601を介して、関数の追加や削除、矢印の向きの変更等による関連性の変更操作を行うことで、その操作結果を対応するソースコードに反映させることができる。この場合、各画面における終了ボタン502A、502B、602が、ユーザにより押下操作されたタイミングで、反映が確定する(反映後のソースコードがソースコード記憶部12に格納される。)。
【0039】
図9は、以上の構成のソフトウェア開発支援装置1による、ソースコードの作成を支援するための処理(ソースコード作成支援処理)の手順を示すフローチャートである。このソースコード作成支援処理は、上述したソースコード作成支援プログラムが、ユーザ操作により起動されることで開始される。
【0040】
先ず、ユーザI/F部140は、図3に示すようなメイン画面301を表示する(ステップS101)。ユーザにより、メイン画面301のソースコードの解析ボタン302が押下操作されると(ステップS102;YES)、ソースコード解析部141は、ソースコード記憶部12に記憶されている、ユーザが指定したタスクのソースコードを所定条件の下で解析し、解析した結果を解析結果記憶部13に格納する(ステップS103)。
【0041】
ユーザにより、メイン画面301の解析結果の表示ボタン303が押下操作されると(ステップS104;YES)、解析結果表示部142は、解析結果表示処理を実行する(ステップS105)。
【0042】
ユーザにより、メイン画面301の終了ボタン304が押下操作されると(ステップS106;YES)、ユーザI/F部140は、メイン画面301を閉じる。これにより、ソースコード作成支援処理、即ち、ソースコード作成支援プログラムの実行が終了する。
【0043】
図10は、解析結果表示処理の手順を示すフローチャートである。先ず、解析結果表示部142は、図示しないメニュー画面を表示する等して、ユーザに対して、どの条件における解析結果を表示すべきかの問い合わせを行う(ステップS201)。かかるメニュー画面にて、ユーザにより所望の条件の解析結果が選択されると、解析結果表示部142は、ユーザが選択した条件の解析結果に基づく画面(解析結果表示画面)を表示する(ステップS202)。
【0044】
例えば、解析結果表示部142は、ユーザが選択した条件に応じて、呼出関数表示画面401(図4参照)、親子画面501A,501B(図5参照)、データアクセス画面601(図6参照)等を表示する。
【0045】
かかる画面上で、ユーザにより、関数の追加、削除、矢印の向きの変更等、関連性の変更操作が行われた場合(ステップS203;YES)、解析結果表示部142は、その操作内容に応じて、表示画面の内容を更新する(ステップS204)。
【0046】
ユーザにより、関数名を示すアイコンに対して、ダブルクリック操作等のソースコードの編集要求操作が行われると(ステップS205;YES)、コーディング受付部143は、当該関数名に対応したソースコード編集画面801を表示する(ステップS206)。かかるソースコード編集画面801にて、ユーザによりソースコードの編集作業が行われ、終了ボタン802が押下操作されると(ステップS207)、コーディング受付部143は、当該編集されたソースコードをソースコード記憶部12に格納する(ステップS208)。
【0047】
ユーザにより、解析結果表示画面における終了ボタン(例えば、402、502A、502B、602)が押下操作されると(ステップS209;YES)、解析結果表示部142は、解析結果表示画面上で更新された内容を反映したソースコードをソースコード記憶部12に格納し(ステップS210)、解析結果表示画面を閉じる。これにより、解析結果表示処理が終了する。
【0048】
以上のように、本実施形態のソフトウェア開発支援装置1によれば、ソフトウェア開発におけるソースコードの作成において、ユーザに対して、既存(作成済み)の関数間の関係を容易に理解できる環境を提供する。したがって、ソースコードの作成効率の向上が図れる。また、関連する関数の把握が容易となるため、編集したソースコードに関連して修正が必要なソースコードの把握も容易となり、作業効率が向上する。これにより、開発期間の短縮が図れ、さらに、品質の向上も期待できる。
【0049】
また、再利用の促進も図れる。即ち、例えば、共通する処理(関数)、共通して扱う物理量を表す変数(例えば、空調の運転状態、運転モード、室温、湿度、照明の運転状態、照度等)や全体を通じて機器の状態(動作モード等)を管理している変数等の把握が困難であることに起因して、関数を新規作成してしまう等の無駄な作業を防止できる。
【0050】
また、ユーザに、解析結果表示画面を介して直感的な操作環境を提供し、例えば、その操作内容を関連する関数のソースコードに自動的に反映したり、ユーザが所望する関数のソースコードを編集可能な態様で表示することができる。したがって、利便性の向上が図れ、作業効率の一層の向上が図れる。
【0051】
なお、本発明は、上記各実施形態に限定されず、本発明の要旨を逸脱しない範囲での種々の変更は勿論可能である。
【0052】
例えば、上記実施形態のソフトウェア開発支援装置1が実行したプログラムを、既存のパーソナルコンピュータ(PC)等に適用することで、当該PCを本発明に係るソフトウェア開発支援装置として機能させることも可能である。
【0053】
このようなプログラムの配布方法は任意であり、例えば、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネットなどの通信ネットワークを介して配布してもよい。
【0054】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【符号の説明】
【0055】
1 ソフトウェア開発支援装置
10 入力部
11 表示部
12 ソースコード記憶部
13 解析結果記憶部
14 制御部
140 ユーザI/F部
141 ソースコード解析部
142 解析結果表示部
143 コーディング受付部

【特許請求の範囲】
【請求項1】
ユーザからの操作を受け付ける入力部と、
開発対象となるソフトウェアに対応したソースコードを記憶するソースコード記憶部と、
ユーザによる所定操作に応じて、前記ソースコード記憶部に記憶されているソースコードを読み出し、所定の条件に基づいて、関数間の関連性を解析するソースコード解析部と、
前記ソースコード解析部による解析結果を記憶する解析結果記憶部と、
ユーザによる所定操作に応じて、前記解析結果記憶部に記憶されている前記ソースコード解析部による解析結果を読み出し、読み出した解析結果に基づく解析結果表示画面を所定の表示装置に表示させる解析結果表示部と、
ユーザによる所定操作に応じて、ユーザが指定した関数のソースコードを編集可能な態様で前記表示装置に表示させるコーディング受付部と、を備える、
ことを特徴とするソフトウェア開発支援装置。
【請求項2】
前記解析結果表示部は、ユーザによる所定操作に応じて、前記解析結果表示画面の表示内容を変更し、その変更した内容に応じて、関係する関数のソースコードの内容を更新する、
ことを特徴とする請求項1に記載のソフトウェア開発支援装置。
【請求項3】
前記解析結果表示画面では、関数を示すアイコンが表示され、前記コーディング受付部は、ユーザにより、前記アイコンを選択した所定操作が行われると、当該アイコンに対応した関数のソースコードを編集可能な態様で前記表示装置に表示させる、
ことを特徴とする請求項1又は2に記載のソフトウェア開発支援装置。
【請求項4】
コンピュータを、
ユーザからの操作を受け付ける入力部、
開発対象となるソフトウェアに対応したソースコードを記憶するソースコード記憶部、
ユーザによる所定操作に応じて、前記ソースコード記憶部に記憶されているソースコードを読み出し、所定の条件に基づいて、関数間の関連性を解析するソースコード解析部、
前記ソースコード解析部による解析結果を記憶する解析結果記憶部、
ユーザによる所定操作に応じて、前記解析結果記憶部に記憶されている前記ソースコード解析部による解析結果を読み出し、読み出した解析結果に基づく解析結果表示画面を所定の表示装置に表示させる解析結果表示部、
ユーザによる所定操作に応じて、ユーザが指定した関数のソースコードを編集可能な態様で前記表示装置に表示させるコーディング受付部、として機能させる、
ことを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2013−97494(P2013−97494A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−238404(P2011−238404)
【出願日】平成23年10月31日(2011.10.31)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】