Waterfall Method Step 1
requirements
Waterfall Method Step 2
design
Waterfall Method Step 3
implementation
Waterfall Method Step 4
testing
Waterfall Method Step 5
deployment & maintenance
Iterative Model Step 1
planning/requirements
Iterative Model Step 2
analysis & design/implementation
Iterative Model Step 3
testing
Iterative Model Step 4
Evaluation
Functional Requirements
describe interactions between system and its environment and users.
Non-functional Requirements
describe aspects of the system not directly related to functional behavior of the system.
FURPS+
-F
functionality
FURPS+
-U
usability
FURPS+
-R
reliability
FURPS+
-P
performance
FURPS+
-S
supportability
FURPS+
-+
implementation, interface, operations, packaging, legal
Usability
#NAME?
Reliability
#NAME?
Performance
#NAME?
Supportability
#NAME?
Implementation
specific tools, languages, hardware platforms
Interface
#NAME?
Operations
constraints on admin and management of system while operational
Packaging
#NAME?
Legal
#NAME?
Use Cases
#NAME?
Contents of a Use Case
title, goal level, main success scenario (MSS), extensions, primary actor, secondary actors, precondition, guarantee, trigger
Primary Actor
has the goal the use case is trying to solve
Secondary Actor
#NAME?
Requirements Specification
#NAME?
Complete
all possible scenarios within the system are described
Consistent
no requirements contradict another requirement
Unambiguous
#NAME?
Correct
accurately represents what the client needs and what developers intend to build
Realistic
system can be implemented
Verifiable
#NAME?
Traceable
-each requirement can be traced throughout the development process to its' corresponding system functions
-dependency tracking
-aids in evaluating changes
System Design
transformation of our analysis model into our system model
Steps of System Design
#NAME?
Design Goals
#NAME?
Developer Tradeoffs
____ vs ____
____ vs ____
____ vs ____
____ vs ____
accuracy vs speed
usability vs customization
flexibility vs stability
accessibility vs security
Subsystem
#NAME?
Decomposing into relatively independent subsystems
#NAME?
Decomposing Subsystem Steps
#NAME?
* =
0 or more
1 =
exactly one
1..* =
1 or more
Service
set of related operations that share a common purpose
Notification Subsystem
#NAME?
Subsystem Interface
#NAME?
Coupling
number of dependencies between subsystems
Loosely Coupled
relatively independent
Strongly Coupled
#NAME?
You want your subsystems to be ____ coupled because ____
loosely because
-minimizes impact of changing one subsystem
-can use abstraction layers to do so
Cohesion
number of dependencies within the subsystem
A subsystem contains many related objects and tasks; cohesion is ____
high
A subsystem contains many unrelated objects; cohesion is ____
low
You want your subsystems to have ____ cohesion
high
You want ____ cohesion and ____ coupling
high; low
You don't want ____ cohesion and ____ coupling
low; high
Developers can deal with ____ concepts on any one level of abstraction
7 (+ or -) 2
System design model is ____ if the analysis model can be mapped to the system design model
correct
The system design model is ____ if every requirement and every system design issue has been addressed
complete
The system design is ____ if it does not contain any contradictions
consistent
The model is ____ if the system can be implemented
realistic
The model is ____ if developers not involved in the system design can understand the model
readable
Object Design Activities
#NAME?
List the three types of contracts
#NAME?
Invariant
-something that is true for every instance of a class
-associated with a class itself
-usually involves a data field
Precondition
what needs to be true before an operation or method is invoked
Postcondition
what is always true after the operation
Reuse
#NAME?
Delegation
way to avoid implementation inheritance
If an object of type S can be substituted in all the places where an object of type T is expected then ____ is a subtype of ____
S is a subtype of T
Advantages of Reuse
#NAME?
Anticipating Change
-New ____ or ____
-New ____
-New ____
-New ____
-____
#NAME?
Model Transformations
#NAME?
Refactoring
#NAME?
Each transformation must
____,
____,
____,
____
address a single criteria,
be local,
be applied in isolation to other changes,
be followed by validation
Four Ways to Optimize
#NAME?
Access Matric
-Each row is ____
-Each column is ____
-Each cell lists ____
each row is an actor
each column is an object
each cell lists the methods they have access to
____ of time is spent in the implementation stage
not a lot
Unidirectional One-To-One
add an attribute in A that contains B
Bidirectional One-To-One
#NAME?
Unidirectional One-to-Many
object A has a collection of type Object B
Bidirectional One-to-Many
#NAME?
Many-to-Many
#NAME?
Testing
systematic attempt to find faults in a planned way in the implemented software
Reliability (Testing)
measure of success with which the observed behavior conforms to the specification of its behavior
Software Reliability (Testing)
probability that a software system will not cause system failure under specified conditions.
Failure (Testing)
any deviation of the observed behavior from the specified behavior
Erroneous State
system is in a state such that further processing of the system will result in a failure.
Fault
mechanical or algorithmic cause of the erroneous state
____ leads to ____ which lead to ____
fault leads to erroneous state which leads to failure
Test Component
part of the system that can be isolated for testing
Fault Avoidance
#NAME?
Fault Detection
#NAME?
Fault Tolerance
#NAME?
Test Stub
partial implantation of components on which the tested components depend
Test Driver
#NAME?
A ____ is a partial implementation of components on which the tested components depend.
A ____ is a partial implementation of component that depends on the test component.
test stub
test driver
XP Values
#NAME?
Three Pillars of Scrum
#NAME?
Values of Scrum
#NAME?
Roles of Scrum
#NAME?