Software Engineering
Introduction
Introduction to Software Engineering
In 04.06.1996 the Ariane’s maiden flight ends
with explosion 40 seconds after departure.
The material costs were around 500 Mio. US
Dollar and it was a project which was being
worked on for 10 years with a budget of about 7
Billion US Dollar for developing.
The reason was an Uncaught software
exception.
2
Introduction to Software Engineering
3
Introduction to Software Engineering
5
Introduction to Software Engineering
As a result:
Software developers have to bear a lot of responsibilities
Each software project is unique.
The developing process has to be planned and should
be controllable
Variables are: complexity, resources, quality and time
6
Introduction to Software Engineering
Software definition:
Software is a synonymous to computer
program
Software means:
computer program
suitable documentation
related configuration files to run the program
7
Introduction to Software Engineering
software systems definition:
Software system is a synonymous to several computer
programs
Software Systems normally consist of:
several computer programs
several configuration files
a system documentation, describing the system’s
structure
an end user documentation, describing the handling
of the system
a website or repository for system updates
8
Introduction to Software Engineering
software products definition:
Software products can be divided into:
General Products
Independent Software Systems developed by an certain
organization
Available at the market depending on the related licenses
Requirements and specifications are defined by the
developing organization
Customized or Requested Products
Requested by a certain customer
These products often support specific business processes
Requirements and specifications are defined by
9 the customer
Introduction to Software Engineering
Today, that strict classification begins to
disappear.
Today Software Products:
Development of a basic and general system
Development of individual and problem specific
add-ons
Offering user specific adaptations
Integration of customer specific business processes
10
Introduction to Software Engineering
Software Engineering Definition:
Software Engineering is a technical discipline
that covers all aspects of software
development, from the early phases of
creating the system’s specification to
maintaining the running system
11
Introduction to Software Engineering
Definition - technical discipline
Finding solutions for a given problem
Using known theories, methods and tools
Also try to find solutions if there are no theories,
methods and tools yet
Accepting organizational and financial limitations
Searching for solution regarding the given conditions
12
Introduction to Software Engineering
Aspects of SW development:
Software Engineering is more than the technical
discipline
Besides the technical discipline the following
topics are also part of software engineering:
Software Project Management
Development of theories, methods and tools to
support the software development
13
Introduction to Software Engineering
Characteristics of good software:
Characteristics besides the provided functionality
So called “non-functional” characeristcs
Independent of the software’s properly intention
Relevant for program’s behavior during execution
Relevant for structure and organization of source
code and documentation
14
Introduction to Software Engineering
Non-functional Characteristics:
Maintainability:
Changes are unavoidable in dynamic business environments
Allow further development to fulfill specific customer requests
Dependability:
Reliability, Access protection, operating safety
Do not cause physical or economical damage
Efficiency:
Do not waste system resources (memory, CPU)
Usability:
Provide a suitable and intuitive user interface
15
Provide adequate documentation
Introduction to Software Engineering
Software process Definition:
Set of activities to develop a software product
Activities can be classified in four basic process activities
1. Software specification - Definition of the software
product and related conditions
2. Software development - Design and development of the
software product
3. Software validation - Testing the software product
concerning the defined specifications
4. Software evolution - Further development to fulfill
changed requirements
16
Introduction to Software Engineering
Process models:
Each process model is based on one of the three following
general models of software development:
Waterfall
Iterative
Component based
17
Introduction to Software Engineering
Process models
Waterfall Lifecycle Approach
Activities (requirement specification, software design,
implementation, testing, etc.) are represented as
independent phases
Each phase will be completed totally before going on
with the next phase
18
Introduction to Software Engineering
Process models
Waterfall Life cycle Approach
19
Introduction to Software Engineering
Process models
Iterative Development Approach:
Combining specification, implementation and validation
processes in interations
Starting with abstract specifications to be able to
provide a basic prototype very soon
Based on this prototype and customer requests, the
product will be improved in next iteration
Each iteration will provide a running system (getting
closer to the customers specifications)
20
Introduction to Software Engineering
Process models
Iterative Development Approach:
21
Introduction to Software Engineering
Requirement Engineering Definition:
Consists of two parts:
Requirement Elicitation: Creating a system’s
specification that is understandable for the customer
(Creating System Specification)
Requirement Analysis: Creating a clearly defined
model for involved developers based on the System
Specification
(Creating Analysis Model)
22
Introduction to Software Engineering
Requirement Elicitation - The Task
Have a dialog with customer and/or users
Identify functional requirements of the system to
create
Actual requirements: How things are done, now
Visionary requirements: How things could be done, in
future
Create a understandable specification of the system
(contract)
23
Introduction to Software Engineering
Requirement Elicitation - The Problem
The customer is an expert in a special domain
(i.e. financial processes)
The developer is an expert in Information Technologies
The customer exactly knows what kind of software he
wants to have
The developer exactly knows how to implement
software products
How to close the gap between customer and
developer?
24
Introduction to Software Engineering
25
Introduction to Software Engineering
Requirement Elicitation - The Solution
How to close the gap between customer and developer:
We can use scenarios to describe an exemplary but
concrete usage of the system
Interactions between actors and the system
We use use cases to describe a class of certain similar
scenarios
Use Cases are abstractions of scenarios
Both (scenarios and use cases) use common speech
to be understandable
26
Introduction to Software Engineering
Requirement Elicitation - The Solution
Solution: Scenario based requirement elicitation
Identify actual scenarios in dialog with the customer/user
Create visionary scenarios to describe new
functionalities
Identify quality requirements (non-functional)
System validation, checking the scenarios in dialog
Create a prototype (without implemented functionalities)
Requirement Specification: List of functional and non-
functional requirements, scenarios and use cases
27
Introduction to Software Engineering
Requirement Elicitation
Customer, Developer and User should define the systems
specification altogether in dialog ...
If not:
No understanding of opposite individual needs
A system that is hard (or absolutely not) to handle
There will be a lot of mistakes / misunderstandings in
the specification
These mistakes normally will be noticed only in late
project phases. Correction is very cost-intensive
28
Introduction to Software Engineering
UML:
UML stands for “Unified Modeling Language”
UML is the standard language for all the aspects of
software systems:
Functional requirements view
Static structural view
Dynamic behavior view
Specification, Visualization and Construction
Documentation
29