se-methods2012

advertisement
Ivica Crnkovic
Mälardalen University
Software Engineering Division
ivica.crnkovic@mdh.se
http://www.idt.mdh.se/~icc
Page 1, 3/12/2016
Contents
 What is Software Engineering?
 Software Engineering and Science
 Methods of Software Engineering
 Software Engineering Research
 Example – Software architecture
Page 2, 3/12/2016
What is Software Engineering?
 Software engineering is an engineering discipline which is
concerned with all aspects of software production from the
early stages of system specification through to maintaining
the system after gone into use.
Ian Sommerville, Software Engineering
 We need further explanation of:

Engineering discipline

All aspects of software production
Page 3, 3/12/2016
Engineering
Engineers make the things work
 Solving problems
 understand the problem
 analyze the problem
 Find solutions
 Constructing the solution from parts that address the problem's
various aspects - do a synthesis
 To achieve the goal engineers
 apply theories, methods and tools from different disciplines
 Search for solutions even when there is not theory or methods
Page 4, 3/12/2016
Analysis of a problem
PROBLEM
Identify different aspects of the problem
Arrange the problems in clearly defined and
understandable sub-problems
Subproblem 1
Subproblem 2
Subproblem 3
Page 5, 3/12/2016
The synthesis
Find solutions for subproblems
Solution 1
Solution 2
Solution 3
Solution 4
Put together solutions to a consistent view
Provide (make) a solution
SOLUTION
Page 6, 3/12/2016
Engineering vs. Software Engineering
 Many similarities
 Methods and procedures
 Similar objectives and goals
 Many differences
 Difference between software and hardware/the real world
Software – no physical limits
Not visible
Modifiable
More complex
 Different theories and methods used
 Different experiences, traditions
 Different maturity level
Page 24, 3/12/2016
All aspects of Software Development
 Aspects

Technical (how technically solve the problem)

Organizational (how to organize people)

Processes and Methods

Business aspects

Professional and ethical responsibility

Research and Science
Page 25, 3/12/2016
Computer Science Vs. Software Engineering
COMPUTER SCIENCE
Computer Functions
OTHER SCIENCES
Theories
CUSTOMER
Problem
SOFTWARE ENGINEERING
Software Engineering
Research & Science
Principles, Methods
and Tools to Solve
Problem and
Construct Solutions
Solution
Page 28, 3/12/2016
Methods and Technologies
Solution
Phases
Requirements
Analysis
Design
Implementation
Test
Delivery
Maintenance
Service
Software/Systems Engineering Methods
Different Technologies
Page 30, 3/12/2016
SE disciplines and areas
From European Software Engineering Conference and
Symposium on the Foundations of Software Engineering
 Requirements Engineering
 Specification and Verification
 Software Architecture and
Design
 Analysis and Testing
 Development Paradigms and
Software Processes
 Evolution and Refactoring
 Tools and Environments
 Empirical Software
Engineering
 Software Metrics
 Software Quality and
Performance
 Component-based Software
Engineering
 Model Driven Engineering
 Web Applications
 Distributed Systems and
Middleware
 Service Oriented Applications
 Mobile and Embedded System
 Open Standards and
Certification
 Software Economics and
Human Resources
 Dependability (safety, security,
reliability)
 Case Studies and Experience
Reports
Page 31, 3/12/2016
Software Engineering Methods - Examples
Requirements
Analysis
Design
Implementation
Test
Delivery
Maintenance
Service
Project Management
Software Development Models and Processes support
Component-based Software Engineering (CBSE)
Requirements Engineering
Analyse/design methods (UML, OOP, Formal methods, ...)
Architectural analysis (tradeoff analysis, quality, attributes…)
Programming Methods /Languages
Configuration Management
Test and Verification
Customer support, Maintenance
Page 33, 3/12/2016
What is then Software Engineering Research?
 Analyzing natures of problems and their solutions
 Finding more general principles that SE can use
 Developing methods and tools
 Implementing principles on new problem domains
 ……
Page 34, 3/12/2016
Software Engineering Research
Research methods used SE
Exemplified by Software Architecture

