Treating software quality as a first-class entity

Quality is a crucial property of any software system and consists of many aspects. On the one hand, quality measures how well a piece of software satisfies its functional requirements. On the other hand, it captures how easy it is to understand, test and modify a software system. While functional requirements are provided by the product owner, maintainability of software is often underestimated. Currently software quality is either assessed by experts, or presented as a list of rule violations reported by some kind of static analyzer. Both these approaches are working with a sense of quality outside of the software itself.

[1]  Michele Lanza,et al.  ViDI: The Visual Design Inspector , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[2]  Yann-Gaël Guéhéneuc,et al.  DECOR: A Method for the Specification and Detection of Code and Design Smells , 2010, IEEE Transactions on Software Engineering.

[3]  Arthur J. Riel,et al.  Object-Oriented Design Heuristics , 1996 .

[4]  Stéphane Ducasse,et al.  Object-Oriented Metrics in Practice , 2005 .

[5]  David Hovemeyer,et al.  Using Static Analysis to Find Bugs , 2008, IEEE Software.

[6]  Barry W. Boehm,et al.  Quantitative evaluation of software quality , 1976, ICSE '76.

[7]  Andrew Glover,et al.  Continuous Integration: Improving Software Quality and Reducing Risk (The Addison-Wesley Signature Series) , 2007 .

[8]  Kent Beck Smalltalk Best Practice Patterns Volume 1: Coding , 2006 .

[9]  Romain Robbes,et al.  Software systems as cities: a controlled experiment , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[10]  Alberto Bacchelli,et al.  Expectations, outcomes, and challenges of modern code review , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[11]  Siegfried Gottwald,et al.  Fuzzy Sets and Fuzzy Logic , 1993 .

[12]  Radu Marinescu,et al.  Detection strategies: metrics-based rules for detecting design flaws , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[13]  Dimitar P. Filev,et al.  Fuzzy SETS AND FUZZY LOGIC , 1996 .

[14]  Ciera Jaspan,et al.  Tricorder: Building a Program Analysis Ecosystem , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[15]  Michael E. Fagan Design and Code Inspections to Reduce Errors in Program Development , 1976, IBM Syst. J..

[16]  Michele Lanza,et al.  Code review: Veni, ViDI, vici , 2015, 2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[17]  Ian F. Darwin Checking C programs with lint , 1988 .

[18]  Vipin Balachandran,et al.  Fix-it: An extensible code auto-fix component in Review Bot , 2013, 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM).

[19]  Alexandru G. Bardas,et al.  Static Code Analysis , 2011, Encyclopedia of Cryptography and Security.

[20]  Foutse Khomh,et al.  A Bayesian Approach for the Detection of Code and Design Smells , 2009, 2009 Ninth International Conference on Quality Software.

[21]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[22]  Richard Wettel,et al.  Software Systems as Cities , 2010 .

[23]  Kent L. Beck Smalltalk best practice patterns , 1996 .

[24]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[25]  G. Ann Campbell,et al.  SonarQube in Action , 2013 .

[26]  Olivier Zendra,et al.  Visualization of the Static Aspects of Software: A Survey , 2011, IEEE Transactions on Visualization and Computer Graphics.

[27]  Robert W. Bowdidge,et al.  Why don't software developers use static analysis tools to find bugs? , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[28]  Ralph E. Johnson,et al.  A Refactoring Tool for Smalltalk , 1997, Theory Pract. Object Syst..