Toshiba Digital Solutions is currently engaged in the research and development of software engineering technologies based on generative AI. Our goals are to improve both the productivity and quality of software development. As part of these efforts, we are assisting with the Toshiba Group’s software development through the use of generative AI that leverages our own software development standards and expertise. The key features of this method of using generative AI are that it can assist with the software development process, starting from the upstream process of requirements definition, it can detail designs in successive stages, and, ultimately, it can generate entire sets of program code. We are constantly seeking new approaches using generative AI to reduce the burden on software developers, allowing them to focus on developing more advanced program code. In addition, we are seeking efficient ways to achieve high-quality software development using it. In this article, we will look at the reasons for applying generative AI to software development, the state of our efforts, and the problems we are tackling, using as an example our initiative for using generative AI to produce detailed designs in multiple stages and to generate entire sets of program code.
Process standardization, an essential part of system development
In system and software development, applying consistent standards to work processes and artifacts (standardization) is vital to ensuring higher productivity and quality. Recent system development, which is growing in both scale and complexity, involves a large number of developers. Because of this, one major factor that affects the quality of artifacts is how well the development process mitigates the risk of development hinging on specific individuals. For many years, Toshiba Digital Solutions has applied practical engineering technologies to the results of basic research in the IT field. We have used this to create optimized systems and effective development tools. Based on the expertise we have accrued through this experience, we have standardized system development, organizing it in the form of “processes,” “development environments,” “application implementation technologies,” and “guides.”
In the area of processes, we have formulated an integrated process standard, which we call “PROSQUARED.” The processes used in each type of system development, such as development on consignment, embedded software development, or agile development, are defined as process standards. In addition, we prepare templates that can be used in the design phases across each type of process standard. It is important that items that need to be considered during system development, like requirements, functions, and screens, are detailed in designs. That is why we defined the “meta-model,” which specify what must be considered when developing systems, together with the relationships between them. The meta-model is used to prepare “process definitions,” “templates,” and “guides.” Process definitions indicate the order in which design is to be performed, what design documentation is needed, and the like. Templates contain the formats of the elements, figures, and diagrams required for the contents of design documents, specifications, and the like, along with examples. Guides explain the information that is needed for system development. The standards for these design phases are defined as “CommonStyle* Methodology (CSM).”
PROSQUARED complies with de jure and de facto standards for system development, both Japanese and global. For example, they are conformant with ISO/IEC 12207 (JIS X0160), a common framework for the software lifecycle process (SLCP) and ISO/IEC 20000, which stipulates matters related to IT service operation. They also include our own knowledge and expertise (Fig. 1).
* Toshiba Digital Solutions has systematized system development technology standards in the form of CommonStyle, which it has been using since 2006.
Using generative AI to significantly improve software development productivity
In recent years, generative AI has been increasingly adopted in various situations to create text and images more efficiently. In the software field, as well, its use is on the rise. We are now in an age in which anyone can easily generate Excel macros or code templates for use in simple programs by providing prompts containing their requirements. However, the use of generative AI to develop programs instead of human developers is still in its fledgling stage. Until now, program code generation using generative AI has been almost entirely limited to creating discrete sections of code and generating relatively simple code.
This would have little impact on the systems integration business, so we began developing generative AI technologies to support the integrated process of development, from upstream to downstream, performed by software developers. For example, in the upstream design process, which begins with requirements definition, we are conducting research on applying generative AI to assist in understanding requirements definitions and reviewing design documentation. We are also working on applying it to the migration of legacy assets to new environments and in refactoring, which involves reorganizing and improving the internal structure of program code while maintaining the software operation.
One of these initiatives is the use of generative AI in the processes from design to programming, which we are presenting in this issue. We have developed state-of-the-art technologies that apply generative AI to design documentation to create detailed designs for screens, data tables, and the like, in multiple stages. These technologies then generate entire sets of required program code.
This is made possible thanks to the expertise regarding software engineering technologies we have accrued and standardized. It is also possible because of the standards defined as PROSQUARED and CSM. This is one of the notable features of our company. We have trained generative AI models with these standards and used them in input prompts to assist with development, from the upstream to the downstream stages (Fig. 2). To achieve the desired results using generative AI, the input prompts need to be easy for the AI to interpret and sufficiently informative. The designs and sequences, the essential design documentation and structural elements, and design guide information, which are defined in standards, can be leveraged to input necessary information in the form of structured design data. This allows generative AI to design essential elements, such as screens and tables, without omissions in the generation of entire sets of program code. When the generative AI generates the program code, it follows standard-based coding rules. This eliminates quality disparities and makes it possible to produce program code that is minimally dependent on the capabilities of individual human developers.
We have used generative AI in a multi-stage process of detailing designs and generating entire sets of program code, and tested the effectiveness of these technologies in developing basic applications for an e-commerce site. Through a multi-stage design process, we first input function requirements (design documentation) and used generative AI to create a list of necessary screens. Then, for each screen, we created screen transition diagrams, specifications for the items to be shown on each screen, and screen layouts. After this, we created a list of tables and designed the specifications of the data elements in the tables. Following this, we generated program code related to the screens viewed by site users (front end screens) necessary for the e-commerce site’s applications, along with the program code used to interface with the DB, etc. (Fig. 3).
Text that is essential for design, such as text from screens and tables, is extracted from functional specifications and automatically input into generative AI. For example, the generative AI is assigned a role by giving it a prompt like “You are a web front end programmer” and then presented with the design contents and items defined by the CSM meta-model. Examples of the output format and cautions regarding output are then entered, and other measures are used to improve the quality of the program code that is ultimately generated. Prompts like this, which contain our expertise and codified knowledge, are automatically created using scripts. This improves the efficiency of the generative AI input process.
Roughly 80% of the code that is generated can be used as-is
Our trial project consisted of developing e-commerce site application with three functions: product purchasing, displaying product purchase histories, and login/logout. Although it would depend on the application’s specifications, it would generally take roughly one month for a human developer to create this e-commerce site program code. However, with this generative AI development approach, the program code was generated in roughly two hours. Just looking at these basic numbers, it is clear that this approach significantly reduces the amount of time it takes to produce output. On the other hand, further evaluation is then needed to determine how much time it would take to check the quality of the generated program code and to make manual revisions.
In the trial project, the generative AI created a total of roughly 1,700 lines of program code. Of that, we confirmed that roughly 83% of the code could be used as-is, and the remaining 17% needed to be reworked or deleted. Furthermore, code that performed complex processing could not be generated, so additional program code needed to be created by human developers. For example, code for managing sessions or for transaction processing related to product purchasing needed to be added. At present, some degree of reworking is necessary, but these results have raised expectations for the potential for generative AI to improve productivity. We are working to improve the efficiency of the revision process, as well, such as by using generative AI to propose revisions for areas requiring reworking.
While we are using generative AI to improve productivity and quality, it is also important to deal with the issues of security and potential copyright infringement in the program code that is output by it. For example, prompts that already contain coding-related restrictions can be used to perform secure coding. Furthermore, analysis tools can be used on generated program code and the results can be fed back into the generative AI in a cycle of input and output to produce stronger security. One of the issues specific to generative AI is the possibility of output program code that infringes copyright. For example, OSS program code could be output by the generative AI as-is. We are currently in the testing phase, and we are using tools to check for these issues. There remains a great deal of uncertainty about future developments in this area, but we will keep a close eye on global trends and investigate what kinds of systems and mechanisms would be most appropriate.
We are brushing up this new method of software development, which uses generative AI in various stages from upstream to downstream phases, to further improve productivity and quality while extending its practical applicability to an even wider range of development areas. One of the strengths of the Toshiba Group is that we can measure the effectiveness of these new technologies by having them put to actual use in development by Toshiba software developers and system developers. Our efforts will help even more developers understand the significance, importance, and effectiveness of design and process standardization, which we have refined through the years. We will continue using generative AI in the field to evaluate real-world effectiveness and make further improvements.
No matter how many advances there are in generative AI, performing it will always be difficult for software development to be handled by generative AI alone. This is because learning is the linchpin of AI, so while it excels at handling common problems, it struggles to develop program code for which there are few actual precedents, such as code involving state-of-the-art technologies or specialized code. We will continue to allocate duties appropriately between humans and AI, focusing on the development of software engineering technologies that improve productivity and quality. By effectively leveraging existing technologies and expertise together with state-of-the-art technologies, while always maintaining our focus on people, we will drive the evolution of the technologies and environments that support software development operations.
- The corporate names, organization names, job titles and other names and titles appearing in this article are those as of August 2024.
- All other company names or product names mentioned in this article may be trademarks or registered trademarks of their respective companies.