Abstract Details

<< Back to Schedule

9/28/2017  |   9:20 AM - 10:05 AM   |  

Rapid Realization of Executable Domain Models via Automatic Code Generation

Today’s generation of cloud-connected systems such as mobile and web-apps have high demands for reliability and sustainability. Agile methods benefit a lot from the evolving technology to satisfy those increasing demands. While automated testing helps to address reliability issues, other technologies such as prototyping and version management play a role as well. However, software development is labor-intensive, time consuming, error-prone and expensive. As-built systems often don't match designs and fail to meet requirements. The gap between design and implementation always exists as customers demand rapid release cycles with time constraints and limited resources. Our effort is focused on reducing this gap for service-oriented projects. This approach considers both technical strategies and agile methods, trying to streamline the progression from design to implementation at a relatively early phase, and then throughout the whole development lifecycle. Meanwhile, we attempt to shorten development schedule in both stages, and to eliminate the risks caused by evolutionary development. Automatic code generation has the potential to reduce above problems to a certain extent. This paper describes our efforts to enable rapid and continuous delivery while leveraging parallelism in development via automatic code generation - specifically making domain models instantly executable. We describe a code generator that has been built to enable parallel development of services. It uses UML class diagram to model the problem domain, then rapidly realize the domain model as a set of NoSQL database collections, automate the generation of common database access functions, and automate the wrapping of these database functions within a RESTful API. Several actual project instances have been built using this code generation approach. The results and lessons learned from these projects are also discussed in this paper. We also consider several common deployment scenarios (e.g. requirements for media-handling, security, scalability) to ensure the flexibility and reusability of the target source code for subsequent development iterations.

This presentation has not yet been uploaded.

No handouts have been uploaded.

Doug Rosenberg (Author,Co-Author), ICONIX Software Engineering and USC, resilientagile@iconixsw.com;
Doug Rosenberg founded ICONIX Software Engineering in 1984, and has spent the past 30 years developing and teaching software processes. He has written numerous books on software engineering, including Use Case Driven Object Modeling with UML - Theory and Practice, Agile Development with ICONIX Process, and Design Driven Testing. Over the past few years he has been researching parallelism in software development while developing the Resilient Agile process and field-testing it with student projects at USC.

Barry Boehm (Author,Co-Author), USC, boehm@usc.edu;
Dr. Barry Boehm is the TRW Professor in the USC Computer Sciences, Industrial and Systems Engineering, and Astronautics Departments. He is also the Director of Research of the DoD-Stevens-USC Systems Engineering Research Center, and the founding Director of the USC Center for Systems and Software Engineering. He was director of DARPA-ISTO 1989-92, at TRW 1973-89, at Rand Corporation 1959-73, and at General Dynamics 1955-59. His contributions include the COCOMO family of cost models and the Spiral family of process models. He is a Fellow of the primary professional societies in computing (ACM), aerospace (AIAA), electronics (IEEE), and systems engineering (INCOSE), and a member of the U.S. National Academy of Engineering.

Bo Wang (Primary Presenter,Author), Center for Systems and Software Engineering, USC , wang736@usc.edu;
Bo Wang is a PhD student advised by Dr. Barry Boehm in Center for Systems and Software Engineering, University of Southern California. He earned his BS from Dalian University of Technology, China and his MS in Software Engineering from USC. His research direction is mainly focused on automated software engineering, process management & visualization.

2017 Sponsors: IEEE and IEEE Computer Society