WO2019171425A1 - ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム - Google Patents

ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム Download PDF

Info

Publication number
WO2019171425A1
WO2019171425A1 PCT/JP2018/008306 JP2018008306W WO2019171425A1 WO 2019171425 A1 WO2019171425 A1 WO 2019171425A1 JP 2018008306 W JP2018008306 W JP 2018008306W WO 2019171425 A1 WO2019171425 A1 WO 2019171425A1
Authority
WO
WIPO (PCT)
Prior art keywords
model
blocks
block
registered
input
Prior art date
Application number
PCT/JP2018/008306
Other languages
English (en)
French (fr)
Inventor
功也 三浦
吉章 片山
Original Assignee
三菱電機株式会社
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 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to PCT/JP2018/008306 priority Critical patent/WO2019171425A1/ja
Publication of WO2019171425A1 publication Critical patent/WO2019171425A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Definitions

  • the present invention relates to a software development support apparatus, a software development support method, and a software development support program.
  • Patent Document 1 discloses a technology for supporting the design work of new software to be newly developed by reusing the source code of the existing software components constituting the existing software that has already been developed.
  • Model-based development is used for embedded devices such as automobiles and household appliances.
  • a block diagram environment such as MATLAB (registered trademark) / Simulink (registered trademark) is used.
  • MATLAB registered trademark
  • Simulink registered trademark
  • model-based development a developer does not write source code directly, but abstractly describes the function of a target program in the form of a “model”. Source code is automatically generated from the model.
  • Non-Patent Document 1 discloses a technique for comparing a model to be investigated with a pre-defined model and automatically creating a library of model descriptions determined to be identical.
  • model-based development When a function that has already been completed in model-based development is reused in another product, the model is reused instead of the source code. It is necessary to improve the readability and reusability of the model in the functional unit so that the model can be easily reused in the functional unit.
  • Subsystemization is to encapsulate a plurality of blocks that are components of a model into one. By making a block group constituting a specific function into a subsystem, a model can be managed in a specific functional unit.
  • Non-Patent Document 1 can automatically copy a model into a library, thereby improving the reusability of the model.
  • the technique described in Non-Patent Document 1 only the subsystems in the model that completely match the processing to be detected are detected. Therefore, the process cannot be detected in the case of a so-called “solid writing” model in which no subsystem exists in the model.
  • a block group that is performing some processing is also not detected. For example, when the model 90 in FIG. 11 is set as a detection target, the subsystem 91 in FIG. 12 is detected for complete matching, but the block group 92 in FIG. 11 and the block groups 93 and 94 in FIG. 13 are not detected. . Therefore, it is not possible to exhaustively detect the same model description existing in the model.
  • the present invention aims to improve the readability of each model reused in software development in terms of function.
  • a software development support apparatus includes: When there are an input model that defines the function of the software to be developed and a registered model that is registered in advance as a model library, the model that defines the software functions divided into multiple blocks is defined in the input model.
  • a model detection unit for detecting a plurality of blocks defined in the registered model from a plurality of blocks; The input model is integrated into one subsystem by modifying the definition of the detection block, which is a plurality of blocks detected by the model detection unit, in the input model in accordance with the definition of the registered model.
  • a model reflection unit for converting into a model to be defined.
  • a plurality of blocks defined in the registered model are detected as detection blocks from a plurality of blocks defined in the input model. Then, the definition of the detection block in the input model is modified according to the definition of the registered model, and the input model is converted into a model that collectively defines the detection blocks in one subsystem. Therefore, according to the present invention, it is possible to improve the readability in units of functions of a model reused in software development.
  • FIG. 2 is a block diagram showing a configuration of a software development support apparatus according to the first embodiment.
  • the block diagram which shows the example of a registration model.
  • the block diagram which shows the example of an input model.
  • the block diagram which shows the example of a model after correction.
  • surface which shows the example of the analysis result of a registration model.
  • 5 is a flowchart showing the operation of the software development support apparatus according to the first embodiment.
  • 5 is a flowchart showing the operation of the software development support apparatus according to the first embodiment.
  • 5 is a flowchart showing the operation of the software development support apparatus according to the first embodiment.
  • 5 is a flowchart showing the operation of the software development support apparatus according to the first embodiment.
  • FIG. 6 is a block diagram showing a configuration of a software development support apparatus according to a modification of the first embodiment.
  • the block diagram which shows the example of a model.
  • Embodiment 1 FIG. This embodiment will be described with reference to FIGS.
  • the software development support device 10 is a computer. Specifically, the software development support apparatus 10 is a PC. “PC” is an abbreviation for Personal Computer.
  • the software development support apparatus 10 includes a processor 11 and other hardware such as a memory 12, a storage 13, an input device 14, and a display 15.
  • the processor 11 is connected to other hardware via a signal line, and controls these other hardware.
  • the software development support apparatus 10 includes a model detection unit 21, a model reflection unit 22, and a code generation unit 23 as functional elements.
  • the functions of the model detection unit 21, the model reflection unit 22, and the code generation unit 23 are realized by software.
  • the processor 11 is a device that executes a software development support program.
  • the software development support program is a program that realizes the functions of the model detection unit 21, the model reflection unit 22, and the code generation unit 23.
  • the processor 11 is a CPU, for example. “CPU” is an abbreviation for Central Processing Unit.
  • the memory 12 and the storage 13 are devices that store software development support programs.
  • the memory 12 is, for example, a RAM, a flash memory, or a combination thereof.
  • RAM is an abbreviation for Random Access Memory.
  • the memory 12 may include a ROM.
  • ROM is an abbreviation for Read Only Memory.
  • the storage 13 is, for example, an HDD, an SSD, or a combination thereof.
  • HDD is an abbreviation for Hard Disk Drive.
  • SSD is an abbreviation for Solid State Drive.
  • the input device 14 is a device operated by the user for inputting data to the software development support program.
  • the input device 14 is, for example, a mouse, a keyboard, a touch panel, or some or all of these combinations.
  • the display 15 is a device that displays data output from the software development support program on the screen.
  • the display 15 is an LCD, for example.
  • LCD is an abbreviation for Liquid Crystal Display.
  • the software development support apparatus 10 may further include a communication device as hardware.
  • the communication device includes a receiver that receives data input to the software development support program and a transmitter that transmits data output from the software development support program.
  • the communication device is, for example, a communication chip or a NIC. “NIC” is an abbreviation for Network Interface Card.
  • the software development support program is loaded from the storage 13 to the memory 12 and executed by the processor 11.
  • the software development support apparatus 10 may include a plurality of processors that replace the processor 11.
  • the plurality of processors share the execution of the software development support program.
  • Each processor is, for example, a CPU.
  • Data, information, signal values, and variable values used, processed, or output by the software development support program are stored in the storage 13, the memory 12, or a register or cache memory in the processor 11.
  • the storage 13 includes a registered model storage unit 31, an input model storage unit 32, a corrected model storage unit 33, and an automatically generated code storage unit 34 as data storage areas.
  • a registered model 41 which is a model for realizing a specific function such as PID control, is stored as a model library as shown in FIG. “PID” is an abbreviation for Proportional-Integral-Differential.
  • the registration model 41 is created as a solid model that does not use a subsystem, but a subsystem may be added as appropriate for each functional unit.
  • an input model 42 which is a model for realizing the functions of the entire system, is stored as shown in FIG.
  • a model having a function equivalent to the PID control of FIG. 2 is configured by a part of processing “Subsystem 2” existing in the subsystem 43.
  • a corrected model 44 which is a model in which a change for improving the readability of the model is reflected by the model reflection unit 22, is stored as shown in FIG.
  • the “pid” subsystem 46 in the corrected subsystem 45 is a block group that has been changed by the model reflection unit 22.
  • the source code automatically generated by the code generation unit 23 is stored.
  • the memory 12 includes a dependency relationship storage unit 24 and a detection result storage unit 25 as data storage areas.
  • the dependency relationship storage unit 24 is an area temporarily created by the model detection unit 21.
  • the dependency relationship storage unit 24 stores the result of analyzing the registration model 41 of the registration model storage unit 31 in a format as shown in FIG.
  • the block ID 51 is a unique ID for each block existing in the registered model 41, and is used to identify all the blocks existing in the model. “ID” is an abbreviation for Identifier.
  • the block type 52 indicates a function realized by each block. For example, a block type 52 of “Gain” indicates that the block multiplies one input value by a specified value and outputs the result.
  • the block name 53 indicates the name set for each block.
  • the input source block ID 54 indicates a block ID of a block that inputs data to the block.
  • the output destination block ID 55 indicates the block ID of the output destination block of the data output from the block.
  • FIG. 5 shows the result of analyzing the registration model 41 of FIG.
  • the detection result storage unit 25 is an area for storing the processing result of the model detection unit 21.
  • the result of detecting the registration model 41 of the registration model storage unit 31 from the input model 42 of the input model storage unit 32 is stored in a format as shown in FIG.
  • the registered model ID 61 is a unique ID of the registered model 41. Different registration model IDs are assigned to different registration models 41.
  • the registered model name 62 is the name of the corresponding registered model 41. That is, the registered model name 62 is the name of the detected registered model 41. Examples of the registered model name 62 include PID control “pid”, three-phase / two-phase conversion “3to2”, and low-pass filter “lpf”.
  • the detection number 63 is a serial number of the block group detected in the input model 42. When a plurality of block groups are extracted for one registered model 41, a different detection number 63 is assigned to each group.
  • the target block 64 is a block constituting the block group indicated by the detection number 63.
  • the target block 64 indicates the position of a block group of the input model 42 that realizes a function equivalent to the registered model 41. For example, “Subsystem2 / Gain1” indicates a block to which a name “Gain1” is assigned and exists in a subsystem whose name is “Subsystem2”.
  • the software development support program is a program that causes the computer to execute the processes performed by the model detection unit 21, the model reflection unit 22, and the code generation unit 23 as a model detection process, a model reflection process, and a code generation process, respectively.
  • the software development support program may be provided by being recorded on a computer-readable medium, may be provided by being stored in a recording medium, or may be provided as a program product.
  • the model detection unit 21 is a functional unit that detects whether or not the model read from the registered model storage unit 31 exists in the input model storage unit 32.
  • the detection result is stored in the detection result storage unit 25.
  • the model reflection unit 22 is a functional unit that improves the readability of the model stored in the input model storage unit 32 based on the detection result stored in the detection result storage unit 25.
  • the model with improved readability is stored in the corrected model storage unit 33.
  • the code generation unit 23 is a functional unit that automatically generates a source code from a model stored in the corrected model storage unit 33.
  • a code generation tool for example, Embedded Coder, which is an optional module of MATLAB (registered trademark) / Simulink (registered trademark), can be used.
  • the software development support apparatus 10 may be composed of a single computer or a plurality of computers.
  • the functions of the model detection unit 21, the model reflection unit 22, and the code generation unit 23 may be distributed and realized in each computer.
  • the model detection unit 21 stores the result of analyzing all the registered models 41 stored in the registered model storage unit 31 in the dependency relationship storage unit 24 in advance.
  • the model detection unit 21 performs analysis including the inside of the subsystem.
  • the model detection unit 21 detects a plurality of blocks defined by the registration model 41 from a plurality of blocks defined by the input model 42.
  • Each of the registration model 41 and the input model 42 is a model that defines software functions divided into a plurality of blocks.
  • the registered model 41 is a model registered in advance as a model library.
  • the input model 42 is a model that defines functions of software to be developed.
  • the registration model 41 and the input model 42 are models that define the types of individual blocks according to functions and the dependency relationships between the blocks.
  • the model detection unit 21 matches the types of individual blocks with the blocks defined in the registered model 41 from among the blocks defined in the input model 42, and the dependencies between the blocks match. A combination of blocks is detected as a detection block.
  • the model detection unit 21 stores the input model 42 in the input model 42 from the registration model 41 stored in the registration model storage unit 31 and the result stored in the dependency storage unit 24 by the flow shown in FIG. An existing registration model 41 is detected.
  • step S111 the model detection unit 21 selects an initial block that is a block for starting detection processing.
  • the initial block is determined by selecting one arbitrary block from the block group stored in the dependency relationship storage unit 24.
  • the block to be selected may be determined in advance according to a certain rule, or may be determined by some method when the process of step S111 is executed.
  • step S112 the model detection unit 21 acquires the block ID 51 of the initial block selected in step S111. At the same time, the model detection unit 21 determines the block type 52 of the initial block selected in step S111.
  • step S113 the model detection unit 21 extracts the context of the block selected in step S111 or step S116.
  • the context is extracted by determining the block type 52 between the input source block and the output destination block of the block selected in step S111 or step S116.
  • the model detection unit 21 uses the block ID 51 acquired in step S112 or searches the dependency storage unit 24 using the input source block ID 54 or the output destination block ID 55 acquired in the previous step S113 as the block ID 51. Thereby, the model detection unit 21 specifies the input source block ID 54 and the output destination block ID 55 of the block selected in step S111 or step S116.
  • the model detection unit 21 selects the input source block of the selected block by searching the dependency relationship storage unit 24 again using the input source block ID 54 and the output destination block ID 55 as the block ID 51.
  • the block type 52 with the output destination block of the block is determined.
  • the model detection unit 21 determines the block type 52 of the input source block and the output destination block by searching the dependency relationship storage unit 24 twice.
  • the block type of the input source block and the output destination block may be determined by one search.
  • a format of such a dependency relationship storage unit 24 a format in which the block ID 51 is also provided with block type information of the input source block and the output destination block can be used.
  • step S114 the model detection unit 21 extracts from the input model 42 a block group having a connection relationship equivalent to the connection relationship between the block selected in step S111 or step S116 and the block extracted in step S113.
  • the model detection unit 21 sets the “Gain” and then the “Integrator”. ”, And thereafter, a block group to which“ Add ”is connected is extracted from the input model 42.
  • the input port of the block 7 “In” and the output port of the block 8 “Out” in the registered model 41 are connected to an arbitrary block outside the registered model 41 when actually incorporated in the model, and therefore arbitrary. Is treated as a block. That is, in the case of the block 7 “In” in FIG. 5, the model detection unit 21 selects a block group to which an arbitrary block, and then the block 1 “Gain”, the block 2 “Gain”, and the block 3 “Gain” are connected. Extract. In the case of block 8 “Out” in FIG. 5, the model detection unit 21 extracts block 6 “Add” and then a block group to which an arbitrary block is connected.
  • step S114 when the process of step S114 is executed a plurality of times, the extraction range is expanded to the blocks whose input source or output destination has not been determined among the blocks extracted in step S114. For example, after block 1 is selected in step S111, when the process in step S114 is executed for the first time, an arbitrary block is extracted, followed by block 1 and then a block group to which block 6 is connected. Is done. At this time, the output destination of the block 6 has not been determined. When the process of step S114 is executed for the second time, an arbitrary block is extracted, followed by block 1, block 4 and block 5, block 6 after block 1, and then a block group to which the arbitrary block is connected Is done. At this time, the input sources of the block 4 and the block 5 are undecided.
  • step S115 the model detection unit 21 confirms the presence or absence of the extraction result in step S114. If there is no extraction result, there is no block group that realizes the corresponding connection, so the model detection unit 21 ends the detection process at that time. If there is an extraction result, the model detection unit 21 proceeds to step S116.
  • step S116 the model detection unit 21 confirms whether there is a block whose input source or output destination has not been determined in the portion extracted in step S114. If there is a block whose input source or output destination is undetermined, since there is a further connected block in the input source block or output destination block, the model detection unit 21 returns to step S113 and performs the same processing. . When there is no block whose input source or output destination has not been determined, the model detection unit 21 proceeds to step S117.
  • step S117 the model detection unit 21 stores the model information extracted in step S114 in the detection result storage unit 25.
  • step S120 the model reflection unit 22 converts the input model 42 into the corrected model 44 by correcting the detection block definition in the input model 42 along the definition of the registered model 41.
  • the detection block is a plurality of blocks detected by the model detection unit 21.
  • the corrected model 44 is a model in which the detection blocks are collectively defined in one subsystem 46.
  • the model reflection unit 22 improves the readability of the model stored in the input model storage unit 32 based on the result stored in the detection result storage unit 25 according to the flow shown in FIG.
  • the data is stored in the corrected model storage unit 33.
  • the following four approaches are taken to improve readability.
  • Procedure 1 The detected block group is made into the subsystem 46.
  • Procedure 2 The registered model name 62 is given as a prefix to the name of the block group constituting the subsystem 46 created in Procedure 1.
  • Procedure 3 The input / output data name of the subsystem 46 created in procedure 1 is used as the input / output data name of the registered model 41.
  • Procedure 4 The name of the subsystem 46 created in Procedure 1 is set as the registered model name 62.
  • step S121 the model reflection unit 22 selects the registered model ID 61.
  • the ID to be selected may be determined in advance according to a certain rule, or may be determined by some method when the process of step S121 is executed.
  • step S122 the model reflection unit 22 selects the detection number 63 corresponding to the registered model ID 61.
  • the number to be selected may be determined in advance according to a certain rule, or may be determined by some method when the process of step S122 is executed.
  • step S123 the model reflection unit 22 extracts all target blocks 64 specified by the registered model ID 61 and the detection number 63.
  • These target blocks 64 are a group of blocks that are targets of model readability improvement.
  • step S124 the model reflection unit 22 converts the target block 64 extracted in step S123 into a subsystem.
  • MATLAB® / Simulink registered trademark
  • Simulink BlockDiagram
  • a function called createSubsystem () can be used.
  • subsystems that completely match the registered model 41 including the input / output ports are already appropriately subsystems in functional units, and are therefore excluded from subsystems.
  • step S125 the model reflection unit 22 improves the readability of the model by changing the property of the block converted into the subsystem in step S124.
  • a function called set_param () of MATLAB (registered trademark) / simlink (registered trademark) can be used.
  • step S126 if the process has not been completed for all the detection numbers 63, the model reflection unit 22 returns to step S122. If completed, the model reflection unit 22 proceeds to step S127.
  • step S127 if the processing has not been completed for all the registered model IDs 61, the model reflection unit 22 returns to step S121. If finished, the process of the model reflection unit 22 is finished.
  • step S130 the code generation unit 23 generates the source code of the software to be developed from the corrected model 44 that is the model converted by the model reflection unit 22.
  • the name of each block of the detection block in the input model 42 is corrected to the name including the name of the registered model 41 by the model reflection unit 22. Specifically, the name of the registered model 41 is added to the name of each block of the detection block in the input model 42 as a prefix.
  • the code generation unit 23 applies the name corrected by the model reflection unit 22 to the location corresponding to each block of the detection block in the source code.
  • a plurality of blocks defined by the registration model 41 are detected from a plurality of blocks defined by the input model 42. Then, the definition of the detection block in the input model 42 is modified in accordance with the definition of the registration model 41, and the input model 42 is converted into a model that collectively defines the detection blocks in one subsystem. Therefore, according to the present embodiment, it is possible to improve the readability in units of functions of the model reused in software development.
  • Effect 1 The readability of the model can be improved without affecting the operation. In other words, it is possible to improve the readability of the model by appropriately creating a subsystem for each functional unit and naming each block of the functional unit.
  • Effect 2 The readability of automatically generated source code can be improved. That is, when generating the source code from the model, the code generation tool refers to the property of the block and performs processing such as variable name determination and functionalization. According to the present embodiment, since the block property can be changed for each function, source code named in units of functions can also be generated. Therefore, the readability of the source code can be improved together with the readability of the model.
  • a detection target model is searched based on a pre-defined model. Based on the detection result, automatic conversion to a more readable model is performed. The readability of the model can be improved without newly describing a naming convention.
  • source code is automatically generated based on a description with a higher abstraction level than the source code.
  • the readability of the automatically generated source code can be improved without modifying the code generation tool.
  • the present embodiment it is possible to detect a block group constituting a specific functional unit without limiting to a subsystem, and refactor the model based on the detection result, thereby improving the readability of the model. Can be improved.
  • the functions of the model detection unit 21, the model reflection unit 22, and the code generation unit 23 are realized by software.
  • the functions of the model detection unit 21, the model reflection unit 22, and the code generation unit 23 are implemented. May be realized by hardware. About this modification, the difference with this Embodiment is mainly demonstrated.
  • the software development support apparatus 10 includes hardware such as an electronic circuit 19, a storage 13, an input device 14, and a display 15.
  • the electronic circuit 19 is dedicated hardware for realizing the functions of the model detection unit 21, the model reflection unit 22, and the code generation unit 23.
  • the electronic circuit 19 is, for example, a single circuit, a composite circuit, a programmed processor, a parallel programmed processor, a logic IC, a GA, an FPGA, an ASIC, or some or all of these.
  • IC is an abbreviation for Integrated Circuit.
  • GA is an abbreviation for Gate Array.
  • FPGA is an abbreviation for Field-Programmable Gate Array.
  • ASIC is an abbreviation for Application Specific Integrated Circuit.
  • the software development support apparatus 10 may include a plurality of electronic circuits that replace the electronic circuit 19.
  • the plurality of electronic circuits implement the functions of the model detection unit 21, the model reflection unit 22, and the code generation unit 23 as a whole.
  • Each electronic circuit is, for example, a single circuit, a composite circuit, a programmed processor, a parallel programmed processor, a logic IC, a GA, an FPGA, an ASIC, or some or all of these combinations .
  • the functions of the model detection unit 21, the model reflection unit 22, and the code generation unit 23 may be realized by a combination of software and hardware. That is, some of the functions of the model detection unit 21, the model reflection unit 22, and the code generation unit 23 may be realized by dedicated hardware, and the rest may be realized by software.
  • Both the processor 11 and the electronic circuit 19 are processing circuits. That is, regardless of the configuration of the software development support apparatus 10 shown in FIGS. 1 and 10, the operations of the model detection unit 21, the model reflection unit 22, and the code generation unit 23 are performed by the processing circuit.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

