Introduction and Overview Lecture 1 Software Engineering

advertisement
Introduction
and Overview
Lecture 1
Software Engineering
CUGS course
Spring 2011
Kristian Sandahl
Department of Computer and Information Science
Linköping University, Sweden
Kristian.Sandahl@ida.liu.se
2
Who is Kristian?
Gotland
Naval HQ
Part I
Definition and role of SE
Kristian.Sandahl
@liu.se
Småland
Linköping
Protein purification
Ericsson
Part II
A life cycle model
1
3
Agenda
Kristian.Sandahl
@liu.se
Part I – Definition and role of
software engineering
Part I
Definition and role of SE
Part II – A life cycle model
Part II
A life cycle model
4
Kristian.Sandahl
@liu.se
Part I
Definition and role of Software Engineering
Part I
Definition and role of SE
Part II
A life cycle model
2
A typical Software Project
5
Kristian.Sandahl
@liu.se
How the customer explained it
Part I
Definition and role of SE
Part II
A life cycle model
A typical Software Project
6
Kristian.Sandahl
@liu.se
How the project leader understood it
Part I
Definition and role of SE
Part II
A life cycle model
3
A typical Software Project
7
Kristian.Sandahl
@liu.se
How the analyst designed it
Part I
Definition and role of SE
Part II
A life cycle model
A typical Software Project
8
Kristian.Sandahl
@liu.se
How the programmer wrote it
Part I
Definition and role of SE
Part II
A life cycle model
4
A typical Software Project
9
Kristian.Sandahl
@liu.se
How the business consultant described it
Part I
Definition and role of SE
Part II
A life cycle model
A typical Software Project
10
Kristian.Sandahl
@liu.se
How the project was documented
Part I
Definition and role of SE
Part II
A life cycle model
5
A typical Software Project
11
Kristian.Sandahl
@liu.se
What operations installed
Part I
Definition and role of SE
Part II
A life cycle model
A typical Software Project
12
Kristian.Sandahl
@liu.se
How the customer was billed
Part I
Definition and role of SE
Part II
A life cycle model
6
A typical Software Project
13
Kristian.Sandahl
@liu.se
How it was supported
Part I
Definition and role of SE
Part II
A life cycle model
A typical Software Project
14
Kristian.Sandahl
@liu.se
Finally, what the customer really needed
Part I
Definition and role of SE
Part II
A life cycle model
7
15
Why do we need SE?
 Frequent failures:




Kristian.Sandahl
@liu.se
Charette, R.N. (2005) Why Software
Fails, IEEE Spectrum, September 2005
Space shuttle
Nike
Denver airport
LA airport
Geppert, L (2004) Lost Radio Contact Leaves
Pilots On Their Own, IEEE Spectrum, Nov 2004
Part I
Definition and role of SE
Part II
A life cycle model
Software Engineering
16
Kristian.Sandahl
@liu.se
 Application of systematic, disciplined, quantifiable approach to
software development, operation and maintenance of software.
(IEEE-Std.)
Part I
Definition and role of SE
Part II
A life cycle model
8
17
Studying SE theory
Kristian.Sandahl
@liu.se
 Reading about concepts and methods derived from
experience
 Almost everything have their pros and cons
 Quite little is based on mathematical theory
 Requires disciplined plan for reading different
sources
Part I
Definition and role of SE
Part II
A life cycle model
18
Studying SE theory
Your job
 Find central concepts and
methods over the entire field
 Study their applicability, pros
and cons
 Practice analysing and
designing small examples
 Participate in examination
 Ask us questions
 Give us suggestions for
further improvement
Kristian.Sandahl@ida.liu.se
Subject: DF14900
Part I
Definition and role of SE
Kristian.Sandahl
@liu.se
Our job
 Account for the most central
concepts in lectures
 Set things in context
 Discuss industrial relevance
 Arrange examination
 Answer your questions
 Listen to feed-back:
0706-68 19 57
3B:470
Part II
A life cycle model
9
19
Ambition level
Kristian.Sandahl
@liu.se
 You will know enough to communicate easily with
