chapter 1 software development

CHAPTER 1
SOFTWARE
DEVELOPMENT






Goals of software development
Aspects of software quality
Development life cycle models
Basic concepts of algorithm analysis
Notation of the Unified Modeling
Language (UML)
Some issues related to error handling
2
Software engineering

Software Engineering is the study of the techniques
and theory that support the development of highquality software



Solve the right problem
Deliver a solution on time and under budget
Deliver a high-quality solution
Avoid two basic risks:
Solve the wrong problem
Solve the problem wrong
3
Software Quality
4
Development Models

A development life cycle defines a
process to be followed during product
development





problem analysis
design
implementation
evaluation, testing and debugging
maintenance
5
Problem Analysis I


Analysis : understanding the problem
Questions to be answered:



What are the objectives of the software
system
What are the objects to be manipulated, how
are they described, how are they related
Are there available operations to achieve the
desired results
6
Problem Analysis II

Various techniques:




discussions and negotiations with the client
modeling the problem structure and data
flow
observation of client activities
analysis of existing solutions and systems
7
Design
Design involves determining:



the overall software structure (architecture)
the key objects, classes, and their relationships
Detailed design




Refine the interface of each component
Further decomposition
Algorithm design
8
Vending
Machine
Processes
EXAMPLE
Process
customer input
Calculate
deposited
money
Perform
expected
output actions
Identify
product
Refuse service
not enough
$ is
deposited
Dispens
e
product
Calculate and
dispense
change if
needed
product not
available
9
Implementation
Turn the design into functional
software – actual coding
 Too many people consider this the
primary act of software development
 May involve the reuse of existing
software components

10
Evaluation, Testing, Debugging


Does the system solve the problem?
Is the solution efficient?

It is possible to build a system that has no bugs
and yet is completely wrong

Testing and debugging:



Design test cases
Test to see if requirements are met
Fix errors
11
Operation and maintenance


After a system is initially developed, it must
be maintained
This includes:



fixing errors
making enhancements to meet the changing
needs of users
The better the development effort, the easier
the maintenance tasks will be
12
Development Models
 Waterfall
model
 Spiral model
 Evolutionary model
13
The Waterfall Model
14
The Waterfall Model II



Each stage flows into the next
Driven by documentation
Advantages:



Lays out clear milestones and deliverables
Has high visibility – managers and clients can
see the status
Disadvantages:


late evaluation
not realistic in many situations
15
The Spiral Model
16
The Spiral Model





Developed by Barry Boehm in the mid '80s
Embraces an iterative process, where
activities are performed over and over again
for different aspects of the system
Designed to reduce the risks involved
Continually refines the requirements
Each loop through the spiral is a complete
phase of the development
17
The Evolutionary Model
18
The Evolutionary Model

Like the spiral model, an evolutionary
approach embraces continual
refinement

Intermediate versions of the system
are created for evaluation by both the
developers and the client
19
The Waterfall model revised
20