131014 yann-gael gueheneuc - quality, patterns, and multi-language systems
DESCRIPTION
Introduction to software quality. Quality models and studies for quality: patterns, social, and developers studies. Usefulness of quality models and challenges of multi-language systems.TRANSCRIPT
![Page 1: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/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
Quality and Multi-language Systems
KAIST13/10/14
![Page 2: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/2.jpg)
2/126
![Page 3: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/3.jpg)
3/126
Typical software developers?
![Page 4: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/4.jpg)
4/126
![Page 5: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/5.jpg)
5/126
Software costs?
![Page 6: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/6.jpg)
6/126
![Page 7: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/7.jpg)
7/126
![Page 8: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/8.jpg)
8/126
Cost of bugshttp://www.di.unito.it/~damiani/ariane5rep.html
![Page 9: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/9.jpg)
9/126
![Page 10: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/10.jpg)
10/126
![Page 12: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/12.jpg)
12/126
Agenda
Quality– Quality Models– Good Practices– Social Studies– Developers Studies
Impact of Quality Models Challenges with Multi-language Systems
![Page 13: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/13.jpg)
13/126
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: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/14.jpg)
14/126
Quality
Division of software quality according to ISO/IEC 9126:2001 and 25000:2005– Process quality– Product quality– Quality in use
![Page 15: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/15.jpg)
15/126
Quality
Division of software quality according to ISO/IEC 9126:2001 and 25000:2005 – Process quality– Product quality– Quality in use
![Page 16: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/16.jpg)
16/126
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: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/17.jpg)
17/126
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: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/18.jpg)
18/126
Quality
Definitions of internal quality characteristics– Maintainability– Flexibility– Portability– Re-usability– Readability– Testability– Understandability
![Page 19: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/19.jpg)
19/126
Quality
Definitions of internal quality characteristics– Maintainability– Flexibility– Portability– Re-usability– Readability– Testability– Understandability
![Page 20: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/20.jpg)
20/126
Maintainability is the ease with which a software system can be modified
—IEEE Standard Glossary of Software Engineering Terminology, 2013
![Page 21: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/21.jpg)
21/126
Maintainability
Quality Models Models
Good Practices Definition
Metrics
Detection Occurrences
Social Studies Characteristics
Developers Studies Behaviour
Factors
Measures
![Page 22: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/22.jpg)
22/126
Maintainability
Quality Models Models
Good Practices Definition
Metrics
Detection Occurrences
Social Studies Characteristics
Developers Studies Behaviour
Factors
Measures
![Page 23: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/23.jpg)
23/126
Quality model are models with the objective to describe, assess, and–or predict quality
—Deissenboeck et al., WOSQ, 2009(With minor adaptations)
![Page 24: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/24.jpg)
24/126
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: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/25.jpg)
25/126
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: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/26.jpg)
26/126
Quality Models
Basis for quality models – Software measures (aka metrics)– Relationships among characteristics and metrics
• Theoretical• Practical
![Page 27: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/27.jpg)
27/126
Quality Models
Metrics have been well researched– Chidamber and Kemerer– Hitz and Montazeri– Lorenz and Kidd– McCabe– …
(Do not miss Briand et al.’s surveys on cohesion and coupling metrics)
![Page 28: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/28.jpg)
28/126
![Page 29: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/29.jpg)
29/126
Who needs models?
![Page 30: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/30.jpg)
30/126
![Page 31: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/31.jpg)
31/126
•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 32: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/32.jpg)
32/126
![Page 33: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/33.jpg)
33/126
![Page 34: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/34.jpg)
34/126
Measures without modelshttp://hardsci.wordpress.com/2013/09/17/the-hotness-iq-tradeoff-in-academia/
![Page 35: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/35.jpg)
35/126
Quality Models
Different input metrics, different output characteristics– Bansiya and Davis’ QMOOD
• Design metrics• Maintainability-related characteristics
– Zimmermann et al.’s models• Code and historical metrics• Fault-proneness
– …
![Page 36: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/36.jpg)
36/126
Quality Models
Different input metrics, different output characteristics– Bansiya and Davis’ QMOOD
• Design metrics• Maintainability-related characteristics
– Zimmermann et al.’s models• Code and historical metrics• Fault-proneness
– …
![Page 37: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/37.jpg)
37/126
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
![Page 38: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/38.jpg)
38/126
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
![Page 39: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/39.jpg)
39/126
Quality Models
Bansiya and Davis’ QMOOD
![Page 40: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/40.jpg)
40/126
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 41: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/41.jpg)
41/126
Maintainability
Quality Models Models
Good Practices Definition
Metrics
Detection Occurrences
Social Studies Characteristics
Developers Studies Behaviour
Factors
Measures
![Page 42: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/42.jpg)
42/126
![Page 43: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/43.jpg)
43/126
Practice, practiceand practice more
![Page 44: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/44.jpg)
44/126
![Page 45: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/45.jpg)
45/126
Good Practices
Maintainers can follow good practices– SOLID– Design patterns– Design antipatterns– …
![Page 46: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/46.jpg)
46/126
Good Practices
Maintainers can follow good practices– SOLID– Design patterns– Design antipatterns– …
![Page 47: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/47.jpg)
47/126
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 48: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/48.jpg)
48/126
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 49: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/49.jpg)
49/126
Good Practices
![Page 50: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/50.jpg)
50/126
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 51: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/51.jpg)
51/126
Good Practices
Pattern solution = Motif which connotes anelegant architecture
![Page 52: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/52.jpg)
52/126
Good Practices
Pattern solution = Motif which connotes anelegant architecture
![Page 53: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/53.jpg)
53/126
Good Practices
Pattern solution = Motif which connotes anelegant architecture
![Page 54: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/54.jpg)
54/126
Good Practices
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 55: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/55.jpg)
55/126
Good Practices
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 56: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/56.jpg)
56/126
Good Practices
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 57: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/57.jpg)
57/126
Good Practices
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 58: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/58.jpg)
58/126
Good Practices
Conclusions– Codify experts’ experience– Help train novice developers– Help developers’ communicate– Lead to improved quality
![Page 59: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/59.jpg)
59/126
Maintainability
Quality Models Models
Good Practices Definition
Metrics
Detection Occurrences
Social Studies Characteristics
Developers Studies Behaviour
Factors
Measures
![Page 60: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/60.jpg)
60/126
Social Studies
Developers’ characteristics– Gender– Status – Expertise– Training– Processes– …
![Page 61: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/61.jpg)
61/126
![Page 62: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/62.jpg)
62/126
Agile programming,anyone?
![Page 63: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/63.jpg)
63/126
![Page 64: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/64.jpg)
64/126
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 65: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/65.jpg)
65/126
Social Studies
For example, impact on identifiers on program understandability– Identifier styles [Sharif, Binkley]
– Identifier quality [Lawrie]
– Developers’ gender and identifiers [Sharafi]
– …
![Page 66: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/66.jpg)
66/126
Social Studies
For example, impact on identifiers on program understandability– Identifier styles [Sharif, Binkley]
– Identifier quality [Lawrie]
– Developers’ gender and identifiers [Sharafi]
– …
![Page 67: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/67.jpg)
67/126
Social Studies
Independent variables– Gender: male vs. female– Identifier: camel case vs. underscore
Dependent variables– Accuracy
– Time
– Effort
![Page 68: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/68.jpg)
68/126
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 69: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/69.jpg)
69/126
Maintainability
Quality Models Models
Good Practices Definition
Metrics
Detection Occurrences
Social Studies Characteristics
Developers Studies Behaviour
Factors
Measures
![Page 70: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/70.jpg)
70/126
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 71: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/71.jpg)
71/126
Developers Studies
Studying developers’thought processes– Yarbus’ eye-movements
and vision studies– Just and Carpenter’s
eye–mind hypothesis– Palmer’s vision science– …
![Page 72: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/72.jpg)
72/126
Developers Studies
Picking into developers’ thought processes
![Page 73: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/73.jpg)
73/126
Developers Studies
Picking into developers’ thought processes
![Page 74: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/74.jpg)
74/126
Developers Studies
Picking into developers’ thought processes
![Page 75: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/75.jpg)
75/126
Developers Studies
Developers’ thought processes– Reading code– Reading design models
• Content• Form
– …
![Page 76: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/76.jpg)
76/126
Developers Studies
Developers’ thought processes– Reading code– Reading design models
• Content• Form
– …
![Page 77: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/77.jpg)
77/126
Developers Studies
Developers’ use of design pattern notations during program understandability– Strongly visual [Schauer and Keler]
– Strongly textual [Dong et al.]
– Mixed [Vlissides]
![Page 78: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/78.jpg)
78/126
Developers Studies
Independent variables– Design pattern notations– Tasks: Participation, Composition, Role
Dependent variables– Average fixation duration– Ratio of fixations– Ration of fixation times
![Page 79: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/79.jpg)
79/126
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 80: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/80.jpg)
80/126
Feedback Loop
Use– Measures– Occurrences– Factors
to build “better” quality models
![Page 81: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/81.jpg)
81/126
![Page 82: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/82.jpg)
82/126
Modeling formodeling's sake?
![Page 83: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/83.jpg)
83/126
Aristote384 BC–Mar 7, 322 BC
![Page 84: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/84.jpg)
84/126
Aristote384 BC–Mar 7, 322 BC
Galileo GalileiFeb 15, 1564–Jan 8, 1642
![Page 85: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/85.jpg)
85/126
Aristote384 BC–Mar 7, 322 BC
Galileo GalileiFeb 15, 1564–Jan 8, 1642
Isaac NewtonDec 25, 1642–Mar 20, 1727
![Page 86: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/86.jpg)
86/126
Aristote384 BC–Mar 7, 322 BC
Galileo GalileiFeb 15, 1564–Jan 8, 1642
Isaac NewtonDec 25, 1642–Mar 20, 1727
Max TegmarkMay 5, 1967–
![Page 87: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/87.jpg)
87/126
Aristote384 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 88: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/88.jpg)
88/126
Impact of Quality Models
DSIV– SNCF IT department– 1,000+ employees – 200+ millions Euros– Mainframes to assembly to J2EE
– 2003• Quality team
![Page 89: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/89.jpg)
89/126
Impact of Quality Models
MQL– Dedicated measurement process
![Page 90: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/90.jpg)
90/126
Impact of Quality Models
MQL– Web-based reports
![Page 91: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/91.jpg)
91/126
Impact of Quality Models
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 92: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/92.jpg)
92/126
Impact of Quality Models
Subjects– 44 systems
• 22 under MQL (QA=1)• 22 under ad-hoc processes (QA=0)
![Page 93: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/93.jpg)
93/126
Impact of Quality Models
![Page 94: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/94.jpg)
94/126
Impact of Quality Models
![Page 95: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/95.jpg)
95/126
Impact of Quality Models
![Page 96: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/96.jpg)
96/126
Impact of Quality Models
![Page 97: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/97.jpg)
97/126
Impact of Quality Models
Conclusions– Impact on all dependent variables – Statistical practical significance
Limits– Applicability to today’s software systems
![Page 98: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/98.jpg)
98/126
![Page 99: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/99.jpg)
99/126
What’s with today’s systems?
![Page 100: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/100.jpg)
100/126
![Page 101: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/101.jpg)
101/126
![Page 102: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/102.jpg)
102/126
![Page 103: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/103.jpg)
103/126
![Page 104: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/104.jpg)
104/126
![Page 105: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/105.jpg)
105/126
![Page 106: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/106.jpg)
106/126
![Page 107: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/107.jpg)
107/126
![Page 108: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/108.jpg)
108/126
![Page 109: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/109.jpg)
109/126
![Page 110: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/110.jpg)
110/126
Challenges with 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 111: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/111.jpg)
111/126
Challenges with Multi-language Systems
New challenges– Different computational models– Complex interfaces (API)– Wrong assumptions– Wrong conversions– …
![Page 112: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/112.jpg)
112/126
Challenges with 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++
![Page 113: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/113.jpg)
113/126
Challenges with 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 114: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/114.jpg)
114/126
Challenges with Multi-language Systems
Different computational models
![Page 115: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/115.jpg)
115/126
Challenges with 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 116: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/116.jpg)
116/126
Challenges with 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 117: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/117.jpg)
117/126
![Page 118: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/118.jpg)
118/126
Conclusion
![Page 119: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/119.jpg)
119/126
![Page 120: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/120.jpg)
120/126
![Page 121: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/121.jpg)
121/126
![Page 122: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/122.jpg)
122/126
![Page 123: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/123.jpg)
123/126
Future directions
![Page 124: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/124.jpg)
124/126
![Page 125: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/125.jpg)
125/126
![Page 126: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/126.jpg)
126/126
Multi-language system quality characteristics
– Definition and modelling– Computation– Characterisation– Impact
![Page 127: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/127.jpg)
127/126
![Page 128: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/128.jpg)
128/126
Good Practices
Martin and Feather’s SOLID– Single responsibility– Open/closed– Liskov substitution– Interface segregation– Dependency inversion
![Page 129: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/129.jpg)
129/126
Good Practices
What motifs and what model for these motifs?
What model for the program architecture?
How to perform the identification?
![Page 130: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/130.jpg)
130/126
Good Practices
What motifs and what model for these motifs?
What model for the program architecture?
How to perform the identification?
![Page 131: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/131.jpg)
131/126
Good Practices
What motifs and what model for these motifs?
What model for the program architecture?
How to perform the identification?
Design motifs and a motif meta-model
![Page 132: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/132.jpg)
132/126
Good Practices
What motifs and what model for these motifs?
What model for the program architecture?
How to perform the identification?
Design motifs and a motif meta-model
![Page 133: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/133.jpg)
133/126
Good Practices
What motifs and what model for these motifs?
What model for the program architecture?
How to perform the identification?
Design Meta-model
Design motifs and a motif meta-model
![Page 134: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/134.jpg)
134/126
Good Practices
What motifs and what model for these motifs?
What model for the program architecture?
How to perform the identification?
Design Meta-model
Design motifs and a motif meta-model
![Page 135: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/135.jpg)
135/126
Good Practices
What motifs and what model for these motifs?
What model for the program architecture?
How to perform the identification?
Design Meta-model
Design motifs and a motif meta-model
![Page 136: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/136.jpg)
136/126
Good Practices
What motifs and what model for these motifs?
What model for the program architecture?
How to perform the identification?
Design Meta-model
Design motifs and a motif meta-model
![Page 137: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/137.jpg)
137/126
Good Practices
Multi-layer framework for design motif identification
Information retrieval– Search space– Query– Results
![Page 138: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/138.jpg)
138/126
Good Practices
Multi-layer framework for design motif identification
Code
Model
Model + Associations, aggregations
Model + Associations, aggregations,
and composition
![Page 139: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/139.jpg)
139/126
Good Practices
Constraint satisfaction problem solved with explanation-based constraint programming (e-CP) to obtain – No a priori descriptions of variations– Justification of the identified micro-architectures– Strong interaction with the developers
![Page 140: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/140.jpg)
140/126
Good Practices – Example
Design motif ( )
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
![Page 141: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/141.jpg)
141/126
Good Practices – Example
Example of JHotDraw– Erich Gamma and Thomas Eggenschwiler– 2D drawing– Design patterns
![Page 142: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/142.jpg)
142/126
Goo
d Pr
actic
es –
Exam
ple Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
![Page 143: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/143.jpg)
143/126
Goo
d Pr
actic
es –
Exam
ple Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
![Page 144: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/144.jpg)
144/126
Good Practices – Example
Micro-architecture ( )
Maintainability Understandability
Figure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
![Page 145: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/145.jpg)
145/126
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
e-CP
V = {component, leaf, composite}C = {leaf < component, composite < component, composite component}D = {DrawingEditor, DrawingView…}
![Page 146: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/146.jpg)
146/126
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
e-CP
V = {component, leaf, composite}C = {leaf < component, composite < component, composite component}D = {DrawingEditor, DrawingView…}
![Page 147: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/147.jpg)
147/126
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
e-CP
V = {component, leaf, composite}C = {leaf < component, composite < component, composite component}D = {DrawingEditor, DrawingView…}
![Page 148: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/148.jpg)
148/126
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
e-CP
V = {component, leaf, composite}C = {leaf < component, composite < component, composite component}D = {DrawingEditor, DrawingView…}
![Page 149: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/149.jpg)
149/126
Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
e-CP
V = {component, leaf, composite}C = {leaf < component, composite < component, composite component}D = {DrawingEditor, DrawingView…}
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
![Page 150: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/150.jpg)
150/126
Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
e-CP
V = {component, leaf, composite}C = {leaf < component, composite < component, composite component}D = {DrawingEditor, DrawingView…}
<< <<
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
![Page 151: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/151.jpg)
151/126
Frame
DrawingEditor
Tool
Handle
Panel
DrawingView
Drawing
Figure
AbstractFigure
CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure
e-CP
V = {component, leaf, composite}C = {leaf < component, composite < component, composite component}D = {DrawingEditor, DrawingView…}
<< <<
Component
operation()
Leaf
operation()
Composite
add(Component)remove(Component)getComponent(int)operation()
ramification
For each componentscomponent.operation()
1..nClient
![Page 152: 131014 yann-gael gueheneuc - quality, patterns, and multi-language systems](https://reader033.vdocuments.us/reader033/viewer/2022051817/54821e76b47959fb0c8b46ed/html5/thumbnails/152.jpg)
152/126
Good Practices
Search space can be very large and the efficiency in time of the search very low
Use metrics and topology to reduce the search space