ソフトウェア開発支援装置(10)において、モデル検出部(21)は、入力モデルで定義されている複数ブロックの中から、登録モデルで定義されている複数ブロックを検出する。登録モデルおよび入力モデルは、いずれもソフトウェアの機能を複数ブロックに分けて定義するモデルである。登録モデルは、モデルライブラリとしてあらかじめ登録されているモデルである。入力モデルは、開発対象のソフトウェアの機能を定義するモデルである。モデル反映部(22)は、入力モデルにおける検出ブロックの定義を登録モデルの定義に沿って修正することで、入力モデルを修正後モデルに変換する。検出ブロックとは、モデル検出部(21)により検出された複数ブロックのことである。修正後モデルは、この検出ブロックを1つのサブシステムにまとめて定義するモデルである。

Description

ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム
 本発明は、ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラムに関するものである。
 特許文献1には、すでに開発が終了した既存ソフトウェアを構成する既存ソフトウェア部品のソースコードを再利用して、新たに開発する新規ソフトウェアの設計作業を支援する技術が開示されている。
 自動車および生活家電等の組込機器には、モデルベース開発が用いられる。モデルベース開発では、MATLAB(登録商標)/Simulink(登録商標)等のブロック線図環境が用いられる。モデルベース開発では、開発者は、直接ソースコードを記述せず、目的とするプログラムの機能を「モデル」という形で抽象的に記述する。ソースコードは、モデルから自動生成される。
 非特許文献1には、調査対象のモデルと事前に定義されたモデルとを比較し、同一と判定されたモデル記述を自動でライブラリ化する技術が開示されている。
