JP2006139357A - 仕様書データ生成方法及び装置 - Google Patents
仕様書データ生成方法及び装置 Download PDFInfo
- Publication number
- JP2006139357A JP2006139357A JP2004326154A JP2004326154A JP2006139357A JP 2006139357 A JP2006139357 A JP 2006139357A JP 2004326154 A JP2004326154 A JP 2004326154A JP 2004326154 A JP2004326154 A JP 2004326154A JP 2006139357 A JP2006139357 A JP 2006139357A
- Authority
- JP
- Japan
- Prior art keywords
- arithmetic operation
- priority
- arithmetic
- argument
- data
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
プログラムのレビューを容易にする。
【解決手段】
例えばJavaのBigDecimalクラスのmethodを用いて記述されたソースから仕様書を生成する方法であって、算術演算を規定する算術演算文に含まれる算術演算methodについて、予め定められた演算ルールに従った優先度を特定する工程と、算術演算文において複数の算術演算methodが含まれており且つ優先度の高い演算methodのinstanceとして優先度の低い算術演算methodが規定されていると判断した場合、優先度の低い算術演算methodと当該優先度の低い算術演算methodのinstance及び引数とを所定のルールに従って算術演算記号を用いた第1の部分算式に変換し、当該第1の部分算式に対して優先的な演算を行うことを表す()を付し、優先度の高い演算methodと当該優先度の高い演算methodの引数とを所定のルールに従って算術演算記号を用いた第2の部分算式に変換して第1の部分算式と連結する工程とを含む。
【選択図】図1
Description
3 if (in_param.getRETURNCODE() == 0) {
4 out_param.setNISSU(in_param.getNISSU());
5 }
この例の場合条件文は、”in_param.getRETURNCODE()==0”であり、処理文は”out_param.setNISSU(in_param.getNISSU())”である。なお、左端の数字は行番号であるが、実際のプログラムには含まれておらず、ここでは参照のために示している。このような場合には、例えばステップS23の段階で、図4(a)に示すようなデータが保持される。図4(a)の例では、項番、行番号(処理の行番号及び条件の行番号)、処理、条件1(条件が複数関係する場合は条件2、条件3と続く)及び備考(コメント文用)の列が用意され、処理文と、関連する条件文と、それぞれの行番号が登録されている。
data1.add(data2.method1()).subtract(data3.dat4).multiply(data5)
という算術演算式が処理対象となっている場合を考える。
class sample {
void calc(denpyo in_param){
if (in_param.getRETURNCODE() == 0) {
out_param.setNISSU(in_param.getNISSU());
} else {
if (in_param.getRETURNCODE() == 1) {
out_param.setGANKIN(BigDecimal.valueOf(out_param.getGANKIN().get()+(1+200)).divide(BigDecimal.valueOf(out_param.getRITANI().get()),0,BigDecimal.ROUND_DOWN).multiply(BigDecimal.valueOf(out_param.getRITANI().get())));
if (out_param.getHASUKUBUN().equals("2")) {
out_param.setRISOKU(BigDecimal.valueOf(out_param.getWK_GANKIN().get()).multiply(BigDecimal.valueOf(out_param.getNISSU().get())).multiply(BigDecimal.valueOf(out_param.getRATE().get())).divide(BigDecimal.valueOf(365).multiply(BizMath.pow(BigDecimal.valueOf(10),7,10)),10,BigDecimal.ROUND_DOWN).add(new BigDecimal("0.999")));
} else {
out_param.setWK_RISOKUA(BigDecimal.valueOf(out_param.getWK_GANKIN().get()).multiply(BigDecimal.valueOf(out_param.getNISSU().get())).multiply(BigDecimal.valueOf(out_param.getRATE().get())).divide(BigDecimal.valueOf(365).multiply(BizMath.pow(BigDecimal.valueOf(10),7,1)),1,BigDecimal.ROUND_DOWN));
}
} else {
out_param.setERRORNO(2);
return;
}
}
out_param.setERRORNO(0);
}
}
図19に基本変換パターンを示す。
BigDecimalの算術演算のために、データクラス変数及び作業変数をBigDecimal型に変換する必要があるが、仕様書データ中では不要であるから以下のように変換する。
BigDecimal.valueOf(データ項目のgetter)=>データ項目
より具体的には以下のようになる。
BigDecimal.valueOf(wk_x16.getWK_ZOUHENGK().get())=>wk_x16.WK_ZOUHENGK
上ではメソッドsubtract、add、及びmultiplyについては例示したが、メソッドdivideについては以下のように変換される。
BigDecimal.valueOf(データ項目1).divide(BigDecimal.valueOf(データ項目2), 小数点桁数, ROUNDED指定)=>データ項目1/データ項目2
より具体的には以下のようになる。
BigDecimal.valueOf(wk_x16.getWK_ZOUHENGK().get()).divide(BigDecimal.valueOf(kwlarkgv.getKGVKWCYUJBZK().get(), 10, BigDecimal.ROUND_DOWN)=>wk_x16.WK_ZOUHENGK/kwlarkgv.KGVKWCYUJBZK
以下のような変換が行われる。
BizMath.pow(被乗数,指数)=>被乗数**指数
BizMath.pow(BigDecimal.valueOf(被乗数), 指数, 小数部基準桁数)=>被乗数**指数
より具体的には以下のようになる。
BizMath.pow(BigDecimal.valueOf(wk_x16.getWK_ZOUHENGK().get(), 3, 5)=>wk_x16.WK_ZOUHENGK**3
以下のような変換が行われる。
Math.pow(double型の被乗数,double型の指数)=>被乗数**指数
より具体的には以下のようになる。
Math.pow((double)(wk_x16.getWK_ZOUHENGK().get(), 3.5)=>wk_x16.WK_ZOUHENGK**3.5
以下のような変換が行われる。
setScale(小数点桁数, BigDecimal.ROUND_DOWN)(setterメソッドの末尾に存在しないこと)=>削除
より具体的には、以下のようになる。
x.setCC(BigDecimal.valueOf(x.getCC().get()).multiply(BigDecimal.valueOf(x.getBB().get())).setScale(10, BigDecimal.ROUND_DOWN).divide(BigDecimal.valueOf(x.getAA().get()), 8, BigDecimal.ROUND_DOWN))=> CC = CC * BB / AA
setterメソッド(演算結果.setScale(小数点桁数, BigDecimal.ROUND_HALF_UP))=>「ROUNDED」を変換後の実行分の末尾に付加
より具体的には、以下のようになる。
x.setCC(BigDecimal.valueOf(x.getCC().get()).divide(BigDecimal.valueOf(x.getAA().get()), 8, BigDecimal.ROUND_DOWN).setScale(8, BigDecimal.ROUND_HALF_UP))=> CC = CC / AA ROUNDED
例えば以下のように”set”を”=”に置換する。
wk_xl6.setWK_RISOKUG(wk_xl6.getWK_RISOKUG().checkDigit(BigDecimal.valueOf(wk_xl6.getWK_KEKKA1().get()).multiply(BigDecimal.valueOf(wk_xl6.getWK_KEKKA2().get())).multiply(BigDecimal.valueOf(wk_xl6.getWK_TSUKISU().get())).divide(BizMath.pow(BigDecimal.valueOf(10),7,0),0,BigDecimal.ROUND_DOWN)))=>wk_xl6.WK_RISOKUG = wk_xl6.WK_RISOKUG.checkDigit( wk_xl6.WK_KEKKA1 * wk_xl6.WK_KEKKA2 * wk_xl6.WK_TSUKISU / ( 10 ** 7 ) )
算術演算をメソッド形式で記述したソースプログラムから仕様書データを生成する方法であって、
前記ソースプログラムに含まれ且つ算術演算を規定する算術演算文に含まれる算術演算メソッドについて、予め定められた演算ルールに従った優先度を特定し、算術演算メソッドと優先度とを記憶装置に登録する登録ステップと、
前記算術演算文において複数の算術演算メソッドが含まれており且つ優先度の高い演算メソッドのインスタンスとして優先度の低い算術演算メソッドが規定されていると前記記憶装置に格納されているデータに基づき判断した場合には、前記優先度の低い算術演算メソッドと当該優先度の低い算術演算メソッドのインスタンス及び引数とを所定のルールに従って算術演算記号を用いた第1の部分算式に変換し、当該第1の部分算式に対して優先的な演算を行うことを表すカッコを付し、前記優先度の高い演算メソッドと当該優先度の高い演算メソッドの引数とを前記所定のルールに従って算術演算記号を用いた第2の部分算式に変換して前記第1の部分算式と連結する処理を実施することにより仕様書データを生成し、仕様書データ格納部に格納する生成ステップと、
を含み、コンピュータに実行される仕様書データ生成方法。
前記登録ステップにおいて、
算術演算メソッドについて前記優先度と当該算術演算メソッドのインスタンスに関するデータと当該算術演算メソッドの引数に関するデータとを保持するデータブロックを生成し、前記記憶装置に格納する
ことを特徴とする付記1記載の仕様書データ生成方法。
前記生成ステップが、
変数名と当該変数名の意味を表す語句とが対応付けられて登録されている第1の辞書を参照し、前記第1の部分算式及び前記第2の部分算式に含まれる変数を対応する語句に置換するステップ
を含む付記1記載の仕様書データ生成方法。
前記ソースプログラムを解析して、処理文と当該処理文に関連する条件とを特定し、対応付けて仕様書データ格納部に格納するステップ、
をさらに含み、
前記登録ステップが、前記算術演算文である処理文及び条件について実施される
ことを特徴とする付記1記載の仕様書データ生成方法。
前記生成ステップが、
算式において1項のみを囲うカッコ又はカッコで囲まれる文字のみを囲うカッコが存在するか確認するステップと、
算式において1項のみを囲うカッコ又はカッコで囲まれる文字のみを囲うカッコが存在する場合には、当該カッコを除去するステップと、
を含む付記1記載の仕様書データ生成方法。
前記生成ステップが、
変数の値の意味を表す語句が登録されている第2の辞書を参照し、特定の変数の特定の値に対応する語句を抽出し、前記特定の変数の特定の値に対応して前記仕様書データ格納部に格納するステップ
を含む付記1記載の仕様書データ生成方法。
前記引数に関するデータが、引数が式であるか否かを表すデータを含み、
前記生成ステップが、
前記データブロックを参照して、算術演算メソッドの引数が式であるか判断するステップと、
前記引数が式であると判断された場合には、当該式を前記所定のルールに従って算術演算記号を用いた第3の部分算式に変換し、当該第3の部分算式に対してカッコを付すステップと、
を含む付記2記載の仕様書データ生成方法。
付記1乃至7のいずれか1つ記載の仕様書データ生成方法をコンピュータに実行させるためのプログラム。
算術演算をメソッド形式で記述したソースプログラムから仕様書データを生成する装置であって、
前記ソースプログラムに含まれ且つ算術演算を規定する算術演算文に含まれる算術演算メソッドについて、予め定められた演算ルールに従った優先度を特定し、算術演算メソッドと優先度とを記憶装置に登録する登録手段と、
前記算術演算文において複数の算術演算メソッドが含まれており且つ優先度の高い演算メソッドのインスタンスとして優先度の低い算術演算メソッドが規定されていると前記記憶装置に格納されているデータに基づき判断した場合には、前記優先度の低い算術演算メソッドと当該優先度の低い算術演算メソッドのインスタンス及び引数とを所定のルールに従って算術演算記号を用いた第1の部分算式に変換し、当該第1の部分算式に対して優先的な演算を行うことを表すカッコを付し、前記優先度の高い演算メソッドと当該優先度の高い演算メソッドの引数とを前記所定のルールに従って算術演算記号を用いた第2の部分算式に変換して前記第1の部分算式と連結する処理を実施することにより仕様書データを生成し、仕様書データ格納部に格納する生成手段と、
を有する仕様書データ生成装置。
3 構文解析結果格納部 4 表変換部
5 表データ格納部 6 式変換部
7 データブロック格納部 8 語句辞書 9 コード辞書
10 仕様書データ生成装置
Claims (5)
- 算術演算をメソッド形式で記述したソースプログラムから仕様書データを生成する方法であって、
前記ソースプログラムに含まれ且つ算術演算を規定する算術演算文に含まれる算術演算メソッドについて、予め定められた演算ルールに従った優先度を特定し、算術演算メソッドと優先度とを記憶装置に登録する登録ステップと、
前記算術演算文において複数の算術演算メソッドが含まれており且つ優先度の高い演算メソッドのインスタンスとして優先度の低い算術演算メソッドが規定されていると前記記憶装置に格納されているデータに基づき判断した場合には、前記優先度の低い算術演算メソッドと当該優先度の低い算術演算メソッドのインスタンス及び引数とを所定のルールに従って算術演算記号を用いた第1の部分算式に変換し、当該第1の部分算式に対して優先的な演算を行うことを表すカッコを付し、前記優先度の高い演算メソッドと当該優先度の高い演算メソッドの引数とを前記所定のルールに従って算術演算記号を用いた第2の部分算式に変換して前記第1の部分算式と連結する処理を実施することにより仕様書データを生成し、仕様書データ格納部に格納する生成ステップと、
を含み、コンピュータに実行される仕様書データ生成方法。 - 前記登録ステップにおいて、
算術演算メソッドについて前記優先度と当該算術演算メソッドのインスタンスに関するデータと当該算術演算メソッドの引数に関するデータとを保持するデータブロックを生成し、前記記憶装置に格納する
ことを特徴とする請求項1記載の仕様書データ生成方法。 - 前記生成ステップが、
算式において1項のみを囲うカッコ又はカッコで囲まれる文字のみを囲うカッコが存在するか確認するステップと、
算式において1項のみを囲うカッコ又はカッコで囲まれる文字のみを囲うカッコが存在する場合には、当該カッコを除去するステップと、
を含む請求項1記載の仕様書データ生成方法。 - 請求項1乃至3のいずれか1つ記載の仕様書データ生成方法をコンピュータに実行させるためのプログラム。
- 算術演算をメソッド形式で記述したソースプログラムから仕様書データを生成する装置であって、
前記ソースプログラムに含まれ且つ算術演算を規定する算術演算文に含まれる算術演算メソッドについて、予め定められた演算ルールに従った優先度を特定し、算術演算メソッドと優先度とを記憶装置に登録する登録手段と、
前記算術演算文において複数の算術演算メソッドが含まれており且つ優先度の高い演算メソッドのインスタンスとして優先度の低い算術演算メソッドが規定されていると前記記憶装置に格納されているデータに基づき判断した場合には、前記優先度の低い算術演算メソッドと当該優先度の低い算術演算メソッドのインスタンス及び引数とを所定のルールに従って算術演算記号を用いた第1の部分算式に変換し、当該第1の部分算式に対して優先的な演算を行うことを表すカッコを付し、前記優先度の高い演算メソッドと当該優先度の高い演算メソッドの引数とを前記所定のルールに従って算術演算記号を用いた第2の部分算式に変換して前記第1の部分算式と連結する処理を実施することにより仕様書データを生成し、仕様書データ格納部に格納する生成手段と、
を有する仕様書データ生成装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004326154A JP4673040B2 (ja) | 2004-11-10 | 2004-11-10 | 仕様書データ生成方法及び装置 |
US11/065,711 US7694283B2 (en) | 2004-11-10 | 2005-02-25 | Method and apparatus for generating specification data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004326154A JP4673040B2 (ja) | 2004-11-10 | 2004-11-10 | 仕様書データ生成方法及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006139357A true JP2006139357A (ja) | 2006-06-01 |
JP4673040B2 JP4673040B2 (ja) | 2011-04-20 |
Family
ID=36387960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004326154A Expired - Fee Related JP4673040B2 (ja) | 2004-11-10 | 2004-11-10 | 仕様書データ生成方法及び装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7694283B2 (ja) |
JP (1) | JP4673040B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7899856B2 (en) * | 2007-06-15 | 2011-03-01 | International Business Machines Corporation | Hysteresis for mixed representation of Java BigDecimal objects |
US8782625B2 (en) * | 2010-06-17 | 2014-07-15 | Microsoft Corporation | Memory safety of floating-point computations |
US9027001B2 (en) * | 2012-07-10 | 2015-05-05 | Honeywell International Inc. | Systems and methods for verifying expression folding |
US11206249B2 (en) * | 2019-07-26 | 2021-12-21 | International Business Machines Corporation | Enterprise workspaces |
US11228575B2 (en) | 2019-07-26 | 2022-01-18 | International Business Machines Corporation | Enterprise workspaces |
CN112947908B (zh) * | 2021-02-26 | 2024-09-13 | 上海商汤智能科技有限公司 | 代码生成方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06149551A (ja) * | 1992-11-06 | 1994-05-27 | Fujitsu Ltd | プログラム仕様書自動生成方法 |
JPH06231081A (ja) * | 1993-01-29 | 1994-08-19 | Sharp Corp | 数式表示方式 |
JPH08305571A (ja) * | 1995-04-20 | 1996-11-22 | Internatl Business Mach Corp <Ibm> | オブジェクト・ローダの方法及び装置 |
JPH11259456A (ja) * | 1998-03-12 | 1999-09-24 | Toshiba Corp | 文書作成装置、数式変換方法、及び記録媒体 |
JP2002116918A (ja) * | 2000-10-10 | 2002-04-19 | Oki Electric Ind Co Ltd | プログラムの意味解析方法プログラムの意味解析プログラムを記録した記憶媒体 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742827A (en) * | 1992-11-02 | 1998-04-21 | Fujitsu Limited | Method of automatically forming program specifications and apparatus therefor |
US6951010B2 (en) * | 2000-09-19 | 2005-09-27 | Fujitsu Limited | Program specification generating system |
-
2004
- 2004-11-10 JP JP2004326154A patent/JP4673040B2/ja not_active Expired - Fee Related
-
2005
- 2005-02-25 US US11/065,711 patent/US7694283B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06149551A (ja) * | 1992-11-06 | 1994-05-27 | Fujitsu Ltd | プログラム仕様書自動生成方法 |
JPH06231081A (ja) * | 1993-01-29 | 1994-08-19 | Sharp Corp | 数式表示方式 |
JPH08305571A (ja) * | 1995-04-20 | 1996-11-22 | Internatl Business Mach Corp <Ibm> | オブジェクト・ローダの方法及び装置 |
JPH11259456A (ja) * | 1998-03-12 | 1999-09-24 | Toshiba Corp | 文書作成装置、数式変換方法、及び記録媒体 |
JP2002116918A (ja) * | 2000-10-10 | 2002-04-19 | Oki Electric Ind Co Ltd | プログラムの意味解析方法プログラムの意味解析プログラムを記録した記憶媒体 |
Also Published As
Publication number | Publication date |
---|---|
US20060107253A1 (en) | 2006-05-18 |
US7694283B2 (en) | 2010-04-06 |
JP4673040B2 (ja) | 2011-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9037595B2 (en) | Creating graphical models representing control flow of a program manipulating data resources | |
TWI493464B (zh) | 用於晚期繫結可程式化輔助的系統與方法 | |
CN107704382B (zh) | 面向Python的函数调用路径生成方法和系统 | |
US8291372B2 (en) | Creating graphical models representing control flow of a program manipulating data resources | |
CN109086215B (zh) | 一种嵌入式软件单元测试用例生成方法及系统 | |
US7917899B2 (en) | Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus | |
JP4157016B2 (ja) | コンパイラ装置及びコンパイル方法 | |
KR100456023B1 (ko) | 절차 지향 프로그램을 컴포넌트 기반의 시스템으로래핑하기 위한 방법 및 그 장치 | |
CN110673854A (zh) | Sas语言编译方法、装置、设备及可读存储介质 | |
CN112394942A (zh) | 基于云计算的分布式软件开发编译方法及软件开发平台 | |
JP2007293383A (ja) | プログラム開発支援装置及びプログラム開発支援装置の動作方法 | |
JPH11513512A (ja) | ディジタル信号プロセッサの製造方法 | |
US12032941B2 (en) | Method and system for updating legacy software | |
KR20010024576A (ko) | 기계 기술로부터의 명령군 구조의 시뮬레이터 및 어셈블러생성 방법 | |
CN110737431B (zh) | 软件开发方法、开发平台、终端设备及存储介质 | |
JP4673040B2 (ja) | 仕様書データ生成方法及び装置 | |
CN112487019B (zh) | 用于OpenGauss数据库的解析动态SQL的方法及系统 | |
CN107577476A (zh) | 一种基于模块划分的安卓系统源码差异性分析方法、服务器及介质 | |
CN101923466B (zh) | 装饰器模式的指令的存取方法 | |
JP2007226358A (ja) | アプリケーション生成装置、アプリケーション生成方法、およびアプリケーション生成プログラム | |
JP2007041707A (ja) | システム設計支援プログラム | |
JP2006079484A (ja) | システム移行に伴うソースプログラム変換プログラム | |
CN101916179A (zh) | 控制寄存器中的标志位的存取方法 | |
JP4371000B2 (ja) | Idlコンパイル装置、idlコンパイル方法及びidlコンパイラ | |
Erman et al. | System engineering techniques for artificial intelligence systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070919 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20101129 |
|
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: 20110118 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110120 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4673040 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: 20140128 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |