Software Development
Some examples and/or figures were borrowed (with permission)
from slides prepared by Prof. H. Roumani
Design
Implementation
Testing
Deployment
EECS1020 F14 (Steven C.) 2
How the system will work
Algorithm to generate the desired output
Outline delegation of tasks
Identify needed classes, methods, and
attributes
Determine how data will be exchanged
amongst the various components
EECS1020 F14 (Steven C.) 3
Involves coding
Existing classes can be used/extended to meet
requirements
New class created from scratch
and unit testing
Functionality of classes are tested individually to
ensure adherence to specifications
(more details shortly)
EECS1020 F14 (Steven C.) 4
Evaluate entire system as a whole
Ensure components work well together
Ensure components exchange data correctly
Data formatting is especially important
Involves meeting specifications, not just for looks
EECS1020 F14 (Steven C.) 5
Deployment
Package, deliver, and install system for customer
Operation
Ensure functionality at the customers location
Train customers employees to operate system
Maintenance
Develop and deploy updates, patches, and fixes
Perform upgrades
EECS1020 F14 (Steven C.) 6
REQUIREMENTS
DESIGN
IMPLEMENTATION
TESTING
DEPLOYMENT
EECS1020 F14 (Steven C.) 7
Detection and handling of risks is delayed
until the testing phase
Risks include:
Interoperability problems amongst components
Requirement changes
Incorrect assumptions
EECS1020 F14 (Steven C.) 8
DESIGN IMPLEMENTATION
REQUIREMENTS TESTING
EVALUATION
START DEPLOY
EECS1020 F14 (Steven C.) 9
Agile software development
Extreme Programming (XP)
(IBM) Rational Unified Process (RUP)
SCRUM development
EECS1020 F14 (Steven C.) 10
Some examples and/or figures were borrowed (with permission)
from slides prepared by Prof. H. Roumani
Visual language used to describe
characteristics and interactions of software
components
Formal language with rules but also flexible
UML tools convert UML diagrams code
EECS1020 F14 (Steven C.) 12
type::lib::Fraction
+ isQuoted: boolean
+ separator: char
isQuoted: boolean
+ separator: char
+ getNumerator(): long
+ setFraction(Fraction)
+ toString(): String
EECS1020 F14 (Steven C.) 13
A B Dependency: A uses B
A B Aggregation: A has a B
A B Inheritance: A is a B
EECS1020 F14 (Steven C.) 14
Some examples and/or figures were borrowed (with permission)
from slides prepared by Prof. H. Roumani
Written proofs using:
Discrete mathematics
Axioms
Theorems
Covered in MATH1019 and MATH1090
EECS1020 F14 (Steven C.) 16
Collection of test cases
Test cases should include:
Values within range
Values outside range
Boundary cases
Each case should hold meaning and test a
specific aspect of the component
Cover as many execution paths as possible
Employ regression testing
EECS1020 F14 (Steven C.) 17
Program to automate the testing of a
component
Takes unit test input
Compares component output to oracles
output
Oracle:
Separate mechanism, component, or algorithm
Provides the correct answer
Can you give an example of a test harness?
EECS1020 F14 (Steven C.) 18
SUITE ORACLE
input algorithm
verifica-
loop HARNESS tion
random approxi-
mation
file UNIT file
EECS1020 F14 (Steven C.) 19
Determine and fix source of error
Techniques:
Examine code (tedious, error-prone)
Print statements to output intermediate
steps/values
Examine error messages for source details
Use debuggers
EECS1020 F14 (Steven C.) 20