JP2008197982A - ソースコード保護装置 - Google Patents

ソースコード保護装置 Download PDF

Info

Publication number
JP2008197982A
JP2008197982A JP2007033479A JP2007033479A JP2008197982A JP 2008197982 A JP2008197982 A JP 2008197982A JP 2007033479 A JP2007033479 A JP 2007033479A JP 2007033479 A JP2007033479 A JP 2007033479A JP 2008197982 A JP2008197982 A JP 2008197982A
Authority
JP
Japan
Prior art keywords
source code
protection
original source
difference
original
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.)
Withdrawn
Application number
JP2007033479A
Other languages
English (en)
Inventor
Tatsuaki Watanabe
竜明 渡邉
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.)
Toshiba Corp
Kioxia Systems Co Ltd
Original Assignee
Toshiba Corp
Toshiba Memory Systems Co 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 Toshiba Corp, Toshiba Memory Systems Co Ltd filed Critical Toshiba Corp
Priority to JP2007033479A priority Critical patent/JP2008197982A/ja
Publication of JP2008197982A publication Critical patent/JP2008197982A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】プログラム設計ツールによるソースコードの修正から修正前のソースコードを保護することのできるソースコード保護装置を提供する。
【解決手段】ソースコード保護装置1は、原ソースコードS1に対する保護領域を指定する保護領域指定部11と、原ソースコードS1の修正を意図して生成された新ソースコードS2と原ソースコードS1との差異部分を抽出する差異抽出部12と、差異抽出部12により抽出された差異部分の原ソースコードS1が保護領域指定部11により指定された保護領域に含まれているかどうかを判定する保護判定部13と、保護判定部13により保護領域に含まれていると判定された上述の差異部分の新ソースコードS2を原ソースコードS1に差し戻すソースコード差し戻し部14と、を備える。
【選択図】図1

Description

