42
Page 1, 03/27/22 Ivica Crnkovic Mälardalen University Software Engineering Division [email protected] http://www.idt.mdh.se/~icc

Page 1, 8/28/2015 Ivica Crnkovic Mälardalen University Software Engineering Division [email protected] icc

Embed Size (px)

Citation preview

Page 1, 04/19/23

Ivica Crnkovic

Mälardalen University

Software Engineering Division

[email protected]

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 37, 04/19/23Software engineering and Scientific Methods

Page 38, 04/19/23Software engineering and Scientific Methods

Research StrategyResearch Strategy

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 41, 04/19/23Software engineering and Scientific Methods

Page 42, 04/19/23

SE Research processSE Research process

Research Questions

Research Results

Result Validation

Page 43, 04/19/23Software engineering and Scientific Methods

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 46, 04/19/23Software engineering and Scientific Methods

Page 47, 04/19/23Software engineering and Scientific Methods

Page 48, 04/19/23Software engineering and Scientific Methods

Page 49, 04/19/23Software engineering and Scientific Methods

Page 50, 04/19/23Software engineering and Scientific Methods

Page 51, 04/19/23Software engineering and Scientific Methods

Page 52, 04/19/23Software engineering and Scientific Methods

Page 55, 04/19/23Software engineering and Scientific Methods

Page 56, 04/19/23Software engineering and Scientific Methods

Page 57, 04/19/23Software engineering and Scientific Methods

Page 58, 04/19/23Software engineering and Scientific Methods

Page 59, 04/19/23Software engineering and Scientific Methods

Page 60, 04/19/23Software engineering and Scientific Methods

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