特開2001-188673号公報
"Simulink Check User’s Guide", The MathWorks, Inc., September 2017
 モデルベース開発にてすでに開発が終了した機能が他製品に再利用される場合は、ソースコードではなくモデルが再利用される。モデルを機能単位で容易に再利用できるようにするため、機能単位でのモデルの可読性および再利用性を向上させることが必要である。
 モデルの可読性を向上させるための手法として、サブシステム化と呼ばれる手法がある。サブシステム化とは、モデルの構成要素である複数のブロックを1つにまとめてカプセル化することである。特定の機能を構成するブロック群をサブシステム化することで、特定の機能単位でモデルを管理することができる。
 非特許文献1に記載の技術では、モデルのコピーを自動でライブラリ化できるため、モデルの再利用性が向上する。しかし、非特許文献1に記載の技術では、検出対象とする処理と完全に一致するモデル内のサブシステムのみが検出される。そのため、モデル内にサブシステムが存在しない、いわゆる「ベタ書き」のモデルの場合は処理を検出できない。検出対象とする処理に加えて、何らかの処理をしているブロック群も検出の対象外である。例えば、図11のモデル90を検出対象とした場合、図12のサブシステム91は完全一致のため検出されるが、同図のブロック群92、および、図13のブロック群93,94は検出されない。よって、モデル内に存在する同一のモデル記述を網羅的に検出することはできない。
 本発明は、ソフトウェア開発で再利用されるモデルの、機能単位での可読性を向上させることを目的とする。
 本発明の一態様に係るソフトウェア開発支援装置は、
 ソフトウェアの機能を複数ブロックに分けて定義するモデルとして、開発対象のソフトウェアの機能を定義する入力モデルと、モデルライブラリとしてあらかじめ登録されている登録モデルとがあるとき、前記入力モデルで定義されている複数ブロックの中から、前記登録モデルで定義されている複数ブロックを検出するモデル検出部と、
 前記入力モデルにおける、前記モデル検出部により検出された複数ブロックである検出ブロックの定義を前記登録モデルの定義に沿って修正することで、前記入力モデルを、前記検出ブロックを1つのサブシステムにまとめて定義するモデルに変換するモデル反映部と
