LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to...

35
LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017 LTAT.05.003 Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl email: [email protected] Fall 2017

Transcript of LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to...

Page 1: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

LTAT.05.003 Software Engineering

Lecture 01.2: Introduction to Software Engineering

Dietmar Pfahl email: [email protected]

Fall 2017

Page 2: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Schedule of Lectures (Tentative)

Week 01: Introduction to SE

Week 02: Requirements Engineering I

Week 03: Requirements Engineering II

Week 04: Analysis

Week 05: Development Infrastructure I

Week 06: Development Infrastructure II

Week 07: Architecture and Design

Week 08: Refactoring

Week 09: Verification and Validation I

Week 10: Crowdsourced Testing

Week 11: Continuous Development

and Integration

Week 12: Agile/Lean Methods

Week 13: Software Craftsmanship

Week 14: Course wrap-up, review and

exam preparation

Week 15: no lecture

Page 3: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Software Engineering

What? Why?

Page 4: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Software Development – Three Ps

•  Software Development

Project or Iteration

P ?

P ?

P ?

Page 5: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Software Development – Three Ps •  Software

Development

Project or Iteration

Products

People Processes

Page 6: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Software Engineering

Who has practiced SE? Who knows what SE is?

Page 7: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Software Development – Three Ps •  Software

Development

Project or Iteration

Products

People Processes

Page 8: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Products in Software Development

Products Code: -  Production code:

-  Source code -  Object code

-  Non-production code: -  Test code

Non-Code: -  Requirements -  Specifications -  Architecture/Design docs -  Issue reports -  User manuals -  Plans of all kinds -  ...

Models

Types of Software: -  Embedded/real-time -  Information System -  Web application -  System software -  ...

Properties of Software: -  Functionality -  Reliability -  Usability -  Efficiency -  Maintainability -  Portability

Page 9: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Software in a Car Products

ECU = Electronic Control Unit

Page 10: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Properties of Software The software should deliver the required functionality and performance to the user and should be maintainable, dependable and acceptable.

Maintainability Software must evolve to meet changing needs;

Dependability (Reliability) Software must be trustworthy;

Efficiency

Software should not make wasteful use of system resources;

Usability

Software must be accepted by the users for which it was designed. This means it must be understandable, usable and compatible with other systems.

Products

Page 11: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

SW Product Modeling UML = Unified Modeling Language

Online information: http://www.uml.org

Products

Page 12: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Software Development – Three Ps •  Software

Development

Project or Iteration

Products

People Processes

Page 13: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

People in Software Development

People

Roles: -  Project Manager -  Product Manager -  Architect/Analyst -  Programmer -  Tester -  ...

Skills: -  Must match roles Training: -  Must fill skill-gaps Education: -  Curricula (ACM/IEEE)

Teams: -  Team building -  Geographically distributed (international/global) -  Mechanisms for collaboration/cooperation -  Motivation, Personality, Values, Culture

User models

Page 14: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Software Development – Three Ps •  Software

Development

Project or Iteration

Products

People Processes

Page 15: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Software Development Process

Coding

Deploying

Processes

Page 16: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Software Development Process

Find Requirements

Analysis / Designing

Coding

Testing

Deploying

Processes

Page 17: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes Software Development Process

SYSTEM REQUIREMENTS

TESTING

CODING

PROGRAM DESIGN

ANALYSIS

PRELIMINARY PROGRAM

DESIGN

SOFTWARE REQUIREMENTS

OPERATIONS

PRELIMINARY DESIGN

ANALYSIS

PROGRAM DESIGN

CODING

TESTING

USAGE

(Royce, 1970)

Page 18: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes in SW Development

Processes

Process (Model) Elements: -  Activity -  Input/Output Product(s) -  Roles -  Methods/Techniques/Tools

Process Taxonomy: -  Non-engineering processes

-  Business processes -  Social processes

-  Engineering processes -  Product-engineering proc.

-  Technical prod.-eng. proc. -  Managerial prod.-eng. proc.

-  Process-engineering proc.

Process Modeling: -  Descriptive PMs -  Prescriptive PMs

-  Standards -  Families

Process Types: -  Heavy-weight (rich) -  Light-weight

-  Lean -  Agile -  Kanban

Page 19: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Agile Process Processes

Page 20: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Agile Process Processes

Scrum

eXtreme Programming (XP)

Page 21: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Scrum Elements – Process, Artifacts, Roles

http://www.scrumforteamsystem.com/processguidance/v1/Scrum/Scrum.html

Processes

Page 22: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes

Page 23: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes Comparison of Basic Process Types

RUP = Rational Unified Process XP = Extreme Programming

Page 24: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes Survey – Software Development Processes and Practices

RUP = Rational Unified Process XP = Extreme Programming

•  26 Countries

•  500+ Responses

•  URL: https://helenastudy.wordpress.com

Page 25: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes Process Frameworks Used in Estonia

Page 26: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes Process Frameworks Used in Sweden

Page 27: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes Process Frameworks Used in 26 Countries

Page 28: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes Dev. Practices Used in Estonia

Page 29: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes Dev. Practices Used in Sweden

Page 30: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes Dev. Practives Used in 26 Countries

Page 31: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Processes Company Sizes of Respondents: Estonia vs. Sweden vs. 26 Countries

Page 32: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.02 / © Dietmar Pfahl 2017

Software Engineering Management

Consistentapplica-onofengineeringprinciplesandmethodstothedevelopmentofso5ware(intensive)systems

Engineering:Applica-onofsystema-c(i.e.,predictable,repeatable,scalable)procedures-withwell-definedgoals(e.g.,quality,func-onality/scope,cost,-me)-withwell-defined/structuredproducts,processes,andorganiza-onAdherencetoexis-ngbodyofknowledgeObserva-onofconstraints(standards,-me/cost/qualityrequirements,etc.)Developmentanduseofmodels

Planning–decidingwhatistobedoneOrganizing–makingarrangementsStaffing–selec-ngtherightpeopleforthejobDirec-ng–givinginstruc-onsMonitoring–checkingonprogressControlling–takingac-ontoremedyhold-upsInnova-ng–findingsolu-onswhenproblemsemergeRepresen-ng–liaisingwithclients,users,developersandotherstakeholders

Page 33: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.02 / © Dietmar Pfahl 2017

Magic Triangle of SE

Page 34: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.02 / © Dietmar Pfahl 2017

Software Engineering

Software Product/ System

A bridge from customer/user needs to software product

Customer, User Needs Developer

(SW Engineer)

Page 35: LTAT.05.003 Software Engineering - ut · Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl ... Software Development Processes Process SYSTEM REQUIREMENTS

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2017

Next Lecture

•  Date/Time: •  Friday, 15-Sep, 10:15-12:00

•  Topic: •  Requirements Engineering I 1st Homework!

•  For you to do: •  Have a look at the course wiki •  Make sure you know to which lab group you have

been enrolled + start forming project teams •  MOST IMPORTANTLY: Go to the labs next week!