JP5251823B2 - Development support program, development support apparatus, and development support method - Google Patents
Development support program, development support apparatus, and development support method Download PDFInfo
- Publication number
- JP5251823B2 JP5251823B2 JP2009239750A JP2009239750A JP5251823B2 JP 5251823 B2 JP5251823 B2 JP 5251823B2 JP 2009239750 A JP2009239750 A JP 2009239750A JP 2009239750 A JP2009239750 A JP 2009239750A JP 5251823 B2 JP5251823 B2 JP 5251823B2
- Authority
- JP
- Japan
- Prior art keywords
- class
- definition
- use case
- countermeasure
- 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.)
- Active
Links
Images
Description
本発明は、開発を支援する開発支援プログラム、開発支援装置、および開発支援方法に関する。 The present invention relates to a development support program, a development support apparatus, and a development support method that support development.
従来のソフトウェア開発においては、開発者は自分が実現したい機能を主に想定して開発しているのが現状である。また、ソフトウェア開発においては各種ソフトウェア開発支援に関する技術が開示されている(たとえば、下記特許文献1〜3を参照。)。
In the conventional software development, the developer is developing mainly assuming the function he wants to realize. In software development, various software development support technologies are disclosed (for example, see
しかしながら、上述した従来のソフトウェア開発においては、開発者は自分が実現したい機能を主に想定して開発するため、開発者が想定しないふるまいなどを考慮したセキュリティ機能の実装が困難であった。また、そのような実装をすることにより、開発者の負担が増大するという問題があった。 However, in the above-described conventional software development, since the developer mainly develops the function that he / she wants to realize, it is difficult to implement the security function considering the behavior that the developer does not assume. In addition, there is a problem that the burden on the developer increases due to such implementation.
また、設計段階でソフトウェアの動作を確認するためのプロトタイプ(モックアップ)を一旦作成し、動作確認した上で、完成版の実装を行う開発はよく行われているが、設計工程など、コーディングが完了していない段階でのセキュリティ機能の実装は困難であった。 Also, a prototype (mockup) for confirming the operation of the software at the design stage is created once, and after confirming the operation, the development to implement the finished version is often done. It was difficult to implement security functions when they were not completed.
さらに、作り直す場合、セキュリティ機能の呼び出し処理も作りなおすことになり、開発者の負担が増大するという問題があった。 Furthermore, when re-creating, the security function calling process is re-created, which increases the burden on the developer.
本発明は、上述した従来技術による問題点を解消するため、セキュリティ機能に関する実装の網羅性の向上と開発者の負担軽減を図ることができる開発支援プログラム、開発支援装置、および開発支援方法を提供することを目的とする。 The present invention provides a development support program, a development support apparatus, and a development support method capable of improving the comprehensiveness of implementation related to security functions and reducing the burden on the developer in order to eliminate the above-described problems caused by the prior art. The purpose is to do.
上述した課題を解決し、目的を達成するため、開示の開発支援プログラム、開発支援装置、および開発支援方法は、ユースケースに対するセキュリティ属性が規定された、開発対象の機能を表現したユースケース定義を取得し、取得されたユースケース定義に基づいて、前記ユースケースおよび前記セキュリティ属性をクラスに変換することにより、クラス定義を生成し、生成されたクラス定義内の前記クラスをオブジェクトに関連付けた前記開発対象の動作を示すシーケンス定義を取得し、取得されたシーケンス定義のうち前記クラスに関連するオブジェクトをクラス変換し、前記クラスに関連付けた前記セキュリティ属性を追加することにより、前記開発対象に関するプログラムに挿入されるソースコード雛型を生成することを要件とする。 In order to solve the above-mentioned problems and achieve the objectives, the disclosed development support program, development support device, and development support method have a use case definition that expresses the functions to be developed, with security attributes for the use cases specified. The development in which the class definition is generated by converting the use case and the security attribute into a class based on the acquired use case definition, and the class in the generated class definition is associated with the object. The sequence definition indicating the target operation is acquired, the object related to the class is converted into a class in the acquired sequence definition, and the security attribute associated with the class is added to insert the program into the program related to the development target It is necessary to generate a source code template .
上記の構成によれば、開発上流で作るユースケース定義やシーケンス定義においてソフトウェアが備えるべきセキュリティ属性を設定しておき、該セキュリティ属性に基づき、セキュリティ対策コードの呼び出し処理を適切な箇所に埋め込んだ「ソースコードの雛形」を生成することができる。そして、開発者はこのソースコード雛形に基づきプログラミングを行うことで、開発下流においてセキュリティ対策が失われることが無くなる。すなわち、本開発支援プログラム、開発支援装置、および開発支援方法によれば、セキュリティ機能に関する実装の網羅性の向上と開発者の負担軽減を図ることができるという効果を奏する。 According to the above configuration, the security attribute that the software should have in the use case definition and sequence definition created in the upstream development is set, and based on the security attribute, the call processing of the security countermeasure code is embedded at an appropriate location. Source code template "can be generated. The developer performs programming based on the source code template, so that security measures are not lost downstream in the development. That is, according to the development support program, the development support apparatus, and the development support method, there is an effect that it is possible to improve the completeness of implementation related to the security function and reduce the burden on the developer.
以下に添付図面を参照して、この発明にかかる開発支援プログラム、開発支援装置、および開発支援方法の好適な実施の形態を詳細に説明する。なお、本実施の形態では、一例としてソフトウェア開発について説明するが、ソフトウェア開発に限らずハードウェア開発にも適用することができる。 Exemplary embodiments of a development support program, a development support apparatus, and a development support method according to the present invention will be explained below in detail with reference to the accompanying drawings. In the present embodiment, software development is described as an example, but the present invention can be applied not only to software development but also to hardware development.
(システム構成)
図1は、本実施の形態にかかる開発支援システムのシステム構成図である。図1において、開発支援システム100は、開発環境101と開発支援装置102により構成されている。開発環境101とは、従来からソフトウェア開発で用いられた作図ツール103や実行環境104を含む環境であり、コンピュータにより構成される。開発支援装置102とは、開発環境101におけるソフトウェア開発を支援するコンピュータである。開発支援装置102は、脅威・対策データベース(DB)105および対策プログラムDB106にアクセス可能である。なお、開発環境101で使用されるコンピュータと開発支援装置102として使用されるコンピュータとは、一体でもよく別々のコンピュータでもよい。
(System configuration)
FIG. 1 is a system configuration diagram of a development support system according to the present embodiment. In FIG. 1, the
まず、開発環境101では、開発者が開発対象となるソフトウェアを機能的に表現したユースケース定義111を作成する。ユースケース定義111は、ユースケース図として表示可能である。なお、ユースケース定義111には、通常のユースケース定義111とは異なっており、セキュリティ属性やデータ資産が付加されている。この点については後述する。
First, in the
また、開発環境101は、開発支援装置102に対してユースケース定義111を与えることで、開発支援装置102からユースケース定義111に応じたクラス定義112を取得する。開発者は、クラス定義112を用いて開発対象となるソフトウェアの動作を表現したシーケンス定義113を作成する。シーケンス定義113は、シーケンス図として表示可能である。
In addition, the
開発環境101は、開発支援装置102に対してシーケンス定義113を与えることで、開発支援装置102からシーケンス定義113に応じたクラス定義を取得する。このクラス定義内のクラス(シーケンス定義113のオブジェクト)やメソッド(シーケンス定義113のメッセージ)には、開発するソフトウェアが備えるべきセキュリティに関する属性であるセキュリティ属性が指定されている。このようなクラス定義を、本実施の形態では、「ソースコード雛型」と称す。
The
ソースコード雛型114には、どのクラス、どのメソッドにどのセキュリティ属性が指定されているかが記述されているため、開発者は、ソースコード雛型114を参照して、開発対象プログラム115(まずは、プロトタイプ115a)を作成する。開発環境101は、プロトタイプ115aを実行環境104に与える。実行環境104は、プロトタイプ115aを実行する。
Since the
開発者は、プロトタイプ115aに問題があれば修正を繰り返して実行環境104にかけ、最終的に、完成品115bを作成する。そして、完成品115bを実行環境104に与える。実行環境104は、完成品115bを実行する。
If there is a problem with the
また、本実施の形態では、アスペクト指向プログラミング(AOP:Aspect Oriented Programming)を利用してソフトウェア開発を行っているため、実行環境104による実行の際、開発支援装置102から得られた対策プログラム126が開発対象プログラム115に挿入される。
In the present embodiment, since software development is performed using aspect-oriented programming (AOP), a
アスペクト指向プログラミングの実装では、1つの関心事が特に複数の関心事を横断する形で実現されている(AspectJなど)。これらの実装では、依存性注入という、通常のプログラムとサブルーチンの関係を逆転した概念が用いられる。 In the implementation of aspect-oriented programming, one concern is realized in particular across multiple interests (such as AspectJ). These implementations use the concept of dependency injection, which reverses the relationship between normal programs and subroutines.
本実施の形態では、アスペクト指向プログラミングの導入により、セキュリティプログラムの機能への依存性を軽減している。これにより、プロトタイプ115aで対策プログラム126の呼び出しを記述する必要がなくなった。すなわち、依存性の逆転により、開発支援装置102から対策プログラム126が挿入されるため、プロトタイプ115aの開発対象プログラムから実装でコードが変化しても、対策プログラム126の挿入に必要な特徴が維持されるため、同様に対策プログラム126の挿入が可能となる。
In this embodiment, the dependency on the function of the security program is reduced by introducing aspect-oriented programming. This eliminates the need to describe the call to the
また、開発支援装置102は、脅威・対策DB105および対策プログラムDB106にアクセス可能であり、クラス生成部121と、ソースコード雛型生成部122と、脅威・対策生成部123と、対策プログラム抽出部125と、を有する。
Further, the
脅威・対策DB105は、セキュリティ属性ごとに、セキュリティ攻撃を示す脅威とその対策に関する情報を記憶するデータベースである。また、対策プログラムDB106は、対策を実現するための対策プログラム126を記憶するデータベースである。
The threat /
クラス生成部121は、ユースケース定義111からクラス定義112を生成する。具体的には、ユースケース定義111をクラス定義112に変換して、クラス定義112を返す。ソースコード雛型生成部122は、シーケンス定義113からソースコード雛型114を生成する。具体的には、シーケンス定義113をクラス定義112に変換して、セキュリティ属性を指定したソースコード雛型114を返す。
The
脅威・対策生成部123は、脅威・対策DB105を参照して、ユースケース定義111から脅威・対策定義124を生成する。具体的には、ユースケース定義111に含まれているセキュリティ属性に該当する脅威およびその対策に関する情報を脅威・対策DB105から読み出すことで、脅威・対策定義124を生成する。
The threat /
対策プログラム抽出部125は、脅威・対策定義124をキーにして、対策プログラムDB106から該当する対策プログラム126を抽出する。対策プログラム126には、認証処理や暗号化処理など実体となる対策を示すプログラムコードのほか、開発対象プログラムの挿入位置を指定する注釈(アノテーション)が、脅威・対策定義124に応じて指定される。対策プログラム126は、開発対象プログラムが該当する位置を実行するときに挿入されて、実行されることとなる。
The countermeasure
(コンピュータのハードウェア構成)
図2は、実施の形態にかかる開発環境101や開発支援装置102となるコンピュータのハードウェア構成を示すブロック図である。図2において、コンピュータは、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、磁気ディスクドライブ204と、磁気ディスク205と、光ディスクドライブ206と、光ディスク207と、ディスプレイ208と、I/F(Interface)209と、キーボード210と、マウス211と、スキャナ212と、プリンタ213と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
(Computer hardware configuration)
FIG. 2 is a block diagram of a hardware configuration of a computer that becomes the
ここで、CPU201は、開発支援装置102の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御にしたがって磁気ディスク205に対するデータのリード/ライトを制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。
Here, the
光ディスクドライブ206は、CPU201の制御にしたがって光ディスク207に対するデータのリード/ライトを制御する。光ディスク207は、光ディスクドライブ206の制御で書き込まれたデータを記憶したり、光ディスク207に記憶されたデータをコンピュータに読み取らせたりする。
The
ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ208は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
The
インターフェース(以下、「I/F」と略する。)209は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク214に接続され、このネットワーク214を介して他の装置に接続される。そして、I/F209は、ネットワーク214と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F209には、たとえばモデムやLANアダプタなどを採用することができる。
An interface (hereinafter abbreviated as “I / F”) 209 is connected to a
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
The
スキャナ212は、画像を光学的に読み取り、コンピュータ内に画像データを取り込む。なお、スキャナ212は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ213は、画像データや文書データを印刷する。プリンタ213には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
The
なお、図1に示した脅威・対策DB105および対策プログラムDB106は、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置によりその機能を実現する。また、クラス生成部121、ソースコード雛型生成部122、脅威・対策生成部123、および対策プログラム抽出部125は、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、その機能を実現する。
Specifically, the threat /
(データベースの説明)
図3は、脅威・対策DB105の記憶内容の一例を示す説明図である。脅威・対策DB105は、セキュリティ属性項目、脅威項目、フロー方向、および対策項目を有するデータ構造である。セキュリティ属性項目は、セキュリティ属性を規定する。セキュリティ属性とは、セキュリティの種類を特定する情報である。具体的には、たとえば、可用性(Availability)、機密性(Confidenciality)、完全性(integrity)などが挙げられる。このセキュリティ属性ごとに、脅威、フロー方向、対策が定義される。
(Description of database)
FIG. 3 is an explanatory diagram showing an example of the contents stored in the threat /
脅威項目は、脅威識別子項目と脅威名により脅威を規定する。脅威識別子とは脅威に固有な識別子であり、脅威名とはセキュリティ攻撃を示す脅威の名称である。フロー方向項目とは、データの流れを示すフロー方向を規定する。 The threat item defines a threat by a threat identifier item and a threat name. The threat identifier is an identifier unique to the threat, and the threat name is a name of a threat indicating a security attack. The flow direction item defines a flow direction indicating a data flow.
ユースケース定義111(ユースケース図)で用いられる関連には、データの流れが規定されていないため、セキュリティ属性に応じたデータの流れをフロー方向として規定しておく。フロー方向項目では、入力(→)、出力(←)、入出力(←→)の3種類のフロー方向が規定される。 Since the data flow is not defined in the relation used in the use case definition 111 (use case diagram), the data flow corresponding to the security attribute is defined as the flow direction. The flow direction item defines three types of flow directions: input (→), output (←), and input / output (← →).
「入力(→)」は、脅威の対象となるユースケースへのデータ入力を示しており、出力(←)は、脅威の対象となるユースケースからのデータ出力を示しており、入出力(←→)は、脅威の対象となるユースケースのデータの入出力を示している。 “Input (→)” indicates data input to the use case targeted by the threat, and output (←) indicates data output from the use case targeted by the threat, and input / output (← →) indicates the input / output of data of the use case that is the target of the threat.
対策項目は、対策識別子と対策名により対策を規定する。対策識別子とは対策に固有な識別子であり、対策名とは同一レコードの脅威からソフトウェアを保護するための対策の名称である。 Countermeasure items specify countermeasures by countermeasure identifier and countermeasure name. The countermeasure identifier is an identifier unique to the countermeasure, and the countermeasure name is the name of the countermeasure for protecting the software from the threat of the same record.
図4は、対策プログラムDB106の記憶内容の一例を示す説明図である。対策プログラムDB106は、対策項目と対策プログラム項目とを有する。対策項目は、対策識別子と対策名により対策を規定する。対策識別子とは対策に固有な識別子であり、対策名とは脅威からソフトウェアを保護するための対策の名称である。対策プログラム126とは、脅威からソフトウェアを保護するためのプログラムコードである。
FIG. 4 is an explanatory diagram showing an example of the contents stored in the
(各種データの説明)
図5は、本実施の形態にかかるユースケース図500の一例を示す説明図である。図5において、ユースケース図500は、開発環境101において、作図ツール103により作成される。図5のユースケース図500の上半部では、アクターa0(利用者)とユースケースu0(利用者向け機能)とが関連c0により接続されている。ユースケースu0には、セキュリティ属性:可用性が関連付けられている。関連c0には、データ資産d0(機能関連0)が関連付けられている。ここでのデータ資産d0は、フロー方向として「入出力(←→)」が関連付けられている。
(Explanation of various data)
FIG. 5 is an explanatory diagram showing an example of a use case diagram 500 according to this embodiment. In FIG. 5, a use case diagram 500 is created by the
図5のユースケース図500の下半部では、アクターa1(管理者)とユースケースu1(管理者向け機能)とが関連c1により接続されている。ユースケースu1には、セキュリティ属性:可用性が関連付けられている。関連c1には、データ資産d1(機能関連1)が関連付けられている。データ資産d1は、フロー方向として「入出力(←→)」が関連付けられている。また、データ資産d1には、セキュリティ属性:可用性および完全性が関連付けられている。 In the lower half of the use case diagram 500 in FIG. 5, the actor a1 (administrator) and the use case u1 (function for manager) are connected by the association c1. Use case u1 is associated with security attribute: availability. A data asset d1 (function relation 1) is associated with the relation c1. The data asset d1 is associated with “input / output (← →)” as the flow direction. Further, security attributes: availability and integrity are associated with the data asset d1.
図6は、図5に示したユースケース図500に関するユースケース定義111を示す説明図である。ここでは、例としてXML(Extensible Markup Language)で記述されている。
FIG. 6 is an explanatory diagram showing the
図7〜図10は、図6に示したユースケース定義111を表形式のデータ構造で表現した説明図である。図7はアクター、図8はユースケース、図9は関連、図10はデータ資産のデータ構造を示している。
7 to 10 are explanatory diagrams expressing the
図11は、クラス定義112を表形式のデータ構造で表現した説明図である。クラス定義112は、クラス生成部121により生成される。具体的には、クラス生成部121では、図8および図10のデータ構造を参照して、ユースケースおよびデータ資産ごとにクラスを生成し、それらに関連付けられているセキュリティ属性を付加して、クラス識別子を付与する。これにより、クラス定義112が生成されることとなる。
FIG. 11 is an explanatory diagram representing the
図12は、図5のユースケース図500の上半部に対応するシーケンス図である。図12のシーケンス図1200において、オブジェクト1201はアクターa0(利用者)に相当するクライアントであり、オブジェクト1202は利用者向け機能であるクラスCL0に相当する。メッセージ1210〜1213は、クライアント1201とオブジェクト1202との間の通信を示している。開発者は、開発環境101において、作成したシーケンス定義113(シーケンス図)とクラス定義112とを関連付けておく。具体的には、たとえば、図12のオブジェクト1202については、クラス定義112のクラスCL1に関連付けておく。
FIG. 12 is a sequence diagram corresponding to the upper half of the use case diagram 500 of FIG. In the sequence diagram 1200 of FIG. 12, an
図13は、図12に示したシーケンス図1200に関するシーケンス定義113を示す説明図である。図13のシーケンス定義1300は、例としてXML(Extensible Markup Language)で記述されている。
FIG. 13 is an explanatory diagram showing a
図14は、図5のユースケース図500の下半部に対応するシーケンス図である。図14のシーケンス図1400において、オブジェクト1401はアクターa1(管理者)に相当するクライアントであり、オブジェクト1402は管理者向け機能であるクラスCL1に相当する。メッセージ1410〜1413は、オブジェクト1401とオブジェクト1402との間の通信を示している。
FIG. 14 is a sequence diagram corresponding to the lower half of the use case diagram 500 of FIG. In the sequence diagram 1400 of FIG. 14, an
開発者は、開発環境101において、作成したシーケンス定義113とクラス定義112とを関連付けておく。具体的には、たとえば、図14のオブジェクト1402については、クラス定義112のクラスCL2に関連付けておく。さらに、図14のメッセージ1411,1412については、access11()およびaccess12()の引数に、オブジェクト1401(アクターa1)とオブジェクト1402(ユースケースu1)との間のデータ資産であるクラスCL3(機能関連1)を与えておく。
The developer associates the created
図15は、図14に示したシーケンス図1400に関するシーケンス定義113を示す説明図である。図15のシーケンス定義1500は、例としてXMLで記述されている。
FIG. 15 is an explanatory diagram showing the
図16および図17は、図13および図15に示したシーケンス定義113を表形式のデータ構造で表現した説明図である。図16はオブジェクト、図17はメッセージのデータ構造を示している。
FIGS. 16 and 17 are explanatory diagrams expressing the
図18は、脅威・対策定義124の一例を示す説明図である。脅威・対策定義124は、脅威・対策生成部123により生成される情報である。具体的には、たとえば、ユースケース図500にセキュリティ属性:可用性有りのユースケースがある場合、セキュリティ属性:可用性に関する脅威(脅威識別子および脅威名)を脅威・対策DB105から抽出する。そして、その脅威対象となったユースケースのユースケース識別子を抽出脅威に関連付ける。同様に、抽出脅威に対応する対策(対策識別子および対策名)を脅威・対策DB105から抽出する。そして、その対策対象となったユースケースのユースケース識別子を抽出対策に関連付ける。
FIG. 18 is an explanatory diagram showing an example of the threat /
また、ユースケース図500にセキュリティ属性:機密性、完全性有りのデータ資産がある場合、セキュリティ属性:機密性、完全性に関する脅威(脅威識別子および脅威名)を脅威・対策DB105から抽出する。そして、その脅威対象となったデータ資産のデータ資産識別子を抽出脅威に関連付ける。同様に、抽出脅威に対応する対策(対策識別子および対策名)を脅威・対策DB105から抽出する。そして、その対策対象となったデータ資産のデータ資産識別子を抽出対策に関連付ける。
When there is a data asset with security attributes: confidentiality and integrity in the use case diagram 500, threats (threat identifier and threat name) related to security attributes: confidentiality and integrity are extracted from the threat /
図19および図20は、対策プログラム126の一例を示す説明図である。図19および図20に示した対策プログラム1900、2000は、AspectJによる記述例を示している。図19の対策プログラム126は、ユースケース図500の上半部に対応する対策プログラム126(識別認証プログラム)であり、図20の対策プログラム126は、ユースケース図500の下半部に対応する対策プログラム126(暗号化プログラム)である。
19 and 20 are explanatory diagrams illustrating an example of the
図19において、上半部1901は、セキュリティ属性を規定する記述であり、下半部1902は挿入される対策プログラム126のプログラムコードを規定する記述である。上半部1901において、下線で示した符号1903は、挿入箇所を指定する記述である。記述1903は、セキュリティ属性:可用性が付与されたクラス内の任意のメソッド呼び出しを指定する。
In FIG. 19, an
また、下半部1902において、下線で示した符号1904は、メソッドのどこに挿入するかを指定する記述である。具体的には、メソッドの実行前(Before)、実行中(Around(入れ替え))、実行後(After)が記述される。いずれを記述するかは、たとえば、対策が「識別認証」である場合は「Before」というように、対策プログラム126のプログラムコードによりあらかじめ設定されている。
In the
また、下線で示した符号1905は、対策プログラム126のプログラムコードである。対策プログラムDB106から抽出された対策プログラム126のプログラムコードは、符号1905の位置に記述されている。
図20も図19と同様、上半部2001は、セキュリティ属性を規定する記述であり、下半部2002は挿入される対策プログラム126のプログラムコードを規定する記述である。上半部2001において、下線で示した符号2003は、挿入箇所を指定する記述である。記述2003は、セキュリティ属性:完全性が付与されたクラス内の任意のメソッド呼び出しを指定する。
In FIG. 20, as in FIG. 19, the
また、下半部2002において、下線で示した符号2004は、記述1904と同様、メソッドのどこに挿入するかを指定する記述である。また、下線で示した符号2005は、対策プログラム126のプログラムコードである。図20の例では、セキュリティ属性:完全性が規定されているため、対応する「暗号化」のプログラムコードが記述されている。
Further, in the
(ソースコード雛型114の生成例)
図21〜図24および図25〜図28は、ソースコード雛型114の生成例を示す説明図である。図21〜図24は、シーケンス定義1300に対応するソースコード雛型114の生成例を示しており、図25〜図28は、シーケンス定義1500に対応するソースコード雛型114の生成例を示している。以下、理解の容易のため、シーケンス図1200,1400を用いて説明する。
(Example of generating the source code template 114)
FIGS. 21 to 24 and FIGS. 25 to 28 are explanatory diagrams showing examples of generating the
図21は、シーケンス図1200からオブジェクト1201,1202を抽出して、抽出オブジェクト1201,1202に対応するクラス(「Client」、「利用者向け機能」)が生成された状態を示している。
FIG. 21 shows a state in which objects 1201 and 1202 are extracted from the sequence diagram 1200, and classes (“Client” and “functions for users”) corresponding to the extracted
図22は、シーケンス図1200からメッセージ1210〜1213を抽出して、抽出オブジェクト1201,1202ごとに、メッセージ1210〜1213に対応するメソッド(「do利用者向け機能()」、「access01()〜access03()」)が生成された状態を示している。
22 extracts the
図23は、シーケンス図1200からメッセージ1210〜1213を抽出して、図22のメソッド中の雛型になる処理が生成された状態を示している。具体的には、クライアントが生成するメッセージを生成している。図21〜図23までの生成処理は、既存のクラス生成処理により実現できる。
FIG. 23 shows a state in which
図24は、クラスやメソッドが有するセキュリティ属性に対応する注釈(処理に影響しないコメントのような印、図24では「@」)を生成して、宣言部に追加されたソースコード雛型2400を示している。図24は、シーケンス図1200に対応するソースコード雛型2400の生成例であるため、セキュリティ属性は、クラス(に対応するオブジェクト(利用者向け機能に相当))について可用性があり、メソッド(に対応するメッセージ(機能関連0に相当))について機密性および完全性がない記述となる。
FIG. 24 shows a
図25は、シーケンス図1400からオブジェクト1401,1402を抽出して、抽出オブジェクト1401,1402に対応するクラス(「Client」、「管理者向け機能」)が生成された状態を示している。
FIG. 25 shows a state in which objects 1401 and 1402 are extracted from the sequence diagram 1400 and classes (“Client” and “function for manager”) corresponding to the extracted
図26は、シーケンス図1400からメッセージ1410〜1413を抽出して、抽出オブジェクト1401,1402ごとに、メッセージ1410〜1413に対応するメソッド(「do管理者向け機能()」、「access11()〜access13()」)が生成された状態を示している。
26 extracts the
図27は、シーケンス図1400からメッセージ1410〜1413を抽出して、図26のメソッド中の雛型になる処理が生成された状態を示している。具体的には、クライアントが生成するメッセージを生成している。図25〜図27までの生成処理は、既存のクラス生成処理により実現できる。
FIG. 27 shows a state in which
図28は、クラスやメソッドが有するセキュリティ属性に対応する注釈(処理に影響しないコメントのような印、図28では「@」)を生成して、宣言部に追加されたソースコード雛型2800を示している。図28は、シーケンス図1400に対応するソースコード雛型2800の生成例であるため、セキュリティ属性は、クラス(に対応するオブジェクト(管理者向け機能に相当))について可用性があり、メソッド(に対応するメッセージ(機能関連1に相当)について機密性がなく完全性がある記述となる。
FIG. 28 shows a
(開発支援処理手順)
つぎに、本実施の形態にかかる開発支援装置102による開発支援処理手順について説明する。
(Development support procedure)
Next, a development support processing procedure by the
図29は、クラス生成部121によるクラス生成処理手順を示すフローチャートである。まず、クラス生成部121は、ユースケース定義111を読み込み(ステップS2901)、ユースケース定義111からユースケースを抽出する(ステップS2902)。そして、クラス生成部121は、抽出ユースケースについて対応するクラスを生成し、クラス識別子を付与する(ステップS2903)。また、クラス生成部121は、クラス名としてユースケース名を付与する(ステップS2904)。そして、抽出ユースケースにセキュリティ属性(可用性)がある場合は、クラスのセキュリティ属性に付与する(ステップS2905)。これにより、図10に示した1レコード分のクラス定義112が生成される。
FIG. 29 is a flowchart showing a class generation processing procedure by the
このあと、クラス生成部121は、未抽出ユースケースがあるか否かを判断し(ステップS2906)、未抽出ユースケースがある場合(ステップS2906:Yes)、ステップS2902に戻る。一方、クラス生成部121は、未抽出ユースケースがない場合(ステップS2906:No)、ユースケース定義111からデータ資産を抽出する(ステップS2907)。そして、クラス生成部121は、抽出データ資産について対応するクラスを生成し、クラス識別子を付与する(ステップS2908)。
Thereafter, the
また、クラス生成部121は、クラス名としてデータ資産名を付与する(ステップS2909)。そして、抽出データ資産にセキュリティ属性(機密性、完全性)がある場合は、クラス生成部121は、クラスのセキュリティ属性に付与する(ステップS2910)。これにより、図10に示した1レコード分のクラス定義112が生成される。
In addition, the
このあと、クラス生成部121は、未抽出データ資産があるか否かを判断し(ステップS2911)、未抽出データ資産がある場合(ステップS2911:Yes)、ステップS2907に戻る。一方、未抽出データ資産がない場合(ステップS2911:No)、図10に示したクラス定義112を書き出す(ステップS2912)。これにより、一連のクラス生成処理を終了する。
Thereafter, the
図30は、脅威・対策生成部123による脅威・対策定義124の生成処理手順を示すフローチャートである。まず、脅威・対策生成部123は、ユースケース定義111を読み込み(ステップS3001)、ユースケース定義111からユースケースを抽出する(ステップS3002)とともに、セキュリティ属性も抽出する(ステップS3003)。このあと、脅威・対策生成部123は、抽出セキュリティ属性に対応する脅威をすべて、脅威・対策DB105から抽出する(ステップS3004)。そして、抽出脅威の対象として抽出ユースケースのユースケース識別子を登録する(ステップS3005)。
FIG. 30 is a flowchart showing a processing procedure for generating the threat /
つぎに、脅威・対策生成部123は、抽出脅威に対応する対策をすべて、脅威・対策DB105から抽出する(ステップS3006)。そして、脅威・対策生成部123は、抽出対策の対象として抽出ユースケースのユースケース識別子を登録する(ステップS3007)。これにより、1つの可用性分のレコードが生成されることとなる。
Next, the threat /
このあと、脅威・対策生成部123は、未抽出ユースケースがあるか否かを判断し(ステップS3008)、未抽出ユースケースがある場合(ステップS3008:Yes)、ステップS3002に戻る。一方、脅威・対策生成部123は、未抽出のユースケースがない場合(ステップS3008:No)、ユースケース定義111からデータ資産(データ資産識別子およびデータ資産名)を抽出する(ステップS3009)とともに、セキュリティ属性およびフロー方向を抽出する(ステップS3010)。
Thereafter, the threat /
このあと、脅威・対策生成部123は、抽出セキュリティ属性およびフロー方向が一致する脅威をすべて、脅威・対策DB105から抽出する(ステップS3011)。そして、脅威・対策生成部123は、抽出脅威の対象として抽出データ資産のデータ資産識別子を登録する(ステップS3012)。つぎに、脅威・対策生成部123は、抽出脅威に対応する対策を脅威・対策DB105から抽出する(ステップS3013)。そして、抽出対策の対象として抽出データ資産のデータ資産識別子を登録する(ステップS3014)。これにより、1つのセキュリティ属性(機密性、完全性)分のレコードが生成されることとなる。
Thereafter, the threat /
このあと、脅威・対策生成部123は、未抽出データ資産があるか否かを判断し(ステップS3015)、未抽出データ資産がある場合(ステップS3015:Yes)、ステップS3009に戻る。一方、脅威・対策生成部123は、未抽出データ資産がない場合(ステップS3015:No)、脅威・対策定義124を書き出す(ステップS3016)。これにより、一連の脅威・対策定義124の生成処理を終了する。
Thereafter, the threat /
図31は、対策プログラム抽出部125による対策プログラム126生成処理手順を示すフローチャートである。まず、対策プログラム抽出部125は、脅威・対策定義124を読み込み(ステップS3101)、脅威・対策定義124中の対策を抽出する(ステップS3102)。そして、対策プログラム抽出部125は、脅威・対策定義124中の対策名に対応する対策プログラム126を対策プログラムDB106から抽出する(ステップS3103)。たとえば、対策名が「識別認証」の場合、図19に示した対策プログラム126が抽出され、対策名が「暗号化」の場合、図20に示した対策プログラム126が抽出される。
FIG. 31 is a flowchart showing a procedure for generating the
このあと、対策プログラム抽出部125は、未抽出対策があるか否かを判断し(ステップS3104)、未抽出対策がある場合(ステップS3104:Yes)、ステップS3102に戻る。一方、対策プログラム抽出部125は、未抽出対策がない場合(ステップS3104:No)、抽出された対策プログラム126を書き出す(ステップS3105)。これにより、一連の対策プログラム126抽出処理を終了する。
Thereafter, the countermeasure
図32は、ソースコード雛型生成部122によるソースコード雛型生成処理手順を示すフローチャートである。まず、シーケンス定義113を読み込み(ステップS3201)、図21および図25に示したように、各オブジェクトに対応するクラスを生成する(ステップS3202)。また、図22および図26に示したように、各オブジェクト中のメッセージに対応するメソッドを生成する(ステップS3203)。
FIG. 32 is a flowchart showing a source code template generation processing procedure by the source code
このあと、図23および図27に示したように、メソッド中の雛型になる処理を生成する(ステップS3204)。ここまでの処理は既存の技術で実行される処理である。そして、図24および図28に示したように、各オブジェクトに対応するクラスおよびメソッドが有するセキュリティ属性に対応する注釈を生成し、宣言部に追加する(ステップS3205)。このあと、生成されたクラス定義112をソースコード雛型114として書き出す(ステップS3206)。これにより、一連のソースコード雛型114の生成処理を終了する。
Thereafter, as shown in FIGS. 23 and 27, a process that becomes a template in the method is generated (step S3204). The process so far is a process executed by the existing technology. Then, as shown in FIGS. 24 and 28, annotations corresponding to the security attributes of the class and method corresponding to each object are generated and added to the declaration unit (step S3205). Thereafter, the generated
このように、本実施の形態では、挿入箇所を指定する記述を持ったソースコード雛形(固定のクラス、メソッド宣言のみを持ち、それ以外は記述のないもの)と、開発対象プログラム中の注釈を発見し、そこへセキュリティ処理を挿入する対策プログラム126を提供する。これにより、開発者が期待している機能だけではなく、開発者が意図しない入力に対する対策を、設計工程で自動生成することができる。したがって、セキュリティ機能に関する実装の網羅性の向上を図ることができる。
As described above, in this embodiment, a source code template having a description for specifying an insertion point (a fixed class, only having a method declaration, and not otherwise described) and an annotation in the development target program are provided. A
また、コーディングが完了していない段階で開発者が想定していないセキュリティの具体的な実装が可能となり、下流におけるコーディングの自由度を高くすることができる。また、プロトタイピングを行う場合、開発者はプロトタイプ115aの開発対象プログラム、完成品115bの開発対象プログラムともに、本実施の形態が提供するソースコード雛型114から作成すれば、双方において同じセキュリティ処理を実現することができる。
Further, it is possible to implement specific security that is not assumed by the developer at the stage where coding is not completed, and the degree of freedom of coding downstream can be increased. Further, when prototyping is performed, if the developer creates both the development target program of the
なお、本実施の形態で説明した開発支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本開発支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本開発支援プログラムは、インターネット等のネットワークを介して配布してもよい。 The development support method described in this embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation. The development support program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer. The development support program may be distributed through a network such as the Internet.
100 開発支援システム
101 開発環境
102 開発支援装置
105 脅威・対策DB
106 対策プログラムDB
121 クラス生成部
122 ソースコード雛型生成部
123 脅威・対策生成部
125 対策プログラム抽出部
100
106 Countermeasure program DB
121
Claims (7)
前記第1の取得工程によって取得されたユースケース定義に基づいて、前記ユースケースおよび前記セキュリティ属性をクラスに変換することにより、クラス定義を生成するクラス生成工程と、
前記クラス生成工程によって生成されたクラス定義内の前記クラスをオブジェクトに関連付けた前記開発対象の動作を示すシーケンス定義を取得する第2の取得工程と、
前記第2の取得工程によって取得されたシーケンス定義のうち前記クラスに関連するオブジェクトをクラス変換し、前記クラスに関連付けた前記セキュリティ属性を追加することにより、前記開発対象に関するプログラムに挿入されるソースコード雛型を生成するソースコード雛型生成工程と、
をコンピュータに実行させることを特徴とする開発支援プログラム。 A first acquisition step of acquiring a use case definition expressing a function to be developed, in which security attributes for the use case are defined;
A class generation step for generating a class definition by converting the use case and the security attribute into a class based on the use case definition acquired by the first acquisition step;
A second acquisition step of acquiring a sequence definition indicating an operation of the development target in which the class in the class definition generated by the class generation step is associated with an object;
Source code inserted into the program related to the development object by class-converting the object related to the class in the sequence definition acquired in the second acquisition step and adding the security attribute associated with the class A source code template generation process for generating a template;
Development support program characterized by causing a computer to execute.
前記第1の取得工程によって取得されたユースケース定義に基づいて、前記データおよび前記セキュリティ属性をクラスに変換することにより、クラス定義を生成するクラス生成工程と、
前記クラス生成工程によって生成されたクラス定義内の前記クラスをメッセージに関連付けた前記開発対象の動作を示すシーケンス定義を取得する第2の取得工程と、
前記第2の取得工程によって取得されたシーケンス定義内の前記クラスに関連するメッセージをメソッド変換し、前記クラスに関連付けた前記セキュリティ属性を追加することにより、前記開発対象に関するプログラムに挿入されるソースコード雛型を生成するソースコード雛型生成工程と、
をコンピュータに実行させることを特徴とする開発支援プログラム。 A first acquisition step of acquiring a use case definition expressing a function to be developed, in which a flow direction specifying a data direction for the use case and a security attribute for the data are defined;
A class generation step of generating a class definition by converting the data and the security attribute into a class based on the use case definition acquired by the first acquisition step;
A second acquisition step of acquiring a sequence definition indicating an operation of the development target in which the class in the class definition generated by the class generation step is associated with a message;
Source code inserted into the program related to the development object by method-converting the message related to the class in the sequence definition acquired by the second acquisition step and adding the security attribute associated with the class A source code template generation process for generating a template;
Development support program characterized by causing a computer to execute.
前記第1の取得工程によって取得されたユースケース定義に基づいて、前記ユースケースおよび前記第1のセキュリティ属性を第1のクラスに変換するとともに、前記データおよび前記第2のセキュリティ属性を第2のクラスに変換することにより、クラス定義を生成するクラス生成工程と、
前記クラス生成工程によって生成されたクラス定義のうち前記第1のクラスをオブジェクトに関連付け、前記第2のクラスをメッセージに関連付けた前記開発対象の動作を示すシーケンス定義を取得する第2の取得工程と、
前記第2の取得工程によって取得されたシーケンス定義のうち前記第1のクラスに関連するオブジェクトをクラス変換するとともに、前記第2のクラスに関連するメッセージをメソッド変換し、前記第1のクラスに関連付けた前記第1のセキュリティ属性および前記第2のクラスに関連付けた前記第2のセキュリティ属性を追加することにより、前記開発対象に関するプログラムに挿入されるソースコード雛型を生成するソースコード雛型生成工程と、
をコンピュータに実行させることを特徴とする開発支援プログラム。 The first security attribute for the use case, the flow direction specifying the direction of data for the use case, and the second security attribute for the data are specified, and the use case definition representing the function to be developed is acquired. 1 acquisition process;
Based on the use case definition acquired by the first acquisition step, the use case and the first security attribute are converted into a first class, and the data and the second security attribute are converted to a second class. A class generation process that generates a class definition by converting to a class,
A second acquisition step of acquiring a sequence definition indicating an operation of the development target in which the first class is associated with an object and the second class is associated with a message among the class definitions generated by the class generation step; ,
Of the sequence definition acquired by the second acquisition step, class-converts an object related to the first class, converts a message related to the second class, and associates it with the first class. A source code template generation step of generating a source code template to be inserted into the program related to the development object by adding the first security attribute and the second security attribute associated with the second class When,
Development support program characterized by causing a computer to execute.
前記第1の取得手段によって取得されたユースケース定義に基づいて、前記ユースケースおよび前記セキュリティ属性をクラスに変換することにより、クラス定義を生成するクラス生成手段と、
前記クラス生成手段によって生成されたクラス定義内の前記クラスをオブジェクトに関連付けた前記開発対象の動作を示すシーケンス定義を取得する第2の取得手段と、
前記第2の取得手段によって取得されたシーケンス定義のうち前記クラスに関連するオブジェクトをクラス変換し、前記クラスに関連付けた前記セキュリティ属性を追加することにより、前記開発対象に関するプログラムに挿入されるソースコード雛型を生成するソースコード雛型生成手段と、
を備えることを特徴とする開発支援装置。 A first acquisition means for acquiring a use case definition expressing a function to be developed, in which security attributes for the use case are defined;
Class generation means for generating a class definition by converting the use case and the security attribute into a class based on the use case definition acquired by the first acquisition means;
Second acquisition means for acquiring a sequence definition indicating an operation of the development target in which the class in the class definition generated by the class generation means is associated with an object;
Source code inserted into the program related to the development target by class-converting the object related to the class in the sequence definition acquired by the second acquisition means and adding the security attribute associated with the class A source code template generation means for generating a template;
A development support apparatus comprising:
前記第1の取得手段により、ユースケースに対するセキュリティ属性が規定された、開発対象の機能を表現したユースケース定義を取得する第1の取得工程と、
前記クラス生成手段により、前記第1の取得工程によって取得されたユースケース定義に基づいて、前記ユースケースおよび前記セキュリティ属性をクラスに変換することにより、クラス定義を生成するクラス生成工程と、
前記第2の取得手段により、前記クラス生成工程によって生成されたクラス定義内の前記クラスをオブジェクトに関連付けた前記開発対象の動作を示すシーケンス定義を取得する第2の取得工程と、
前記ソースコード雛型生成手段により、前記第2の取得工程によって取得されたシーケンス定義のうち前記クラスに関連するオブジェクトをクラス変換し、前記クラスに関連付けた前記セキュリティ属性を追加することにより、前記開発対象に関するプログラムに挿入されるソースコード雛型を生成するソースコード雛型生成工程と、
を実行することを特徴とする開発支援方法。 A computer comprising first acquisition means, class generation means, second acquisition means, and source code template generation means,
A first acquisition step of acquiring a use case definition expressing a function to be developed, wherein security attributes for the use case are defined by the first acquisition unit;
A class generation step of generating a class definition by converting the use case and the security attribute into a class based on the use case definition acquired by the first acquisition step by the class generation unit;
A second acquisition step of acquiring, by the second acquisition means, a sequence definition indicating an operation of the development target in which the class in the class definition generated by the class generation step is associated with an object;
The source code template generation means performs class conversion on an object related to the class in the sequence definition acquired in the second acquisition step, and adds the security attribute associated with the class, thereby developing the development. A source code template generation process for generating a source code template to be inserted into a program related to a target;
A development support method characterized by executing
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009239750A JP5251823B2 (en) | 2009-10-16 | 2009-10-16 | Development support program, development support apparatus, and development support method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009239750A JP5251823B2 (en) | 2009-10-16 | 2009-10-16 | Development support program, development support apparatus, and development support method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011086200A JP2011086200A (en) | 2011-04-28 |
JP5251823B2 true JP5251823B2 (en) | 2013-07-31 |
Family
ID=44079081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009239750A Active JP5251823B2 (en) | 2009-10-16 | 2009-10-16 | Development support program, development support apparatus, and development support method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5251823B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018092237A1 (en) | 2016-11-17 | 2018-05-24 | 三菱電機株式会社 | Program code generation apparatus, program code generation method, and program code generation program |
JP7422584B2 (en) * | 2020-03-26 | 2024-01-26 | 株式会社日立製作所 | Application development support system, application development support method |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240510A (en) * | 1997-02-27 | 1998-09-11 | Mitsubishi Electric Corp | Object-oriented design supporting device |
JP2007179171A (en) * | 2005-12-27 | 2007-07-12 | Internatl Business Mach Corp <Ibm> | Software development device for model for which privacy retention is required |
-
2009
- 2009-10-16 JP JP2009239750A patent/JP5251823B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2011086200A (en) | 2011-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106663175B (en) | Method, computing device and computer-readable storage medium for creating documents in a collaborative manner | |
Riaz et al. | Security requirements patterns: understanding the science behind the art of pattern writing | |
Quinton et al. | Using multiple feature models to design applications for mobile phones | |
JP5251823B2 (en) | Development support program, development support apparatus, and development support method | |
Busch et al. | Modeling secure navigation in web information systems | |
Zschaler et al. | Towards modular code generators using symmetric language-aware aspects | |
Mouheb et al. | Aspect-oriented security hardening of UML design models | |
Martínez et al. | Runtime support for rule-based access-control evaluation through model-transformation | |
CN101484877A (en) | Execution of computer instructions with reconfigurable hardware | |
Wenzel et al. | Specifying model changes with UMLchange to support security verification of potential evolution | |
Naumovich et al. | Verification of concurrent software with FLAVERS | |
JP5269722B2 (en) | Security design support apparatus and program | |
Grundy et al. | Software tools | |
Wirtz et al. | Managing security risks: template-based specification of controls | |
Turner | Proposed model for natural language ABAC authoring | |
Ovchinnikova et al. | Overview of Software Tools for Obtaining UML Class Diagrams and Sequence Diagrams from Source Code within TFM4MDA. | |
Pathak et al. | Designing of SPF based secure web application using forward engineering | |
Said | Methodology of refinement and decomposition in UML-B | |
JP2013152577A (en) | Design support program, design support method and design support device | |
Matos et al. | A Model Driven Engineering Approach to Support the Development of Secure Software as a Service. | |
EP4131047A1 (en) | Data obfuscation | |
Montrieux | Model-based analysis of role-based access control | |
JP2008287496A (en) | Security design/evaluation support system, device and program | |
Garima et al. | Dual Security Testing Model for Web Applications | |
Peldszus | Security Compliance in Model-Driven Software Development |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120720 |
|
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: 20130319 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130319 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130401 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5251823 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160426 Year of fee payment: 3 |