を備える。
 本発明では、入力モデルで定義されている複数ブロックの中から、登録モデルで定義されている複数ブロックが検出ブロックとして検出される。そして、入力モデルにおける検出ブロックの定義が登録モデルの定義に沿って修正されて、入力モデルが、検出ブロックを1つのサブシステムにまとめて定義するモデルに変換される。そのため、本発明によれば、ソフトウェア開発で再利用されるモデルの、機能単位での可読性を向上させることができる。
実施の形態1に係るソフトウェア開発支援装置の構成を示すブロック図。 登録モデルの例を示すブロック線図。 入力モデルの例を示すブロック線図。 修正後モデルの例を示すブロック線図。 登録モデルの解析結果の例を示す表。 登録モデルの検出結果の例を示す表。 実施の形態1に係るソフトウェア開発支援装置の動作を示すフローチャート。 実施の形態1に係るソフトウェア開発支援装置の動作を示すフローチャート。 実施の形態1に係るソフトウェア開発支援装置の動作を示すフローチャート。 実施の形態1の変形例に係るソフトウェア開発支援装置の構成を示すブロック図。 モデルの例を示すブロック線図。 モデルの例を示すブロック線図。 モデルの例を示すブロック線図。
 以下、本発明の実施の形態について、図を用いて説明する。各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。なお、本発明は、以下に説明する実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。例えば、以下に説明する実施の形態は、部分的に実施されても構わない。
 実施の形態1.
 本実施の形態について、図1から図9を用いて説明する。
 ***構成の説明***
 図1を参照して、本実施の形態に係るソフトウェア開発支援装置10の構成を説明する。
 ソフトウェア開発支援装置10は、コンピュータである。ソフトウェア開発支援装置10は、具体的には、PCである。「PC」は、Personal Computerの略語である。ソフトウェア開発支援装置10は、プロセッサ11を備えるとともに、メモリ12、ストレージ13、入力機器14およびディスプレイ15といった他のハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
 ソフトウェア開発支援装置10は、機能要素として、モデル検出部21と、モデル反映部22と、コード生成部23とを備える。モデル検出部21、モデル反映部22およびコード生成部23の機能は、ソフトウェアにより実現される。
 プロセッサ11は、ソフトウェア開発支援プログラムを実行する装置である。ソフトウェア開発支援プログラムは、モデル検出部21、モデル反映部22およびコード生成部23の機能を実現するプログラムである。プロセッサ11は、例えば、CPUである。「CPU」は、Central Processing Unitの略語である。
 メモリ12およびストレージ13は、ソフトウェア開発支援プログラムを記憶する装置である。メモリ12は、例えば、RAM、フラッシュメモリまたはこれらの組み合わせである。「RAM」は、Random Access Memoryの略語である。メモリ12には、ROMが含まれていてもよい。「ROM」は、Read Only Memoryの略語である。ストレージ13は、例えば、HDD、SSDまたはこれらの組み合わせである。「HDD」は、Hard Disk Driveの略語である。「SSD」は、Solid State Driveの略語である。
 入力機器14は、ソフトウェア開発支援プログラムへのデータの入力のためにユーザにより操作される機器である。入力機器14は、例えば、マウス、キーボード、タッチパネル、または、これらのうちいくつか、もしくは、すべての組み合わせである。
 ディスプレイ15は、ソフトウェア開発支援プログラムから出力されるデータを画面に表示する機器である。ディスプレイ15は、例えば、LCDである。「LCD」は、Liquid Crystal Displayの略語である。
 ソフトウェア開発支援装置10は、ハードウェアとして、通信デバイスをさらに備えていてもよい。
 通信デバイスは、ソフトウェア開発支援プログラムに入力されるデータを受信するレシーバと、ソフトウェア開発支援プログラムから出力されるデータを送信するトランスミッタとを含む。通信デバイスは、例えば、通信チップまたはNICである。「NIC」は、Network Interface Cardの略語である。
 ソフトウェア開発支援プログラムは、ストレージ13からメモリ12にロードされ、プロセッサ11によって実行される。
 ソフトウェア開発支援装置10は、プロセッサ11を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、ソフトウェア開発支援プログラムの実行を分担する。それぞれのプロセッサは、例えば、CPUである。
 ソフトウェア開発支援プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、ストレージ13、メモリ12、または、プロセッサ11内のレジスタまたはキャッシュメモリに記憶される。
 ストレージ13には、データの格納領域として、登録モデル格納部31と、入力モデル格納部32と、修正後モデル格納部33と、自動生成コード格納部34とが含まれる。
 登録モデル格納部31には、PID制御等、特定の機能を実現するモデルである登録モデル41が、図2のようにモデルライブラリとして格納されている。「PID」は、Proportional-Integral-Differentialの略語である。図2の例では、登録モデル41を、サブシステムを使わないベタ書きのモデルとして作成しているが、機能単位で適宜サブシステムを追加してもよい。
 入力モデル格納部32には、システム全体の機能を実現するモデルである入力モデル42が、図3のように格納されている。図3の例では、「Subsystem2」というサブシステム43内に存在する一部の処理にて、図2のPID制御と同等の機能を有するモデルが構成されている。
 修正後モデル格納部33には、モデル反映部22でモデルの可読性向上に向けた変更が反映されたモデルである修正後モデル44が、図4のように格納される。図4の例では、修正後のサブシステム45中の「pid」サブシステム46が、モデル反映部22にて変更が加えられたブロック群である。
 自動生成コード格納部34には、コード生成部23にて自動生成されたソースコードが格納される。
 メモリ12には、データの格納領域として、依存関係格納部24と、検出結果格納部25とが含まれる。
 依存関係格納部24は、モデル検出部21にて一時的に作成される領域である。依存関係格納部24には、登録モデル格納部31の登録モデル41を解析した結果が、図5のような形式で格納される。ブロックID51は、登録モデル41内に存在するブロックごとに一意のIDであり、モデル内に存在するすべてのブロックを識別するのに利用される。「ID」は、Identifierの略語である。ブロック種別52は、各ブロックが実現する機能を示す。例えば、「Gain」というブロック種別52は、そのブロックが、1つの入力値に指定された値を乗じて出力することを示す。ブロック名53は、各ブロックに設定された名前を示す。入力元ブロックID54は、そのブロックへデータを入力するブロックのブロックIDを示す。出力先ブロックID55は、そのブロックから出力されたデータの出力先ブロックのブロックIDを示す。なお、図5は、図2の登録モデル41を解析した結果を示している。
 検出結果格納部25は、モデル検出部21の処理結果を格納する領域である。検出結果格納部25には、入力モデル格納部32の入力モデル42から登録モデル格納部31の登録モデル41を検出した結果が、図6のような形式で格納される。登録モデルID61は、登録モデル41の固有のIDである。異なる登録モデル41には、異なる登録モデルIDが付与される。登録モデル名62は、対応する登録モデル41の名称である。すなわち、登録モデル名62は、検出された登録モデル41の名称である。登録モデル名62の例として、PID制御「pid」、3相2相変換「3to2」、および、ローパスフィルタ「lpf」がある。検出番号63は、入力モデル42内で検出されたブロック群の連番である。1つの登録モデル41に対して複数のブロック群が抽出された場合は、それぞれに異なる検出番号63が付与される。対象ブロック64は、検出番号63で示されるブロック群を構成するブロックである。対象ブロック64は、登録モデル41と同等の機能を実現する、入力モデル42のブロック群の位置を示す。例えば、「Subsystem2/Gain1」は、名称が「Subsystem2」であるサブシステム内に存在する、「Gain1」という名称が割り当てられたブロックを示す。
 ソフトウェア開発支援プログラムは、モデル検出部21、モデル反映部22およびコード生成部23により行われる処理をそれぞれモデル検出処理、モデル反映処理およびコード生成処理としてコンピュータに実行させるプログラムである。ソフトウェア開発支援プログラムは、コンピュータ読取可能な媒体に記録されて提供されてもよいし、記録媒体に格納されて提供されてもよいし、プログラムプロダクトとして提供されてもよい。
 モデル検出部21は、登録モデル格納部31から読み出したモデルが、入力モデル格納部32に存在するか否かを検出する機能部である。検出結果は、検出結果格納部25に保存される。
 モデル反映部22は、検出結果格納部25に格納された検出結果をもとに、入力モデル格納部32に格納されたモデルの可読性を向上させる機能部である。可読性が改善されたモデルは、修正後モデル格納部33に保存される。
 コード生成部23は、修正後モデル格納部33に格納されたモデルからソースコードを自動生成する機能部である。コード生成ツールとして、例えば、MATLAB(登録商標)/Simulink(登録商標)のオプションモジュールであるEmbedded Coderを用いることができる。
 ソフトウェア開発支援装置10は、1台のコンピュータで構成されていてもよいし、複数台のコンピュータで構成されていてもよい。ソフトウェア開発支援装置10が複数台のコンピュータで構成されている場合は、モデル検出部21、モデル反映部22およびコード生成部23の機能が、各コンピュータに分散されて実現されてもよい。
 ***動作の説明***
 図7を参照して、本実施の形態に係るソフトウェア開発支援装置10の動作を説明する。ソフトウェア開発支援装置10の動作は、本実施の形態に係るソフトウェア開発支援方法に相当する。
 モデル検出部21は、事前に、登録モデル格納部31に格納された全登録モデル41を解析した結果を、依存関係格納部24に格納する。モデル検出部21は、登録モデル41にサブシステムが存在する場合は、サブシステム内部を含めて解析を行う。
 ステップS110において、モデル検出部21は、入力モデル42で定義されている複数ブロックの中から、登録モデル41で定義されている複数ブロックを検出する。登録モデル41および入力モデル42は、いずれもソフトウェアの機能を複数ブロックに分けて定義するモデルである。登録モデル41は、モデルライブラリとしてあらかじめ登録されているモデルである。入力モデル42は、開発対象のソフトウェアの機能を定義するモデルである。
 本実施の形態では、登録モデル41および入力モデル42は、機能に応じた個別のブロックの種別と、ブロック間の依存関係とを定義するモデルである。モデル検出部21は、入力モデル42で定義されている複数ブロックの中から、登録モデル41で定義されている複数ブロックと個別のブロックの種別が一致し、かつ、ブロック間の依存関係が一致するブロックの組み合わせを検出ブロックとして検出する。
 具体的には、モデル検出部21は、図8に示すフローによって、登録モデル格納部31に格納された登録モデル41と、依存関係格納部24に格納された結果とから、入力モデル42内に存在する登録モデル41を検出する。
 ステップS111において、モデル検出部21は、検出処理を開始するブロックである初期ブロックを選択する。初期ブロックは、依存関係格納部24に格納されたブロック群から任意のブロックを1つ選択することで決定される。選択するブロックは、あらかじめ一定のルールで決めておいてもよいし、ステップS111の処理が実行されるときに何らかの方法で決めてもかまわない。
 ステップS112において、モデル検出部21は、ステップS111で選択した初期ブロックのブロックID51を取得する。モデル検出部21は、同時に、ステップS111で選択した初期ブロックのブロック種別52を判別する。
 ステップS113において、モデル検出部21は、ステップS111またはステップS116で選択したブロックの前後関係を抽出する。前後関係は、ステップS111またはステップS116で選択したブロックの入力元ブロックと出力先ブロックとのブロック種別52を判別することで抽出される。モデル検出部21は、ステップS112で取得したブロックID51を用いるか、または、前回のステップS113で取得した入力元ブロックID54もしくは出力先ブロックID55をブロックID51として用いて依存関係格納部24を検索する。これにより、モデル検出部21は、ステップS111またはステップS116で選択したブロックの入力元ブロックID54および出力先ブロックID55を特定する。その後、モデル検出部21は、入力元ブロックID54および出力先ブロックID55をブロックID51として用いて再度依存関係格納部24を検索することで、選択しているブロックの入力元ブロックと、選択しているブロックの出力先ブロックとのブロック種別52を判別する。なお、モデル検出部21は、本実施の形態では、依存関係格納部24を2度検索することで入力元ブロックおよび出力先ブロックのブロック種別52を判別しているが、依存関係格納部24の形式を変更することにより、1度の検索で入力元ブロックおよび出力先ブロックのブロック種別を判別するようにしてもよい。そのような依存関係格納部24の形式として、ブロックID51に入力元ブロックおよび出力先ブロックのブロック種別の情報を併せて持たせる形式を用いることができる。
 ステップS114において、モデル検出部21は、ステップS111またはステップS116で選択したブロックとステップS113で抽出したブロックとの接続関係と同等の接続関係を持つブロック群を入力モデル42から抽出する。例えば、図5のブロック4「Integrator」の場合、入力元ブロックはブロック2「Gain」、出力先ブロックはブロック6「Add」であるため、モデル検出部21は、「Gain」、その後に「Integrator」、その後に「Add」が接続しているブロック群を入力モデル42から抽出する。なお、登録モデル41内のブロック7「In」の入力ポートおよびブロック8「Out」の出力ポートは、実際にモデルに組み込まれる場合には登録モデル41外の任意のブロックと接続されるため、任意のブロックとして扱われる。つまり、図5のブロック7「In」の場合、モデル検出部21は、任意のブロック、その後にブロック1「Gain」、ブロック2「Gain」およびブロック3「Gain」が接続しているブロック群を抽出する。図5のブロック8「Out」の場合、モデル検出部21は、ブロック6「Add」、その後に任意のブロックが接続しているブロック群を抽出する。
 後述する条件判定の結果、ステップS114の処理が複数回実行される場合は、それまでにステップS114で抽出されたブロックのうち、入力元または出力先が決まっていないブロックまで抽出範囲が広げられる。例えば、ステップS111にてブロック1が選択された後、1回目のステップS114の処理が実行されたときは、任意のブロック、その後にブロック1、その後にブロック6が接続しているブロック群が抽出される。この時点では、ブロック6の出力先は未決定である。2回目のステップS114の処理が実行されたときは、任意のブロック、その後にブロック1、ブロック4およびブロック5、ブロック1の後にブロック6、その後に任意のブロックが接続しているブロック群が抽出される。この時点では、ブロック4およびブロック5の入力元は未決定である。
 ステップS115において、モデル検出部21は、ステップS114の抽出結果の有無を確認する。抽出結果がない場合は、該当する接続を実現しているブロック群が存在しないため、モデル検出部21は、その時点で検出処理を終了する。抽出結果がある場合は、モデル検出部21は、ステップS116へ進む。
 ステップS116において、モデル検出部21は、ステップS114で抽出した部分に、入力元または出力先が未決定のブロックがあるかを確認する。入力元または出力先が未決定のブロックがある場合は、入力元ブロックまたは出力先ブロックに、さらに接続しているブロックが存在するため、モデル検出部21は、ステップS113に戻り同様の処理を行う。入力元または出力先が未決定のブロックがない場合は、モデル検出部21は、ステップS117へ進む。
 ステップS117において、モデル検出部21は、ステップS114で抽出したモデルの情報を検出結果格納部25に保存する。
 モデル検出部21の処理が終了すると、モデル反映部22の処理が開始する。
 ステップS120において、モデル反映部22は、入力モデル42における検出ブロックの定義を登録モデル41の定義に沿って修正することで、入力モデル42を修正後モデル44に変換する。検出ブロックとは、モデル検出部21により検出された複数ブロックのことである。修正後モデル44は、この検出ブロックを1つのサブシステム46にまとめて定義するモデルである。
 具体的には、モデル反映部22は、図9に示すフローによって、検出結果格納部25に格納された結果をもとにして、入力モデル格納部32に格納されたモデルの可読性を改善し、修正後モデル格納部33に格納する。可読性を改善するために、以下の4つのアプローチが行われる。
 手順1:検出されたブロック群をサブシステム46にする。
 手順2:手順1で作成したサブシステム46を構成するブロック群の名称に、登録モデル名62をプレフィックスとして付与する。
 手順3:手順1で作成したサブシステム46の入出力データ名を、登録モデル41の入出力データ名とする。
 手順4:手順1で作成したサブシステム46の名称を、登録モデル名62とする。
 ステップS121において、モデル反映部22は、登録モデルID61を選択する。選択するIDは、あらかじめ一定のルールで決めておいてもよいし、ステップS121の処理が実行されるときに何らかの方法で決めてもかまわない。
 ステップS122において、モデル反映部22は、登録モデルID61に対応する検出番号63を選択する。選択する番号は、あらかじめ一定のルールで決めておいてもよいし、ステップS122の処理が実行されるときに何らかの方法で決めてもかまわない。
 ステップS123において、モデル反映部22は、登録モデルID61および検出番号63により指定されたすべての対象ブロック64を抽出する。これらの対象ブロック64が、モデル可読性向上の対象となるブロック群である。
 ステップS124において、モデル反映部22は、ステップS123で抽出した対象ブロック64をサブシステム化する。サブシステム化には、MATLAB(登録商標)/Simulink(登録商標)のSimulink.BlockDiagram.createSubsystem()と呼ばれる関数を用いることができる。このとき、入出力ポートを含めて登録モデル41と完全一致するサブシステムは、すでに機能単位で適切にサブシステムになっているため、サブシステム化対象から除外される。
 ステップS125において、モデル反映部22は、ステップS124でサブシステム化したブロックのプロパティを変更することで、モデルの可読性を向上させる。プロパティの変更には、MATLAB(登録商標)/Simulink(登録商標)のset_param()と呼ばれる関数を用いることができる。
 ステップS126において、すべての検出番号63について処理が終了していなければ、モデル反映部22は、ステップS122へ戻る。終了していれば、モデル反映部22は、ステップS127へ進む。
 ステップS127において、すべての登録モデルID61について処理が終了していなければ、モデル反映部22は、ステップS121へ戻る。終了していれば、モデル反映部22の処理が終了する。
 モデル反映部22の処理が終了すると、コード生成部23の処理が開始する。
 ステップS130において、コード生成部23は、モデル反映部22による変換後のモデルである修正後モデル44から、開発対象のソフトウェアのソースコードを生成する。
 本実施の形態では、修正後モデル44では、モデル反映部22により、入力モデル42における検出ブロックの各ブロックの名称が、登録モデル41の名称を含む名称に修正されている。具体的には、入力モデル42における検出ブロックの各ブロックの名称に、登録モデル41の名称がプレフィックスとして付加されている。コード生成部23は、ソースコードにおいて検出ブロックの各ブロックに対応する箇所に、このモデル反映部22による修正後の名称を適用する。
 ***実施の形態の効果の説明***
 本実施の形態では、入力モデル42で定義されている複数ブロックの中から、登録モデル41で定義されている複数ブロックが検出される。そして、入力モデル42における検出ブロックの定義が登録モデル41の定義に沿って修正されて、入力モデル42が、検出ブロックを1つのサブシステムにまとめて定義するモデルに変換される。そのため、本実施の形態によれば、ソフトウェア開発で再利用されるモデルの、機能単位での可読性を向上させることができる。
 本実施の形態では、モデルの検出結果をもとにして機能単位でモデルをサブシステムにまとめ、ブロック名を変更することで、以下の2つの効果が期待できる。
 効果1:動作に影響を与えることなくモデルの可読性を向上させることができる。すなわち、機能単位で適切にサブシステムを作成し、機能単位の各ブロックに命名することにより、モデルの可読性を向上させることができる。
 効果2:自動生成されるソースコードの可読性を向上させることができる。すなわち、モデルからソースコードを生成する際、コード生成ツールはブロックのプロパティを参照し、変数名決定および関数化といった処理をする。本実施の形態によれば、機能ごとにブロックのプロパティを変更できるため、機能単位で命名されたソースコードも生成できる。よって、モデルの可読性に併せて、ソースコードの可読性も向上させることができる。
 本実施の形態では、事前に定義されたモデルをもとにして、検出対象のモデルが検索される。検出結果をもとに、より可読性の高いモデルへの自動変換が行われる。新規に命名規則を記載することなく、モデルの可読性を向上させることができる。
 本実施の形態では、ソースコードよりも抽象度の高い記述をもとに、ソースコードが自動生成される。コード生成ツールに手を加えることなく、自動生成されるソースコードの可読性を向上させることができる。
 本実施の形態によれば、サブシステムに限定することなく、特定の機能単位を構成するブロック群の検出を実現し、検出結果をもとにしてモデルのリファクタリングをすることで、モデルの可読性を向上させることができる。
 ***他の構成***
 本実施の形態では、モデル検出部21、モデル反映部22およびコード生成部23の機能がソフトウェアにより実現されるが、変形例として、モデル検出部21、モデル反映部22およびコード生成部23の機能がハードウェアにより実現されてもよい。この変形例について、主に本実施の形態との差異を説明する。
 図10を参照して、本実施の形態の変形例に係るソフトウェア開発支援装置10の構成を説明する。
 ソフトウェア開発支援装置10は、電子回路19、ストレージ13、入力機器14およびディスプレイ15といったハードウェアを備える。
 電子回路19は、モデル検出部21、モデル反映部22およびコード生成部23の機能を実現する専用のハードウェアである。電子回路19は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、FPGA、ASIC、または、これらのうちいくつか、もしくは、すべての組み合わせである。「IC」は、Integrated Circuitの略語である。「GA」は、Gate Arrayの略語である。「FPGA」は、Field-Programmable Gate Arrayの略語である。「ASIC」は、Application Specific Integrated Circuitの略語である。
 ソフトウェア開発支援装置10は、電子回路19を代替する複数の電子回路を備えていてもよい。これら複数の電子回路は、全体としてモデル検出部21、モデル反映部22およびコード生成部23の機能を実現する。それぞれの電子回路は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、FPGA、ASIC、または、これらのうちいくつか、もしくは、すべての組み合わせである。
 別の変形例として、モデル検出部21、モデル反映部22およびコード生成部23の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。すなわち、モデル検出部21、モデル反映部22およびコード生成部23の機能の一部が専用のハードウェアにより実現され、残りがソフトウェアにより実現されてもよい。
 プロセッサ11および電子回路19は、いずれも処理回路である。すなわち、ソフトウェア開発支援装置10の構成が図1および図10のいずれに示した構成であっても、モデル検出部21、モデル反映部22およびコード生成部23の動作は、処理回路により行われる。
 10 ソフトウェア開発支援装置、11 プロセッサ、12 メモリ、13 ストレージ、14 入力機器、15 ディスプレイ、19 電子回路、21 モデル検出部、22 モデル反映部、23 コード生成部、24 依存関係格納部、25 検出結果格納部、31 登録モデル格納部、32 入力モデル格納部、33 修正後モデル格納部、34 自動生成コード格納部、41 登録モデル、42 入力モデル、43 サブシステム、44 修正後モデル、45 サブシステム、46 サブシステム、51 ブロックID、52 ブロック種別、53 ブロック名、54 入力元ブロックID、55 出力先ブロックID、61 登録モデルID、62 登録モデル名、63 検出番号、64 対象ブロック、90 モデル、91 サブシステム、92 ブロック群、93 ブロック群、94 ブロック群。

