MSR Asia Summit

68
Yann-Gaël Guéhéneuc This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 3.0 Unported License Some Challenges of Quality Assurance with Multi-language Systems MSR Asia Summit 13/10/28

description

Quality, maintability, quality models, good practices, developers' studies, social studies, data mining, challenges.

Transcript of MSR Asia Summit

Page 1: MSR Asia Summit

Yann-Gaël Guéhéneuc

This work is licensed under a Creative Commons Attribution-NonCommercial-

ShareAlike 3.0 Unported License

Some Challenges of Quality Assurance withMulti-language Systems

MSR Asia Summit13/10/28

Page 2: MSR Asia Summit

2/67

Page 3: MSR Asia Summit

3/67

Software development services?

Page 4: MSR Asia Summit

4/67

Page 5: MSR Asia Summit

5/67

Software costs?

Page 6: MSR Asia Summit

6/67

Page 7: MSR Asia Summit

7/67

Page 8: MSR Asia Summit

8/67

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

Page 9: MSR Asia Summit

9/67

Page 10: MSR Asia Summit

10/67

Page 11: MSR Asia Summit

11/67

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

Page 12: MSR Asia Summit

12/67

Maintainability is the ease with which a software system can be modified

—IEEE Standard Glossary of Software Engineering Terminology, 2013

Page 13: MSR Asia Summit

13/67

Agenda

Maintainability– Quality models– Good practices– Social studies– Developers studies

Multi-language Systems Challenges

– Maintainability– Not only for quality assurance!

Page 14: MSR Asia Summit

14/67

Maintainability

Quality Models Models

Good Practices Definition

Metrics

Detection Occurrences

Social Studies Characteristics

Developers Studies Behaviour

Factors

Measures

Page 15: MSR Asia Summit

15/67

Maintainability

Quality Models Models

Good Practices Definition

Metrics

Detection Occurrences

Social Studies Characteristics

Developers Studies Behaviour

Factors

Measures

Page 16: MSR Asia Summit

16/67

Quality model are models with the objective to describe, assess, and–or predict quality

—Deissenboeck et al., WOSQ, 2009(With minor adaptations)

Page 17: MSR Asia Summit

17/67

Quality Models

Basis for quality models – Software measures (aka metrics)– Relationships among characteristics and metrics

• Theoretical• Practical

Page 18: MSR Asia Summit

18/67

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 19: MSR Asia Summit

19/67

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 20: MSR Asia Summit

20/67

Quality Models

Feedback– Measures– Occurrences– Factors

to build “better” quality models

Page 21: MSR Asia Summit

21/67

Maintainability

Quality Models Models

Good Practices Definition

Metrics

Detection Occurrences

Social Studies Characteristics

Developers Studies Behaviour

Factors

Measures

Page 22: MSR Asia Summit

22/67

Page 23: MSR Asia Summit

23/67

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)

Page 24: MSR Asia Summit

24/67

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 25: MSR Asia Summit

25/67

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 26: MSR Asia Summit

26/67

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 27: MSR Asia Summit

27/67

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 28: MSR Asia Summit

28/67

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?

Page 29: MSR Asia Summit

29/67

Maintainability

Quality Models Models

Good Practices Definition

Metrics

Detection Occurrences

Social Studies Characteristics

Developers Studies Behaviour

Factors

Measures

Page 30: MSR Asia Summit

30/67

Social Studies

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

Page 31: MSR Asia Summit

31/67

Page 32: MSR Asia Summit

32/67

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 33: MSR Asia Summit

33/67

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.– …

Page 34: MSR Asia Summit

34/67

Maintainability

Quality Models Models

Good Practices Definition

Metrics

Detection Occurrences

Social Studies Characteristics

Developers Studies Behaviour

Factors

Measures

Page 35: MSR Asia Summit

35/67

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 36: MSR Asia Summit

36/67

Developers Studies

Picking into developers’ thought processes

Page 37: MSR Asia Summit

37/67

Developers Studies

Picking into developers’ thought processes

Page 38: MSR Asia Summit

38/67

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.

– …

Page 39: MSR Asia Summit

39/67

Page 40: MSR Asia Summit

40/67

What’s with today’s systems?

Page 41: MSR Asia Summit

41/67

Page 42: MSR Asia Summit

42/67

Page 43: MSR Asia Summit

43/67

Page 44: MSR Asia Summit

44/67

Page 45: MSR Asia Summit

45/67

Page 46: MSR Asia Summit

46/67

Page 47: MSR Asia Summit

47/67

Page 48: MSR Asia Summit

48/67

Page 49: MSR Asia Summit

49/67

Page 50: MSR Asia Summit

50/67

Page 51: MSR Asia Summit

51/67

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 52: MSR Asia Summit

52/67

Multi-language Systems

New problems– Different computational models– Complex interfaces (API)– Wrong assumptions– Wrong conversions– …

Page 53: MSR Asia Summit

53/67

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 54: MSR Asia Summit

54/67

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 55: MSR Asia Summit

55/67

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 56: MSR Asia Summit

56/67

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 57: MSR Asia Summit

57/67

Page 58: MSR Asia Summit

58/67

What challenges?

Page 59: MSR Asia Summit

59/67

Unbalanced focus on “mono”-language systems vs. multi-language systems

Page 60: MSR Asia Summit

60/67

Challenges

Maintainability– Quality models

• Metrics?• Relations?

– Good practices• “Border-line” practices?

– Social and developers’ studies• Independent variables?

Page 61: MSR Asia Summit

61/67

Challenges

Not only for quality assurance!(Just for examples…)

Page 62: MSR Asia Summit

62/67

Challenges

Not only for quality assurance!(Just for examples…)

Build systemsdescriptions

Page 63: MSR Asia Summit

63/67

Challenges

Not only for quality assurance!(Just for examples…)

Build systemsdescriptions

Legal issues dueto interrelations

Page 64: MSR Asia Summit

64/67

Challenges

Not only for quality assurance!(Just for examples…)

Clone definitionand detection

Build systemsdescriptions

Legal issues dueto interrelations

Page 65: MSR Asia Summit

65/67

Challenges

Not only for quality assurance!(Just for examples…)

Clone definitionand detection

Build systemsdescriptions

Legal issues dueto interrelations

Impact on studiesof large systems

Page 66: MSR Asia Summit

66/67

Conclusion

Page 67: MSR Asia Summit

67/67

Page 68: MSR Asia Summit

68/67