Operational pattern based code generation for management information system: An industrial case study

Code generation technology can significantly improve productivity and software quality. However, due to limited financial and human resources in most of small and medium software enterprises, there are many challenges when leveraging code generation approaches to large-scale software development. In this paper, an operational pattern based code generation approach is proposed for rapid development of domain-specific management information system. We demonstrate the approach with details: (I) semi-automatically extracting operational patterns from requirement documents, (II) building feature models to manage the commonalities and variability of each operational pattern, (III) mapping operational patterns into skeleton code with a template-based code generation technique, etc. Then we conduct an industrial case study in asset information management domain at CancoSoft Company for about 2 years, to analyze its feasibility and efficiency. 14 operational patterns are successfully extracted from 355 initial key phrases, and a code generator is implemented and applied to develop new Web applications. Preliminary findings show that the software development based on our approach yields a nearly 30% higher productivity as compared to traditional software development. Through code analysis, we find that around 70% of code can be automatically generated, and the generated code is also effective.

[1]  Sabah S. Al-Fedaghi,et al.  Toward conceptual representation of patterns , 2015, 2015 IEEE/ACIS 16th International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing (SNPD).

[2]  Wilson Jeberson,et al.  A Literature Review and Classification of Selected Software Engineering Researches , 2012 .

[3]  Klaus Pohl,et al.  Software Product Line Engineering , 2005 .

[4]  M Mernik,et al.  When and how to develop domain-specific languages , 2005, CSUR.

[5]  Anneke Kleppe,et al.  MDA explained - the Model Driven Architecture: practice and promise , 2003, Addison Wesley object technology series.

[6]  Giovanni Toffetti Carughi,et al.  Conceptual modeling and code generation for rich internet applications , 2006, ICWE '06.

[7]  Emilia Mendes,et al.  Software productivity measurement using multiple size measures , 2004, IEEE Transactions on Software Engineering.

[8]  Danilo Beuche,et al.  Variability management with feature models , 2004, Sci. Comput. Program..

[9]  Damodaram Kamma,et al.  Effect of Model Based Software Development on Productivity of Enhancement Tasks -- An Industrial Study , 2014, 2014 21st Asia-Pacific Software Engineering Conference.

[10]  François Monin,et al.  Principles and Practice of Declarative Programming , 1999, Lecture Notes in Computer Science.

[11]  Renata Pontin de Mattos Fortes,et al.  An Investigation on the Impact of MDE on Software Reuse , 2012, 2012 Sixth Brazilian Symposium on Software Components, Architectures and Reuse.

[12]  Krzysztof Czarnecki,et al.  Generative Programming , 2001, ECOOP Workshops.

[13]  Sumit Gulwani,et al.  From program verification to program synthesis , 2010, POPL '10.

[14]  Barry W. Boehm,et al.  A software product line life cycle cost estimation model , 2004, Proceedings. 2004 International Symposium on Empirical Software Engineering, 2004. ISESE '04..

[15]  Sumit Gulwani,et al.  Synthesis from Examples: Interaction Models and Algorithms , 2012, 2012 14th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing.

[16]  Bernhard Rumpe,et al.  Model-driven Development of Complex Software : A Research Roadmap , 2007 .

[17]  Krzysztof Czarnecki,et al.  Generative Programming for Embedded Software: An Industrial Experience Report , 2002, GPCE.

[18]  Sumit Gulwani,et al.  Dimensions in program synthesis , 2010, Formal Methods in Computer Aided Design.

[19]  Christopher D. Manning,et al.  Stanford typed dependencies manual , 2010 .

[20]  Alexander Serebrenik,et al.  Code Generation with Templates , 2012, Atlantis Studies in Computing.

[21]  Arie van Deursen,et al.  Domain-specific languages: an annotated bibliography , 2000, SIGP.

[22]  Per Runeson,et al.  Guidelines for conducting and reporting case study research in software engineering , 2009, Empirical Software Engineering.

[23]  Parastoo Mohagheghi,et al.  Where Is the Proof? - A Review of Experiences from Applying MDE in Industry , 2008, ECMDA-FA.

[24]  Aruna Raja,et al.  Domain Specific Languages , 2010 .

[25]  Carme Quer,et al.  A pattern-based method for building requirements documents in call-for-tender processes , 2009, Int. J. Comput. Sci. Appl..

[26]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[27]  Marco Sinnema,et al.  Product derivation in software product families: a case study , 2005, J. Syst. Softw..

[28]  Kerstin Mueller,et al.  Software Product Line Engineering Foundations Principles And Techniques , 2016 .

[29]  Daniel M. Russell,et al.  Model-driven development within a legacy system: an industry experience report , 2005, 2005 Australian Software Engineering Conference.