Claims (5)

  1.  ソフトウェアの機能を複数ブロックに分けて定義するモデルとして、開発対象のソフトウェアの機能を定義する入力モデルと、モデルライブラリとしてあらかじめ登録されている登録モデルとがあるとき、前記入力モデルで定義されている複数ブロックの中から、前記登録モデルで定義されている複数ブロックを検出するモデル検出部と、
     前記入力モデルにおける、前記モデル検出部により検出された複数ブロックである検出ブロックの定義を前記登録モデルの定義に沿って修正することで、前記入力モデルを、前記検出ブロックを1つのサブシステムにまとめて定義するモデルに変換するモデル反映部と
    を備えるソフトウェア開発支援装置。
  2.  前記モデル反映部による変換後のモデルから、前記開発対象のソフトウェアのソースコードを生成するコード生成部をさらに備え、
     前記モデル反映部は、前記入力モデルにおける前記検出ブロックの各ブロックの名称を、前記登録モデルの名称を含む名称に修正し、
     前記コード生成部は、前記ソースコードにおいて前記検出ブロックの各ブロックに対応する箇所に、前記モデル反映部による修正後の名称を適用する請求項1に記載のソフトウェア開発支援装置。
  3.  前記入力モデルおよび前記登録モデルは、機能に応じた個別のブロックの種別と、ブロック間の依存関係とを定義するモデルであり、
     前記モデル検出部は、前記入力モデルで定義されている複数ブロックの中から、前記登録モデルで定義されている複数ブロックと個別のブロックの種別が一致し、かつ、ブロック間の依存関係が一致するブロックの組み合わせを前記検出ブロックとして検出する請求項1または2に記載のソフトウェア開発支援装置。
  4.  モデル検出部が、ソフトウェアの機能を複数ブロックに分けて定義するモデルとして、開発対象のソフトウェアの機能を定義する入力モデルと、モデルライブラリとしてあらかじめ登録されている登録モデルとがあるとき、前記入力モデルで定義されている複数ブロックの中から、前記登録モデルで定義されている複数ブロックを検出し、
     モデル反映部が、前記入力モデルにおける、前記モデル検出部により検出された複数ブロックである検出ブロックの定義を前記登録モデルの定義に沿って修正することで、前記入力モデルを、前記検出ブロックを1つのサブシステムにまとめて定義するモデルに変換するソフトウェア開発支援方法。
  5.  コンピュータに、
     ソフトウェアの機能を複数ブロックに分けて定義するモデルとして、開発対象のソフトウェアの機能を定義する入力モデルと、モデルライブラリとしてあらかじめ登録されている登録モデルとがあるとき、前記入力モデルで定義されている複数ブロックの中から、前記登録モデルで定義されている複数ブロックを検出するモデル検出処理と、
     前記入力モデルにおける、前記モデル検出処理により検出された複数ブロックである検出ブロックの定義を前記登録モデルの定義に沿って修正することで、前記入力モデルを、前記検出ブロックを1つのサブシステムにまとめて定義するモデルに変換するモデル反映処理と
    を実行させるソフトウェア開発支援プログラム。
