33
LTAT.05.003 Software Engineering Lecture 01.2: Introduction to Software Engineering Dietmar Pfahl email: [email protected] Fall 2020

LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

LTAT.05.003 Software Engineering

Lecture 01.2: Introduction to Software Engineering

Dietmar Pfahl

email: [email protected] 2020

Page 2: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Schedule of Lectures

Week 01: Introduction to SEWeek 02: Requirements Engineering I

Week 03: Requirements Engineering II

Week 04: Analysis

Week 05: Development Infrastructure

Week 06: Continuous Development

and Integration

Week 07: Project Estimation /

Architecture and Design I

Week 08: Architecture and Design II

Week 09: Verification and Validation I

Week 10: Verification and Validation II

Week 11: Refactoring (and TDD)

Week 12: Agile/Lean Methods

Week 13: Industry Guest Lecture

Week 14: Course wrap-up, review and

exam preparation

Week 15: Reserve time slot (no lecture

scheduled as of today)

Page 3: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Software Engineering

What?Why?

Page 4: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Software Development – Three Ps

• Software Development

Project orIteration

P ?

P ? P ?

Page 5: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Software Development – Three Ps• Software

Development

Project or Iteration

Products

People Processes

Page 6: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Software Development – Three Ps• Software

Development

Project or Iteration

Products

People Processes

Page 7: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Products in Software Development

?

Page 8: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Products in Software Development

Page 9: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Products in Software Development

ProductsCode:- 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- Mobile application- Systems of systems- ...

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

Page 10: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Software in a CarProducts

ECU = Electronic Control Unit +Autonomous driving

Secure cloud communication

Page 11: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

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

MaintainabilitySoftware must evolve to meet changing needs;

Dependability (Reliability)Software must be trustworthy;

EfficiencySoftware should not make wasteful use of system resources;

UsabilitySoftware 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 12: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

SW Product ModelingUML = Unified Modeling Language

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

Products

Page 13: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Software Development – Three Ps• Software

Development

Project or Iteration

Products

People Processes

Page 14: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

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 15: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Software Development – Three Ps• Software

Development

Project or Iteration

Products

People Processes

Page 16: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Software DevelopmentProcess

Coding

Deploying

Processes

Page 17: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Software DevelopmentProcess

Find Requirements

Analysis / Designing

Coding

Testing

Deploying

Processes

Page 18: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

ProcessesSoftware 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 19: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

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 20: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Agile ProcessProcesses

Page 21: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Agile ProcessProcesses

Scrum

eXtreme Programming (XP)

Page 22: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Scrum Elements –Process, Artifacts, Roles

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

Processes

Page 23: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Processes

Page 24: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

ProcessesComparison of Basic Process Types

RUP = Rational Unified ProcessXP = Extreme Programming

Page 25: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

ProcessesSurvey – Software DevelopmentProcesses and Practices

RUP = Rational Unified ProcessXP = Extreme Programming

• 26 Countries

• 500+ Responses (from Industry!)

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

Page 26: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

ProcessesProcess Frameworks Used in 26 Countries always usedoften used

1. Scrum2. Iterative Development3. Kanban4. DevOps (CI/CD)5. Classic Waterfall

Page 27: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

ProcessesProcess Frameworks Used in Estonia

1. Scrum2. DevOps (CI/CD)3. Iterative Development4. Kanban5. XP

always usedoften used

Page 28: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

ProcessesProcess Frameworks Used in Swedenalways usedoften used

1. Scrum2. Iterative Development3. Kanban4. Classic Waterfall5. XP

Page 29: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

ProcessesCompany Sizes of Respondents:Estonia vs. Sweden vs. 26 Countries

Page 30: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.02 / © Dietmar Pfahl 2020

Software Engineering Management

Consistent application ofengineering principles and methods to the development of software (intensive) systems

Engineering:Application of systematic (i.e., predictable, repeatable, scalable) procedures- with well-defined goals (e.g., quality, functionality/scope, cost, time)- with well-defined/structured products, processes, and organizationAdherence to existing body of knowledgeObservation of constraints (standards, time/cost/quality requirements, etc.)Development and use of models

Planning – deciding what is to be doneOrganizing – making arrangementsStaffing – selecting the right people for the jobDirecting – giving instructionsMonitoring – checking on progressControlling – taking action to remedy hold-upsInnovating – finding solutions when problems emergeRepresenting – liaising with clients, users, developers and other stakeholders

Page 31: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.02 / © Dietmar Pfahl 2020

Magic Triangle of SE

Page 32: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.02 / © Dietmar Pfahl 2020

Software Engineering

SoftwareProduct/System

A bridge from customer/user needsto software product

Customer,UserNeeds Developer

(SW Engineer)

Page 33: LTAT.05.003 Software Engineering · 2021. 7. 14. · Software must evolve to meet changing needs; Dependability (Reliability) Software must be trustworthy; Efficiency Software should

LTAT.05.003 / Lecture 01.2 / © Dietmar Pfahl 2020

Next Lecture

• Date/Time:• Friday, 11-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!