This application claims priority to and the benefit of Korean Patent Application No. 2006-122286, filed Dec. 5, 2006, and No. 2007-91291, filed Sep. 10, 2007, the disclosure of which is incorporated herein by reference in its entirety.
1. Field of the Invention
The present invention relates to an apparatus and method for developing software, and more particularly, to a software development apparatus and method enabling prediction of non-functional performance, such as execution time, as well as functional performance of each constituent module in a software development process.
2. Discussion of Related Art
In a software development process, a developer analyzes requests of a client to analyze functions to develop, classifies the functions to define modules, and codes each module using a programming language, such as Java, C, C++, etc., thereby developing software. Meanwhile, while coding a module, a developer generally inserts an Application Programming Interface (API) in his/her code and calls the API. Since the API generally provides functional details only, the developer cannot obtain information on execution time required for actually using the API. Execution performance of the module developed by the developer can be tested by only directly executing the module after software coding is completed. Here, when a function is not properly performed or a desired execution speed is not achieved by the developed program, the developer repeats the process of modifying a source code coded using a programming language (or a user language), rewriting the software, compiling and executing the software again, and thereby checking the result.
The reason why it is determined whether or not software is mal-developed via a testing operation after software implementation is completed is that the concept of execution time is not properly applied to a software development process or is overlooked. As a result, development time is delayed, development cost increases, and so on.
The present invention is directed to a software development apparatus and method providing a function of predicting non-functional performance, the software development apparatus and method displaying time performance of each used Application Programming Interface (API) in number to enable a developer to better predict the performance of software in a software development process, and enabling the developer to develop appropriate software for the performance of hardware, in which the software will operate, using a concept of hardware-neutral time.
One aspect of the present invention provides an apparatus for developing software, comprising: an API performance index database (DB) for storing performance information on APIs; a performance DB constructor for separately executing APIs used in a source code of a module to measure performance, and storing performance information on the respective APIs in the API performance index DB; an editor for editing the source code of the module and displaying performance of the module; and a code performance analyzer for receiving the source code of the module from the editor, calculating the performance of the module with reference to the API performance index DB, and providing the calculation result to the editor.
Another aspect of the present invention provides an apparatus for developing software, comprising: an editor for editing a source code of a module and displaying performance information on an API used in the source code and performance of the module calculated on the basis of the performance information; an API performance index DB for storing, in hardware-neutral number, time-performance information on all APIs provided by a library and an operating system; and a code performance analyzer for receiving the source code of the module from the editor, reading performance information on respective APIs used in the module with reference to the API performance index DB, calculating performance of the module on the basis of the performance information, and providing the calculation result to the editor. Still another aspect of the present invention provides a method of developing software, comprising the steps of: (a) receiving a source code of a module and reading names of APIs in the module; (b) separately executing the read APIs to measure their performance, and recording the performance information on the respective APIs to construct a performance index DB; (c) calculating performance of the module using the performance information on the respective APIs recorded in the performance index DB on the basis of the names of the APIs; and (d) displaying the performance of the module calculated in step (c).
The above and other objects, features and advantages of the present invention will become more apparent to those of ordinary skill in the art by describing in detail exemplary embodiments thereof with reference to the attached drawings, in which:
Hereinafter, exemplary embodiments of the present invention will be described in detail. However, the present invention is not limited to the embodiments disclosed below, but can be implemented in various forms. The following embodiments are described in order to enable those of ordinary skill in the art to embody and practice the present invention.
As illustrated in
Here, the editor 102 provides a general editor function of editing a source code, and displays performance of each module calculated by a code analyzer to a developer. The code performance analyzer 103 receives the source code of a module, calculates performance, i.e., predicted execution time, of the whole module with reference to the API performance index DB 104, and provides the calculation result to the editor 102. In
As illustrated in
Otherwise, although not shown in the drawings, the code performance analyzer 103 can operate using the performance index DB 104 already storing performance information on all the APIs provided by a library and an operating system without calling the performance DB constructor 105. In this case, the code performance analyzer 103 makes a list of APIs that the corresponding module uses, searches the performance index DB 104, and calculates performance information on the APIs in the module, thereby calculating the overall performance of the module.
As illustrated in
Otherwise, although not shown in the drawings, the performance DB constructor 105 may independently operate without a call from the code performance analyzer 103. In this case, respective test cases are written for all the APIs provided by an existing library and operating system, the test cases are performed to measure WCET, and the WCET is stored in the API performance index DB 104. Consequently, performance information on all the APIs provided by the library and operating system is previously stored in the API performance index DB 104.
Using the editor 102 as shown in
As described above, the software development apparatus and method providing a function of predicting non-functional performance according to the present invention analyze performance of the corresponding module using performance information on APIs used by a code and performance analysis information on the code itself, and display the information in an editor during a development process, thereby allowing a developer to check the performance of the under-writing code without actually executing the code. Therefore, it is possible to write a code complying with required performance.
In addition, the software development apparatus and method use the concept of hardware-neutral time to enable development of appropriate software for performance of hardware in which the software operates.
While the invention has been shown and described with reference to certain exemplary embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
10-2006-0122286 | Dec 2006 | KR | national |
10-2007-0091291 | Sep 2007 | KR | national |