WO2022200063A1 - Software microservice generation - Google Patents
Software microservice generation Download PDFInfo
- Publication number
- WO2022200063A1 WO2022200063A1 PCT/EP2022/056219 EP2022056219W WO2022200063A1 WO 2022200063 A1 WO2022200063 A1 WO 2022200063A1 EP 2022056219 W EP2022056219 W EP 2022056219W WO 2022200063 A1 WO2022200063 A1 WO 2022200063A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- software
- software component
- generation
- component
- functionality
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Definitions
- the present invention relates to the generation of software microservices.
- Existing software can include a suite or required functionalities that are required of a new software service.
- existing software also includes extraneous and/or legacy functionality that is no longer required.
- a process of analysing such existing software to excise unnecessary code and/or components while retaining or extracting required logic is time consuming. Where such existing code is poorly documented or not documented at all, the cost involved in adapting such existing software can exceed the cost of developing from scratch. Thus, there is a need to improve the analysis and adaptation of existing software in the generation of new software services.
- a computer implemented method of generating a software service for providing required software functionality comprising: accessing a software component having functionality including and exceeding the required functionality; defining verification test for verifying that the software component includes the required functionality; applying a genetic algorithm to the software component to iteratively adapt the software component over a plurality of generations, wherein each generation of the software component is adapted by removal of one or more portions of the software component of a preceding generation, wherein the adaptation for a generation is selected from a set of candidate adaptations based on a determination of a fitness of the component so adapted, the fitness being determined by the verification test, wherein the iteration of the genetic algorithm ceases in response to a stopping condition such that, on cessation, the latest generation of the software component constitutes the software service.
- the stopping condition includes one or more of: a predetermined number of iterations; a predetermined threshold reduction of a size of the software component over all generations; a predetermined threshold size of the latest generation of the software component; and a predetermined threshold measure of fitness determined by the verification test.
- the software service is constituted as a software container including the latest generation of the software component.
- At least a subset of the set of candidate adaptations is generated randomly.
- the one or more portions of the software component removed by the genetic algorithm include one or more of: a line of code; a function; a subroutine; a class; a procedure; a file; a method; a library; and a code construct.
- a computer system including a processor and memory storing computer program code for performing the steps of the method set out above.
- a computer system including a processor and memory storing computer program code for performing the steps of the method set out above.
- Figure 1 is a block diagram a computer system suitable for the operation of embodiments of the present invention
- FIG. 2 is a component diagram of a software service generation system in accordance with embodiments of the present invention.
- FIG. 3 is a flowchart of a method of generating a software service for providing required software functionality in accordance with embodiments of the present invention
- FIG. 1 is a block diagram of a computer system suitable for the operation of embodiments of the present invention.
- a central processor unit (CPU) 102 is communicatively connected to a storage 104 and an input/output (I/O) interface 106 via a data bus 108.
- the storage 104 can be any read/write storage device such as a random- access memory (RAM) or a non-volatile storage device.
- RAM random- access memory
- An example of a non-volatile storage device includes a disk or tape storage device.
- the I/O interface 106 is an interface to devices for the input or output of data, or for both input and output of data. Examples of I/O devices connectable to I/O interface 106 include a keyboard, a mouse, a display (such as a monitor) and a network connection.
- FIG. 2 is a component diagram of a software service generation system in accordance with embodiments of the present invention.
- the software service generation system is arranged to generate a software service such as a cloud service, a software container, a library, subroutine, class, method or similar, that provides required software functionality.
- a software service such as a cloud service, a software container, a library, subroutine, class, method or similar.
- the exact nature of the required software functionality of the generated software service is immaterial save that the provision of the required software functionality by a software component is determinable by a verification test 220.
- the verification test 220 is a test that is executed with a software component to determine if the component provides the required software functionality. It will be appreciated by those skilled in the art that the provision of functionality can be determined in many different ways depending on the nature of the functionality.
- data modifications, outputs, messages, communications, proper data manipulation, expected return values, and other such features and outputs of a software component can be used in combination with inputs, data/file/communications provision, or similar to determine whether a software component provides any particular required software functionality.
- the software service generation system includes a genetic algorithm 202 as a hardware, software, firmware or combination component embodying multi-generational adaptation process as is described below.
- the genetic algorithm 202 accesses a software component 200 including software code in either source code, object code, intermediate code or other suitable code form.
- the software component 200 has functionality that includes and exceeds the required functionality described above.
- the genetic algorithm 202 undertakes an iterative adaptation of the software component 200 over a plurality of generations such that each generation of the component is adapted by removal of one or more portions of the software component of a preceding generation.
- a current generation of the software component 200 is processed to generate multiple candidate adaptations 206 for Gen X 204.
- Each candidate adaptation 206 is an adaptation to the code in the Gen X component 204 having one or more portions removed.
- the removal of portions of code from the Gen X component 204 can include, for example, inter alia, the removal of one or more of: a line of code; a function; a subroutine; a class; a procedure; a file; a method; a library; and a code construct such as a loop, a conditional construct or the like.
- One or more of the candidate adaptation 206 can be generated by, for example, a random selection of code portion(s) for removal. Additionally or alternatively, candidate adaptations 206 can be generated based on a previous removal on which basis the Gen X component 204 was constituted. For example, if a previous generation of the component had a line of code removed from a method or function therein, a subsequent candidate adaptation may remove another line of code from the same method or function, or may remove the entire method or function, or may remove one or more other methods or functions calling such method or function, or may remove one or more calls to such method or function, etc.
- a selector component 208 is a hardware, software, firmware or combination component operable to select a candidate adaptation 206 from the set of candidates on which basis a next generation of the component will be constituted, indicated as Gen Y component 210.
- the selector 208 is operable to select based on a determination of a fitness of each candidate adaptation 206 by determining a fitness of the Gen X component 204 so adapted by each candidate adaptation 206.
- the fitness is determined based on the verification test 220 for verifying if the Gen X component 204 so adapted by a candidate adaptation 206 provides the required software functionality.
- the fitness determination is binary such that the component so adapted is determined to be fit or not fit based on the verification test 220.
- the fitness determination can be non-binary such as by a measure of fitness based on, for example, an extent to which the required functionality is provided where such functionality can be measured in such a way. For example, where such required functionality has associated a performance requirement, an accuracy threshold, a responsiveness, a set of requirements or the like, then fitness can be determined as a degree of fitness with reference to such requirements.
- the selector 208 selects a most fit candidate adaptation 206 as the next generation Gen Y component 210.
- the selector 208 may select between them such as by random selection.
- multiple candidate adaptations 206 are equally fit or equally satisfy a fitness threshold
- multiple instances of the genetic algorithm are executed each based on a different one of the fit candidate adaptations.
- a further selection can be required between a final generation identified by each instance of the genetic algorithm, such as by using selection criteria including one or more of: a degree of fitness of the final generations; a size of the final generations; a performance of the final generations; and other criteria as will be apparent to those skilled in the art.
- the genetic algorithm 202 iterates such that the Gen Y component 210 determined by the selector 208 becomes the new Gen X component 204 at a subsequent iteration on which bases further candidate adaptations are determined for selection therebetween.
- the software component 200 is gradually adapted by removal of portions thereof over the iterative process of the genetic algorithm 202.
- the genetic algorithm includes a stopping condition 212 for determining when the iteration will cease.
- the stopping condition 212 can includes one or more of, inter alia: a predetermined number of iterations; a predetermined threshold reduction of a size of the software component over all generations; a predetermined threshold size of the latest generation of the software component; and a predetermined threshold measure of fitness determined by the verification test.
- the cessation of the iteration leaves a latest generation of the component which is used to constitute the software service 214.
- the software service is constituted as a software container including the latest generation of the software component.
- the software component 200 is a representation of the software component such as a unified modelling language (UML) representation generated based on software code.
- UML unified modelling language
- the UML representation is subject to adaptation by the genetic algorithm by, for example, adaptation of the UML representation to remove elements of the UML representation.
- the selector 208 is further operable to adapt software code for execution in accordance with a candidate adaptation of a UML representation such that the verification test 220 can be applied to each candidate adaptation.
- Figure 3 is a flowchart of a method of generating a software service for providing required software functionality in accordance with embodiments of the present invention.
- the method accesses the software component 200 which has functionality including and exceeding the required functionality.
- the method defines the verification test 220 for verifying that the software component includes the required functionality.
- the method applies the iterative genetic algorithm 202 to adapt the software component over multiple generations based on fitness of adaptations determined by the verification test 220, as previously described.
- the method generates a software service including the latest generation of the software component adapted by the genetic algorithm 202.
- a software-controlled programmable processing device such as a microprocessor, digital signal processor or other processing device, data processing apparatus or system
- a computer program for configuring a programmable device, apparatus or system to implement the foregoing described methods is envisaged as an aspect of the present invention.
- the computer program may be embodied as source code or undergo compilation for implementation on a processing device, apparatus or system or may be embodied as object code, for example.
- the computer program is stored on a carrier medium in machine or device readable form, for example in solid-state memory, magnetic memory such as disk or tape, optically or magneto-optically readable memory such as compact disk or digital versatile disk etc., and the processing device utilises the program or a part thereof to configure it for operation.
- the computer program may be supplied from a remote source embodied in a communications medium such as an electronic signal, radio frequency carrier wave or optical carrier wave.
- a communications medium such as an electronic signal, radio frequency carrier wave or optical carrier wave.
- carrier media are also envisaged as aspects of the present invention.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Physiology (AREA)
- Genetics & Genomics (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
Claims
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/551,486 US12327111B2 (en) | 2021-03-22 | 2022-03-10 | Software microservice generation |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| GB2103916.9 | 2021-03-22 | ||
| GB2103916.9A GB2605135A (en) | 2021-03-22 | 2021-03-22 | Software Microservice Generation |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2022200063A1 true WO2022200063A1 (en) | 2022-09-29 |
Family
ID=75689853
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/EP2022/056219 Ceased WO2022200063A1 (en) | 2021-03-22 | 2022-03-10 | Software microservice generation |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US12327111B2 (en) |
| GB (1) | GB2605135A (en) |
| WO (1) | WO2022200063A1 (en) |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8676853B2 (en) | 2003-02-27 | 2014-03-18 | Hewlett-Packard Development Company, L.P. | System and method for software reuse |
| JP2007304685A (en) * | 2006-05-09 | 2007-11-22 | Hitachi Ltd | Software component search system and program |
| US8607190B2 (en) | 2009-10-23 | 2013-12-10 | International Business Machines Corporation | Automation of software application engineering using machine learning and reasoning |
| CA2913743C (en) | 2013-05-30 | 2023-01-03 | Universite De Sherbrooke | Systems and methods for performing bayesian optimization |
| US20170220323A1 (en) | 2016-01-29 | 2017-08-03 | Wipro Limited | Method and system for determining architectural designs for software application |
| CN106775915B (en) * | 2017-02-09 | 2019-08-20 | 东华理工大学 | A kind of dynamic evolution optimization method of software architecture |
| US10628152B2 (en) | 2017-06-19 | 2020-04-21 | Accenture Global Solutions Limited | Automatic generation of microservices based on technical description of legacy code |
| US10410121B2 (en) | 2017-10-25 | 2019-09-10 | SparkCognition, Inc. | Adjusting automated neural network generation based on evaluation of candidate neural networks |
| KR102107378B1 (en) | 2017-10-31 | 2020-05-07 | 삼성에스디에스 주식회사 | Method For optimizing hyper-parameter automatically and Apparatus thereof |
| US10810502B2 (en) | 2017-12-01 | 2020-10-20 | Sap Se | Computing architecture deployment configuration recommendation using machine learning |
| US11182677B2 (en) | 2017-12-13 | 2021-11-23 | Cognizant Technology Solutions U.S. Corporation | Evolving recurrent networks using genetic programming |
| CN108279926B (en) * | 2018-01-10 | 2021-06-08 | 浙江网新恒天软件有限公司 | Method for micro-service of single application |
| US10756982B2 (en) | 2018-05-17 | 2020-08-25 | Microsoft Technology Licensing, Llc | Machine learning microservice architecture design tools and methods |
| CN116126333A (en) | 2018-06-20 | 2023-05-16 | 华为技术有限公司 | Automated compiling system and method |
| US12223407B2 (en) | 2018-08-23 | 2025-02-11 | Microsoft Technology Licensing, Llc | Efficient configuration selection for automated machine learning |
| US10782936B1 (en) | 2019-01-30 | 2020-09-22 | Architecture Technology Corporation | Programming migration system and methods |
| CN109933309B (en) | 2019-03-06 | 2024-07-16 | 上海工业控制安全创新科技有限公司 | Flow method for applying machine learning algorithm to safety of automobile software development function |
| US10951492B2 (en) * | 2019-07-26 | 2021-03-16 | Cognizant Technology Solutions India Pvt. Ltd. | System and a method for automatic conversion of monolithic services to micro-services |
| CN111857691B (en) | 2020-07-28 | 2021-07-23 | 北京航空航天大学 | Method and device for restoring software architecture |
-
2021
- 2021-03-22 GB GB2103916.9A patent/GB2605135A/en not_active Withdrawn
-
2022
- 2022-03-10 WO PCT/EP2022/056219 patent/WO2022200063A1/en not_active Ceased
- 2022-03-10 US US18/551,486 patent/US12327111B2/en active Active
Non-Patent Citations (2)
| Title |
|---|
| FAIZAN YASIN ET AL: "Code Smell Detection and Refactoring Using Automated Genetic Algorithm Approach", 2019, XP055931031, Retrieved from the Internet <URL:https://scirange.com/pdf/irjit.2019.1.7.pdf> [retrieved on 20220614] * |
| KEITH D COOPER ET AL: "Optimizing for reduced code space using genetic algorithms", LANGUAGES, COMPILERS, AND TOOLS FOR EMBEDDED SYSTEMS, ACM, 2 PENN PLAZA, SUITE 701 NEW YORK NY 10121-0701 USA, May 1999 (1999-05-01), pages 1 - 9, XP058311563, ISBN: 978-1-58113-136-9, DOI: 10.1145/314403.314414 * |
Also Published As
| Publication number | Publication date |
|---|---|
| US12327111B2 (en) | 2025-06-10 |
| US20240176615A1 (en) | 2024-05-30 |
| GB2605135A (en) | 2022-09-28 |
| GB202103916D0 (en) | 2021-05-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN101473301B (en) | Iterative static and dynamic software analysis | |
| JP5102366B2 (en) | Method and apparatus for performing root cause analysis | |
| US8589884B2 (en) | Method and system for identifying regression test cases for a software | |
| CN112631919B (en) | Contrast test method, device, computer equipment and storage medium | |
| CN109783346B (en) | Keyword-driven automatic testing method and device and terminal equipment | |
| WO2008079739A2 (en) | Apparatus and method for automating server optimization | |
| CN110018963A (en) | A kind of test method, system and electronic equipment and storage medium | |
| CN114253920A (en) | Transaction reordering method, device, equipment and readable storage medium | |
| JP6142705B2 (en) | Iterative generation of symbolic test drivers for object-oriented languages | |
| CN116069687A (en) | Data consistency verification method, verification device and processor | |
| US12327111B2 (en) | Software microservice generation | |
| US7523445B1 (en) | Method for generating an explanation of a CSP solution | |
| CN114338846B (en) | Message testing method and device | |
| US8352234B2 (en) | Model generation based on a constraint and an initial model | |
| CN111143229A (en) | Software testing method and device, computer equipment and computer readable storage medium | |
| GB2590415A (en) | Software code management | |
| JP5444939B2 (en) | Software testing method and program | |
| US11934842B2 (en) | Method for autotuning noisy HPC systems | |
| US20240177066A1 (en) | Intelligent ai architecture selection | |
| US7996518B2 (en) | Detecting machine utilization activity | |
| CN113282480A (en) | Software development testing method and system | |
| CN110968504A (en) | Test method, test platform, electronic device and computer storage medium | |
| CN116149981B (en) | Test methods and apparatus, electronic equipment, computer-readable storage media | |
| CN115757123B (en) | Test case generation method, device, equipment and medium | |
| EP4557104A1 (en) | Machine learning model monitoring |
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: 22713917 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 18551486 Country of ref document: US |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 22713917 Country of ref document: EP Kind code of ref document: A1 |
|
| WWG | Wipo information: grant in national office |
Ref document number: 18551486 Country of ref document: US |