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.
12. Agenda
Quality
– Quality Models
– Good Practices
– Social Studies
– Developers Studies
Impact
of Quality Models
Challenges with Multi-language Systems
12/126
13. 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
13/126
14. Quality
Division
of software quality according to
ISO/IEC 9126:2001 and 25000:2005
– Process quality
– Product quality
– Quality in use
14/126
15. Quality
Division
of software quality according to
ISO/IEC 9126:2001 and 25000:2005
– Process quality
– Product quality
– Quality in use
15/126
16. 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
16/126
17. 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
17/126
23. Quality model are models with the objective
to describe, assess, and–or predict quality
—Deissenboeck et al., WOSQ, 2009
(With minor adaptations)
23/126
24. 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
24/126
25. 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
25/126
26. Quality Models
Basis
for quality models
– Software measures (aka metrics)
– Relationships among characteristics and metrics
• Theoretical
• Practical
26/126
27. 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)
27/126
35. 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
–…
35/126
36. 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
–…
36/126
37. 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
37/126
38. 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
38/126
40. 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
40/126
47. 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)
47/126
48. 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
48/126
50. 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)
50/126
54. 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
54/126
55. 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
55/126
56. 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
56/126
57. 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
57/126
58. Good Practices
Conclusions
– Codify experts’ experience
– Help train novice developers
– Help developers’ communicate
– Lead to improved quality
58/126
64. 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)
64/126
65. Social Studies
For
example, impact on identifiers on
program understandability
– Identifier styles [Sharif, Binkley]
– Identifier quality [Lawrie]
– Developers’ gender and identifiers [Sharafi]
–…
65/126
66. Social Studies
For
example, impact on identifiers on
program understandability
– Identifier styles [Sharif, Binkley]
– Identifier quality [Lawrie]
– Developers’ gender and identifiers [Sharafi]
–…
66/126
67. Social Studies
Independent
variables
– Gender: male vs. female
– Identifier: camel case vs. underscore
Dependent
variables
– Accuracy
– Time
– Effort
67/126
68. Social Studies
Subjects
Subjects’ Demography
(24 Subjects)
Academic background
Gender
Ph.D.
M.Sc.
B.Sc.
Male
Female
11
10
3
15
9
Conclusions
Accuracy
Time
Effort
68/126
77. Developers Studies
Developers’
use of design pattern notations
during program understandability
– Strongly visual [Schauer and Keler]
– Strongly textual [Dong et al.]
– Mixed [Vlissides]
77/126
78. Developers Studies
Independent
variables
– Design pattern notations
– Tasks: Participation, Composition, Role
Dependent
variables
– Average fixation duration
– Ratio of fixations
– Ration of fixation times
78/126
79. 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 patternenhanced class diagrams more efficient for
Participation
79/126
80. Feedback Loop
Use
– Measures
– Occurrences
– Factors
to build “better” quality models
80/126
85. Aristote
384 BC–Mar 7, 322 BC
Galileo Galilei
Feb 15, 1564–Jan 8, 1642
Isaac Newton
Dec 25, 1642–Mar 20, 1727
85/126
86. 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–
86/126
87. Usefulness?
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
88. Impact of Quality Models
DSIV
– SNCF IT department
– 1,000+ employees
– 200+ millions Euros
– Mainframes to assembly to J2EE
– 2003
• Quality team
88/126
89. Impact of Quality Models
MQL
– Dedicated measurement process
89/126
91. 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
91/126
92. Impact of Quality Models
Subjects
– 44 systems
• 22 under MQL (QA=1)
• 22 under ad-hoc processes (QA=0)
92/126
110. 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
110/126
111. Challenges with Multi-language Systems
New
challenges
– Different computational models
– Complex interfaces (API)
– Wrong assumptions
– Wrong conversions
–…
111/126
112. Challenges with 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
112/126
113. 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
–…
113/126
128. Good Practices
Martin
and Feather’s SOLID
– Single responsibility
– Open/closed
– Liskov substitution
– Interface segregation
– Dependency inversion
128/126
129. Good Practices
What
motifs and what model for these
motifs?
What
How
model for the program architecture?
to perform the identification?
129/126
130. Good Practices
What
motifs and what model for these
motifs?
What
How
model for the program architecture?
to perform the identification?
130/126
131. Good Practices
What
motifs and what model for these
motifs? Design motifs and a
motif meta-model
What
How
model for the program architecture?
to perform the identification?
131/126
132. Good Practices
What
motifs and what model for these
motifs? Design motifs and a
motif meta-model
What
How
model for the program architecture?
to perform the identification?
132/126
133. Good Practices
What
motifs and what model for these
motifs? Design motifs and a
motif meta-model
What
How
model for the program architecture?
Design Meta-model
to perform the identification?
133/126
134. Good Practices
What
motifs and what model for these
motifs? Design motifs and a
motif meta-model
What
How
model for the program architecture?
Design Meta-model
to perform the identification?
134/126
135. Good Practices
What
motifs and what model for these
motifs? Design motifs and a
motif meta-model
What
How
model for the program architecture?
Design Meta-model
to perform the identification?
135/126
136. Good Practices
What
motifs and what model for these
motifs? Design motifs and a
motif meta-model
What
How
model for the program architecture?
Design Meta-model
to perform the identification?
136/126
138. Good Practices
framework
for design motif
identification
Model +
Associations,
aggregations,
and composition
Multi-layer
Model +
Associations,
aggregations
Model
Code
138/126
139. 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
139/126
140. Good Practices – Example
Design
motif (
)
Component
Client
1..n
operation()
ramification
Leaf
operation()
Composite
add(Component)
remove(Component)
getComponent(int)
operation()
For each components
component.operation()
140/126
141. Good Practices – Example
Example
of JHotDraw
– Erich Gamma and Thomas Eggenschwiler
– 2D drawing
– Design patterns
141/126
152. 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
152/126