quality and software design patterns
DESCRIPTION
In this first lecture, we discuss software quality, introduce the quality characteristic of maintainability, and argue that maintainability can be studied from four different points of view: (1) quality models, (2) good practices, (3) social studies, and (4) developers' studies. We discuss major works and results for these four points of view and show the last three can be used in the first one to build better quality models. We show that quality models are mandatory to make sense of any quality evaluation.TRANSCRIPT
![Page 1: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/1.jpg)
Yann-Gaël Guéhéneuc
This work is licensed under a Creative Commons Attribution-NonCommercial-
ShareAlike 3.0 Unported License
Some Theory and Practice on Patterns – Introduction
NII, Tokyo, Japan12/02/14
![Page 2: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/2.jpg)
2/155
![Page 3: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/3.jpg)
3/155
Typical software developers?
![Page 4: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/4.jpg)
4/155
![Page 5: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/5.jpg)
5/155
Software costs?
![Page 6: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/6.jpg)
6/155
![Page 7: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/7.jpg)
7/155
![Page 8: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/8.jpg)
8/155
Cost of bugshttp://www.di.unito.it/~damiani/ariane5rep.html
![Page 9: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/9.jpg)
9/155
![Page 10: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/10.jpg)
10/155
![Page 12: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/12.jpg)
12/155
Agenda
QualityMaintainability
– Quality Models– Good Practices– Social Studies– Developers Studies
Impact of Quality Models Challenges with Multi-language Systems
![Page 13: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/13.jpg)
13/155
“qual·i·ty noun \ˈkwä-lə-tē\ how good or bad something is a characteristic or feature that someone
or something has : something that can be noticed as a part of a person or thing
a high level of value or excellence”—Merriam-Webster, 2013
![Page 14: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/14.jpg)
14/155
Quality
Division of software quality according to ISO/IEC 9126:2001, 25000:2005…– Process quality– Product quality– Quality in use
http://www.sqa.net/iso9126.html
![Page 15: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/15.jpg)
15/155
Quality
Division of software quality according to ISO/IEC 9126:2001, 25000:2005…– Process quality– Product quality– Quality in use
![Page 16: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/16.jpg)
16/155
Quality
Dimensions of product quality– Functional vs. non-functional
• At runtime vs. structural– Internal vs. external
• Maintainability vs. usability– Metric-based vs. practice-based
• Objective vs. subjective
![Page 17: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/17.jpg)
17/155
Quality
Dimensions of product quality– Functional vs. non-functional
• At runtime vs. structural– Internal vs. external
• Maintainability vs. usability– Metric-based vs. practice-based
• Objective vs. subjective
![Page 18: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/18.jpg)
18/155
Quality
Definitions of internal quality characteristics– Maintainability– Flexibility– Portability– Re-usability– Readability– Testability– Understandability
![Page 19: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/19.jpg)
19/155
Quality
Definitions of internal quality characteristics– Maintainability– Flexibility– Portability– Re-usability– Readability– Testability– Understandability
![Page 20: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/20.jpg)
20/155
“Maintainability is the ease with which a software system can be modified”
—IEEE Standard Glossary of Software Engineering Terminology, 2013
![Page 21: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/21.jpg)
21/155
Maintainability
Quality Models Models
Good Practices Definition
Metrics
Detection Occurrences
Social Studies Characteristics
Developers Studies Behaviour
Factors
Measures
![Page 22: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/22.jpg)
22/155
Maintainability
Quality Models Models
Good Practices Definition
Metrics
Detection Occurrences
Social Studies Characteristics
Developers Studies Behaviour
Factors
Measures
![Page 23: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/23.jpg)
23/155
“Quality model are models with the objective to describe, assess, and–or predict quality”
—Deissenboeck et al., WOSQ, 2009(With minor adaptations)
Florian Deissenboeck, Elmar Juergens, Klaus Lochmann, and Stefan Wagner ;Software Quality Models: Purposes, Usage Scenarios and Requirements ;International Workshop on Software Quality, 24th International Symposium on Computer and Information Sciences, IEEE, 2009
![Page 24: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/24.jpg)
24/155
Quality Models
Division of quality models according to Deissenboeck et al.– Describe quality characteristics and their
relationships– Assess the quality characteristics of some
software systems– Predict the future quality of some software
systems
![Page 25: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/25.jpg)
25/155
Quality Models
Division of quality models according to Deissenboeck et al.– Describe quality characteristics and their
relationships– Assess the quality characteristics of some
software systems– Predict the future quality of some software
systems
![Page 26: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/26.jpg)
26/155
Quality Models
Basis for quality models – Software measures (aka metrics)– Relationships among characteristics and metrics
• Theoretical• Practical
![Page 27: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/27.jpg)
27/155
Quality Models
Metrics have been well researched– Chidamber and Kemerer– Hitz and Montazeri– Lorenz and Kidd– McCabe– …
![Page 28: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/28.jpg)
28/155
Quality Models
Typical kinds of metrics– Size– Coupling– Cohesion
• Briand et al.’s surveys on cohesion and coupling– Complexity
Lionel C. Briand, John W. Daly, and Jürgen Wüst ;A Unified Framework for Cohesion Measurement in Object-OrientedSystems ;Journal of Empirical Software Engineering, 3(1), Springer, 1998
Lionel C. Briand, John W. Daly, and Jürgen Wüst ;A Unified Framework for Coupling Measurement in Object-Oriented Systems ;Transactions on Software Engineering, 25(1), IEEE Press, 1999
![Page 29: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/29.jpg)
29/155
Quality Models
Typical metrics– LOC, fan-in and fan-out– LCOM5– CBO– McCabe’s complexity
Typically computed automatically on source code or other intermediate representations
![Page 30: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/30.jpg)
30/155
Quality Models
Trend in computing metrics– Motoral– Samsung– SNCF– …
Dozens of tools– PMD– Sonar– …
![Page 31: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/31.jpg)
31/155
![Page 32: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/32.jpg)
32/155
Who needs models?
![Page 33: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/33.jpg)
33/155
![Page 34: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/34.jpg)
34/155
•130.0 Physics •129.0 Mathematics •128.5 Computer Science •128.0 Economics •127.5 Chemical engineering •127.0 Material science •126.0 Electrical engineering •125.5 Mechanical engineering •125.0 Philosophy •124.0 Chemistry •123.0 Earth sciences •122.0 Industrial engineering •122.0 Civil engineering •121.5 Biology •120.1 English/literature •120.0 Religion/theology •119.8 Political science •119.7 History •118.0 Art history •117.7 Anthropology/archeology•116.5 Architecture •116.0 Business •115.0 Sociology •114.0 Psychology •114.0 Medicine •112.0 Communication •109.0 Education •106.0 Public administration
![Page 35: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/35.jpg)
35/155
![Page 36: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/36.jpg)
36/155
![Page 37: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/37.jpg)
37/155
Measures without modelshttp://hardsci.wordpress.com/2013/09/17/the-hotness-iq-tradeoff-in-academia/
![Page 38: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/38.jpg)
38/155
Quality Models
Different input metrics, output characteristics– Menzies et al.’s models
• Code metrics• Defectiveness
– Zimmermann et al.’s models• Code and historical metrics• Fault-proneness
– Bansiya and Davis’ QMOOD• Design metrics• Maintainability-related characteristics
![Page 39: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/39.jpg)
39/155
Quality Models
Different input metrics, output characteristics– Menzies et al.’s models
• Code metrics• Defectiveness
– Zimmermann et al.’s models• Code and historical metrics• Fault-proneness
– Bansiya and Davis’ QMOOD• Design metrics• Maintainability-related characteristics
![Page 40: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/40.jpg)
40/155
Quality Models
Menzies et al.’s models– Characteristics of defectiveness
• Was the class/module involved in one fault or more?
– Three kinds of models• OneR• J48• Naïve Bayesian miner
Tim Menzies, Member, IEEE, Jeremy Greenwald, and Art Frank ;Data Mining Static Code Attributes to Learn Defect Predictors ;Transactions on Software Engineering, 33(1), IEEE, 2007
![Page 41: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/41.jpg)
41/155
Quality Models
Menzies et al.’s models– Code metrics
• McCabe’s cyclomatic, design, essential complexities• LOC (total, blanks, comments…)• Halstead’s numbers of operands and operators (and
variations and combinations)
– Collection and validation using NASA MDP• 8 systems in C and Java
(No source code)http://nasa-softwaredefectdatasets.wikispaces.com/
![Page 42: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/42.jpg)
42/155
Quality Models
Menzies et al.’s models
![Page 43: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/43.jpg)
43/155
Quality Models
Different input metrics, output characteristics– Menzies et al.’s models
• Code metrics• Defectiveness
– Zimmermann et al.’s models• Code and historical metrics• Fault-proneness
– Bansiya and Davis’ QMOOD• Design metrics• Maintainability-related characteristics
![Page 44: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/44.jpg)
44/155
Quality Models
Different input metrics, output characteristics– Menzies et al.’s models
• Code metrics• Defectiveness
– Zimmermann et al.’s models• Code and historical metrics• Fault-proneness
– Bansiya and Davis’ QMOOD• Design metrics• Maintainability-related characteristics
![Page 45: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/45.jpg)
45/155
Quality Models
Different input metrics, output characteristics– Menzies et al.’s models
• Code metrics• Defectiveness
– Zimmermann et al.’s models• Code and historical metrics• Fault-proneness
– Bansiya and Davis’ QMOOD• Design metrics• Maintainability-related characteristics
![Page 46: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/46.jpg)
46/155
Quality Models
Bansiya and Davis’ QMOOD– Characteristics of maintainability
• Effectiveness, extensibility, flexibility, functionality, reusability, and understandability
– Hierarchical model• Structural and behavioural design properties of
classes, objects, and their relationships
Jagdish Bansiya , Carl G. Davis ;A Hierarchical Model for Object-oriented Design Quality Assessment ;Transactions on Software Engineering, 28(1), IEEE, 2002
![Page 47: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/47.jpg)
47/155
Quality Models
Bansiya and Davis’ QMOOD– Object-oriented design metrics
• Encapsulation, modularity, coupling, and cohesion…• 11 metrics in total
– Validation using empirical and expert opinion on several large commercial systems
• 9 C++ libraries(Source code)
![Page 48: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/48.jpg)
48/155
Quality Models
Bansiya and Davis’ QMOOD
![Page 49: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/49.jpg)
49/155
Quality Models
Conclusions– Sound basis to measure different quality
characteristics
Limits– Relation between metrics and quality
characteristics, such as maintainability– Relation between metrics and what they are
expected to measure
![Page 50: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/50.jpg)
50/155
Quality Models
Limits– Relation between metrics and quality
characteristics, such as maintainability– Relation between metrics and what they are
expected to measure
Overcome by using more, diverse, unrelated information
![Page 51: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/51.jpg)
51/155
Quality Models
Feedback– Measures– Occurrences– Factors
to build “better” quality models
![Page 52: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/52.jpg)
52/155
Maintainability
Quality Models Models
Good Practices Definition
Metrics
Detection Occurrences
Social Studies Characteristics
Developers Studies Behaviour
Factors
Measures
![Page 53: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/53.jpg)
53/155
![Page 54: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/54.jpg)
54/155
Practice, practiceand practice more
![Page 55: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/55.jpg)
55/155
![Page 56: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/56.jpg)
56/155
Good Practices
Maintainers can follow good practices– SOLID– Design patterns– Design antipatterns– …
![Page 57: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/57.jpg)
57/155
Good Practices
Maintainers can follow good practices– SOLID– Design patterns– Design anti-patterns– …
![Page 58: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/58.jpg)
58/155
“Each pattern describes a problem which occurs over and over in our environment, and then describes the core of the solution to that problem, in such way that you can use this solution a million times over, without ever doing it the same way twice.”
—Christopher Alexander, 1977(With minor adaptations)
![Page 59: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/59.jpg)
59/155
Good Practices
Design patterns– A general reusable solution to a commonly
occurring problem within a given context in software design
Design antipatterns– A design pattern that may be commonly used
but is ineffective/counterproductive in practice
![Page 60: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/60.jpg)
60/155
Good Practices
![Page 61: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/61.jpg)
61/155
Design Patterns
“Important assumptions– That patterns can be codified in such a way that
they can be shared between different designers– That reuse will lead to “better” designs. There is
an obvious question here of what constitutes “better”, but a key measure is maintainability”
—Zhang and Budgen, 2012 (With minor adaptations)
![Page 62: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/62.jpg)
62/155
Design Patterns
Pattern solution = Motif which connotes anelegant architecture
![Page 63: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/63.jpg)
63/155
Design Patterns
Pattern solution = Motif which connotes anelegant architecture
![Page 64: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/64.jpg)
64/155
Design Patterns
Pattern solution = Motif which connotes anelegant architecture
![Page 65: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/65.jpg)
65/155
Design Patterns
We can identifyin the architectureof a systemsmicro-architectures similar todesign motifsto explain theproblem solved
Figure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
To compose objectsin a tree-like structureto describe whole–parthierarchies
Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
![Page 66: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/66.jpg)
66/155
Design Patterns
We can identifyin the architectureof a systemsmicro-architectures similar todesign motifsto explain theproblem solved
Figure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
To compose objectsin a tree-like structureto describe whole–parthierarchies
Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
![Page 67: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/67.jpg)
67/155
Design Patterns
We can identifyin the architectureof a systemsmicro-architectures similar todesign motifsto explain theproblem solved
Figure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
To compose objectsin a tree-like structureto describe whole–parthierarchies
Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
![Page 68: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/68.jpg)
68/155
Design Patterns
We can identifyin the architectureof a systemsmicro-architectures similar todesign motifsto explain theproblem solved
Figure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
To compose objectsin a tree-like structureto describe whole–parthierarchies
Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
![Page 69: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/69.jpg)
69/155
Design Patterns
Conclusions– Codify experts’ experience– Help train novice developers– Help developers’ communicate– Lead to improved quality
![Page 70: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/70.jpg)
70/155
Design Anti-patterns
Important assumptions– Poor design choices that are conjectured to
make object-oriented systems harder to maintain
– Yet, maybe the best and possibly only way to implement some requirements and–or some functionalities
![Page 71: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/71.jpg)
71/155
Design Anti-patterns
Problem– Problem recurring in object-oriented design
Poor solution– Initially may look like a good idea
Alternative solution– Repeatable (design pattern)– Effective
![Page 72: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/72.jpg)
72/155
Design Anti-patterns
Negatively impact– Fault proneness– Change proneness
– Comprehension
![Page 73: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/73.jpg)
73/155
Design Anti-patterns
Conclusions– Codify experts’ “bad” experience– Help train novice developers– Help developers’ communicate– Lead to improved quality
![Page 74: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/74.jpg)
74/155
Good Practices
Limits– So many patterns– So many
• Programming languages• Development contexts• Application domains• Expertises
How to use their occurrences in a model?
![Page 75: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/75.jpg)
75/155
Maintainability
Quality Models Models
Good Practices Definition
Metrics
Detection Occurrences
Social Studies Characteristics
Developers Studies Behaviour
Factors
Measures
![Page 76: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/76.jpg)
76/155
Social Studies
Developers’ characteristics– Gender– Status – Expertise– Training– Processes– …
![Page 77: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/77.jpg)
77/155
![Page 78: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/78.jpg)
78/155
Agile programming,anyone?
![Page 79: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/79.jpg)
79/155
![Page 80: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/80.jpg)
80/155
Social Studies
Need for social studies, typically in the form of experiments– Independent variable (few)– Dependent variables (many)– Statistical analyses (few)
– Threats to validity (many)
![Page 81: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/81.jpg)
81/155
Social Studies
For example, impact on identifiers on program understandability– Identifier styles [Sharif, Binkley]
– Identifier quality [Lawrie]
– Developers’ gender and identifiers [Sharafi]
– …
![Page 82: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/82.jpg)
82/155
Social Studies
For example, impact on identifiers on program understandability– Identifier styles [Sharif, Binkley]
– Identifier quality [Lawrie]
– Developers’ gender and identifiers [Sharafi]
– …
Zohreh Sharafi, Zéphyrin Soh, Yann-Gaël Guéhéneuc, and Giuliano Antoniol ;Women & Men: Different but Equal – A Study on the Impact of Identifiers on Source Code Underestanding ;Proceeding of 20th International Conference on Program Comprehension, IEEE, 2012
![Page 83: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/83.jpg)
83/155
Social Studies
Independent variables– Gender: male vs. female– Identifier: camel case vs. underscore
Dependent variables– Accuracy
– Time
– Effort
![Page 84: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/84.jpg)
84/155
Social Studies
Subjects
Conclusions
Subjects’ Demography(24 Subjects)
Academic background GenderPh.D. M.Sc. B.Sc. Male Female
11 10 3 15 9
Accuracy Time Effort
![Page 85: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/85.jpg)
85/155
Social Studies
Importance
Limits– Confounding factors– Actionable results?
![Page 86: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/86.jpg)
86/155
Maintainability
Quality Models Models
Good Practices Definition
Metrics
Detection Occurrences
Social Studies Characteristics
Developers Studies Behaviour
Factors
Measures
![Page 87: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/87.jpg)
87/155
Developers Studies
Developers’ thought processes– Cognitive theories
• Brooks’• Von Mayrhauser’s• Pennington’s• Soloway’s
– Mental models• Gentner and Stevens’ mental models
– Memory theories• Kelly’s categories• Minsky’s frames• Piaget’s schema• Schank’s scripts
![Page 88: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/88.jpg)
88/155
Developers Studies
Studying developers’thought processes– Yarbus’ eye-movements
and vision studies– Just and Carpenter’s
eye–mind hypothesis– Palmer’s vision science– …
![Page 89: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/89.jpg)
89/155
Developers Studies
Picking into developers’ thought processes
![Page 90: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/90.jpg)
90/155
Developers Studies
Picking into developers’ thought processes
![Page 91: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/91.jpg)
91/155
Developers Studies
Picking into developers’ thought processes
![Page 92: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/92.jpg)
92/155
Developers Studies
Developers’ thought processes– Reading code [Maletic]
– Reading design models [Cepeda]
• Content• Form
– …
![Page 93: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/93.jpg)
93/155
Developers Studies
Developers’ thought processes– Reading code– Reading design models [Cepeda]
• Content• Form
– …
Gerardo Cepeda Porras and Yann-Gaël Guéhéneuc ; An empirical study on the efficiency of different design pattern representations in UML class diagrams ;Journal of Empirical Software Engineering, 15(5), Springer, 2010
![Page 94: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/94.jpg)
94/155
Developers Studies
Developers’ use of design pattern notations during program understandability– Strongly visual [Schauer and Keler]
– Strongly textual [Dong et al.]
– Mixed [Vlissides]
![Page 95: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/95.jpg)
95/155
Developers Studies
Independent variables– Design pattern notations– Tasks: Participation, Composition, Role
Dependent variables– Average fixation duration– Ratio of fixations– Ration of fixation times
![Page 96: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/96.jpg)
96/155
Developers Studies
Subjects– 24 Ph.D. and M.Sc. students
Conclusions– Stereotype-enhanced UML diagram [Dong et al.]
more efficient for Composition and Role– UML collaboration notation and the pattern-
enhanced class diagrams more efficient for Participation
![Page 97: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/97.jpg)
97/155
Developers Studies
Importance– Understand– Do better
Limits– Confounding factors– Actionable results?
![Page 98: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/98.jpg)
98/155
Impact of Quality Models
Usefulness of the feedback? Usefulness of the models?
![Page 99: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/99.jpg)
99/155
Feedback?
Trend to use more, diverse, unrelated information as input of quality models– Code source metrics– Historical metrics– Design metrics
![Page 100: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/100.jpg)
100/155
Feedback?
Trend to use more, diverse, unrelated information as input of quality models– Code source metrics– Historical metrics– Design metrics– Good practices– Social studies– Developers’ studies
![Page 101: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/101.jpg)
101/155
![Page 102: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/102.jpg)
102/155
Modeling formodeling's sake?
![Page 103: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/103.jpg)
103/155
Aristotle384 BC–Mar 7, 322 BC
![Page 104: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/104.jpg)
104/155
Aristotle384 BC–Mar 7, 322 BC
Galileo GalileiFeb 15, 1564–Jan 8, 1642
![Page 105: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/105.jpg)
105/155
Aristotle384 BC–Mar 7, 322 BC
Galileo GalileiFeb 15, 1564–Jan 8, 1642
Isaac NewtonDec 25, 1642–Mar 20, 1727
![Page 106: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/106.jpg)
106/155
Aristotle384 BC–Mar 7, 322 BC
Galileo GalileiFeb 15, 1564–Jan 8, 1642
Isaac NewtonDec 25, 1642–Mar 20, 1727
Max TegmarkMay 5, 1967–
![Page 107: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/107.jpg)
107/155
Aristotle384 BC–Mar 7, 322 BC
Galileo GalileiFeb 15, 1564–Jan 8, 1642
Usefulness?
Isaac NewtonDec 25, 1642–Mar 20, 1727
Max TegmarkMay 5, 1967–
![Page 108: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/108.jpg)
108/155
Usefulness?
DSIV– SNCF IT department– 1,000+ employees – 200+ millions Euros– Mainframes to assembly to J2EE
– 2003• Quality team
Houari Sahraoui, Lionel C. Briand, Yann-Gaël Guéhéneuc , and Olivier Beaurepaire ;Investigating the impact of a measurement program on software quality ;Journal of Information and Software Technology, 52(9), Elsevier, 2010
![Page 109: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/109.jpg)
109/155
Usefulness?
MQL– Dedicated measurement process
![Page 110: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/110.jpg)
110/155
Usefulness?
MQL– Web-based reports
![Page 111: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/111.jpg)
111/155
Usefulness?
Independent variables– Use of MQL or not– LOC; team size, maturity, and nature
Dependent variables– Maintainability, evolvability, reusability,
robustness, testability, and architecture quality– Corrective maintenance effort (in time)– Proportions of complex/unstructured code and of
commented methods/functions
![Page 112: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/112.jpg)
112/155
Usefulness?
Subjects– 44 systems
• 22 under MQL (QA=1)• 22 under ad-hoc processes (QA=0)
![Page 113: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/113.jpg)
113/155
Usefulness?
![Page 114: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/114.jpg)
114/155
Usefulness?
![Page 115: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/115.jpg)
115/155
Usefulness?
![Page 116: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/116.jpg)
116/155
Usefulness?
![Page 117: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/117.jpg)
117/155
Usefulness?
Conclusions– Impact on all dependent variables – Statistical practical significance
Limits– Applicability to today’s software systems
![Page 118: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/118.jpg)
118/155
![Page 119: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/119.jpg)
119/155
What’s with today’s systems?
![Page 120: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/120.jpg)
120/155
![Page 121: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/121.jpg)
121/155
![Page 122: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/122.jpg)
122/155
![Page 123: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/123.jpg)
123/155
![Page 124: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/124.jpg)
124/155
![Page 125: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/125.jpg)
125/155
![Page 126: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/126.jpg)
126/155
![Page 127: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/127.jpg)
127/155
![Page 128: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/128.jpg)
128/155
![Page 129: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/129.jpg)
129/155
![Page 130: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/130.jpg)
130/155
Multi-language Systems
Today’s systems are multi-languages– Facebook– Twitter– …
– Even your “regular” software system is now multi-language, typically a Web application
![Page 131: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/131.jpg)
131/155
Multi-language Systems
New problems– Different computational models– Complex interfaces (API)– Wrong assumptions– Wrong conversions– …
![Page 132: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/132.jpg)
132/155
Multi-language Systems
For example, control- and data-flows between Java and “native” C/C++ code
native methods in Java are used by Java classes but (typically) implemented in C/C++
Gang Tan and Jason Croft ;An empirical security study of the native code in the JDK ;Proceedings of the 17th Security Symposium, USENIX Association, 2008
![Page 133: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/133.jpg)
133/155
Multi-language Systems
Control-flow interactions– Java code calls native code– Native code calls Java methods– Native code can “throw” and must catch
exceptions Data-flow interactions
– Java code passes objects (pointers)– Native code creates objects– …
![Page 134: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/134.jpg)
134/155
Multi-language Systems
Different computational models
![Page 135: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/135.jpg)
135/155
Multi-language Systems
Different computational modelsstatic void *xmalloc(JNIEnv *env, size_t size) {
void *p = malloc(size);if (p == NULL)
JNU_ThrowOutOfMemoryError(env, NULL);return p;
}
#define NEW(type, n) ((type *) xmalloc(env, (n) * sizeof(type)))
static const char *const *splitPath(JNIEnv *env, const char *path) {...pathv = NEW(char *, count+1);pathv[count] = NULL;...
}
![Page 136: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/136.jpg)
136/155
Multi-language Systems
Different computational modelsstatic void *xmalloc(JNIEnv *env, size_t size) {
void *p = malloc(size);if (p == NULL)
JNU_ThrowOutOfMemoryError(env, NULL);return p;
}
#define NEW(type, n) ((type *) xmalloc(env, (n) * sizeof(type)))
static const char *const *splitPath(JNIEnv *env, const char *path) {...pathv = NEW(char *, count+1);pathv[count] = NULL;...
}
No diversion of control flow!
![Page 137: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/137.jpg)
137/155
![Page 138: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/138.jpg)
138/155
What challenges?
![Page 139: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/139.jpg)
139/155
Unbalanced focus on “mono”-language systems vs. multi-language systems
![Page 140: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/140.jpg)
140/155
Challenges
Maintainability– Quality models
• Metrics?• Relations?
– Good practices• “Border-line” practices?
– Social and developers’ studies• Independent variables?
![Page 141: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/141.jpg)
141/155
Challenges
Not only for quality assurance!(Just for examples…)
![Page 142: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/142.jpg)
142/155
Challenges
Not only for quality assurance!(Just for examples…)
Build systemsdescriptions
![Page 143: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/143.jpg)
143/155
Challenges
Not only for quality assurance!(Just for examples…)
Build systemsdescriptions
Legal issues dueto interrelations
![Page 144: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/144.jpg)
144/155
Challenges
Not only for quality assurance!(Just for examples…)
Clone definitionand detection
Build systemsdescriptions
Legal issues dueto interrelations
![Page 145: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/145.jpg)
145/155
Challenges
Not only for quality assurance!(Just for examples…)
Clone definitionand detection
Build systemsdescriptions
Legal issues dueto interrelations
Impact on studiesof large systems
![Page 146: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/146.jpg)
146/155
![Page 147: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/147.jpg)
147/155
Conclusion
![Page 148: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/148.jpg)
148/155
![Page 149: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/149.jpg)
149/155
![Page 150: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/150.jpg)
150/155
![Page 151: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/151.jpg)
151/155
![Page 152: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/152.jpg)
152/155
Future directions
![Page 153: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/153.jpg)
153/155
![Page 154: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/154.jpg)
154/155
![Page 155: Quality and Software Design Patterns](https://reader034.vdocuments.net/reader034/viewer/2022042601/554a0fadb4c90507558b4ba3/html5/thumbnails/155.jpg)
155/155
Multi-language system quality characteristics
– Definition and modelling– Computation– Characterisation– Impact