1. Some Challenges of
Quality Assurance with
Multi-language Systems
Yann-Gaël Guéhéneuc
MSR Asia Summit
13/10/28
This work is licensed under a Creative
Commons Attribution-NonCommercialShareAlike 3.0 Unported License
12. Maintainability is the ease with which a
software system can be modified
—IEEE Standard Glossary of Software
Engineering Terminology, 2013
12/67
13. Agenda
Maintainability
– Quality models
– Good practices
– Social studies
– Developers studies
Multi-language
Systems
Challenges
– Maintainability
– Not only for quality assurance!
13/67
16. Quality model are models with the objective
to describe, assess, and–or predict quality
—Deissenboeck et al., WOSQ, 2009
(With minor adaptations)
16/67
17. Quality Models
Basis
for quality models
– Software measures (aka metrics)
– Relationships among characteristics and metrics
• Theoretical
• Practical
17/67
18. 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)
18/67
19. 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
–…
19/67
23. Important assumptions
– That practices 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)
23/67
24. Frame
DrawingEditor
Drawing
Handle
We can identify
in the architecture
of a systems
micro-architectures
similar to
design motifs
to explain the
problem solved
DrawingView
Tool
Good Practices
Panel
Figure
AbstractFigure
AttributeFigure
DecoratorFigure
PolyLineFigure
CompositeFigure
Figure
AttributeFigure
Component
Client
DecoratorFigure
PolyLineFigure
CompositeFigure
1..n
operation()
ramification
Leaf
operation()
Composite
add(Component)
remove(Component)
getComponent(int)
operation()
For each components
component.operation()
To compose objects
in a tree-like structure
to describe whole–part
hierarchies
24/67
25. Frame
DrawingEditor
Drawing
Handle
We can identify
in the architecture
of a systems
micro-architectures
similar to
design motifs
to explain the
problem solved
DrawingView
Tool
Good Practices
Panel
Figure
AbstractFigure
AttributeFigure
DecoratorFigure
PolyLineFigure
CompositeFigure
Figure
AttributeFigure
Component
Client
DecoratorFigure
PolyLineFigure
CompositeFigure
1..n
operation()
ramification
Leaf
operation()
Composite
add(Component)
remove(Component)
getComponent(int)
operation()
For each components
component.operation()
To compose objects
in a tree-like structure
to describe whole–part
hierarchies
25/67
26. Frame
DrawingEditor
Drawing
Handle
We can identify
in the architecture
of a systems
micro-architectures
similar to
design motifs
to explain the
problem solved
DrawingView
Tool
Good Practices
Panel
Figure
AbstractFigure
AttributeFigure
DecoratorFigure
PolyLineFigure
CompositeFigure
Figure
AttributeFigure
Component
Client
DecoratorFigure
PolyLineFigure
CompositeFigure
1..n
operation()
ramification
Leaf
operation()
Composite
add(Component)
remove(Component)
getComponent(int)
operation()
For each components
component.operation()
To compose objects
in a tree-like structure
to describe whole–part
hierarchies
26/67
27. Frame
DrawingEditor
Drawing
Handle
We can identify
in the architecture
of a systems
micro-architectures
similar to
design motifs
to explain the
problem solved
DrawingView
Tool
Good Practices
Panel
Figure
AbstractFigure
AttributeFigure
DecoratorFigure
PolyLineFigure
CompositeFigure
Figure
AttributeFigure
Component
Client
DecoratorFigure
PolyLineFigure
CompositeFigure
1..n
operation()
ramification
Leaf
operation()
Composite
add(Component)
remove(Component)
getComponent(int)
operation()
For each components
component.operation()
To compose objects
in a tree-like structure
to describe whole–part
hierarchies
27/67
28. Good Practices
Impact of practices
– “Good”, such as DPs
• Comprehension by Lange et al.
• Quality metrics by Masuda et al.
• Change-proneness by Bieman et al. and Khomh et al.
– “Bad”, such as APs
• Comprehension by Deligiannis et al. and Abbes et al.
• Change-proneness by Khomh et al.
• Fault-proneness by Li et al.
Feedback in quality models?
28/67
32. 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)
32/67
33. Social Studies
For
example, impact on identifiers on
program understandability
– Identifier styles by Sharif et al. and Binkley et al.
– Identifier quality by Lawrie et al.
– Identifiers styles and gender by Sharafi et al.
–…
33/67
38. Developers Studies
Developers’
thought processes
– Reading code by Hansen et al. and Sharafi et al.
– Reading design models
• Content by Kagdi et al. and Sharafi et al.
• Form by Cepeda et al.
–…
38/67
51. Multi-language Systems
Today’s
systems are multi-languages
– Facebook
– Twitter
–…
– Even your “regular” software system is now
multi-language, typically a Web application
51/67
53. Multi-language Systems
For
example, control- and data-flows
between Java and “native” C/C++ code
methods in Java are used by Java
classes but (typically) implemented in C/C++
native
53/67
63. Challenges
Not
only for quality assurance!
(Just for examples…)
Build systems
descriptions
Legal issues due
to interrelations
63/67
64. Challenges
Not
only for quality assurance!
(Just for examples…)
Build systems
descriptions
Legal issues due
to interrelations
Clone definition
and detection
64/67
65. Challenges
Not
only for quality assurance!
(Just for examples…)
Build systems
descriptions
Legal issues due
to interrelations
Clone definition
and detection
Impact on studies
of large systems
65/67