professional software engineers
 You will have the basic knowledge to start generating
your own experience, perhaps already obtained
 You will have a curious, but critical, attitude towards
existing and new methods
Part I
Definition and role of SE
Part II
A life cycle model
20
Kristian.Sandahl
@liu.se
Part II
Contents of a Software Life Cycle
Part I
Definition and role of SE
Part II
A life cycle model
10
21
Scope of a software life-cycle model
Software Product
Idea
Usage
Operation & maintenance
Part I
Definition and role of SE
Kristian.Sandahl
@liu.se
Replacement
Part II
A life cycle model
22
Model of a life-cycle
Kristian.Sandahl
@liu.se
Abstraction
Carol
the customer
Diana
the developer
Part I
Definition and role of SE
Time
Part II
A life cycle model
11
23
Requirements
Kristian.Sandahl
@liu.se
Requirements
Elicitation
Collect user
requirement
Part I
Definition and role of SE
Analyze
Understand
Specify
Document
Validate
Check that it matches
user requirements
Part II
A life cycle model
24
Requirements
Kristian.Sandahl
@liu.se
Requirements
Functional requirements
Non-Functional requirements
Part I
Definition and role of SE
A required behavior or function
E.g. "delete material items"
Quality requirements
E.g. performance, scalability, usability
maintainability, etc.
Part II
A life cycle model
12
25
Requirements and Acceptance Test
Kristian.Sandahl
@liu.se
Validate Requirements, Verify Specification
Acceptance Test
Requirements
(Release testing)
Part I
Definition and role of SE
Part II
A life cycle model
26
System Design
Kristian.Sandahl
@liu.se
Validate Requirements, Verify Specification
Acceptance Test
Requirements
(Release testing)
System DesignDecompose into sub-systems or modules
(Architecture, •
High-level Design)
Well-defined interfaces
• High level of abstraction
Module 1
Module 2
Module 3
Part I
Definition and role of SE
Architecture styles, e.g.
• Client-server
• Layered Models
• Pipes and Filters
Part II
A life cycle model
13
27
System and Module Design
Kristian.Sandahl
@liu.se
Validate Requirements, Verify Specification
Acceptance Test
Requirements
(Release testing)
System Design
Unified Modeling Language (UML)
(Architecture,
High-level Design)
Use a standardized way to model system
graphically
Module Design
(Program Design,
Detailed Design)
Design Patterns
Reuse design solution that has worked before
Part I
Definition and role of SE
Part II
A life cycle model
28
Testing
Kristian.Sandahl
@liu.se
Validate Requirements, Verify Specification
Acceptance Test
Requirements
(Release testing)
System Design
System Testing
(Architecture,
High-level Design)
(Integration testing of modules)
Module Design
(Program Design,
Detailed Design)
Verify Module Design
Module Testing
(Integration testing of units)
Verify Implementation
Implementation
of Units (classes, procedures,
functions)
Part I
Definition and role of SE
Unit testing
Part II
A life cycle model
14
29
Testing
Kristian.Sandahl
@liu.se
Validate Requirements, Verify Specification
Acceptance Test
Requirements
(Release testing)
System Design
System Testing
Integration testing
(Integration testing of modules)
• Dependencies between modules
(Architecture,
High-level Design)
Module Design
Module
1
(Program
Design,
Detailed Design)
Approaches
Verify Module Design
• Top-down (need stubs)
Module Testing
Module 2
• Bottom-up (need drivers)
(Integration testing of units)
• Sandwich
Verify Implementation
• Big-bag
Implementation
of Module
Units (classes,
procedures,
3
functions)
Part I
Definition and role of SE
Unit testing
Part II
A life cycle model
30
Supporting Processes
Kristian.Sandahl
@liu.se
Validate Requirements, Verify Specification
Acceptance Test
Requirements
(Release testing)
Verify System Design
System Design
System Testing
(Architecture,
High-level Design)
(Integration testing of modules)
Module Design
(Program Design,
Detailed Design)
Verify Module Design
Module Testing
(Integration testing of units)
Verify Implementation
Implementation
of Units (classes, procedures,
functions)
Part I
Definition and role of SE
Unit testing
Part II
A life cycle model
15
31
Inspection
Kristian.Sandahl
@liu.se
Validate Requirements, Verify Specification
Inspection
Requirements
System Design
Acceptance Test
Formal Inspection
• Reviewing with a defined process
• Aim at finding
defects
Verify
System Design
• Works in practice
(Architecture,
High-level Design)
(Release testing)
System Testing
(Integration testing of modules)
Module Design
(Program Design,
Detailed Design)
Verify Module Design
Module Testing
(Integration testing of units)
Verify Implementation
Implementation
of Units (classes, procedures,
functions)
Part I
Definition and role of SE
Unit testing
Part II
A life cycle model
Software Life Cycles, Configuration Mgm.
Software Life Cycles and Configuration
Management
Validate
Requirements, Verify Specification
32
Kristian.Sandahl
@liu.se
Acceptance Test
Requirements
(Release testing)
System Design
V-model
Verify System Design
Waterfall model
System Testing
(Architecture,
High-level Design)
(Integration testing of modules)
Module Design
Verify Module Design
R
(Program Design,
Iterative models
Detailed Design)
R Testing R
Module
(Integration testing of units)
Verify Implementation
Implementation
Configuration
Management
of Units (classes,
procedures,
functions)
(CM)
Unit testing
Keep track of versions.
Used the wrong code-base.
Part I
Definition and role of SE
Part II
A life cycle model
16
33
Software Quality Management
Kristian.Sandahl
@liu.se
Validate Requirements, Verify Specification
Acceptance Test
Requirements
(Release testing)
Verify System Design
System Design
System Testing
(Architecture,
High-level Design)
(Integration testing of modules)
Software Quality Management
Different qualities
Verify Module Design
Module Design• Quality of product
(Program Design, • Quality of process
Detailed Design) • Quality in a business environment
Verify Implementation
Implementation
of Units (classes, procedures,
functions)
Part I
Definition and role of SE
Module Testing
(Integration testing of units)
Unit testing
Part II
A life cycle model
Software Life Cycles, Configuration Mgm.
Project Management
34
Kristian.Sandahl
@liu.se
Validate Requirements, Verify Specification
Calendar-time
Resources
Requirements
Acceptance Test
(Release testing)
Time plan
Verify System Design
System Design
Milestones
Time-budget
(Architecture,
System Testing
Activities
(Integration testing of modules)
High-level Design)
• Resource management
• Time-buffer
Verify Module Design
Module
Design
• Internal
milestones - keep track
(Program Design,
Detailed Design)
Verify Implementation
Implementation
Risk
Management
of Units
(classes,
procedures,
functions)
Identify
Module Testing
(Integration testing of units)
Analyze
Plan
Unit testing
- Minimize
- Transfer
- Accept
probability - consequence
Part I
Definition and role of SE
Part II
A life cycle model
17
35
A Software Life-cycle
Kristian.Sandahl
@liu.se
Maintenance
Validate Requirements, Verify Specification
Acceptance Test
Requirements
(Release testing)
Verify System Design
System Design
System Testing
(Architecture,
High-level Design)
(Integration testing of modules)
Module Design
(Program Design,
Detailed Design)
Verify Module Design
Module Testing
(Integration testing of units)
Verify Implementation
Implementation
of Units (classes, procedures,
functions)
Unit testing
Project Management, Software Quality Assurance (SQA), Supporting Tools, Education
Part I
Definition and role of SE
Part II
A life cycle model
36
Summary
Kristian.Sandahl
Maintenance
@liu.se
Validate Requirements, Verify Specification
Acceptance Test
Requirements
(Release testing)
Verify System Design
System Design
System Testing
(Architecture,
High-level Design)
(Integration testing of modules)
Module Design
(Program Design,
Detailed Design)
Verify Module Design
Module Testing
(Integration testing of units)
Verify Implementation
Implementation
of Units (classes, procedures,
functions)
Unit testing
Project Management, Software Quality Assurance (SQA), Supporting Tools, Education
Part I
Definition and role of SE
Part II
A life cycle model
18
Download