本発明は、ソースコード保護装置に関し、特にプログラム設計ツールにより自動生成されたソースコードを保護するソースコード保護装置に関する。
近年、プログラムの開発効率向上のため、UML(Unified Modeling Language)に代表されるモデル記述言語で記述された動作仕様からソースコードを自動生成するプログラム設計ツールが、プログラムの開発に用いられている(例えば、特許文献1参照。)。
このようなプログラム設計ツールの使用によりソースコードの生産効率は向上するが、その反面、生成されたソースコードの検証効率が低下するという問題が発生する。例えば、デバッグなどによりソースコードの検証が一旦済んだ後にプログラムの修正が必要になった場合など、プログラム設計ツールから新たなソースコードが生成される。そのため、この新たに生成されたソースコード全体の検証を改めて行わなければならない。この場合、修正前と後で同じソースコードが生成されていたとしても、その部分の検証を再度行わなければならない。
そこで、このような場合、修正を加えたくない部分のソースコードが保護され、その部分がそのまま保存されていることが望まれる。そうすれば、その部分の検証を繰り返し行う必要がなくなる。しかし、プログラム設計ツールで自動生成されたソースコードの構造は設計者には不明であるため、保存したいソースコードの記述場所を設計者が特定することは困難である。
特開2004−70810号公報 (第6−7ページ、図1)
そこで、本発明の目的は、プログラム設計ツールによるソースコードの修正から修正前のソースコードを保護することのできるソースコード保護装置を提供することにある。
本発明の一態様によれば、原ソースコードに対する保護領域を指定する保護領域指定手段と、前記原ソースコードの修正を意図してプログラム設計ツールにより生成された新ソースコードと前記原ソースコードとの差異部分を抽出する差異抽出手段と、前記差異部分の前記原ソースコードが前記保護領域に含まれているかどうかを判定する保護判定手段と、前記保護判定手段により前記保護領域に含まれていると判定された前記差異部分の前記新ソースコードを前記原ソースコードに差し戻すソースコード差し戻し手段とを備えることを特徴とするソースコード保護装置が提供される。
また、本発明の別の一態様によれば、原ソースコードに対する保護領域を指定する保護領域指定手段と、前記原ソースコードの修正を意図してプログラム設計ツールにより生成された新ソースコードと前記原ソースコードとの差異部分を抽出する差異抽出手段と、前記差異部分の前記原ソースコードが前記保護領域に含まれているときに警告を発する警告生成手段と、前記警告が発せられたときに、前記差異部分の前記新ソースコードを前記原ソースコードに差し戻す処理を行うか否かの選択を要求する選択要求手段と、前記選択に応じて前記差異部分の前記新ソースコードに対する処理を行うソースコード処理手段とを備えることを特徴とするソースコード保護装置が提供される。
本発明によれば、プログラム設計ツールによるソースコードの修正から修正前のソースコードを保護することができるので、ソースコードの検証効率を向上させることができる。
以下、本発明の実施例を図面を参照して説明する。なお、各実施例のソースコード保護装置は、UMLなどのモデル記述言語で記述された設計記述からプログラム設計ツールにより生成されたソースコードをその処理対象とするものとする。
図1は、本発明の実施例1に係るソースコード保護装置の構成の例を示すブロック図である。
本実施例のソースコード保護装置1へは、プログラム設計ツール100により原設計記述U1から生成された原ソースコードS1、および原設計記述U1を修正した新設計記述U2からプログラム設計ツール100により生成された新ソースコードS2が入力される。
本実施例のソースコード保護装置1は、原ソースコードS1に対する保護領域を指定する保護領域指定部11と、原ソースコードS1の修正を意図して生成された新ソースコードS2と原ソースコードS1との差異部分を抽出する差異抽出部12と、差異抽出部12により抽出された差異部分の原ソースコードS1が保護領域指定部11により指定された保護領域に含まれているかどうかを判定する保護判定部13と、保護判定部13により保護領域に含まれていると判定された上述の差異部分の新ソースコードS2を原ソースコードS1に差し戻すソースコード差し戻し部14と、を備える。
保護領域指定部11は、外部からの保護対象指定入力にもとづいて、原ソースコードS1において保護すべき領域を記述した保護領域管理テーブルを作成する。ここで、保護対象指定入力としては、原ソースコードS1に対して変更を加えたくない領域が、ファイル、モジュール、関数の単位で指定される。
図2に、保護領域指定部11が生成する保護領域管理テーブルの例を示す。保護領域管理テーブルでは、保護対象の領域の名称(例えば、file a、moduleA、funcA)が、保護単位とともに番号を付けて管理される。
差異抽出部12は、原ソースコードS1と、この原ソースコードS1の修正を意図して生成された新ソースコードS2との差異部分を抽出する。
保護判定部13は、差異抽出部12により抽出された差異部分の原ソースコードS1を図2に示した保護領域管理テーブルと照合する。この照合により、一致するものがあれば、その部分の原ソースコードS1が、新ソースコードS2では変更されていると判定することができる。
そこで、ソースコード差し戻し部14は、この部分の新ソースコードS2を原ソースコードS1に差し戻す。これにより、保護領域管理テーブルに記載された領域のソースコードは、新ソースコードS2においても保護される。
このようにして、ソースコード差し戻し部14は、新ソースコードS2に対して、保護領域管理テーブルに記載された領域が変更されている部分を原ソースコードS1に差し戻す処理を行い、その結果を保護済みソースコードS3として出力する。
このような本実施例によれば、原ソースコードに対して予め保護領域を指定しておくことにより、原ソースコードに対する修正が行なわれても、その保護領域のソースコードを修正から保護することができる。
図3は、本発明の実施例2に係るソースコード保護装置の構成の例を示すブロック図である。本実施例のソースコード保護装置2が、実施例1のソースコード保護装置1と異なる点は、新ソースコードS2において保護領域のソースコードの変更が行われていた場合、そのソースコードを原ソースコードS1へ差し戻すかどうかの判断を設計者が行えるようにした点である。
本実施例のソースコード保護装置2は、原ソースコードS1に対する保護領域を指定する保護領域指定部21と、原ソースコードS1の修正を意図して生成された新ソースコードS2と原ソースコードS1との差異部分を抽出する差異抽出部22と、差異抽出部22により抽出された差異部分の原ソースコードS1が保護領域指定部21により指定された保護領域に含まれているときに警告を発する警告生成部23と、その警告が発せられたときに、上述の差異部分の新ソースコードS2を原ソースコードS1に差し戻す処理を行うか否かの選択を要求する選択要求部24と、入力された選択に応じて差異部分の新ソースコードS2に対する処理を行うソースコード処理部25と、を備える。
保護領域指定部21は、実施例1の保護領域指定部11と同様、外部からの保護対象指定入力にもとづいて、原ソースコードS1において保護すべき領域を記述した保護領域管理テーブルを作成する。保護領域管理テーブルの例は、実施例1で示した図2と同様である。
また、差異抽出部22も、実施例1の差異抽出部12と同様、原ソースコードS1と、この原ソースコードS1の修正を意図して生成された新ソースコードS2との差異部分を抽出する。
警告生成部23は、差異抽出部22により抽出された差異部分の原ソースコードS1を図2に示したような保護領域管理テーブルと照合する。この照合により、一致するものがあれば、その部分の原ソースコードS1が、新ソースコードS2では変更されていると判定することができる。そこで、警告生成部23は、保護領域に対して変更が行われようとしていることを設計者へ知らせるために、外部へ対して警告を発する。
そのとき、選択要求部24は、差異部分の新ソースコードS2を原ソースコードS1に差し戻す処理を行うか否かの選択を設計者に要求する。
図4に、この警告生成部23の警告と、選択要求部24の選択要求と、を一緒にGUI(Graphical User Interface)表示した例を示す。
この例では、保護領域管理テーブルに記載されている関数‘funcA’が、新ソースコードS2において変更されていることを警告し、この変更を原ソースコードS1の戻すかどうかの選択を設計者に要求している。
ソースコード処理部25は、選択要求部24において設計者が入力した選択に応じて、差異部分の新ソースコードS2に対する処理を行う。
例えば、図4に示す表示において「はい」が入力されたときは、差異部分の新ソースコードS2を原ソースコードS1に差し戻す処理を行い、「いいえ」が入力されたときは、差異部分の新ソースコードS2をそのまま残す処理を行う。
このようにして、ソースコード処理部25は、新ソースコードS2の、保護領域管理テーブルに記載された領域が変更されている部分に対して、設計者の選択に応じて、原ソースコードS1に差し戻す処理を行うか、新ソースコードS2のまま残すかの処理を行い、その結果を処理済みソースコードS4として出力する。
このような本実施例によれば、予め保護がかけられている原ソースコードに対する変更が行われようとしたときに、その変更が妥当なものであるかどうかを判断する機会を設計者に提供することができる。
図5は、本発明の実施例3に係るソースコード保護装置の構成の例を示すブロック図である。本実施例のソースコード保護装置3は、実施例2のソースコード保護装置2に対して、影響範囲表示部31を追加したものである。そこで、図5において、図3に示したブロックと同一の機能を有するブロックには図3と同一の符号を付し、ここではその詳細な説明を省略する。
影響範囲表示部31は、差異抽出部22により抽出された差異部分に含まれる新ソースコードS2に記述された関数が、新ソースコードS2のどこに影響を及ぼしているかを、新ソースコードS2上に着色などして、グラフィカルにわかりやすく表示する。
図6に、影響範囲表示部31の出力の例を示す。この例では、保護領域指定部21により保護領域に指定されている関数‘funcA’に対して、新ソースコードS2において変更が行われているときの表示の例を示す。なお、ここでは、変更された関数およびその変更が影響を及ぼす箇所をその背景を着色することにより示す。
図6に示す例では、変更された関数‘funcA’と、関数‘funcA’に呼び出されている関数‘funcD’および‘funcE’と、関数‘funcA’を呼び出している関数‘funcF’および‘funcG’が着色されて、関数の変更の影響する箇所が一目瞭然で認識できる。
また、このほかに、影響範囲表示部31は、関数変更の影響を示すリストも出力する。図7に、影響範囲表示部31から出力される関数変更の影響を示すリストの例を示す。
図7(a)は、保護領域指定部21により保護領域に指定されている関数に対して、新ソースコードS2において変更が行われた関数のリストであり、図7(b)は、その変更が行われた関数のそれぞれについて、その変更された関数に呼び出される関数を拾い出したリストであり、図7(c)は、その変更が行われた関数のそれぞれについて、その変更された関数を呼び出す関数を拾い出したリストである。それぞれのリストには、変更許可チェック欄がついており、コードレビューや単体テストなどにより関数の変更に問題がないと判定されているかどうかをチェックできるようになっている。
設計者は、この影響範囲表示部31の出力を参照して、選択要求部24による選択入力要求に対する判断を下すことができる。
このような本実施例によれば、予め保護がかけられている原ソースコードに対する変更が行われようとしたときに、その変更の及ぼす影響を把握することが容易であり、その変更が妥当なものであるかどうかを設計者が判断するときに、その判断を誤ることを防止することができる。
図8は、本発明の実施例4に係るソースコード保護装置の構成の例を示すブロック図である。本実施例のソースコード保護装置4は、実施例3のソースコード保護装置3と構成は同じであるが、差異抽出部42が、原ソースコードデバッグ情報D1と、新ソースコードデバッグ情報D2を入力として、原ソースコードS1と新ソースコードS2との差異部分を抽出する点が、実施例3のソースコード保護装置3とは異なる。
原ソースコードデバッグ情報D1および新ソースコードデバッグ情報D2は、原ソースコードS1および新ソースコードS2をそれぞれビルドすることにより得られる。
差異抽出部42は、このデバッグ情報を用いることにより、ローカル変数名の変更や改行の挿入、あるいはコメントの修正など、ロジックおよび変数の変更が見られないソースコードの変更については、これを差異抽出の対象から除外する。
このような本実施例によれば、ロジックおよび変数の変更が見られる変更のみが、ソースコードの差異部分として抽出されるので、保護領域のソースコードの変更に対して、設計者にその妥当性の判断を真に要求したいものだけにその対象を絞り込むことができる。
本発明の実施例1に係るソースコード保護装置の構成の例を示すブロック図。 保護領域管理テーブルの例を示す図。 本発明の実施例2に係るソースコード保護装置の構成の例を示すブロック図。 選択要求の表示の例を示す図。 本発明の実施例3に係るソースコード保護装置の構成の例を示すブロック図。 影響範囲の表示の例を示す図。 関数変更の影響を示すリストの例を示す図。 本発明の実施例4に係るソースコード保護装置の構成の例を示すブロック図。
符号の説明
1〜4 ソースコード保護装置
11、21 保護領域指定部
12、22、42 差異抽出部
13 保護判定部
14 ソースコード差し戻し部
23 警告生成部
24 選択要求部
25 ソースコード処理部
31 影響範囲抽出部

