page 1, 8/28/2015 ivica crnkovic mälardalen university software engineering division...
TRANSCRIPT
Page 1, 04/19/23
Ivica Crnkovic
Mälardalen University
Software Engineering Division
http://www.idt.mdh.se/~icc
Page 2, 04/19/23
ContentsContents
What is Software Engineering?
Software Engineering and Science
Methods of Software Engineering
Software Engineering Research
Example – Software architecture
Page 3, 04/19/23
What is Software Engineering?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 4, 04/19/23
EngineeringEngineeringEngineers 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 5, 04/19/23
PROBLEM
Subproblem 1 Subproblem 3Subproblem 2
Analysis of a problemAnalysis of a problem
Identify different aspects of the problem
Arrange the problems in clearly defined and understandable sub-problems
Page 6, 04/19/23
SOLUTION
Solution 1Solution 3
Solution 2 Solution 4
The synthesisThe synthesisFind solutions for subproblems
Put together solutions to a consistent view
Provide (make) a solution
Page 24, 04/19/23
Engineering vs. Software EngineeringEngineering vs. Software Engineering
Many similarities
Methods and procedures
Similar objectives and goals
Many differences
Difference between software and hardware/the real worldSoftware – no physical limits
Not visible
Modifiable
More complex
Different theories and methods used
Different experiences, traditions
Different maturity level
Page 25, 04/19/23
All aspects of Software DevelopmentAll 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 28, 04/19/23
SOFTWARE ENGINEERING
COMPUTER SCIENCE CUSTOMER
Theories
Principles, Methods and Tools to Solve
Problem andConstruct Solutions
ProblemComputer Functions
Computer Science Vs. Software EngineeringComputer Science Vs. Software Engineering
SolutionSoftware EngineeringSoftware EngineeringResearch & ScienceResearch & Science
OTHER SCIENCES
Page 30, 04/19/23
Methods and Technologies Methods and Technologies
Requirements Analysis Design Implementation Delivery MaintenanceTest
Software/Systems Engineering Methods
Different Technologies
Service
Solution
Phases
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
Page 31, 04/19/23
SE disciplines and areasSE disciplines and areas
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
From European Software Engineering Conference andFrom European Software Engineering Conference andSymposium on the Foundations of Software Engineering Symposium on the Foundations of Software Engineering
Page 33, 04/19/23
Software Engineering Methods - ExamplesSoftware Engineering Methods - Examples
Project Management
Software Development Models and Processes support
Analyse/design methods (UML, OOP, Formal methods, ...)
Programming Methods /Languages
Configuration Management
Component-based Software Engineering (CBSE)
Customer support, Maintenance
Test and Verification
Architectural analysis (tradeoff analysis, quality, attributes…)
Requirements Engineering
Requirements Analysis Design Implementation Delivery MaintenanceTest Service
Page 34, 04/19/23
What is then Software Engineering Research?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 35, 04/19/23
Software Engineering ResearchSoftware 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 36, 04/19/23
REAL WORLDREAL WORLDPractical problemPractical problem
REAL WORLDREAL WORLDPractical SolutionPractical Solution?
The basic characteristic of SEThe basic characteristic of SE
Page 39, 04/19/23Software engineering and Scientific Methods
Validation of the ResultValidation of the Result
Page 40, 04/19/23
Nasreddin story and Software EngineeringNasreddin story and Software Engineering
Story about a lost ringStory about a lost ring
Nasreddin Hodja
Page 42, 04/19/23
SE Research processSE Research process
Research Questions
Research Results
Result Validation
Page 45, 04/19/23
Example: Software ArchitectureExample: 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
SystemSystem
subsystemsubsystem SubsystemSubsystem
componentcomponent componentcomponent componentcomponent
Page 61, 04/19/23Software engineering and Scientific Methods
REAL WORLDREAL WORLDPractical problemPractical problem
REAL WORLDREAL WORLDPractical SolutionPractical Solution?
The basic characteristic of SEThe basic characteristic of SEWhat is the real world?
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
Empirical Software Engineering – approchesEmpirical 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
ExperimentsIsolate the subject of study
Perform measurements
Compare results from different groups
SurveysAsk questions to a large group
Provide statistical results
Systematic literature review
Page 62, 04/19/23Software engineering and Scientific Methods
Page 63, 04/19/23Software engineering and Scientific Methods
The sheep are black!
Biologist
Mathematician
Physicist
Software engineer
Look, there are black sheep here!
There exists at least one sheepthat is at least black from one side!
There is one black sheep!
The sheep are black!
Traps of empirical engineeringTraps 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 factsWhat 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?Page 64, 04/19/23
Software engineering and Scientific Methods
Validation in empirical SEValidation 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.
Page 65, 04/19/23Software engineering and Scientific Methods
Page 75, 04/19/23
SummarySummary
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