Measure, Diagnose, Refactor: A Formal Quality Cycle for Software Models

Software metrics measure the quality of code according to criteria like reusability, understandability and well-structuredness. Refactorings change code as to improve the quality while preserving overall behaviour. Measuring and refactoring go hand in hand as particular results of measurements indicate specific design problems which suggest certain refactorings. As a consequence, we get a quality cycle of repeated steps of measuring, diagnosing and refactoring.In this paper, we transfer such a quality cycle to the area of software models. Contrary to code, models - especially UML models - usually do not consist of a single entity but out of several diagrams. Our measures and refactorings jointly treat these diagrams. Contrary to code refactorings, we furthermore base the refactorings on a formal semantics for models and only employ refactorings which provably preserve the behaviour. The approach has been implemented in the tool RMC, supporting the definition as well as execution of quality measurements and refactorings.

[1]  Clemens Fischer Combination and implementation of processes and data: from CSP-OZ to Java , 2000 .

[2]  Martin Hitz,et al.  Measuring Product Attributes of Object-Oriented Systems , 1995, ESEC.

[3]  Ragnhild Van Der Straeten,et al.  Model refactorings through rule-based inconsistency resolution , 2006, SAC.

[4]  Thomas Ruhroth,et al.  Refactoring Object-Oriented Specifications with Data and Processes , 2007, FMOODS.

[5]  Fernando Brito e Abreu,et al.  Evaluating the impact of object-oriented design on software quality , 1996, Proceedings of the 3rd International Software Metrics Symposium.

[6]  Tom Mens,et al.  Identifying refactoring opportunities using logic meta programming , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[7]  Don Roberts,et al.  Practical analysis for refactoring , 1999 .

[8]  James M. Bieman,et al.  Cohesion and reuse in an object-oriented system , 1995, SSR '95.

[9]  John Derrick,et al.  Model Transformations Incorporating Multiple Views , 2006, AMAST.

[10]  Cfj Christian Lange,et al.  Assessing and improving the quality of modeling : a series of empirical studies about the UML , 2007 .

[11]  Fernando Brito e Abreu Using OCL to formalize object ori-ented metrics definitions , 2001 .

[12]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[13]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[14]  Andrew William Roscoe,et al.  The Theory and Practice of Concurrency , 1997 .

[15]  Thomas Ruhroth,et al.  A Quality Circle Tool for Software Models , 2008, ER.

[16]  Tim McComb Refactoring Object-Z Specifications , 2004, FASE.

[17]  Heike Wehrheim,et al.  Checking Consistency in UML Diagramms: Classes and State Machines , 2003, FMOODS.

[18]  Tom Mens,et al.  Formalizing refactorings with graph transformations , 2005, J. Softw. Maintenance Res. Pract..

[19]  Barry Boehm,et al.  A Replicate Empirical Comparison between Pair Development and Software Development with Inspection , 2007, ESEM 2007.

[20]  Mario Piattini,et al.  An Empirical Study of the Nesting Level of Composite States Within UML Statechart Diagrams , 2005, ER.

[21]  Augusto Sampaio,et al.  Transformation Laws for UML-RT , 2006, FMOODS.

[22]  Ladan Tahvildari,et al.  Journal of Software Maintenance and Evolution: Research and Practice Improving Design Quality Using Meta-pattern Transformations: a Metric-based Approach , 2022 .

[23]  Reiko Heckel,et al.  Defining and validating transformations of UML models , 2003, IEEE Symposium on Human Centric Computing Languages and Environments, 2003. Proceedings. 2003.

[24]  Harald C. Gall,et al.  Mining Software Evolution to Predict Refactoring , 2007, First International Symposium on Empirical Software Engineering and Measurement (ESEM 2007).

[25]  Robert L. Glass,et al.  Measuring software design quality , 1990 .

[26]  Adrian Trifu,et al.  Diagnosing design problems in object oriented systems , 2005, 12th Working Conference on Reverse Engineering (WCRE'05).

[27]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[28]  Carl G. Davis,et al.  A Hierarchical Model for Object-Oriented Design Quality Assessment , 2002, IEEE Trans. Software Eng..

[29]  Graeme Smith,et al.  The Object-Z Specification Language , 1999, Advances in Formal Methods.

[30]  Ernst-Rüdiger Olderog,et al.  Integrating a formal method into a software engineering process with UML and Java , 2008, Formal Aspects of Computing.