INTRODUCTION
THE SOFTWARE PROCESSES
Software Design Patterns
FAKHRELDIN ALI
[Link]@[Link]
OBJECTIVES
To introduce software process models and the software processes
To know where, in the software processes, software design and design patterns
applied
2
TOPICS COVERED
Introduction to software processes
Software process models
The waterfall model
Incremental model
Evolutionary development
Specialized process models
Agile processes
3
SOFTWARE PROCESSES
Software Process: “a set of activities, practices,
and transformations that people use to develop
and maintain software and the associated
products, e.g., project plans, design documents,
code, test cases, and user manual” -IEEE
4
SOFTWARE PROCESSES
Software process is the roadmap to building high quality software
products.
A software process provides a framework for managing activities
that can very easily get out of control.
Different types of projects require different software processes.
The software engineer's work products (programs,
documentation, data) are produced as a consequence of the
activities defined by the software process.
The best indicators of how well a software process has worked
are the quality, timeliness, and long-term viability of the resulting
software product.
5
MAIN PHASES OF SOFTWARE PROCESS
Requirements Analysis (answers “WHAT?”)
Specifying what the application must do
Design (answers “HOW?”)
Specifying what the parts will be, and how they will fit together
Implementation (A.K.A. “CODING”)
Writing the code
Testing (type of VERIFICATION)
Executing the application with test data for input
Maintenance (REPAIR or ENHANCEMENT)
Repairing defects and adding capability
6
MAIN PHASES OF SOFTWARE PROCESS (CONT...)
Requirements Analysis: Text produced
e.g., “ … The application shall display the balance in the user’s bank account. …”
Design: Diagrams and text
e.g.,“ … The design will consist of the classes CheckingAccount, SavingsAccount, …”
Implementation: Source and object code
e.g., … class CheckingAccount{ double balance; … } …
Testing: Test cases and test results
e.g.,“… With test case: deposit $44.92 / deposit $32.00 / withdraw $101.45 / … the
balance was $2938.22, which is correct. …”
Maintenance: Modified design, code, and text
e.g., Defect repair: “Application crashes when balance is $0 and attempt is made to
withdraw funds. …”
Design only from requirements 7
Code only from design
WHAT IS DESIGN?
The purpose of design is to produce a solution to a problem:
The problem: requirements specification.
The solution: your description of how the requirements are to be met.
The creative process of describing and transforming a problem into a
solution.
A set of documents on whose basis a software can be fully programmed.
Software design describe the system well enough that coders can
build it and deploy it without serious problems:
All the parts of the system and how they fit together (architecture, high-
level design)
Each part in detail so that it can be coded.
8
DO WE NEED DESIGN AND DESIGN NOTATION?
An extremely useful notation for design documentation is the UML (Unified
Modeling Language)
Why do we need design and design notation?
Communication
Why not just think about it and then start coding?
Different conceptual level
9
SOFTWARE PROCESS MODELS
A software process model is an abstract representation of a process. It presents a
description of a process from some particular perspective.
Software process models
The Waterfall model
Incremental model
Evolutionary development-Prototyping
Specialized process models
Agile processes [e.g. Extreme Programming]
10
WATERFALL MODEL
11
INCREMENTAL DEVELOPMENT
EVOLUTIONARY DEVELOPMENT-
PROTOTYPING
Quick
plan
communication
Qu ick p lan
Modeling
Communicat ion Quick design
Mo d e lin g
Qu ick d e sig n
Deployment
delivery &
feedback Construction
of prototype
Deployment
De live ry
& Fe e dback Const r uct ion
of
prot ot ype
13
OTHER PROCESS MODELS
Component based development
Unified Process
14
REUSE-ORIENTED DEVELOPMENT
Requirements Component Requirements System design
specification analysis modification with reuse
Development System
and integration validation
15
UNIFIED PROCESS
elaboration
Elab o r at io n
inception
Inception
Incep t io n
Establish the business
case for the system.
Elaboration
Develop an
understanding of the
problem domain and the
system architecture.
Construction
System design,
programming and co nst r uct io n
testing.
Release
Transition soft ware increment
t r ansit io n
Deploy the system in its
operating environment. 16
p r o d uct io n
SUMMARY
Software processes are the activities involved in producing and evolving a
software system.
Software process models:
Abstract representations of these processes.
Describe the organisation of software processes.
Software processes general activities are: specification, design and
implementation, validation and evolution.
The design of an application expresses how the application is to be constructed
Design is performed in different way in different software processes.
17