Claims (5)

  1. 原ソースコードに対する保護領域を指定する保護領域指定手段と、
    前記原ソースコードの修正を意図してプログラム設計ツールにより生成された新ソースコードと前記原ソースコードとの差異部分を抽出する差異抽出手段と、
    前記差異部分の前記原ソースコードが前記保護領域に含まれているかどうかを判定する保護判定手段と、
    前記保護判定手段により前記保護領域に含まれていると判定された前記差異部分の前記新ソースコードを前記原ソースコードに差し戻すソースコード差し戻し手段と
    を備えることを特徴とするソースコード保護装置。
  2. 原ソースコードに対する保護領域を指定する保護領域指定手段と、
    前記原ソースコードの修正を意図してプログラム設計ツールにより生成された新ソースコードと前記原ソースコードとの差異部分を抽出する差異抽出手段と、
    前記差異部分の前記原ソースコードが前記保護領域に含まれているときに警告を発する警告生成手段と、
    前記警告が発せられたときに、前記差異部分の前記新ソースコードを前記原ソースコードに差し戻す処理を行うか否かの選択を要求する選択要求手段と、
    前記選択に応じて前記差異部分の前記新ソースコードに対する処理を行うソースコード処理手段と
    を備えることを特徴とするソースコード保護装置。
  3. 前記差異部分に含まれる前記新ソースコードの関数が影響を及ぼす範囲を前記新ソースコード上にグラフィカルに表示する影響範囲表示手段を、
    さらに備えることを特徴とする請求項2に記載のソースコード保護装置。
  4. 前記差異抽出手段が、
    前記原ソースコードのデバッグ情報および前記新ソースコードのデバッグ情報にもとづいて前記差異部分を抽出する
    ことを特徴とする請求項2または3に記載のソースコード保護装置。
  5. 前記差異抽出手段が、
    前記原ソースコードと前記新ソースコードとの差異のうち、ロジックおよび変数の値に変更が加えられた部分のみを前記差異部分として抽出する
    ことを特徴とする請求項4に記載のソースコード保護装置。
