131014 yann-gael gueheneuc - quality, patterns, and multi-language systems

152
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

Upload: ptidej-team

Post on 05-Dec-2014

206 views

Category:

Technology


1 download

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

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

2/126

Page 3: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

3/126

Typical software developers?

Page 4: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

4/126

Page 5: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

5/126

Software costs?

Page 6: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

6/126

Page 7: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

7/126

Page 8: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

8/126

Cost of bugshttp://www.di.unito.it/~damiani/ariane5rep.html

Page 9: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

9/126

Page 10: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

10/126

Page 11: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

11/126

Cost of qualityhttp://calleam.com/WTPF/?p=4914

Page 12: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

28/126

Page 29: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

29/126

Who needs models?

Page 30: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

30/126

Page 31: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

32/126

Page 33: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

33/126

Page 34: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

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

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

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

39/126

Quality Models

Bansiya and Davis’ QMOOD

Page 40: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

42/126

Page 43: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

43/126

Practice, practiceand practice more

Page 44: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

44/126

Page 45: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

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

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

49/126

Good Practices

Page 50: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

51/126

Good Practices

Pattern solution = Motif which connotes anelegant architecture

Page 52: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

52/126

Good Practices

Pattern solution = Motif which connotes anelegant architecture

Page 53: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

53/126

Good Practices

Pattern solution = Motif which connotes anelegant architecture

Page 54: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

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

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

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

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

60/126

Social Studies

Developers’ characteristics– Gender– Status – Expertise– Training– Processes– …

Page 61: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

61/126

Page 62: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

62/126

Agile programming,anyone?

Page 63: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

63/126

Page 64: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

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

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

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

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

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

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

72/126

Developers Studies

Picking into developers’ thought processes

Page 73: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

73/126

Developers Studies

Picking into developers’ thought processes

Page 74: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

74/126

Developers Studies

Picking into developers’ thought processes

Page 75: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

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

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

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

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

81/126

Page 82: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

82/126

Modeling formodeling's sake?

Page 83: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

83/126

Aristote384 BC–Mar 7, 322 BC

Page 84: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

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

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

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

89/126

Impact of Quality Models

MQL– Dedicated measurement process

Page 90: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

90/126

Impact of Quality Models

MQL– Web-based reports

Page 91: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

93/126

Impact of Quality Models

Page 94: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

94/126

Impact of Quality Models

Page 95: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

95/126

Impact of Quality Models

Page 96: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

96/126

Impact of Quality Models

Page 97: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

98/126

Page 99: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

99/126

What’s with today’s systems?

Page 100: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

100/126

Page 101: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

101/126

Page 102: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

102/126

Page 103: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

103/126

Page 104: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

104/126

Page 105: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

105/126

Page 106: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

106/126

Page 107: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

107/126

Page 108: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

108/126

Page 109: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

109/126

Page 110: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

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

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

114/126

Challenges with Multi-language Systems

Different computational models

Page 115: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

117/126

Page 118: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

118/126

Conclusion

Page 119: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

119/126

Page 120: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

120/126

Page 121: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

121/126

Page 122: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

122/126

Page 123: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

123/126

Future directions

Page 124: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

124/126

Page 125: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

125/126

Page 126: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

127/126

Page 128: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

144/126

Good Practices – Example

Micro-architecture ( )

Maintainability Understandability

Figure

CompositeFigureAttributeFigure PolyLineFigureDecoratorFigure

Page 145: 131014   yann-gael gueheneuc - quality, patterns, and multi-language systems

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

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

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

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

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

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

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

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