SoftwareEngineering 1
SoftwareEngineering 1
Specification
Design
Validation
Evolution
Waterfall model
Requirements
definition
System and
software design
Implementation
and unit testing
Integr ation and
system testing
Operation and
maintenance
10
Evolutionary development
Exploratory development
Objective is to work with customers and to
evolve a final system from an initial outline
specification. Should start with wellunderstood requirements
Throw-away prototyping
Objective is to understand the system
requirements. Should start with poorly
understood requirements
13
Evolutionary development
Concurr ent
activities
Outline
description
Specification
Initial
version
Development
Intermediate
versions
Validation
Final
version
14
Evolutionary development
Problems
Lack of process visibility
Systems are often poorly structured
Special skills (e.G. In languages for rapid
prototyping) may be required
Applicability
For small or medium-size interactive systems
For parts of large systems (e.G. The user
interface)
For short-lifetime systems
15
Requirements
definition
Formal
specification
Formal
transformation
Integration and
system testing
18
List specification
LIST ( Elem )
sort List
imports INTEGER
Defines a list where elements are added at the end and remo ved
from the front. The oper ations are Create, which brings an empty list
into existence, Cons, which creates a new list with an added member ,
Length, which evaluates the list size, Head, which evaluates the front
element of the list, and Tail, which creates a list by removing the head from its
input list. Undefined represents an undefined value of type Elem.
Create List
Cons (List, Elem) List
Head (List) Elem
Length (List) Integer
Tail (List) List
Head (Create) = Undefined exception (empty list)
Head (Cons (L, v)) = if L = Create then v else Head (L)
Length (Create) = 0
Length (Cons (L, v)) = Length (L) + 1
Tail (Create ) = Create
Tail (Cons (L, v)) = if L = Create then Create else Cons (Tail (L), v)
20
Formal transformations
Formal transformations
T1
Formal
specification
T2
R1
P1
T3
R2
P2
T4
Executable
program
R3
P3
P4
21
Applicability
Critical systems especially those where a
safety or security case must be made
before the system is put into operation
22
Reuse-oriented development
Based on systematic reuse where systems are
integrated from existing components or COTS
(Commercial-off-the-shelf) systems
Process stages
Component analysis
Requirements modification
System design with reuse
Development and integration
Reuse-oriented development
Requirements
specification
Component
analysis
Requirements
modification
System design
with reuse
Development
and integration
System
validation
24
Process iteration
System requirements ALWAYS evolve in the
course of a project so process iteration where
earlier stages are reworked is always part of
the process for large systems
Iteration can be applied to any of the generic
process models
Two (related) approaches
Incremental development
Spiral development
25
Incremental development
Rather than deliver the system as a single
delivery, the development and delivery is
broken down into increments with each
increment delivering part of the required
functionality
User requirements are prioritised and the
highest priority requirements are included in
early increments
Once the development of an increment is
started, the requirements are frozen though
requirements for later increments can continue
to evolve
26
Incremental development
Define outline
requirements
Develop system
increment
Assign requirements
to increments
Valida te
increment
Design system
architecture
Integrate
increment
Valida te
system
Final
system
System incomplete
27
Incremental development
advantages
Customer value can be delivered with each
increment so system functionality is available
earlier
Early increments act as a prototype to help
elicit requirements for later increments
Lower risk of overall project failure
The highest priority system services tend to
receive the most testing
28
Extreme programming
New approach to development based
on the development and delivery of very
small increments of functionality
Relies on constant code improvement,
user involvement in the development
team and pairwise programming
29
Spiral development
Process is represented as a spiral rather than
as a sequence of activities with backtracking.
Each loop in the spiral represents a phase in
the process.
No fixed phases such as specification or
design - loops in the spiral are chosen
depending on what is required.
Risks are explicitly assessed and resolved
throughout the process.
30
Risk
analysis
Evaluate alternatives
identify, resolve risks
Risk
analysis
Risk
analysis
REVIEW
Requirements plan
Life-cycle plan
Development
plan
Integration
and test plan
Prototype 3
Prototype 2
Risk
analy sis Prototype 1
Operational
protoype
S/W
requirements
Requirement
validation
Product
design
Detailed
design
Code
Unit test
Design
V&V
Integr ation
test
Acceptance
test
Develop, verify
Service
next-level product
31
Planning
The project is reviewed and the next phase of the
spiral is planned
32
Software specification
The process of establishing what services are
required and the constraints on the systems
operation and development
Requirements engineering process
Feasibility study
Requirements elicitation and analysis
Requirements specification
Requirements validation
33
Requirements
elicitation and
analysis
Requir ements
specification
Feasibility
report
Requirements
validation
System
models
User and system
requirements
Requirements
document
34
Architectural design
Abstract specification
Interface design
Component design
Data structure design
Algorithm design
35
Abstract
specification
Interface
design
Component
design
Data
structur
e
design
Algorithm
design
System
architectur
e
Software
specification
Interface
specifica
t ion
Component
specification
Data
structur
e
specification
Algorithm
specifica
tion
Design pr
oducts
36
Design methods
Systematic approaches to developing a
software design
The design is usually documented as a set of
graphical models
Possible models
Data-flow model
Entity-relation-attribute model
Structural model
Object models
37
38
Locate
error
Design
error repair
Repair
error
Re-test
program
39
Software validation
Verification and validation is intended to show
that a system conforms to its specification and
meets the requirements of the system
customer
Involves checking and review processes and
system testing
System testing involves executing the system
with test cases that are derived from the
specification of the real data to be processed
by the system
40
Component
testing
Integration testing
User
testing
41
Testing stages
Unit testing
Individual components are tested
Module testing
Related collections of dependent components are
tested
Sub-system testing
Modules are integrated into sub-systems and tested.
The focus here should be on interface testing
System testing
Testing of the system as a whole. Testing of emergent
properties
Acceptance testing
Testing with customer data to check that it is acceptable
42
Testing phases
Requir ements
specification
System
specification
System
integration
test plan
Acceptance
test plan
Service
System
design
Acceptance
test
Detailed
design
Sub-system
integration
test plan
System
integration test
Module and
unit code
and tess
Sub-system
integration test
43
Software evolution
Software is inherently flexible and can change.
As requirements change through changing
business circumstances, the software that
supports the business must also evolve and
change
Although there has been a demarcation between
development and evolution (maintenance) this is
increasingly irrelevant as fewer and fewer
systems are completely new
44
System evolution
Define system
requirements
Assess existing
systems
Existing
systems
Propose system
changes
Modify
systems
New
system
45
46
Case technology
Case technology has led to significant
improvements in the software process though
not the order of magnitude improvements that
were once predicted
Software engineering requires creative thought this is not readily automatable
Software engineering is a team activity and, for
large projects, much time is spent in team
interactions. CASE technology does not really
support these
47
CASE classification
Classification helps us understand the different
types of CASE tools and their support for process
activities
Functional perspective
Tools are classified according to their specific function
Process perspective
Tools are classified according to process activities that
are supported
Integration perspective
Tools are classified according to their organisation into
integrated units
48
49
Activity-based classification
Reengineering tools
Testing tools
Debugging tools
Program analysis tools
Language-processing
tools
Method support tools
Prototyping tools
Configuration
management tools
Change management tools
Documentation tools
Editing tools
Planning tools
Specification
Design
Implementation
Verification
and
Validation
50
CASE integration
Tools
Support individual process tasks such as design
consistency checking, text editing, etc.
Workbenches
Support a process phase such as specification or
design, Normally include a number of integrated tools
Environments
Support all or a substantial part of an entire software
process. Normally include several integrated
workbenches
51
Tools, workbenches,
environments
CASE
technology
Tools
Editors
Compilers
Workbenches
File
comparators
Analysis and
design
Multi-method
workbenches
Integrated
environments
Programming
Single-method
workbenches
Environments
Process-centred
environments
Testing
General-purpose
workbenches
Language-specific
workbenches
52