the green lab - [01 c] empirical software engineering
TRANSCRIPT
Vrije Universiteit Amsterdam
Software engineering
Empirical software engineering
- definition- dimensions- types of studies
2 Ivano Malavolta / S2 group / Empirical software engineering
Roadmap
Vrije Universiteit Amsterdam
3 Ivano Malavolta / S2 group / Empirical software engineering
Software engineering
Vrije Universiteit Amsterdam
Where is software today?
4 Ivano Malavolta / S2 group / Empirical software engineering
Software today
Vrije Universiteit Amsterdam
How “big” is software today?
5 Ivano Malavolta / S2 group / Empirical software engineering
Software today
http://www.informationisbeautiful.net/visualizations/million-lines-of-code
http://hbr.org/2010/06/why-dinosaurs-will-keep-ruling-the-auto-industry/ar/1
Vrije Universiteit Amsterdam
To DESIGN software- software development has to be a systematic activity
QUALITY assurance- we have to verify and validate our SW in order to make it something
people can rely on- we have to do it as soon as possible
ABSTRACTION- the principal instrument for managing complexity
6 Ivano Malavolta / S2 group / Empirical software engineering
Needs
Vrije Universiteit Amsterdam
The application of engineering to software
Field of computer science dealing with software systems that are:
– large and complex– built by teams– exist in many versions– last many years– undergo changes
Programming skills are not enough“Physicist example”
–7 Ivano Malavolta / S2 group / Empirical software engineering
Software engineering (SE)
Programmer: complete program
Software engineer: software component
Vrije Universiteit Amsterdam
8 Ivano Malavolta / S2 group / Empirical software engineering
A more precise definition of SE
"Software Engineering means application of a
systematic, disciplined, quantifiable approach
to development, operation and maintenance of
software [1]"
1. “IEEE Standard Glossary of Software Engineering Terminology,” IEEE std 610.12-1990, 1990.
Vrije Universiteit Amsterdam
Computer science- Computability, algorithms and complexity, programming
languages, data structures, databases, artificial intelligence, etc.
Software engineering- The APPLICATION of computer science, mathematics, project
management to build high quality software
9 Ivano Malavolta / S2 group / Empirical software engineering
Software engineering VS computer science
Vrije Universiteit Amsterdam
10 Ivano Malavolta / S2 group / Empirical software engineering
Empirical software engineering
Vrije Universiteit Amsterdam
Scientific use of quantitative and qualitative data to- understand and- improve
software products and software development processes[Victor Basili]
Data is central to address any research question
Issues related to validity addressed continuously
11 Ivano Malavolta / S2 group / Empirical software engineering
Empirical software engineering
Vrije Universiteit Amsterdam
12 Ivano Malavolta / S2 group / Empirical software engineering
Intuition
● It is an application of the scientific method
○ ask yourself a question
○ observe a phenomenon
○ formulate an hypothesis
○ build a prediction
○ setup an experiment
○ perform analysis on your results
Vrije Universiteit Amsterdam
Anecdotal evidence or “common-sense” often not good enough
- Anecdotes often insufficient to support decisions in the industry- Practitioners need better advice on how and when to use
methodologies
Evidence important for successful technology transfer- systematic gathering of evidence- wide dissemination of evidence
13 Ivano Malavolta / S2 group / Empirical software engineering
Why empirical studies?
Vrije Universiteit Amsterdam
● Tested on a single system (lack of generalization)● Data analysis not statistical ● No indications on how many runs were performed, error rate,
etc.
15 Ivano Malavolta / S2 group / Empirical software engineering
How NOT to do experiments
Vrije Universiteit Amsterdam
16 Ivano Malavolta / S2 group / Empirical software engineering
How NOT to do experiments
Vrije Universiteit Amsterdam
“In the lab” versus “in the wild” studies Qualitative versus quantitative studies
Primary versus secondary studies
18 Ivano Malavolta / S2 group / Empirical software engineering
Dimensions of empirical studies
Vrije Universiteit Amsterdam
Common “in the lab” methods– Controlled experiments– Literature reviews– Simulations
Common “in the wild” methods– Quasi-experiments– Case studies– Survey research– Ethnographies– Action research
19 Ivano Malavolta / S2 group / Empirical software engineering
“In the lab” VS “in the wild” studies
Vrije Universiteit Amsterdam
20 Ivano Malavolta / S2 group / Empirical software engineering
Examples
Vrije Universiteit Amsterdam
Qualitative researchstudying objects in their natural setting and letting the findings emerge from the observations
– inductive process– the subject is the person
Quantitative researchquantifying a relationship or to compare two or more groups with the aim to identify a cause-effect relationship
– fixed implied factors– focus on quantitative data → promotes comparison and statistical analyses
21 Ivano Malavolta / S2 group / Empirical software engineering
Qualitative VS quantitative studies
Vrije Universiteit Amsterdam
22 Ivano Malavolta / S2 group / Empirical software engineering
Example
They are complementary
Vrije Universiteit Amsterdam
Primary studiesempirical studies in which we directly make measurements or observations about the objects of interest, whether by surveys, experiments, case studies, etc.
Secondary studiesempirical studies that do not generate any data from direct measurements, but:
– analyze a set of primary studies– usually seek to aggregate the results from these in order to provide stronger forms of evidence about a phenomenon
23 Ivano Malavolta / S2 group / Empirical software engineering
Primary VS secondary studies
Vrije Universiteit Amsterdam
24 Ivano Malavolta / S2 group / Empirical software engineering
Examples
Vrije Universiteit Amsterdam
25 Ivano Malavolta / S2 group / Empirical software engineering
… and what about this?
Vrije Universiteit Amsterdam
Survey
Case study
Experiment
26 Ivano Malavolta / S2 group / Empirical software engineering
Types of empirical studies
Vrije Universiteit Amsterdam
Def: a system for collecting information from or about people to describe, compare or explain their knowledge, attitudes and behavior
Often an investigation performed in retrospect
Interviews and questionnaires are the primary means of gathering qualitative or quantitative data
Surveys are done by taking a sample which is representative from the population to be studied
27 Ivano Malavolta / S2 group / Empirical software engineering
Survey
Vrije Universiteit Amsterdam
1. ADLs Identification– Identify preliminary set of ADLs– Systematic search
2. Planning the Survey3. Designing the survey
4. Analyzing the Data– vertical analysis (and coding) + horizontal analysis
29 Ivano Malavolta / S2 group / Empirical software engineering
Example
Vrije Universiteit Amsterdam
Def: an empirical enquiry to investigate one instance (or a small number of instances) of a contemporary software engineering phenomenon within its real-life context, especially when the boundary between phenomenon and context cannot be clearly specified
Observational study
Data collected to track a specific attribute or establishing relationships between different attributes
Multivariate statistical analysis is often applied30 Ivano Malavolta / S2 group / Empirical software engineering
Case study
Vrije Universiteit Amsterdam
Def: an empirical enquiry that manipulates one factor or variable of the studied setting
1. Identify and understand the variables that play a role in software development, and the connections between variables
2. Learn cause-effect relationships between the development process and the obtained products
3. Establish laws and theories about software construction that explain development behaviour
32
Experiment
Vrije Universiteit Amsterdam
ExperimentModels key characteristics of a reality in a controlled environment and manipulating them iteratively to investigate the impact of such variations and get a better understanding of a phenomenon
LaboratorySimplified and controllable reality where the phenomenon under study can be manipulated
CONTROL - CONTROL - CONTROL
33 Ivano Malavolta / S2 group / Empirical software engineering
A more intuitive definition...
Vrije Universiteit Amsterdam
35 Ivano Malavolta / S2 group / Empirical software engineering
What to choose?
Vrije Universiteit Amsterdam
This is called technology transfer
36 Ivano Malavolta / S2 group / Empirical software engineering
How to have an impact in reality?
Vrije Universiteit Amsterdam
Software is pervasive
Software engineering != computer science
You know the basics of empirical SE now
Don’t make claims you cannot eventually measure
Don’t think in black and white only– don’t divide the world in methods, analyses, case study, etc.– don’t be afraid to look also at other disciplines
→ we are software engineers in any case
37 Ivano Malavolta / S2 group / Empirical software engineering
What this lecture means to you?