460 likes | 495 Views
Étude empirique en génie logiciel. Application sur GitHub et Alexa Xavier Blanc – IUF – Bordeaux Univ . - ProMyze. Génie Logiciel.
E N D
Étude empirique en génie logiciel Application sur GitHub et Alexa Xavier Blanc – IUF – Bordeaux Univ. - ProMyze EJCP - Strasbourg - Juin 2019
Génie Logiciel • Le génie logiciel repose sur l’application systématique des connaissances, méthodes, compétences scientifiques et technologiques nécessaires à la modélisation, l’implémentation, les tests, la maintenance et la documentation de ces logiciels qui structurent de plus en plus notre société. • La recherche en génie logiciel fédère l’ensemble des activités qui permettent de définir, formaliser et évaluer les concepts, méthodes et outils qui portent la production logicielle actuelle et future. EJCP - Strasbourg - Juin 2019
Exemple : Performance Site Web EJCP - Strasbourg - Juin 2019
Exemple : Performance Site Web Faire peu de requêtes CSS améliore la performance ! EJCP - Strasbourg - Juin 2019
Comment Evaluer ? EJCP - Strasbourg - Juin 2019
Etude Empirique : Observation & Expérimentation • Les études empiriques permettent d’évaluer des concepts, méthodes et outils en réalisant des expérimentations et en observant les résultats obtenus EJCP - Strasbourg - Juin 2019
1. Etudes Quantatives EJCP - Strasbourg - Juin 2019
Définition • Quantitative: quantifying a relationship or comparing two or more groups. Identify a cause-effect. EJCP - Strasbourg - Juin 2019
Principles Effect Cause Theory Observation Treatment Outcome Independent variable Dependent variable EJCP - Strasbourg - Juin 2019
Concepts • Dependent variable (response variable): the studied variable • Independent variables: variables that can be either controlled or manipulated. • Factors: independent variables that will change (manipulated) • Treatment: Value of a factor Object Ind. vars Dep.var EJCP - Strasbourg - Juin 2019
Process Idea • Definition • Planning • Operation • Analysis & Interpretation • Package • Conclusion EJCP - Strasbourg - Juin 2019
Definition: Goal Template • Analyze <Object(s) of study> • For the purpose of <Purpose> • With respect to their <Quality focus> • From the point of vies of the <Perspective> • In the context of <Context> EJCP - Strasbourg - Juin 2019
Definition: Examples EJCP - Strasbourg - Juin 2019
Planning: 7 steps • Contextselection • Hypothesis formulation • Variables selection • Selection of subjects • Experiment design • Instrumentation • Validityevaluation • Experiment design EJCP - Strasbourg - Juin 2019
Planning: 1- contextselection Trade-off between cost and generalisation • Student vs Professionals • Toy vs real software • Off-line vs on-line EJCP - Strasbourg - Juin 2019
Planning: 2 - Hypothesis • Null hypothesis (H0): No effect. • So we expect to reject it ! • Alternative hypothesis (Ha, H1, etc.): Effect. • We expect to accept it! • Type-I-Error: Reject H0 although it is true (Conclude that there is an effect although there is no). • P(Type-I-Error)=P(reject H0 | H0 is true) • Type-II-Error: Not reject H0 although it is false (Conclude that there is no effect although there is one). • P(Type-II-Error)=P(not reject H0 | H0is false) EJCP - Strasbourg - Juin 2019
Planning: 3 – Variables Selection • Independent Variables: • No advice or guideline. • Requires domain knowledge. • Include the choice of the scale. • Dependent Variables: • Support for the hypothesis. • Have to be easily measurable (!metrics aggregation). EJCP - Strasbourg - Juin 2019
Planning: 4 – Selection of Subjects • Large impact on the generalisation • Randomized • Pure random • Quota • Blocked EJCP - Strasbourg - Juin 2019
Planning 5 – Experiment Design • One factor with two treatments • One factor with more than two treatments • Two factors with two treatments • More than two factors each with two treatments EJCP - Strasbourg - Juin 2019
Planning 6 - Instrumentation • Objects • Guidelines • Measurement EJCP - Strasbourg - Juin 2019
Planning 7 – Validityevaluation • Conclusion validity • Lowstatistical power, … • Internalvalidity • History, maturity, … • Constructvalidity • Mono-methodbias, … • Externalvalidity • Selection, … EJCP - Strasbourg - Juin 2019
Analysis • Descriptive Statitics • Data set reduction • Hypothesistesting EJCP - Strasbourg - Juin 2019
Analysis: Descriptive Statistics EJCP - Strasbourg - Juin 2019
Analysis: Outliers • Remove data thatclearlydoes not fit the sample • outlier • • • • • • • • • • • Scatter plots EJCP - Strasbourg - Juin 2019
Analysis: HypothesisTesting 1/2 • Rewrite the null hypothesis according to the measure • Ex: one factor, two treatments => same probability p(A)=p(B)=1/2 • Test Error-I : p(Reject Ho | Ho is true) • p(Reject | p(A)=p(B)=1/2) • If we have 15 tests. P(4 or less) = 0.059, P(5 or less) = 0.1509. If we obtain 4 or less A then, this is not due to hazard. If we obtain 5 or less, then it may be due to hazard. • 0, 1, 2, 3 or 4 => reject • 5, 6 … => cannot reject EJCP - Strasbourg - Juin 2019
Analysis: HypothesisTesting 2/2 • Find the test that fits your design • Chi2, F-Test, T-Test, Cor.Test, Anova, EJCP - Strasbourg - Juin 2019
Example • Goal: Show that our tool improves efficiency for developers to evolve their software • H0: time needed to realize an evolution is the same with or without our tool (one factor, two treatment) • t-test to compare the mean (check normal law) • Two groups (with and without our tool) • Object: realize one evolution on an existing product EJCP - Strasbourg - Juin 2019
Ref “Experimentation in Software Engineering, An introduction”. C. Wohlin, P. Runeson, M. Höst, M.C. Ohlsson, B. Regnell, A. Wesslén. Kluwer Academic Publishers. EJCP - Strasbourg - Juin 2019
Exemple : Performance Site Web • Objectif : • Il faut faire « peu » de requêtes CSS • Planning : https://github.com/xblanc33/cssoptimizationfinder.git • Contexte – Step 1 • Hypothèse, Instrumentation – Step 2 • Evaluation – Step 3 EJCP - Strasbourg - Juin 2019
Exercice : Ownership Il faut que les développeurs soient propriétaires EJCP - Strasbourg - Juin 2019
Exercice : Turnover Il faut un peu de turnover EJCP - Strasbourg - Juin 2019
Exercices … • Le clean code permet d’éviter des bugs (permet une maintenance moins cher) • Le couplage est source de bug • Le typage permet d’éviter des bugs • http://earlbarr.com/publications/typestudy.pdf [ICSE 2017] EJCP - Strasbourg - Juin 2019
MSR : Exploiter les plates-formes Git • https://github.com/search/advanced • https://www.softwareheritage.org/mission/an-essential-infrastructure-for-science/?lang=fr • https://github.com/jrfaller/diggit EJCP - Strasbourg - Juin 2019
2. Etudes Qualitatives Il y a les statistiques et la vraie vie ! EJCP - Strasbourg - Juin 2019
Numbers, numbers, numbers … EJCP - Strasbourg - Juin 2019
Laboratory vs real world Object Ind. vars Dep.var Object EJCP - Strasbourg - Juin 2019
Qualitative vs Quantitative EJCP - Strasbourg - Juin 2019
Objectives • discover new ideas from data instead of testing pre-designed research questions EJCP - Strasbourg - Juin 2019
Method EJCP - Strasbourg - Juin 2019
Ref • « Real World Research », C. Robson, K. McCartan EJCP - Strasbourg - Juin 2019
Exemple : Themis EJCP - Strasbourg - Juin 2019
Exemple : Performance Site Web • Pourquoi certains sites n’ont pas de CSS ? • Qui décide de l’intégration des CSS dans le HTML ? Et quand ? EJCP - Strasbourg - Juin 2019
Exemple : Linters • Pourquoi les développeurs n’exploitent-ils pas les linters ? • Pourquoi les testeurs ont du mal à introduire de la diversité dans leur tests ? EJCP - Strasbourg - Juin 2019
Synthèse EJCP - Strasbourg - Juin 2019
Evaluation quantitative et qualitative • Mise en œuvre (coût) • Retours terrain EJCP - Strasbourg - Juin 2019
Exemple : ExploratoryTesting • Approche Hybride EJCP - Strasbourg - Juin 2019