技术领域
[0001] 本发明涉及支持从源代码生成软件模型的软件开发方法的工具。
相关背景技术
[0002] 作为现有的从源代码生成软件模型的软件开发支持工具,已知一种从实际的源程序自动地生成程序结构图的技术(参照专利文献1)。
[0003] 专利文献1:JP特开昭63-273131号公报
[0004] 在上述现有的软件开发支持工具中,仅仅是将源代码中描述的字面在形式上变换为模型,而难以包含开发者的设计意图。对于没有包含作为设计信息的重要要素的开发者的设计意图的模型描述,后续的追加·修改是非常困难的。为了获得包含设计意图形式的模型描述,目前状况下不得不依赖于人工的变换,将巨大的原有软件资源变换为模型描述,无论从规模方面还是从成本方面考虑都是非常没有效率且困难的工作。
具体实施方式
[0057] 以下,参照附图对本发明的实施方式进行说明。
[0058] 图1是本发明的实施方式中的软件开发支持工具的结构图。在图1中,101是本发明的实施方式中的软件开发支持工具。在软件开发支持工具101中,软件模型读取部102将开发者131制作的初始软件模型115或生成软件模型116作为输入,将图形的软件模型的描述变换为计算机处理容易的数据,作为初始软件模型信息121或生成软件模型信息122进行输出。软件模型设计意图提取部103将初始软件模型信息121或生成软件模型信息122和保存着用于提取软件模型中包含的开发者设计意图的规则的软件模型设计意图提取规则信息124作为输入,输出软件模型中包含的设计意图的数据即软件模型设计意图信息
123。源代码生成部104将初始软件模型信息121、软件模型设计意图信息123、保存用于生成源代码的规则的源代码生成规则信息125作为输入,输出初始软件模型115所对应的初始生成源代码117或生成软件模型116所对应的再生成源代码118。规则数据库部105由保存用于从源代码生成软件模型的规则的数据库即软件模型生成规则数据库106、保存用于从软件模型生成源代码的规则的数据库即源代码生成规则数据库109、保存用于提取软件中包含的开发者设计意图的规则的数据库即软件模型设计意图提取规则数据库107、保存用于提取源代码中包含的开发者设计意图的规则的数据库即源代码设计意图提取规则数据库108组成。
[0059] 规则改良部111,将初始软件模型信息121、生成软件模型信息122、软件模型设计意图信息123、软件模型设计意图提取规则信息124、源代码生成规则信息125、修改源代码信息129、再生成源代码信息128、软件模型生成规则信息127、源代码设计意图提取规则信息126、源代码设计意图信息130作为输入,通过修正规则数据库部105中的4种数据库106~109的内容,由此将从软件模型向源代码的变换和从源代码向软件模型的变换改良得更加符合开发者意图。数据库更新管理部110根据规则改良部111的指示,对规则数据库部105指示修正数据库。源代码读取部112将开发者119制作或修正的人工修正源代码
120作为输入,变换成计算机处理容易的数据,作为再生成源代码信息128或修正源代码信息129输出。源代码设计意图提取部113将修正源代码信息129或再生成源代码信息128和保存用于提取源代码中包含的开发者设计意图的规则的源代码设计意图提取规则信息
126作为输入,输出源代码中包含的设计意图的数据即源代码设计意图信息130。软件模型生成部114将修正源代码信息129或再生成源代码信息128、源代码设计意图信息130、保存用于生成软件模型的规则的软件模型生成规则信息127作为输入,输出人工修正源代码
120或再生成源代码118所对应的生成软件模型116。
[0060] 图2表示软件模型读取部102的处理流程。软件模型读取部102将开发者131制作的初始软件模型115或生成软件模型116作为输入,将图形的软件模型的描述变换为计算机处理容易的数据,作为初始软件模型信息121或生成软件模型信息122进行输出。首先,读取由开发者131描述的初始软件模型115或生成软件模型116(201)。接下来使要素ID为0(202)。接着,针对软件模型中描述的所有描述要素开始反复(203)。接着使要素ID的值加一(204)。然后,为了输出软件模型信息,分析描述要素的描述内容(205)。接下来,将步骤205中的分析结果作为初始软件模型信息121或生成软件模型信息122输出(206)。接着,返回步骤204进行反复处理。步骤207表示步骤203的反复处理的结束位置。
[0061] 图3表示图2的软件模型读取部102的处理流程中的步骤205中被调用的描述要素的描述内容分析子程序的处理流程。首先,读取当前处理对象的描述要素的构造型(Stereotype)(301)。接着,读取当前处理对象的描述要素的名称标签(name label)(302)。接下来,判定当前处理对象的描述要素的描述位置(303)。然后,扫描紧接着当前处理对象的描述要素的其他描述要素(304)。
[0062] 图4表示从图3的描述要素的描述内容分析子程序到步骤303中调用的描述位置判定子程序的处理流程。首先,判定描述位置判定对象要素的上下方向的描述位置位于何处(401)。在上1/3以上的位置描述的情况下,进一步判定左右方向的描述位置(402)。在左右方向1/3以上左侧描述的情况下,将位置设定为“上左部”(404)。在中央描述的情况下,将位置设定为“上中央部”(405)。在左右方向1/3以上右侧描述的情况下将位置设定为“上右部”(406)。在步骤401的判定中在1/3以下的位置描述的情况下,进一步判定左右方向的描述位置(403)。在左右方向1/3以上左侧描述的情况下将位置设定为“下左部”(407)。在中央描述的情况下将位置设定为(下中央部)(408)。在左右方向1/3以上右侧描述的情况下将位置设定为“下右部”(409)。在步骤401的判定中不是在上下1/3以上的位置描述的情况下判定左右方向的描述位置(410)。在左右方向1/3以上左侧描述的情况下,将位置设定为“中央左部”(411)。在中央描述的情况下将位置设定为“中心部”(412)。在左右方向1/3以上右侧描述的情况下将位置设定为“中央右部”(413)。
[0063] 图5表示从图3的描述要素的描述内容分析子程序到步骤304中被调用的连接要素扫描子程序的处理流程。首先,使连接目标表中的要素ID为0(501)。接下来,将被连接目标表中的要素ID设为0(503)。接着,将被连接目标表中的连接方向设为“无”(504)。接着,判定在当前处理对象的描述要素中是否存在连接(505)。在没有连接时结束。在有连接的情况下针对所有的连接开始反复(506)。接下来,判定连接线在哪个方向连接(507)。连接线在出去方向连接的情况下,对连接目标要素列表中的要素ID追加连接目标要素ID(508)。接着,在连接目标要素列表中的连接方向中追加连接线连接边的位置(509)。在步骤507的判定中,连接线在进入的方向连接的情况下,在被连接目标要素列表中的要素ID中追加连接源要素ID(510)。接着,在被连接目标要素列表中的连接方向中追加连接线连接边的位置(511)。接下来,返回步骤507进行反复处理。步骤512表示步骤506的反复处理的结束位置。
[0064] 图6表示源代码生成部104的处理流程。源代码生成部104将初始软件模型信息121或生成软件模型信息122、软件模型设计意图信息123、保存用于生成源代码的规则的源代码生成规则信息125作为输入,输出初始软件模型115所对应的初始生成源代码117、或生成软件模型116所对应的再生成源代码118。首先,读取初始软件模型信息121或生成软件模型信息122(601)。接下来,读取软件模型设计意图信息123(602)。接着,读取源代码生成规则信息125(603)。接着,针对初始软件模型信息121或生成软件模型信息122中包含的所有要素ID开始反复(604)。然后,从软件模型设计意图信息123读取当前的要素ID所对应的代码生成规则ID(605)。接下来,从软件模型设计意图信息123读取当前的要素ID所对应的设计意图ID(606)。接着,从源代码生成规则信息125读取符合代码生成规则ID和设计意图ID的生成代码模板(607)。接下来,从初始软件模型信息121或生成软件模型122读取当前的要素ID所对应的名称标签(608)。然后,将生成代码模板中“[name]”标识(tag)位置以名称标签置换(609)。接下来,从初始软件模型信息121或生成软件模型信息122读取当前的要素ID所对应的连接目标要素列表(610)。接着,针对连接目标要素列表中的所有的连接目标开始反复(611)。接下来,从初始软件模型信息121或生成软件模型信息122读取连接目标要素ID所对应的名称标签(612)。然后,将生成代码模板中的“[reference]”或“[calls]”的标识位置以名称标签置换(613)。接下来,返回至步骤612进行反复处理。步骤614表示步骤611的反复处理的结束位置。接着,判定在生成代码模板中是否存在“[body]”标识(615)。若存在“[body]”标识则将生成代码模板中的“[body]”标识位置以“主体部”注释置换(616)。然后,返回至步骤604进行反复处理。步骤617表示步骤604的反复处理的结束位置。
[0065] 图7表示软件模型设计意图提取部103的处理流程。软件模型设计意图提取部103将初始软件模型信息121或生成软件模型信息122、保存用于提取软件模型中包含的开发者设计意图的规则的软件模型设计意图提取规则信息124作为输入,输出软件模型中包含的设计意图的数据即软件模型设计意图信息123。首先,读取初始软件模型信息121或生成软件模型信息122(701)。接下来,读取软件模型设计意图提取规则信息124(702)。然后,针对初始软件模型信息121或生成软件模型信息122中包含的所有要素ID开始反复(703)。接下来,针对当前处理中的要素ID进行连接图形分析(704)。然后,将是否存在与设计意图一致的软件模型描述的判定标记即匹配标记(match flag)设为0(705)。接着,针对所有的软件模型设计意图提取规则信息124开始反复(706)。然后,进行软件模型的描述是否与设计意图一致的设计意图匹配(707)。接着,返回至步骤707进行反复处理。步骤
708表示步骤706的反复处理的结束位置。
[0066] 接下来,判定匹配标记是否大于0(709)。在不大于0的情况下将相应的要素ID输出至软件模型设计意图信息123(718)。接下来,将代码生成规则ID的规定值输出至软件模型设计意图信息123(719)。接下来,将设计意图ID的规定值输出至软件模型设计意图信息123(720)。在步骤709的判定中匹配标记大于0的情况下,判定匹配标记是否为1(710)。
在匹配标记不是1时将相应要素ID输出至软件模型设计意图信息123(715)。接下来,将匹配的软件模型设计意图提取规则信息124中优先级最高的规则的代码生成ID输出至软件模型设计意图信息123(716)。然后,将匹配的软件模型设计意图提取规则信息124中优先级最高的规则的设计意图ID输出至软件模型设计意图信息123(717)。在步骤710的判定中匹配标记为1的情况下将相应要素ID输出至软件模型设计意图信息123(711)。接下来,将匹配的软件模型设计意图提取规则信息124的代码生成ID输出至软件模型设计意图信息123(712)。接下来,将匹配的软件模型设计意图提取规则信息124的设计意图ID输出至软件模型设计意图信息123(713)。接下来,将匹配的软件模型设计意图提取规则信息
124的优先级加一(714)。然后,返回至步骤704进行反复处理。步骤721表示步骤703的反复处理的结束位置。
[0067] 图8表示从图7的软件模型设计意图提取部103的处理流程到步骤704中被调用的连接图形分析子程序的处理流程。首先,将连接数、被连接数、平均连接距离、最大连接距离、最小连接距离、平均被连接距离、最大被连接距离、最小被连接距离、合计连接距离、合计被连接距离分别设为0(801)。接着,清空连接方向列表(802)。然后,读取相应要素ID的连接目标要素列表(803)。接着,针对所有的连接目标开始反复(804)。然后,使连接数加1(805)。接着,计算与连接目标要素之间的连接距离(806)。接下来,更新连接距离值(807)。然后在连接方向列表中追加相应连接目标的连接方向(808)。接着,返回至步骤804进行反复处理。步骤809表示步骤804的反复处理的结束位置。然后,针对所有的被连接目标开始反复处理(810)。接下来,使被连接数加1(811)。然后计算与被连接目标要素之间的连接距离(812)。接下来,更新被连接目标距离的值(813)。然后,在连接方向列表中追加相应被连接目标的连接方向(814)。接着,返回至步骤811进行反复处理。步骤815表示步骤810的反复处理的结束位置。
[0068] 图9表示从图8的连接图形分析子程序在步骤806被调用的与连接目标要素之间的连接距离计算子程序的处理流程。首先,获取连接目标要素的坐标(901)。接下来,获取当前的处理对象要素的坐标(902)。然后,对X1设定处理对象要素的横轴坐标,对Y1设定处理对象要素的纵轴坐标(903)。接下来,对X2设定连接目标要素的横轴坐标,对Y2设定连接目标要素的纵轴坐标(904)。接下来,将|X2-X1|+|Y2-Y1|设为距离(905)。
[0069] 图10表示从图8的连接图形分析子程序在步骤812被调用的与被连接目标要素之间的连接距离计算子程序的处理流程。首先,首先,获取被连接目标要素的坐标(1001)。接下来,获取当前的处理对象要素的坐标(1002)。然后,对X1设定处理对象要素的横轴坐标,对Y1设定处理对象要素的纵轴坐标(1003)。接下来,对X2设定被连接目标要素的横轴坐标,对Y2设定被连接目标要素的纵轴坐标(1004)。接下来,将|X2-X1|+|Y2-Y1|设为距离(1005)。
[0070] 图11表示从图8的连接图形分析子程序在步骤807被调用的连接距离值更新子程序的流程。首先,在合计连接距离上加上与相应连接目标之间的距离(1101)。接下来,对平均连接距离设定合计连接距离除以连接数之后的值(1102)。接着,判定与相应连接目标之间的距离是否小于最小连接距离(1103)。在与相应连接目标之间的距离不小于最小连接距离的情况下进入步骤1105。在与相应连接目标之间的距离小于最小连接距离的情况下,将与相应连接目标之间的距离设定为最小连接距离(1104)。然后,判定与相应连接目标之间的距离是否大于最大连接距离(1105)。在与相应连接目标的距离不大于最大连接距离的情况下结束。在与相应连接目标的距离大于最大连接距离的情况下,将与相应连接目标之间的距离设定为最大连接距离(1106)。
[0071] 图12表示从图8的连接图形分析子程序在步骤813被调用的被连接距离值更新子程序的流程。首先,在合计被连接距离上加上与相应被连接目标之间的距离(1201)。接下来,对平均被连接距离设定合计被连接距离除以被连接数之后的值(1202)。接着,判定与相应被连接目标之间的距离是否小于最小被连接距离(1203)。在与相应被连接目标之间的距离不小于最小被连接距离的情况下进入步骤1205。在与相应被连接目标之间的距离小于最小被连接距离的情况下,将与相应被连接目标之间的距离设定为最小被连接距离(1204)。然后,判定与相应被连接目标之间的距离是否大于最大被连接距离(1205)。在与相应被连接目标的距离不大于最大被连接距离的情况下结束。在与相应被连接目标的距离大于最大被连接距离的情况下,将与相应被连接目标之间的距离设定为最大被连接距离(1206)。
[0072] 图13表示从图7的软件模型设计意图提取部103的处理流程在步骤707被调用的设计意图匹配子程序的处理。首先,分别读取类型一致权重值、描述位置一致权重值、连接图形一致权重值(1301)。接下来,读取一致阈值(1302)。然后,对一致似然值设定0(1303)。接着,判定类型是否一致(1304)。在类型不一致的情况下进入步骤1306。在类型一致的情况下,在一致似然值上加上类型一致权重值(1305)。然后,判定描述位置是否一致(1306)。
在描述位置不一致的情况下进入步骤1308。在描述位置一致的情况下,在一致似然值上加上描述位置一致权重值(1307)。接下来,判定连接图形是否一致(1308)。在连接图形不一致的情况下进入步骤1310。在连接图形一致的情况下,在一致似然值上加上连接图形一致权重值(1309)。然后,判定一致似然值是否在一致阈值以上(1310)。在一致似然值小于一致阈值的情况下结束。在一致似然值大于或等于一致阈值时使匹配标记的值加1(1311)。
[0073] 图14表示数据库更新管理部110的处理流程。数据库更新管理部110根据规则改良部111的指示,对规则数据库部105指示修正数据库。首先,接收数据库修正指示(1401)。然后,判定是否是源代码设计意图提取规则的修正指示(1402)。在不是源代码设计意图提取规则的修正指示的情况下进入步骤1403。在是源代码设计意图提取规则的修正指示时,修正源代码设计意图提取规则数据库108(1408)。然后,判定是否是软件模型设计意图提取规则的修正指示(1403)。在不是软件模型设计意图提取规则的修正指示的情况下,进入步骤1404。在是软件模型设计意图提取规则的修正指示的情况下,修正软件模型设计意图提取规则数据库107(1407)。然后,判定是否是源代码生成规则的修正指示(1404)。在不是源代码生成规则的修正指示的情况下,修正软件模型生成规则数据库106(1405)。在是源代码生成规则的修正指示的情况下修正源代码生成规则数据库109(1406)。
[0074] 图15表示源代码设计意图提取部113的处理流程。源代码设计意图提取部113,将修正源代码信息129或再生成源代码信息128、保存用于提取源代码中包含的开发者设计意图的规则的源代码设计意图提取规则信息126作为输入,输出源代码中包含的设计意图数据即源代码设计意图信息130。首先,读取修正源代码信息129或再生成源代码信息128(1501)。接着,读取源代码设计意图提取规则信息126(1502)。然后,针对所读取的源代码信息中包含的所有块ID开始反复处理(1503)。接下来,对表示块之间的联系的关联的图形进行分析(1504)。接着,对块的描述特性进行分析·设定(1505)。然后,将是否与设计意图一致的匹配标记设为0(1506)。接下来,针对所有源代码设计意图提取规则信息
126开始反复处理(1507)。接着,进行处理对象的块是否与设计意图一致的设计意图匹配(1508)。接下来,返回至步骤1508进行反复处理。步骤1509表示步骤1507的反复处理的结束位置。
[0075] 接下来,判定匹配标记是否大于0(1510)。在匹配标记不大于0的情况下,将相应块ID输出至源代码设计意图信息130(1519)。然后,将软件模型生成规则ID的规定值输出至源代码设计意图信息130(1520)。接着,将设计意图ID的规定值输出至源代码设计意图信息130(1521)。然后返回至步骤1504进行反复处理。步骤1522表示步骤1503的反复处理的结束位置。在步骤1510的判定中匹配标记大于0的情况下,判定匹配标记是否为1(1511)。在匹配标记不是1的情况下,将相应块ID输出至源代码设计意图信息130(1516)。
接下来,将在匹配的源代码设计意图提取规则信息126中优先级最高的规则的代码生成ID输出至源代码设计意图信息130(1517)。然后,将在匹配的源代码设计意图提取规则信息
126之中优先级最高的设计意图ID输出至源代码设计意图信息130(1518)。然后,返回至步骤1504进行反复处理。步骤1522表示步骤1503的反复处理的结束位置。在步骤1511的判定中匹配标记是1的情况下,将相应块ID输出至源代码设计意图信息130(1512)。接下来,将匹配的源代码设计意图提取规则信息126的软件模型生成ID输出至源代码设计意图信息130(1513)。接着,将匹配的源代码设计意图提取规则信息126的设计意图ID输出至源代码设计意图信息130(1514)。接下来,使匹配的源代码设计意图提取规则信息126的优先级加1(1515)。接下来,返回至步骤1504进行反复处理。步骤1522表示步骤1503的反复处理的结束位置。
[0076] 图16表示从图15的源代码设计意图提取部113的处理流程在步骤1504被调用的关联图形分析子程序的处理流程。首先,将关联数、合计关联距离、平均关联距离、最大关联距离、最小关联距离、方向值设为零。此外,清空关联种类、关联方向(1601)。接下来,读取相应块ID的关联列表(1602)。然后,针对相应块ID的关联列表中包含的所有关联目标开始反复处理(1603)。接着,使关联数加1(1604)。然后,计算与关联目标块之间的距离(1605)。接着,更新距离值(1606)。接下来,更新关联方向(1607)。然后设定关联种类(1608)。接着,返回至步骤1604进行反复处理。步骤1609表示步骤1603的反复处理的结束位置。
[0077] 图17表示从图16的关联图形分析子程序在步骤1605被调用的与关联目标块之间的距离计算子程序的处理流程。首先,读取关联目标块ID所对应的记录(1701)。接着,将所对应的块ID的记录的开始行设定为L1(1702)。接下来,将当前处理中的块ID的记录的结束行设定为L2(1703)。接着,作为距离计算|L1-L2|(1704)。
[0078] 图18表示从图16的关联图形分析子程序在步骤1606被调用的距离值更新子程序的处理流程。首先,在合计关联距离上加上与相应关联目标之间的距离(1801)。接下来,对平均连接距离设定合计连接距离除以连接数之后的值(1802)。然后,判定与相应连接目标之间的距离是否小于最小关联距离(1803)。在与相应关联目标之间的距离不小于最小关联距离的情况下进入步骤1805。在与相应关联目标之间的距离小于最小关联距离的情况下,将与相应关联目标之间的距离设定为最小关联距离(1804)。接下来,判定与相应关联目标之间的距离是否大于最大关联距离(1805)。在与相应关联目标之间距离不大于最大关联距离的情况下结束。在与相应关联目标之间的距离大于最大关联距离的情况下,将与相应关联目标之间的距离设定为最大关联距离(1806)。
[0079] 图19表示从图16的关联图形分析子程序在步骤1607被调用的关联方向更新子程序的处理流程。首先,读取关联目标块ID所对应的记录(1901)。接下来,将所对应的块ID的开始行设定为D(1902)。然后,将当前处理中的块ID的开始行设定为S(1903)。然后,判定D-S是否大于0(1904)。在D-S大于0的情况下使方向值加1(1905)。在步骤1904的判定中D-S不大于0的情况下使方向值减1(1908)。接着,判定方向值是否大于0(1906)。在方向值大于0的情况下在关联方向设定后方优先(1907)。在步骤1906的判定中方向值不大于0的情况下在关联方向设定前方优先(1909)。
[0080] 图20表示从图16的关联图形分析子程序在步骤1608中被调用的关联种类设定子程序的处理流程。首先,从处理中的关联项目中读取关联种类(2001)。接下来,从关联种类表中获取相应的关联种类的关联种类ID(2002)。接着,在关联种类列表中追加关联种类ID(2003)。
[0081] 图21表示从图15的源代码设计意图提取部113的处理流程在步骤1505被调用的描述特性分析·设定子程序的处理流程。首先将当前处理中的块的开始行设定为S(2101)。接下来,将当前处理中的块的结束行设定为E(2102)。然后,将关联数÷(E-S)的值设定为描述特性(2103)。
[0082] 图22表示从图15的源代码设计意图提取部113的处理流程在步骤1508被调用的设计意图匹配子程序的处理流程。首先,分别读取类型一致权重值、描述特性一致权重值、关联图形一致权重值(2201)。接下来,读取一致阈值(2202)。然后,对一致似然值设定为0(2203)。接着,判定类型是否一致(2204)。在类型不一致的情况下进入步骤2206。在类型一致的情况下在一致似然上加上类型一致权重值(2205)。接下来,判定描述特性是否一致(2206)。在描述特性不一致的情况下进入步骤2208。在描述特性一致的情况下,在一致似然值上加上描述特性一致权重值(2207)。接着,判定关联图形是否一致(2208)。在关联图形不一致的情况下进入步骤2210。在关联图形一致的情况下,在一致似然值上加上关联图形一致权重值(2209)。接下来,判定一致似然值是否在一致阈值以上(2210)。在一致似然值小于一致阈值的情况下结束。在一致似然值大于或等于一致阈值的情况下,使匹配标记的值加1(2211)。
[0083] 图23表示规则改良部111的处理流程。规则改良部111将初始软件模型信息121、生成软件模型信息122、软件模型设计意图信息123、软件模型设计意图提取规则信息124、源代码生成规则信息125、修正源代码信息129、再生成源代码信息128、软件模型生成规则信息127、源代码设计意图提取规则信息126、源代码设计意图信息130作为输入,对数据库变更管理部110进行数据库变更指示。首先,清空块差值列表、要素差值列表、关联描述列表。此外,将追加规则ID、对象块ID、对象要素ID设为0。此外,将要素ID算出标记、块ID算出标记设定为NG(2301)。然后,读取修正源代码信息129(2302)。接下来,读取再生成源代码信息128(2303)。接着,读取人工修正源代码120(2304)。然后,读取再生成源代码118(2305)。接着,从各源代码信息的差值提取块的差值(2306)。接下来,判定所提取的块是否存在差值(2307)。存在块的差值的情况下在源代码生成规则信息125中追加规则(2308)。在步骤2307的判定中没有块的差值的情况下,通过文本处理提取各源代码的差值(2309)。接下来,针对所有源代码的差值开始反复处理(2310)。接下来,判定是否是块内部的差值(2311)。不是块内部的差值的情况下返回至步骤2310继续反复处理。步骤2317表示步骤2310的反复处理的结束位置。在是块内部的差值的情况下提取关联描述(2312)。接下来,确定差值所属的块,并算出描述相应块的要素ID(2313)。然后,判定要素ID算出标记是否为OK(2314)。在要素ID算出标记不是OK的情况下,返回至步骤2310继续进行反复处理。步骤2317表示步骤2310的反复处理的结束位置。在要素ID算出标记是OK的情况下,修正生成代码模板(2315)。接下来,追加软件模型设计意图提取规则信息(2316)。
然后,返回至步骤2310继续进行反复处理。步骤2317表示步骤2310的反复处理的结束位置。
[0084] 接下来,读取初始软件模型信息121(2318)。然后,读取生成软件模型信息122(2319)。接着,提取软件模型信息中包含的要素的差值(2320)。然后,基于提取出的差值判定是否存在追加的要素(2321)。存在追加的要素的情况下,在软件模型生成规则信息
127中追加规则然后进入步骤2323(2322)。在步骤2321的判定中没有追加的要素的情况下,提取连接目标的差值(2323)。接下来,针对所有的连接目标差值开始反复处理(2324)。
接下来,判定是否存在连接目标的差值(2325)。没有连接目标的差值的情况下,返回至步骤2324继续进行反复处理。步骤2330表示步骤2324的反复处理的结束位置。存在连接目标的差值的情况下,确定要素ID并计算块ID(2326)。然后,判定块ID算出标记是否为OK(2327)。在块ID算出标记不为OK的情况下,返回至步骤2324继续进行反复处理。步骤2330表示步骤2324的反复处理的结束位置。在步骤2327的判定中块ID算出标记为OK的情况下,修正生成软件模型模板(2328)。接下来,追加源代码设计意图提取规则信息(2329)。然后,返回至步骤2324继续进行反复处理。步骤2330表示步骤2324的反复处理的结束位置。
[0085] 图24表示从图23的规则改良部111的处理流程在步骤230中被调用的从源代码信息的差值提取块的差值的子程序的流程。首先,针对修正源代码信息129中包含的所有块名开始反复处理(2401)。接着,取得修正源代码信息的块名(2402)。然后,针对再生成源代码信息128中包含的所有块名开始反复处理(2403)。接下来,取得再生成源代码信息128的块名(2404)。接着,判定各块名是否一致(2405)。在块名不一致的情况下,在块差值列表中追加相应块的源代码信息(2406)。接下来,返回至步骤2403继续进行反复处理。
步骤2407表示步骤2403的反复处理的结束位置。在步骤2405的判定中块名一致的情况下,不执行步骤2406返回至步骤2403继续进行反复处理。步骤2407表示步骤2304的反复处理的结束位置。然后,返回至步骤2401继续进行反复处理。步骤2408表示步骤2401的反复处理的结束位置。
[0086] 图25表示从图23的规则改良部111的处理流程在步骤2308中被调用的在源代码生成规则信息中追加规则的子程序的处理流程。首先,在追加规则ID中设定源代码生成规则信息的最大代码生成规则ID(2501)。接下来,针对块差值列表的所有要素开始反复处理(2502)。然后,使追加规则ID加1(2503)。接下来,制作新的代码生成规则记录(2504)。接着,在新记录的代码生成规则ID中设定追加规则ID(2505)。然后,使新记录的设计意图ID为1(2506)。接着,从人工修正源代码120取得当前处理中的差值块ID所对应的源代码(2507)。然后,提取关联描述(2508)。接下来,将提取出的关联描述变换为与关联的种类相应的标识(2509)。接着,将关联以外的描述以[body]标识置换(2510)。然后,追加块标志(block signature)从而设定为生成代码模板(2511)。接着,将已设定的新记录通知给数据库更新管理部110,追加至源代码生成规则信息中(2512)。然后,返回至步骤2502继续进行反复处理。步骤2513表示步骤2502的反复处理的结束位置。
[0087] 图26表示从图23的规则改良部111的处理流程在步骤231中被调用的提取关联描述的子程序的处理流程。首先,针对提取对象源代码的各行开始反复处理(2601)。接着,读取提取对象行(2602)。接下来,判定所读取的对象行是否是关联描述(2603)。在所读取的对象行不是关联描述的情况下,返回至步骤2601继续进行反复处理。步骤2605表示步骤2601的反复处理的结束位置。在步骤2603的判定中所读取的对象行是关联描述的情况下,对关联描述列表追加关联列表述部分(2604)。然后,返回至步骤2601继续进行反复处理。步骤2605是表示步骤2601的反复处理的结束位置。此外,在图25中的步骤2508中,提取图26的关联描述的子程序也被调用。
[0088] 图27表示从图23的规则改良部111的处理流程在步骤231被调用的进行块确定然后计算要素ID的子程序的处理流程。首先,清空对象块名(2701)。然后,将当前处理中的差值行的行序号设定为L(2702)。接着,针对修正源代码信息129的所有块ID开始反复处理(2703)。接下来,将当前处理中的块ID的开始行设定为S(2704)。然后,将当前处理中的块ID的结束行设定为E(2705)。接下来,判定是否S<L<E(2706)。在步骤2706的判定中不是S<L<E的情况下,返回至步骤2703继续进行反复处理。步骤2714表示步骤2703的反复处理的结束位置。在步骤2706的判定中是S<L<E的情况下,将当前处理中的块ID所对应的块名设定为对象块名(2707)。接下来,针对生成软件模型信息122的所有要素ID开始反复处理(2708)。然后,取得当前的要素ID所对应的名称标签(2709)。接下来,判定对象块名与名称标签是否一致(2710)。在名称标签不一致的情况下返回至步骤2708继续进行反复处理。步骤2711表示步骤2708的反复处理的结束位置。在步骤2710的判定中名称标签一致的情况下,将当前的要素ID设定为对象要素ID(2712)。接下来,对要素ID算出标记设定OK,然后结束。
[0089] 图28表示从图23的规则改良部111的处理流程在步骤2315中被调用的生成代码模板修正子程序的处理流程。首先,读取软件模型设计意图信息123(2801)。接下来,取得对象要素ID所对应的代码生成规则ID和设计意图ID(2802)。接着,读取源代码生成规则信息125(2803)。然后,取得代码生成规则ID和设计意图ID所对应的生成代码模板(2804)。接下来,取得修正源代码信息129的对象块ID所对应的记录(2805)。接着,获取修正源代码信息129的对象块ID所对应的开始行和结束行(2806)。然后,从修正源代码获取从开始行至结束行的源代码(2807)。接下来,提取关联描述(2808)。接着,将提取出的关联描述变换为与关联的种类相应的标识(2809)。然后,以[body]标识置换关联以外的描述(2810)。接下来,追加块标志并置换所对应的生成代码模板(2811)。此外,在图28中的步骤2808中,提取图26的关联描述的子程序也被调用。
[0090] 图29表示从图23的规则改良部111的处理流程在步骤2316中被调用的软件模型设计意图提取规则信息追加子程序的处理流程。首先,制作新的软件模型设计意图提取规则信息记录(2901)。接下来,读取修正软件模型信息(2902)。接着,将修正软件模型信息的对应要素ID所对应的类型设定为新记录的类型(2903)。然后,对新记录的描述位置、连接图形设定规定值(2904)。接下来,对一致阈值、优先级设定规定值(2905)。接着,对所有的一致权重设定规定值(2906)。然后,对代码生成规则ID设定在生成代码模板修正过程中得到的代码生成规则ID(2907)。接下来,对设计意图ID设定生成代码模板修正过程中得到的设计意图ID(2908)。
[0091] 图30表示从图23的规则改良部111的处理流程在步骤2320中被调用的提取软件模型信息的要素的差值的子程序的处理流程。首先,针对初始软件模型信息121中的所有名称标签开始反复处理(3001)。接下来,获取初始软件模型信息121的名称标签(3002)。接着,针对生成软件模型信息122中的所有名称标签开始反复处理(3003)。然后,取得生成软件模型信息122的名称标签(3004)。接下来,判定名称标签是否一致(3005)。在名称标签不一致的情况下,在要素差值表中追加相应要素的软件模型信息(3006)。接下来,返回至步骤3003继续进行反复处理。步骤3007表示步骤3003的反复处理的结束位置。在步骤
3005的判定中,在名称标签一致的情况下不执行步骤3006,返回至步骤3003继续进行反复处理。步骤3007表示步骤3003的反复处理的结束位置。步骤3008表示步骤3001的反复处理的结束位置。
[0092] 图31表示从图23的规则改良部111的处理流程在步骤2322中被调用的、在软件模型生成规则信息中追加规则的子程序的处理流程。首先,将软件模型生成规则信息127的最大软件模型生成规则ID设定为追加规则ID(3101)。接下来,针对要素差值列表的所有要素开始反复处理(3102)。接着,使追加规则ID加1(3103)。然后,制作新的软件模型生成规则记录(3104)。接着,对新记录的软件模型生成规则ID设定追加规则ID(3105)。接下来,使新记录的设计意图ID为1(3106)。接着,从软件模型取得当前处理中的差值要素ID所对应的模型要素(3107)。然后,将模型要素的名称标签置换为[name]标识(3108)。接下来,将连接目标要素的名称标签置换为规定值的[callee]标识(3109)。接着,将已设定的新记录通知给数据库更新管理部110,并追加至软件模型生成规则信息(3110)。步骤
3111表示步骤3102的反复处理的结束位置。
[0093] 图32表示从图23的规则改良部111的处理流程在步骤2326被调用的确定要素ID并计算块ID的子程序的处理流程。首先,取得包含连接目标的差值的要素ID(3201)。接下来,将当前处理中的要素ID所对应的名称标签设定为对象名称标签(3202)。接着,针对修正源代码信息129的所有块ID开始反复处理(3203)。然后,取得当前的块ID所对应的块名(3204)。接下来,判定对象名称标签与块名是否一致(3205)。在对象名称标签与块名不一致的情况下,返回至步骤3203继续进行反复处理。步骤3206表示步骤3203的反复处理的结束位置。在步骤3205的判定中,在对象名称标签与块名一致的情况下,将当前的块ID设定为对象块ID(3207)。接下来,将块ID算出标记设定为OK(3208)。
[0094] 图33表示从图23的规则改良部111的处理流程在步骤2328被调用的生成软件模型模板修正子程序的流程。首先,读取源代码设计意图信息130(3301)。接下来,取得对象块ID所对应的软件模型生成规则ID和设计意图ID(3302)。接着,读取软件模型生成规则信息127(3303)。然后,取得软件模型生成规则ID和设计意图ID所对应的生成软件模型模板(3304)。接下来,取得生成软件模型信息122的对象要素ID所对应的记录(3305)。然后,从生成软件模型获取生成软件模型信息122的对象要素ID所对应的模型要素(3306)。接下来,将各要素的标签置换为标识(3307)。接着,置换生成软件模型模板(3308)。
[0095] 图34表示从图23的规则改良部111的处理流程在步骤232被调用的源代码设计意图提取规则信息追加子程序的处理流程。首先,制作新的源代码设计意图提取规则信息记录(3401)。接下来,读取再生成源代码信息128(3402)。然后,将再生成源代码信息128的对象块ID所对应的类型设定为新记录的类型(3403)。接下来,对新记录的描述特性、关联图形设定规定值(3404)。接着,对一致阈值、优先级设定规定值(3405)。然后,对所有的一致权重设定规定值(3406)。接下来,对软件模型生成规则ID设定在生成源代码模板修正过程中得到的软件模型生成规则ID(3407)。接下来,对设计意图ID设定生成源代码模板修正过程中得到的设计意图ID(3408)。
[0096] 图35表示源代码读取部112的处理流程。源代码读取部112将开发者119制作或修正之后的人工修正源代码120作为输入,变换为计算机处理容易的数据并作为再生成源代码信息128或修正源代码信息129输出。首先,将块内标记设为OFF(3501)。接下来,针对所有源代码行开始反复处理(3502)。接着,判定块内标记是否为ON(3504)。在块内标记不是ON的情况下,判定是否是块开始要素(3505)。在不是块开始要素的情况下,返回至步骤3502继续进行反复处理。步骤3515表示步骤3502的反复处理的结束位置。在步骤3505的判定中是块开始要素的情况下,将块内标记设为ON(3506)。接着,使块ID加1(3507)。然后,制作一块的空的源代码信息记录(3508)。接着,对所制作的源代码信息记录设定块ID(3509)。接下来,读取块名(3510)。然后,对块名记录设定块名(3511)。然后,读取类型(3512)。接下来,对类型名记录设定类型名(3513)。将当前的行数设定为开始行(3514)。
接着,返回至步骤3502继续进行反复处理。步骤3515表示步骤3502的反复处理的结束位置。在步骤3504的判定中块内标记为ON的情况下,判定是否是关联描述(3517)。在不是关联描述的情况下判定是否是块结束要素(3512)。在不是块结束要素的情况下返回至步骤
3502继续进行反复处理。步骤3515表示步骤3502的反复处理的结束位置。在步骤3523的判定中是块结束要素的情况下,将当前的行数设定为结束行(3524)。接下来,将快内标记设为OFF(3525)。接着,返回至步骤3502继续进行反复处理。步骤3515表示步骤3502的反复处理的结束位置。在步骤3517的判定中是关联描述的情况下,对当前的处理对象记录的关联列表追加新关联项目(3518)。接下来,读取关联种类(3519)。然后,在当前的处理对象新关联项目中设定关联种类(3520)。接着,读取关联的名称标签(3521)。接下来,对当前的处理对象新关联项目的关联目标ID临时设定关联名称标签(3522),然后转移至步骤3523。最后,接着步骤3515执行关联列表内的关联目标ID设定处理(3516)。
[0097] 图36表示从图35的源代码读取部112的处理流程在步骤3516中被调用的关联列表内的关联目标ID设定处理子程序的处理流程。首先针对所有块ID开始反复处理(3601)。接下来,读取对象块的关联列表(3602)。接着,针对关联列表中的所有关联项目开始反复处理(3603)。然后,读取对象关联项目的关联目标ID(3604)。接下来,判定关联目标ID是否是名称标签(3605)。在关联目标ID不是名称标签的情况下,返回至步骤3603继续进行反复处理。步骤3611表示步骤3603的反复处理的结束位置。在步骤3605的判定中关联目标ID是名称标签的情况下,针对所有的块ID开始反复处理(3606)。接着,读取对象块的块ID(3607)。接下来,判定对象块的块名与名称标签是否一致(3608)。在对象块的块名与名称标签不一致的情况下,返回至步骤3606继续进行反复处理。步骤3609表示步骤3606的反复处理的结束位置。在步骤3608的判定处理中对象块的块名与名称标签一致的情况下,以相应块ID置换对象关联项目的关联目标ID(3610)。接下来,返回至步骤3603继续进行反复处理。步骤3611表示步骤3603的反复处理的结束位置。此外,步骤3612表示步骤
3601的反复处理的结束位置。
[0098] 图37表示作为初始软件模型信息121或生成软件模型信息122使用的软件模型信息。软件模型信息121、122由软件模型中包含的要素的连续号码即要素ID3701、对要素附于的名称即名称标签3702、要素的描述类型即类型3703、表示描述要素的位置的描述位置3704、表示各要素与其他要素的连接的连接目标要素列表3707、表示各要素的来自其他要素的连接的被连接目标要素列表3708组成。连接目标要素列表3707由表示连接目标的要素的要素ID3705、表示连接的方向的连接方向3706组成。被连接目标要素3708由表示从其他要素连接的连接源的要素的要素ID3717、和表示连接方向本身的连接方向3718组成。此外,不存在连接目标或被连接目标的情况下,在各栏中保存0。作为一例,表示要素ID为“n”、名称标签为“dd_lib”、类型为“函数”、描述位置为“下右部”、连接目标要素列表的要素ID为“0”、连接目标要素列表的连接方向为“无”、被连接目标要素列表的要素ID为“2”、被连接目标要素列表的连接方向为“上”的情况。
[0099] 图38表示软件模型设计意图信息123。软件模型设计意图信息123由识别软件模型中描述的要素的要素ID3801、识别代码生成规则的代码生成规则ID3802、识别设计意图的数据的设计意图ID3803组成。作为一例,表示要素ID为“n”、代码生成规则ID为“6”、设计意图ID为“1”的情况。
[0100] 图39表示软件模型设计意图提取规则信息124。软件模型设计意图提取规则信息124,由表示软件模型中描述的要素的类型的类型3901、表示软件模型中描述的要素的描述位置的描述位置3903、使软件模型中描述的要素的连接图形定量化的连接图形3906、用于判定是否与软件模型设计意图提取规则一致的阈值即一致阈值3915、表示同样的规则有多个一致时的优先级的优先级3916、识别代码生成规则的代码生成规则ID3917、识别设计意图的设计意图ID3918组成。连接图形3906由表示相应要素与其他要素连接的数目的连接数3905、表示相应要素被从其他要素连接的数目的被连接数3907、表示各连接的距离的连接距离3912、表示要素间的连接方向的连接方向3913组成。连接距离3912,相应于连接的方向3908具有IN3919和OUT3920的2场,分别由平均连接距离(AVE)3909、最小连接距离(MIN)3910、最大连接距离(MAX)3911组成。此外,类型3901、描述位置3903、连接图形3906分别具有用于进行一致判定时的条件的加权的一致权重3902、3904、3914。作为一例,表示类型为“函数”、类型的一致权重值为“7”、描述位置为“左中央部”、描述位置的一致权重值为“1”、连接图形的连接数为“2”、被连接数为“4”、连接距离之中的入方向(IN)的平均距离为“1.3”、最小值为“1”、最大值为“2”、出方向“OUT”的平均距离为“2.5”、最小值为“2”、最大值为“3”、连接方向为“下”、连接图形的一致权重值为“2”、一致阈值为“29”、优先级为“2”、代码生成规则ID为“5”、设计意图ID为“8”的情况。
[0101] 图40表示源代码生成规则信息125。源代码生成规则信息125是保存用于将软件模型中描述的要素变换为源代码的信息的表。源代码生成规则信息125由识别代码生成的规则的代码生成规则ID4001、识别在相同的代码生成规则中因开发者的设计意图的不同而产生的生成代码的区别的设计意图ID4002、保存作为源代码输出的代码的模板的生成代码模板4003组成。作为一例,表示代码生成ID为“1”、设计意图ID为“1”、生成代码模板为“class[name]{[reference][body]}”4006的情况。
[0102] 图41表示作为再生成源代码信息128或修正源代码信息129使用的源代码信息。源代码信息128、129由表示对源代码中的块进行识别的序号的块ID4101、表示例如函数名这种的对块附于的名称的名称标签4102、表示块的种类的类型4103、表示源代码中的块的描述位置的描述位置4106、列举出各块与其他块的关联的关联列表4109组成。描述位置
4106由表示块的开始行的开始行4104、表示块的结束行的结束行4105组成。关联列表4109由表示关联目标块的种类的关联种类4107、识别关联目标块的块ID即关联目标块ID4108组成。此外,在没有关联的块的情况下,关联列表中的关联种类4107设定为“无”,关联目标块ID4108设定为“0”。作为一例,表示块ID为“n”、名称标签为[dd_drv]、类型为“函数”、描述位置的开始行为“9788”、描述位置的结束行为“9901”、关联列表的关联种类为“无”、关联列表的关联目标块ID为“0”的情况。
[0103] 图42表示源代码设计意图信息130。源代码设计意图信息130由用于识别源代码中描述的块的块ID4201、对应源代码的块识别软件模型的生成规则的软件模型生成规则ID4202、识别设计意图的数据的设计意图ID4203组成。作为一例,表示块ID为“n”、软件模型生成规则ID为“6”、设计意图ID为“1”的情况。
[0104] 图43表示源代码设计意图提取规则信息126。源代码设计意图提取规则信息126,由识别源代码中描述的块的种类的类型4301、表示源代码中描述的块的描述的特征的描述特性4303、表示块与其他块之间的关联的图形的关联图形4305、用于判定是否与源代码设计意图提取规则一致的阈值即一致阈值4314、表示同样的规则有多个一致时的优先级的优先级4315、识别软件模型生成规则的软件模型生成规则ID4316、识别设计意图的设计意图ID4317组成。关联图形4305由表示相应块与其他块关联的数目的关联数4306、表示各关联的距离的距离4307、表示块间的关联在源代码上前后方向的哪个更强地关联的关联方向4311、利用图44所示的关联种类信息表将各关联的种类变换为数值并形成列表的关联种类4312组成。关联图形4305的距离4307,由距离的平均值(AVE)4308、距离的最小值(MIN)4309、距离的最大值(MAX)4310组成。此外,类型4301、描述特性4303、关联图形4305分别具有用于进行一致判定时的条件的加权的一致权重4302、4304、4313。作为一例,表示类型为“类(class)”、类型的一致权重值为“7”、描述特性为“0.6”、描述特性的一致权重值为“1”、关联图形的连接数为“4”、关联图形的距离的平均值为“1.3”、关联图形的距离的最小值为“1”、关联图形的距离的最大值为“2”、关联图形的关联方向为“前方优先”、关联图形的关联种类为“17、17、17、17”、关联图形的一致权重值为“2”、一致阈值为“29”、优先级为“2”、软件模型生成规则ID为“5”、设计意图ID为“8”的情况。
[0105] 图44表示用于源代码设计意图提取规则信息126的关联种类信息表。关联种类信息表,由识别关联种类的关联种类ID4401、表示关联种类本身的关联种类4402组成。作为一例,表示关联种类ID为“n”、关联种类为“包含”的情况。
[0106] 图45表示软件模型生成规则信息127。软件模型生成规则信息127,是存放用于将源代码中描述的块变换为软件模型的信息的表,由识别软件模型生成规则的软件模型生成规则ID4501、识别即便在相同的软件模型生成规则中因开发者的设计意图不同从而出现的生成软件模型差异的设计意图ID4502、保存作为软件模型输出的软件模型的模板的生成软件模型模板4503组成。作为一例,表示软件模型生成规则ID为“1”、设计意图ID为“1”、生成软件模型模板为图中所示的图形(4506)的情况。
[0107] 图46表示软件模型生成部114的处理流程。软件模型生成部114将修正源代码信息129或再生成源代码信息128、源代码设计意图信息130、保存用于生成软件模型的规则的软件模型生成规则信息127作为输入,输出人工修正源代码120或再生成源代码118所对应的生成软件模型116。
[0108] 首先,读取源代码信息128、129(4601)。接下来,读取源代码设计意图信息130(4602)。接着,读取软件模型输出规则信息127(4603)。然后,针对所有的块ID开始反复处理(4604)。接下来,从源代码设计意图信息130读取当前的块ID所对应的软件模型生成规则ID(4605)。接着,从源代码设计意图信息130读取当前的块ID所对应的设计意图ID(4606)。然后,从软件模型生成规则信息127读取符合规则ID/设计意图ID的生成软件模型模板(4607)。接下来,从源代码信息128、129读取当前的块ID所对应的块名(4608)。
接着,描绘以块名置换生成软件模板中的“[name]”标识位置之后的块(4609)。然后,从源代码信息128、129读取当前的块ID所对应的关联列表(4610)。接下来,针对关联列表中的连接目标开始反复处理(4611)。接着,从源代码信息128、129读取关联目标块ID所对应的块名(4612)。然后,判定相当于相应块名的模型是否已被描绘(4613)。在相当于相应块名的模型已被描绘的情况下,从描绘中的模型中检索相当于相应块名的块(4614)。接下来,按照生成软件模型模板中的模型图形选择连接目标块的空连接口(4615)。接着,将关联线从当前的块连接至已描绘的连接目标块的空连接口(4616)。接下来,返回至步骤4611继续进行反复处理。步骤4617表示步骤4611的反复处理的结束位置。在步骤4613的判定中相当于相应块名的模型尚未描绘的情况下,描绘以名称标签置换了生成软件模型模板中的“[Ref]”或“[callee]”标识位置的块(4619)。然后,追加与生成软件模型模板中的模型图形相应的连接线(4620)。接下来,返回至步骤4611继续进行反复处理。步骤4617表示步骤4611的反复处理的结束位置。此外,步骤4618表示步骤4604的反复处理的结束位置。
[0109] 图47表示软件模型的例子。4701是软件模型的整体架构。4702是软件模型中描绘的一要素。作为一例,在此构造型类型为“module”,名称标签为“GUI_io”,经由连接端口4703以连接线4704连接于作为其他要素的“proc_ctrl”。此外,要素GUI_io是左上部的描述位置。
[0110] 此外,本实施方式中例示的软件模型是以UML为基准的软件模型,但也可以利用采用其他的图形表现的软件模型。此外,所生成的源代码是C语言或C++语言,但即便置换为其他编程语言也能够同样实施。
[0111] 图48表示除了上述本发明的实施方式中的软件开发支持工具101之外还具备输入输出部的系统结构图。在此表示的结构是,开发者131通过输入部4801直接对计算机系统输入软件模型,将自动生成的源代码显示在显示装置(显示部)4802。此外,开发者119也能够通过输入部4804直接对计算机系统输入源代码,而在显示装置(显示部)4803显示自动生成的软件模型。此外,代替显示装置4802也可以使用采用了打印机的纸输出、基于声音合成的朗读输出等。此外,代替输入部4801、4804可以使用文件扫描仪、图像数据输入等。
[0112] 本发明能够从原有的源代码自动生成软件模型,从而即便是大规模的源代码也能够容易获得包含软件开发者设计意图的软件模型,通过进行以软件模型为中心的软件开发,从而作为有助于软件生产性的软件开发支持工具能够广泛应用于一般的软件设计。
[0113] 符号说明:
[0114] 101软件开发支持工具
[0115] 102软件模型读取部
[0116] 103软件模型设计意图提取部
[0117] 104源代码生成部
[0118] 105规则数据库部
[0119] 106软件模型生成规则数据库
[0120] 107软件模型设计意图提取规则数据库
[0121] 108源代码设计意图提取规则数据库
[0122] 109源代码生成规则数据库
[0123] 110数据库更新管理部
[0124] 111规则改良部
[0125] 112源代码读取部
[0126] 113源代码设计意图提取部
[0127] 114软件模型生成部
[0128] 115初始软件模型
[0129] 116生成软件模型
[0130] 117初始生成源代码
[0131] 118再生成源代码
[0132] 119开发者
[0133] 120人工修正源代码
[0134] 121初始软件模型信息
[0135] 122生成软件模型信息
[0136] 123软件模型设计意图信息
[0137] 124软件模型设计意图提取规则信息
[0138] 125源代码生成规则信息
[0139] 126源代码设计意图提取规则信息
[0140] 127软件模型生成规则信息
[0141] 128再生成源代码信息
[0142] 129修正源代码信息
[0143] 130源代码设计意图信息
[0144] 131开发者
[0145] 3701要素ID
[0146] 3702名称标签
[0147] 3703类型
[0148] 3704描述位置
[0149] 3705要素ID
[0150] 3706连接方向
[0151] 3707连接目标要素列表
[0152] 3708被连接目标要素列表
[0153] 3801要素ID
[0154] 3802代码生成规则ID
[0155] 3803设计意图ID
[0156] 3901类型
[0157] 3902类型一致权重
[0158] 3903描述位置
[0159] 3904描述位置一致权重
[0160] 3905连接数
[0161] 3906连接图形
[0162] 3907被连接数
[0163] 3908方向
[0164] 3909AVE
[0165] 3910MIN
[0166] 3911MAX
[0167] 3912连接距离
[0168] 3913连接方向
[0169] 3914连接图形一致权重
[0170] 3915一致阈值
[0171] 3916优先级
[0172] 3917代码生成规则ID
[0173] 3918设计意图ID
[0174] 3919IN
[0175] 3920OUT
[0176] 4001代码生成规则ID
[0177] 4002设计意图ID
[0178] 4003生成代码模板
[0179] 4101块ID
[0180] 4102名称标签
[0181] 4103类型
[0182] 4104开始行
[0183] 4105结束行
[0184] 4106描述位置
[0185] 4107关联种类
[0186] 4108关联目标块ID
[0187] 4109关联列表
[0188] 4201块ID
[0189] 4202软件模型生成规则ID
[0190] 4203设计意图ID
[0191] 4301类型
[0192] 4302类型一致权重
[0193] 4303描述特性
[0194] 4304描述特性一致权重
[0195] 4305关联图形
[0196] 4306关联数
[0197] 4307距离
[0198] 4308AVE
[0199] 4309MIN
[0200] 4310MAX
[0201] 4311关联方向
[0202] 4312关联种类
[0203] 4313关联图形一致权重
[0204] 4314一致阈值
[0205] 4315优先级
[0206] 4316软件模型生成规则ID
[0207] 4317设计意图ID
[0208] 4401关联种类ID
[0209] 4402关联种类
[0210] 4501软件模型生成规则ID
[0211] 4502设计意图ID
[0212] 4503生成软件模型模板
[0213] 4701软件模型的整体构架
[0214] 4702软件模型中描述的一要素
[0215] 4703连接端口
[0216] 4704连接线
[0217] 4801输入部
[0218] 4802显示部
[0219] 4803显示部
[0220] 4804输入部