60 likes | 197 Views
Assessing design quality based on the difference between conceptual and structural decomposition of software systems - Conceptual design flaws in software -. C ălin Drimbău “Politehnica” University of Timi şoara. Context and Problem Statement.
E N D
Assessing design quality based on the difference between conceptual and structural decomposition of software systems- Conceptual design flaws in software - Călin Drimbău “Politehnica” University of Timişoara
Context and Problem Statement • The quality of a design has a decisive impact on the quality of a software product. • Design problems are frequent, expensive and will always be there. • Current approaches in the assessment of the design take into account structural information about the system (e.g. metrics). Unfortunately this is not enough since the results are: • incomplete • insufficient to detect and avoid characteristics that lead to bad consequences Research hypothesis: A good design follows “naturally” the problem domain. Approach: Detection of the design problems can be enriched by comparing the structural and the conceptual decomposition of systems.
Assigning domain meaningto programs edu.tum.cs.family Program represented as graph Parent Child Source Code Mother Person Mama Offspring ? Person Domain, Libraries, … knowledge shared as Ontologies Parent Offspring Mother Child Ontologies represented as graphs Mama Family .
Person isA isA hasType Parent Offspring Mother hasType isA partOf boundWith hasType Child Mother Offspring Mama partOf assignedTo Mama currentChild Family Conceptual decomposition Vs. Structural decomposition edu.tum.cs.family mop mop Parent hasType moc Child Mother isA subTypeOf subTypeOf Person isA 1. package edu.tum.cs.family; 2. 3. class Parent extends Person { … } 4. class Child extends Person { 5. Parent mother; 6. Child(Parent mother) { … } 7. … 8. } 9. … 10. Parent mama; 11. new Child(mama); 12. … 13. Person offspring = currentChild;
God Class viewed from the perspective of the two decompositions • “God Classes tend to centralize the intelligence of the system,doing ‘everything’ and using data from small data-classes” [Riel 1996] • It generates problems • Maintainability, Reusability, Understandability • Structural characteristics • They heavily access data of other simpler classes, either directly or using accessor methods. • They are large and complex • They have a lot of non-communicative behavior i.e., there is a low cohesion between the methods belonging to that class. • Conceptual characteristics • The interleaving of multiple dimensions of knowledge in the code
Package Decomposition View *Tool support: “LOOSE Research Group”, “Politehnica” University of Timişoara http://loose.upt.ro/