JP2007033479A 2007-02-14 2007-02-14 ソースコード保護装置 Withdrawn JP2008197982A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007033479A JP2008197982A (ja) 2007-02-14 2007-02-14 ソースコード保護装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007033479A JP2008197982A (ja) 2007-02-14 2007-02-14 ソースコード保護装置

Publications (1)

Publication Number Publication Date
JP2008197982A true JP2008197982A (ja) 2008-08-28

Family

ID=39756856

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007033479A Withdrawn JP2008197982A (ja) 2007-02-14 2007-02-14 ソースコード保護装置

Country Status (1)

Country Link
JP (1) JP2008197982A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013546090A (ja) * 2010-12-15 2013-12-26 マイクロソフト コーポレーション コードクローン検出を用いたインテリジェントコード差分処理

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013546090A (ja) * 2010-12-15 2013-12-26 マイクロソフト コーポレーション コードクローン検出を用いたインテリジェントコード差分処理

Similar Documents

Publication Publication Date Title
TWI468884B (zh) 次序程式作成裝置
CN106649457A (zh) 基于对象关系映射技术的数据处理框架
JP2017041171A (ja) テストシナリオ生成支援装置およびテストシナリオ生成支援方法
JP5176478B2 (ja) データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム
KR102137497B1 (ko) 경량모델에 pmi를 생성하는 방법
JP2006285707A (ja) 業務仕様作成支援システム及び方法
JP4888790B2 (ja) 契約定義関数検証装置、その方法及びそのプログラム
JP2008197982A (ja) ソースコード保護装置
JP5293521B2 (ja) デザインルールチェック検証装置およびデザインルールチェック検証方法
Raheja et al. An efficient code clone detection model on Java byte code using hybrid approach
JP4977681B2 (ja) データパターン/テストデータ生成・蓄積方法及びシステム
WO2017204139A1 (ja) データ処理装置、データ処理方法、およびプログラム記録媒体
JP2006309666A (ja) プログラム開発支援装置、プログラム動作比較方法および半導体集積回路製造方法
CN105389164B (zh) 计算机实施的用于生成控制设备程序代码的方法以及相关的消息管理环境
JP2023076222A (ja) モデル変換装置、モデル等価性検証装置、モデル変換方法、およびモデル変換プログラム
CN102870091B (zh) 用于为开关装置给定参数的工程系统的宏管理系统
CN105094845A (zh) 流程建模装置和方法
JP2010244150A (ja) 図面管理装置
JP2009211143A (ja) 情報処理装置および情報処理プログラム
JP2008107982A (ja) 開発支援プログラム、開発支援方法および開発支援装置
JP2015148925A (ja) プログラム生成装置および方法
JP2014154070A (ja) プラント制御監視システム設計支援ツール
KR101705254B1 (ko) 장치 및 프로그램
JP2009042951A (ja) プログラム中のデータ抽出方法及び装置
JP4664224B2 (ja) ネットリスト生成方法及び生成装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20081226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090210

A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20100511