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
KAIST 13/10/14
Quality and Multi-language Systems Yann-Gal Guhneuc KAIST - - PowerPoint PPT Presentation
Quality and Multi-language Systems Yann-Gal Guhneuc KAIST 13/10/14 This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 3.0 Unported License 2/126 Typical software developers? 3/126 4/126 Software
This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 3.0 Unported License
KAIST 13/10/14
2/126
3/126
4/126
5/126
6/126
7/126
8/126
http://www.di.unito.it/~damiani/ariane5rep.html
9/126
10/126
11/126
http://calleam.com/WTPF/?p=4914
12/126
Quality
Impact of Quality Models Challenges with Multi-language Systems
13/126
14/126
Division of software quality according to
15/126
Division of software quality according to
16/126
Dimensions of product quality
17/126
Dimensions of product quality
18/126
Definitions of internal quality characteristics
19/126
Definitions of internal quality characteristics
20/126
21/126
Maintainability Quality Models Models Good Practices Definition Metrics Detection Occurrences Social Studies Characteristics Developers Studies Behaviour Factors Measures
22/126
Maintainability Quality Models Models Good Practices Definition Metrics Detection Occurrences Social Studies Characteristics Developers Studies Behaviour Factors Measures
23/126
(With minor adaptations)
24/126
Division of quality models according to
25/126
Division of quality models according to
26/126
Basis for quality models
27/126
Metrics have been well researched
28/126
29/126
30/126
31/126
32/126
33/126
34/126
http://hardsci.wordpress.com/2013/09/17/the-hotness-iq-tradeoff-in-academia/
35/126
Different input metrics, different output
36/126
Different input metrics, different output
37/126
Bansiya and Davis’ QMOOD
reusability, and understandability
classes, objects, and their relationships
38/126
Bansiya and Davis’ QMOOD
39/126
Bansiya and Davis’ QMOOD
40/126
Conclusions
Limits
41/126
Maintainability Quality Models Models Good Practices Definition Metrics Detection Occurrences Social Studies Characteristics Developers Studies Behaviour Factors Measures
42/126
43/126
44/126
45/126
Maintainers can follow good practices
46/126
Maintainers can follow good practices
47/126
(With minor adaptations)
48/126
Design patterns
Design antipatterns
49/126
50/126
(With minor adaptations)
51/126
Pattern solution = Motif which
52/126
Pattern solution = Motif which
53/126
Pattern solution = Motif which
54/126
To compose objects in a tree-like structure to describe whole–part hierarchies
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure Component55/126
To compose objects in a tree-like structure to describe whole–part hierarchies
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure Component56/126
To compose objects in a tree-like structure to describe whole–part hierarchies
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure Component57/126
To compose objects in a tree-like structure to describe whole–part hierarchies
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure Component58/126
Conclusions
59/126
Maintainability Quality Models Models Good Practices Definition Metrics Detection Occurrences Social Studies Characteristics Developers Studies Behaviour Factors Measures
60/126
Developers’ characteristics
61/126
62/126
63/126
64/126
Need for social studies, typically in the form
65/126
For example, impact on identifiers on
66/126
For example, impact on identifiers on
67/126
Independent variables
Dependent variables
68/126
Subjects Conclusions
Subjects’ Demography (24 Subjects)
Academic background Gender
Ph.D. M.Sc. B.Sc. Male Female
11 10 3 15 9
Accuracy Time Effort
69/126
Maintainability Quality Models Models Good Practices Definition Metrics Detection Occurrences Social Studies Characteristics Developers Studies Behaviour Factors Measures
70/126
Developers’ thought processes
71/126
Studying developers’
– Yarbus’ eye-movements and vision studies – Just and Carpenter’s eye–mind hypothesis – Palmer’s vision science – …
72/126
Picking into developers’ thought processes
73/126
Picking into developers’ thought processes
74/126
Picking into developers’ thought processes
75/126
Developers’ thought processes
76/126
Developers’ thought processes
77/126
Developers’ use of design pattern notations
78/126
Independent variables
Dependent variables
79/126
Subjects
Conclusions
80/126
Use
81/126
82/126
83/126
Aristote
384 BC–Mar 7, 322 BC
84/126
Aristote
384 BC–Mar 7, 322 BC
Galileo Galilei
Feb 15, 1564–Jan 8, 1642
85/126
Aristote
384 BC–Mar 7, 322 BC
Galileo Galilei
Feb 15, 1564–Jan 8, 1642
Isaac Newton
Dec 25, 1642–Mar 20, 1727
86/126
Aristote
384 BC–Mar 7, 322 BC
Galileo Galilei
Feb 15, 1564–Jan 8, 1642
Isaac Newton
Dec 25, 1642–Mar 20, 1727
Max Tegmark
May 5, 1967–
87/126
Aristote
384 BC–Mar 7, 322 BC
Galileo Galilei
Feb 15, 1564–Jan 8, 1642
Isaac Newton
Dec 25, 1642–Mar 20, 1727
Max Tegmark
May 5, 1967–
88/126
DSIV
89/126
MQL
90/126
MQL
91/126
Independent variables
Dependent variables
92/126
Subjects
93/126
94/126
95/126
96/126
97/126
Conclusions
Limits
98/126
99/126
100/126
101/126
102/126
103/126
104/126
105/126
106/126
107/126
108/126
109/126
110/126
Today’s systems are multi-languages
111/126
New challenges
112/126
For example, control- and data-flows
native methods in Java are used by Java
113/126
Control-flow interactions
Data-flow interactions
114/126
Different computational models
115/126
Different computational models
static 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; ... }
116/126
Different computational models
static 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; ... }
117/126
118/126
119/126
120/126
121/126
122/126
123/126
124/126
125/126
126/126
Multi-language system quality characteristics
127/126
128/126
Martin and Feather’s SOLID
129/126
What motifs and what model for these
What model for the program architecture? How to perform the identification?
130/126
What motifs and what model for these
What model for the program architecture? How to perform the identification?
131/126
What motifs and what model for these
What model for the program architecture? How to perform the identification?
132/126
What motifs and what model for these
What model for the program architecture? How to perform the identification?
133/126
What motifs and what model for these
What model for the program architecture? How to perform the identification?
134/126
What motifs and what model for these
What model for the program architecture? How to perform the identification?
135/126
What motifs and what model for these
What model for the program architecture? How to perform the identification?
136/126
What motifs and what model for these
What model for the program architecture? How to perform the identification?
137/126
Multi-layer framework for design motif
Information retrieval
138/126
Multi-layer framework
Code Model Model + Associations, aggregations Model + Associations, aggregations, and composition
139/126
Constraint satisfaction problem solved with
140/126
Design motif ( )
Component
Leaf
Composite
add(Component) remove(Component) getComponent(int)
ramification
For each components component.operation()
1..n Client
141/126
Example of JHotDraw
142/126
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure
143/126
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure
144/126
Micro-architecture ( ) Maintainability Understandability
Figure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure
145/126
Component
Leaf
Composite
add(Component) remove(Component) getComponent(int)
ramification
For each components component.operation()
1..n Client
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure
146/126
Component
Leaf
Composite
add(Component) remove(Component) getComponent(int)
ramification
For each components component.operation()
1..n Client
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure
147/126
Component
Leaf
Composite
add(Component) remove(Component) getComponent(int)
ramification
For each components component.operation()
1..n Client
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure
148/126
Component
Leaf
Composite
add(Component) remove(Component) getComponent(int)
ramification
For each components component.operation()
1..n Client
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure
149/126
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure
Component
Leaf
Composite
add(Component) remove(Component) getComponent(int)
ramification
For each components component.operation()
1..n Client
150/126
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure
Component
Leaf
Composite
add(Component) remove(Component) getComponent(int)
ramification
For each components component.operation()
1..n Client
151/126
Frame DrawingEditor Tool Handle Panel DrawingView Drawing Figure AbstractFigure CompositeFigure AttributeFigure PolyLineFigure DecoratorFigure
Component
Leaf
Composite
add(Component) remove(Component) getComponent(int)
ramification
For each components component.operation()
1..n Client
152/126
Search space can
Use metrics and