PCT/JP2018/008306 2018-03-05 2018-03-05 ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム WO2019171425A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/008306 WO2019171425A1 (ja) 2018-03-05 2018-03-05 ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/008306 WO2019171425A1 (ja) 2018-03-05 2018-03-05 ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム

Publications (1)

Publication Number Publication Date
WO2019171425A1 true WO2019171425A1 (ja) 2019-09-12

Family

ID=67846498

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/008306 WO2019171425A1 (ja) 2018-03-05 2018-03-05 ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム

Country Status (1)

Country Link
WO (1) WO2019171425A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009181446A (ja) * 2008-01-31 2009-08-13 Toshiba Corp プログラム生成装置およびブロック線図生成装置
US8726232B1 (en) * 2005-12-02 2014-05-13 The Math Works, Inc. Identification of patterns in modeling environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8726232B1 (en) * 2005-12-02 2014-05-13 The Math Works, Inc. Identification of patterns in modeling environments
JP2009181446A (ja) * 2008-01-31 2009-08-13 Toshiba Corp プログラム生成装置およびブロック線図生成装置

Similar Documents

Publication Publication Date Title
CN110083382B (zh) 跨平台内容管理和分发系统
US10942734B2 (en) Software dependency shading
US8972967B2 (en) Application packages using block maps
US10353687B2 (en) Application virtualization
US10331824B2 (en) Dynamically loaded system-level simulation
CN103226485A (zh) 代码发布方法、代码发布机和代码发布系统
KR102013582B1 (ko) 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법
US10241759B2 (en) Detecting open source components built into mobile applications
EP3563231A1 (en) Systems and/or methods for type inference from machine code
US20220197620A1 (en) Deploying micro frontends to different clusters from a single repository
JP7119096B2 (ja) ライセンス検証装置
JP6070847B2 (ja) 検証方法、検証装置および検証プログラム
EP4078381A1 (en) Integrated reference and secondary marking
US20160253157A1 (en) Software refactoring
WO2019171425A1 (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法およびソフトウェア開発支援プログラム
US9058184B2 (en) Run time generation and functionality validation of device drivers
WO2016044501A1 (en) Selectively loading precompiled header(s) and/or portion(s) thereof
US20070083860A1 (en) SKU determination mechanism and API
US10776255B1 (en) Automatic verification of optimization of high level constructs using test vectors
US7669200B2 (en) Resizing an install image
CN109213748B (zh) 一种数据库脚本文件的更新方法、服务器及介质
CN106227713A (zh) 文档的处理方法及装置
US8359456B2 (en) Generating random addresses for verification of distributed computerized devices
Troester et al. Innovations in infrastructure firmware for the IBM z13
JP6548819B2 (ja) 依存関係抽出装置および依存関係抽出プログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18908793

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18908793

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP