INGI2252 Software Measures & Maintenance


Published on

These slides show an example of a presentation produced by students following the course LINGI2252 "Software Engineering: Measures and Maintenance", taught by Prof. Kim Mens to Master-level students in computer science and computer science engineering at the Louvain School of Engineering, UCL, Belgium. Throughout this course, students have to analyze the quality of an existing software system (and more specifically, its maintainability), understand the nature of some of the problems encountered when maintaining complex software systems, suggest appropriate solutions to improve reusability and maintainability of a software system, measure its quality and support its evolution and program in Smalltalk, a pure object-oriented programming language.

Published in: Education, Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

INGI2252 Software Measures & Maintenance

  1. 1. INGI2252 Measures & Maintenance An excerpt of some final presentations by Prof. Kim Mens partly based on a presentation by R. Capron & R. Wallez, Dec. 2012
  2. 2. Concept of the Course « Software Measures and Maintenance » • Two interleaved parts • • Software development and maintenance Software measures and metrics • Main objective • How to develop « better » and more « maintainable » software systems? • • and object-oriented software in particular How to assess the quality of a software system? • and its maintainability in particular • Side objective • Learn yet a new programming language (Smalltalk)
  3. 3. Techniques and tools « Software Measures and Maintenance » • • • • • • • • “Pure” object-oriented programming Integrated development environments Best programming practices & design heuristics Framework development Refactoring & bad smells Unit testing Software metrics and measures And a whole bunch of software analysis tools
  4. 4. Course assignment « Software Measures and Maintenance » • • • No traditional exam Instead, analyze quality (maintainability) of an existing software system with techniques and tools seen in the course Part 1 : Manual code assessment • • Part 2 : Automated analysis • • Based on good practices, conventions, heuristics, design principles and patterns Using software metrics, visualisation and code querying tools like MOOSE, Mondrian, SOUL, ... Present overall results of the analysis to a « client »
  5. 5. Global view of the analyzed system Using the « System Complexity » visualization
  6. 6. Summary of the system’s measures Using the « Overview Pyramid » NOP : Number of Packages NOC : Number of Classes NOM : Number of Methods LOC : Lines of Code CYCLO : McCabe’s Cyclomatic complexity number ANDC : Average Number of Derived Classes AHH : Average Hierarchy Height CALLS : Number of Distinct Method Invocations FANOUT : Number of Called Classes
  7. 7. Critical evaluation of thresholds used Compare predefined thresholds (good, bad, average) used by the tool with : • The system being analyzed • Some “good” reference systems  Collection hierarchy  Pharo Kernel
  8. 8. Evolution of a metric in terms of the chosen threshold
  9. 9. Detailed analysis of FANOUT metric per class of the analyzed system
  10. 10. Illustration of the lack of comments  Number of Comments  Number of Public Methods 9
  11. 11. Absence of accessors and mutators Using the « Class Blueprint »
  12. 12. After adding accessors and mutators Using the « Class Blueprint »
  13. 13. Number of statements vs. lines of code Using a Mondrian « Scatter Plot »
  14. 14. Detection of code duplication Using the « Side-by-side Code Duplication » tool
  15. 15. Discovering dependencies between packages Using the « Dependency Structure Matrix »