Presentation extracted from Mary Shaw’s
presentation on ICSE 2001 in Toronto
http://www-2.cs.cmu.edu/~Compose/paper_abstracts/etaps-2002.html
Page 35, 3/12/2016
The basic characteristic of SE
REAL WORLD
Practical problem
?
REAL WORLD
Practical Solution
Page 36, 3/12/2016
Software engineering and Scientific Methods
Page 37, 3/12/2016
Research Strategy
Software engineering and Scientific Methods
Page 38, 3/12/2016
Validation of the Result
Software engineering and Scientific Methods
Page 39, 3/12/2016
Nasreddin story and Software Engineering
Story about a lost ring
Nasreddin Hodja
Page 40, 3/12/2016
Software engineering and Scientific Methods
Page 41, 3/12/2016
SE Research process
 Research Questions
 Research Results
 Result Validation
Page 42, 3/12/2016
Software engineering and Scientific Methods
Page 43, 3/12/2016
Example: Software Architecture
 The software architecture of a program or computing system
is the structure or structures of the system, which comprise
software components, the externally visible properties of
those components and the relationships among them
L. Bass, P. Clements, R. Kazman, Software Architecture In Practise, Addison
Wesley, 1998
System
subsystem
component
Subsystem
component
component
Page 45, 3/12/2016
Software engineering and Scientific Methods
Page 46, 3/12/2016
Software engineering and Scientific Methods
Page 47, 3/12/2016
Software engineering and Scientific Methods
Page 48, 3/12/2016
Software engineering and Scientific Methods
Page 49, 3/12/2016
Software engineering and Scientific Methods
Page 50, 3/12/2016
Software engineering and Scientific Methods
Page 51, 3/12/2016
Software engineering and Scientific Methods
Page 52, 3/12/2016
Software engineering and Scientific Methods
Page 55, 3/12/2016
Software engineering and Scientific Methods
Page 56, 3/12/2016
Software engineering and Scientific Methods
Page 57, 3/12/2016
Software engineering and Scientific Methods
Page 58, 3/12/2016
Software engineering and Scientific Methods
Page 59, 3/12/2016
Software engineering and Scientific Methods
Page 60, 3/12/2016
What characteristic
is the real world?
The basic
of SE
REAL WORLD
Practical problem
?
REAL WORLD
Practical Solution
1)
What are the problems from the real world?
Are they general?
What are the elements of them?
2)
Are the solutions general? What are their limits?
EMPIRICAL SOFWTARE ENGNEERING
Software engineering and Scientific Methods
Page 61, 3/12/2016
Empirical Software Engineering – approches

Case studies
Systematically study a case using different methods
–
–
–
–

Interview people
Observe
Get information from the information sources (documents)
Participate in the case
Experiments
Isolate the subject of study
Perform measurements
Compare results from different groups

Surveys
Ask questions to a large group
Provide statistical results
Systematic literature review
Software engineering and Scientific Methods
Page 62, 3/12/2016
Look, there are black sheep here!
There is one black sheep!
Physicist
The sheep are black!
Mathematician
The sheep are black!
Biologist
There exists at least one sheep
that is at least black from
Software engineering and Scientific Methods
one side!
Software engineer
Page 63, 3/12/2016
Traps of empirical engineering
 Generalization from one case and tautology

You see the facts  you classify the facts  you check
whether your classification is in compliance with the facts
What is wrong here?
 Generalisation and grounded theory

Grounded theory – you build your theory from the
observations (you start the observation without the theory)

What is problematic here?
 Experiments

You do experiments on two groups and measure the
differences

(typical case - Students performing the experiment

What is a risk here?
Software engineering and Scientific Methods
Page 64, 3/12/2016
Validation in empirical SE
 Construct validity relates to the collected data and how well
the data represent the investigated phenomenon
 Internal validity concerns the connection between the
observed behavior and the proposed explanation for the
behavior, i.e. it is about ensuring that the actual conclusions
are true.
 External validity concerns the possibilities to generalize the
results from a study.
 Reliability concerns the possibilities to reach the same
conclusions if the study is repeated by another researcher.
Software engineering and Scientific Methods
Page 65, 3/12/2016
Summary
 Software Engineering is oriented on practical things
from the real word

Understanding problems, providing software solutions
 SE uses methods and tools for solving the problems
from different disciplines
 SE research

Understanding principles

Defining principle for solving the problems

Developing methods and tools
Page 75, 3/12/2016
Download