Chapter 3 - Process Models: 1. Waterfall Model (Classic Life Cycle)
Chapter 3 - Process Models: 1. Waterfall Model (Classic Life Cycle)
ws/Unisa
INF305
Yellow = answered textbook questions Blue = unanswered questions
2. Incremental model
• Combines elements of the waterfall model applied iteratively
• Linear sequences each produce deliverable increments of software
• The first increment is usually a core product, used by customers
• Each increment focuses on the delivery of an operational product
• Good when staffing is unavailable for a complete implementation
• Increments can be planned to manage technical risks
• Software projects amenable to the incremental model:
o A project that has significant functionality that must be
delivered in a very tight time frame (Add on extras later)
1
http://wikistudent.ws/Unisa
3. RAD model
• An incremental model that emphasizes a short development cycle
• A high-speed adaptation of the waterfall model, where rapid
development is achieved by using component-based construction
• For when requirements are understood and scope is constrained
• For when business applications can be modularized
• A fully functional system is constructed in a very short time
• Each major function is addressed by a separate RAD team and then
integrated to form a whole
• To achieve rapid development, this model assumes the existence
of: a project that can be modularized in a manner that allows
major functionality to be delivered within 60-90 days (This
isn’t always the case – sometimes timelines can be longer)
Drawbacks:
• For large projects, RAD requires sufficient human resources to
develop the increments in parallel
• Projects will fail if people don’t commit to rapid activities
• If a system can’t be modularized, you can’t build components
• Might not work if high performance is an issue
• Might not be appropriate when technical risks are high
4. Prototyping
• For when the customer defines a set of general objectives
• For when the developer is unsure of the form of the software
• Can be used as a standalone process model, but is more commonly
used as a technique that can be implemented within other models
• The prototype helps to identify software requirements
• It should be discarded (at least in part)
• Problems with prototyping:
o The customer sees a working version and wants to keep it
o Developers may become comfortable with inefficient choices
• Software projects amenable to the prototyping model:
o Ones which involve human-machine interaction and/or heavy
computer graphics
o Ones where results can easily be examined without real-time
interaction (e.g. command-driven systems using mathematical
algorithms) i.e. not embedded software!
• Process adaptations required if the prototype will evolve into a
deliverable system / product:
o More rigorous design rules and SQA procedures must be
applied from the beginning
2
http://wikistudent.ws/Unisa
o The prototype must be designed with extensibility in mind
and be implemented using a programming environment that is
amenable to production system development
o The prototype is initially a mechanism for identifying
requirements, and then becomes the framework for extensions
that will cause it to evolve into a production system
5. Spiral model
• Combines the iterative nature of prototyping with the controlled
and systematic aspects of the waterfall model
• Rapid development of increasingly complete versions of software
• Software is developed in a series of evolutionary releases
• Each framework activity represents 1 segment of the spiral path
• Risk-driven model: risk evaluation during each iteration
• Anchor point milestones are noted for each evolutionary pass
• This model can apply throughout the life of the software
• Good for developing large-scale systems and software
• Not good if you have a fixed budget, because project cost is
revised as each circuit is completed
• Prototyping reduces risks, and can be applied at any stage
• Problems:
o May be hard to convince customers that it’s controllable
o Demands considerable risk assessment and expertise
o Problems if a major risk is not uncovered and managed
• What happens to the software as you move outwards along the
spiral process flow:
o The product moves towards a more complete state
o The level of abstraction at which work is performed is
reduced (i.e. implementation-specific work accelerates as
we move further from the origin)
3
http://wikistudent.ws/Unisa
4
http://wikistudent.ws/Unisa
• Aspects = localizing the expression of a crosscutting concern
5
http://wikistudent.ws/Unisa
6
http://wikistudent.ws/Unisa
2. Documentation helps maintaining applications years later
3. Negotiation helps avoid unrealistic expectations
4. A chaotic project environment (no plan) can lead to failure
Agile process
Any agile software process is characterized by 3 key assumptions:
1. It is difficult to predict which software requirements will
persist and which will change (priorities also change)
2. For many types of software, design and construction are
interleaved, and it is difficult to predict how much design is
necessary before construction is used to prove the design
3. Analysis, design, construction, and testing are not as
predictable (from a planning point of view) as we might like
7
http://wikistudent.ws/Unisa
• Why does an iterative process make it easier to manage change?
Is every agile process iterative? Is it possible to complete a
project in just one iteration and still be agile? Explain.
o An iterative approach enables customers to evaluate
regularly, provide feedback, and influence the required
changes. (The software team manages change by focusing on a
defined increment and postponing any changes until the next
increment). All agile processes are iterative. If a project
were completed in just one iteration it would not be agile
because frequent software delivery is a key characteristic
of agile development.
Human factors:
Key traits that must exist among the people on the software team:
• Competence
Skill and knowledge of the process must be taught to the members
• Common focus
Focus on the goal of delivering a working increment on time
• Collaboration
8
http://wikistudent.ws/Unisa
Team members must collaborate with one another, with the
customer, and with business managers to accomplish tasks
• Decision-making ability
The team is given decision-making authority for project issues
• Fuzzy problem-solving ability
Deal with ambiguity and change, learning lessons from the past
• Mutual trust and respect
A ‘jelled’ team is strongly knit (whole > parts)
• Self-organization
The team organizes…
1. itself for the work to be done
2. the process to best accommodate the environment
3. the work schedule to best achieve delivery of the increment
o Advantage: improves collaboration and boosts team morale
4. Scrum
• Small working teams are organized to maximize communication &
knowledge, and minimize overhead
• The process must be adaptable to technical & business changes
• Frequent software increments
• Work and people are partitioned
• Constant testing and documentation
• A product is declared ‘done’ whenever required
• Requirements analysis design evolution delivery
11
http://wikistudent.ws/Unisa
• Software process patterns define some development activities:
o Backlog
Prioritized list of project requirements / features
Items can be added to the backlog at any time
o Sprints
Work units that are required to achieve a requirement
defined in the backlog that must fit into a time-box
During the sprint, the backlog items it uses are frozen
o Scrum meetings
Short daily meetings where these key questions are asked:
1. What did you do since the last team meeting?
2. What obstacles are you encountering
3. What do you plan to accomplish by the next meeting?
A ‘scrum master’ assesses the responses from each person
The meetings help the team uncover potential problems early
These daily meetings lead to ‘knowledge socialization’
o Demos
Increment delivered to the customer so that functionality
can be demonstrated and evaluated
The demo mayn’t contain all planned functionality, but only
the functions delivered within the established time-box
• A sample Scrum pattern:
Pattern Scrum meeting
Intent To answer three key questions using an abbreviated meeting
format that is conducted daily
Type Task pattern
Initial 1. The project should have been initiated and a backlog
context developed
2. Sprints should be underway
3. All members of the Scrum team should agree to meet in a
pre-specified location each day for the scrum meeting
4. A team leader should be defined
Problem It is often difficult for members of the team to
understand the status of the project and the status of
work being conducted by each member of the team. When
meetings are conducted, they are often too time-consuming
and ineffective.
Solution Short meetings are held daily and the 3 key questions are
asked and answered by all team members
Resulting At the conclusion of the meeting, each person has answered
context the questions noted in the solution
Related Backlog preparation
patterns Conducting a sprint
Known uses Scrum meetings are conducted throughout every Scrum
/ examples project and are an important element of communication
5. Crystal
• An approach that puts a premium on maneuverability
• Primary goal: delivering useful, working software
12
http://wikistudent.ws/Unisa
• Secondary goal: setting up for the next ‘game’
• To achieve maneuverability, there is a set of methodologies to
choose from, which all have core elements in common
• Reflection workshops are conducted before, during, and after an
increment is delivered
• Why Crystal is called a ‘family of agile methods’:
o The Crystal approach emphasizes collaboration and
communication among people who have varying degrees of
interest in the software project. The method is also
tolerant of varying team cultures and can accommodate both
informal and formal SE approaches. Crystal family is
actually a set of sample agile processes that have been
proved effective for different types of projects. The
intent is to allow agile teams to select the member of the
Crystal family that is most appropriate for their project.
• Use the FDD feature template to define a feature set for a Web
browser, and develop a set of features for the feature set:
(action) the (result) (by | for | of | to) a(n) (object)
Examples:
Specify a URL for a website
Display the content of a website
Fill in the content of a Web form
Show all URLs for favorite places
13
http://wikistudent.ws/Unisa
7. Agile Modeling (AM)
• With large systems, scope and complexity must be modeled so that
o All can better understand what needs to be accomplished
o The problem can be partitioned effectively among the people
o Quality can be assessed at every step during engineering
• AM = a methodology for modeling & documentation of software in a
light-weight manner: Agile models are barely good, not perfect
• AM provides guidance to practitioners during analysis & design
• An agile team must have the courage to make decisions and
humility to recognize that they don’t have all the answers
• Principles that make AM unique:
o Model with a purpose
Have a specific goal before creating the model
o Use multiple models
Each model should present a different aspect of the system
o Travel light
Keep only the models that will provide long-term value
o Content is more important than representation
Modeling should impart information to its intended audience
o Know the models and the tools you use to create them
Understand the strengths & weaknesses of each model & tool
o Adapt locally
Adapt the modeling approach to the needs of the agile team
14
http://wikistudent.ws/Unisa
Build by feature (revisit prototypes)
Deployment (completed function) Implementation
7 Core principles
• Summarize David Hooker’s 7 principles for software development:
1. Software exists to provide value to its users
2. Keep it simple
3. Maintain the vision
4. What you produce, others will consume (maintain)
5. Be open to the future – don’t design yourself into a corner
6. Plan ahead for reuse
7. Think before you act
1. Communication practices
1. Listen
15
http://wikistudent.ws/Unisa
2. Prepare before you communicate (e.g. an agenda)
3. Someone should facilitate the activity
4. Face-to-face communication is best
5. Take notes and document decisions
6. Strive for collaboration
7. Stay focused, modularize your discussion
8. If something is unclear, draw a picture
9. Move on after you agree / disagree / if something is unclear
10. Negotiation works best when both parties win
2. Planning practices
1. Understand the scope of the project
2. Involve the customer in the planning activity
3. Recognize that planning is iterative
4. Estimate (effort, cost, task duration…) based on what you know
5. Consider risk as you define the plan (make contingency plans)
6. Be realistic (People make mistakes and don’t work all day)
7. Adjust granularity as you define the plan
8. Define how you intend to ensure quality (FTR, pair programming…)
9. Describe how you intend to accommodate change
10. Track the plan frequently and make adjustments as required
16
http://wikistudent.ws/Unisa
o Granularity refers to the level of detail that is
introduced as a project plan is developed
o Fine granularity plan: detail, planned over a short time
o Coarse granularity plan: broad work tasks over long periods
o Granularity goes fine coarse as the timeline moves on
3. Modeling practice
Analysis modeling
1. The information domain (data in-out flows & stores) of a problem
must be represented and understood
2. The functions that the software performs must be defined
3. The behavior of the software must be represented
4. The models that depict information, function, and behavior must
be partitioned to uncover detail in a layered fashion
5. The analysis task should move from essential information towards
implementation detail
Design modeling
1. Design should be traceable to the analysis model
2. Always consider the architecture of the system to be built
3. Design of data is as NB as design of processing functions
4. Interfaces (internal & external) must be designed with care
5. User interface design should be tuned to the needs of the user
6. Components should be highly cohesive
7. Components should be loosely coupled
8. Design representations (models) should be easy to understand
9. The design should be developed iteratively, striving for greater
simplicity with each iteration
4. Construction practice
Coding principles and concepts
Preparation principles:
1. Understand the problem you’re trying to solve
2. Understand basic design principles and concepts
3. Pick a suitable programming language
4. Select a suitable programming environment
5. Create a set of unit tests for when your component code is done
Coding principles:
1. Constrain your algorithms by adhering to structured programming
2. Select data structures that will meet the needs of the design
3. Create interfaces that are consistent with the architecture
17
http://wikistudent.ws/Unisa
4. Keep conditional logic as simple as possible
5. Create nested loops in a way that makes them easily testable
6. Select meaningful variable names and follow coding standards
7. Write code that is self-documenting
8. The visual layout (new lines, indents…) should aid understanding
Validation principles:
1. Conduct a code walkthrough when appropriate
2. Perform unit tests and correct errors you’ve uncovered
3. Refactor the code
Testing principles
1. All tests should be traceable to customer requirements
2. Tests should be planned long before testing begins
3. Pareto principle: 80% of errors will be found in 20% of code
4. Testing should progress from ‘in the small’ to ‘in the large’
5. Exhaustive testing is not possible
5. Deployment
• Deployment encompasses three actions:
o Delivery
o Support
o Feedback
1. Customer expectations for the software must be managed
2. A complete delivery package should be assembled and tested
3. A support regime must be established before the software is
delivered
4. Appropriate instructional materials must be provided to users
5. Buggy software should be fixed first, delivered later
18
http://wikistudent.ws/Unisa
2. Elicitation
Why requirements elicitation is difficult:
• Problems of scope
o The system boundary is ill-defined
• Problems of understanding
o The customers are not completely sure what is needed
o They don’t know the capabilities & limitations of computers
o They don’t have a full understanding of the problem domain
o They have trouble communicating their needs
o They omit information that is believed to be obvious
o They specify requirements that are ambiguous or untestable
• Problems of volatility
o The requirements change over time
3. Elaboration
• The info from inception & elicitation is expanded & refined
• Driven by the creation and refinement of user scenarios that
describe how the user will interact with the system
• Each user scenario is parsed to extract analysis classes
• Attributes & methods of each analysis class are identified
• Relationships between classes are identified – UML diagrams
• End-result of elaboration: an analysis model that defines the
informational, functional, and behavioral domain of the problem
19
http://wikistudent.ws/Unisa
4. Negotiation
• Possible conflicts:
o Customers may ask for more than can be achieved
o Different users may propose conflicting requirements
• Users must rank requirements and discuss conflicts in priority
• Risks associated with each requirement are analyzed
• Rough estimates of development effort are made and used to
assess the impact of each requirement on project costs and time
• Using an iterative approach, requirements are eliminated,
combined, and/or modified so that each party is satisfied
5. Specification
• A specification can be a written doc, models, prototype, etc…
• This is the final work product from the requirements engineer
• It describes the function, performance & constraints of a system
6. Validation
• Examine the specification to ensure that all requirements have
been stated unambiguously, with errors & omissions corrected
• Formal technical review = the primary validation mechanism
• The review team includes software engineers, customers, users…
7. Requirements management
• Activities that help the team identify, control and track
requirements & changes at any time as the project proceeds
• Requirements are identified, and traceability tables are made:
20
http://wikistudent.ws/Unisa
Working towards collaboration
• Stakeholders must collaborate among themselves
• The requirements engineer identifies commonality/conflict areas
Asking the first questions
• Questions asked at inception should be context-free:
o Who is behind the request for this work?
o Who will use the solution?
o What will be the economic benefit of a successful solution?
o Is there another source for the solution that you need?
o Who is paying for this work?
o Who can we contact in each customer group?
o Do you know of any other business that has solved this
problem successfully?
• These questions help identify stakeholders & project benefits
• The next set of questions enables the team to better understand
the problem and allows the customer to voice his perceptions:
o How would you characterize ‘good’ output?
o What problems will this solution address?
o Can you describe the business environment?
o Will special performance issues affect the solution?
• The final set of questions focuses on the effectiveness of the
communication activity itself:
o Are you the right person to answer these questions?
o Are my questions relevant to the problem that you have?
o Am I asking too many questions?
o Can anyone else provide additional information?
o Should I be asking you anything else?
• These questions help to break the ice & initiate communication
• The Q&A session should be used for the first encounter only and
then replaced by a requirements elicitation format
2. Eliciting requirements
Collaborative requirements gathering
• Basic guidelines for a collaborative requirements meeting:
o Meetings are conducted & attended by both software
engineers and customers (and other stakeholders)
o Rules for preparation and participation are established
o An agenda is suggested
o A ‘facilitator’ controls the meeting
o A ‘definition mechanism’ (work sheets / flip charts / chat
room / bulletin board / wall stickers) is used
o The goal is to identify the problem, propose elements of
the solution and a preliminary set of solution requirements
Quality function deployment
• QFD = a technique that translates the needs of the customer into
technical requirements for software
• Concentrates on maximizing customer satisfaction
• QFD identifies 3 types of requirements:
21
http://wikistudent.ws/Unisa
o Normal requirements
• Reflect objectives stated for the system
• E.g. specific system functions, levels of performance
o Expected requirements
• Implicit to the system, and not stated explicitly
• E.g. ease of use and installation
o Exciting requirements
• Features that go beyond the customer’s expectations
• E.g. Extra features that are pleasing & unexpected
• Function deployment is used to determine the value of each
function that is required for the system
• Information deployment identifies both the data objects and
events that the system must consume and produce
• Task deployment examines the behavior of the system within the
context of its environment
• Value analysis is conducted to determine the relative priority
of requirements determined during each of the three deployments
• QFD uses interviews & observation, surveys, and examination of
historical data as raw data for requirements gathering
• Customer voice table = a table of requirements from this data
User scenarios
• As requirements are gathered, an overall vision of system
functions & features begins to materialize
• You must first understand how these functions & features will be
used by different classes of end-users before getting technical
• To achieve this developers & users can create a set of scenarios
(use cases) that identify a thread of usage for the system
Elicitation work products
• Info that can be produced as a result of requirements gathering:
o A statement of need and feasibility
o A bounded statement of scope for the system
o A list of stakeholders who participated in the elicitation
o A description of the system’s technical environment
o A list of requirements and each one’s domain constraints
o A set of usage scenarios
o Any prototypes developed to better define requirements
22
http://wikistudent.ws/Unisa
o Write a memo outlining to the customer the objectives of
the system to be developed. Objectives should be explained
by the customer.
o The QFD approach uses interviews, surveys, historical data…
as raw data for gathering requirements, which can be
translated into a table of requirements: the customer voice
table, that is reviewed with the customer. Diagrams,
matrices, and evaluation methods are then used to extract
the expected requirements.
Developing use-cases
• Primary actors interact to achieve required system function and
derive the intended benefit from the system
• Secondary actors support the system so that primary actors can
do their work
• Questions that should be answered by a use-case:
o Who are the primary actor(s), secondary actor(s)?
o What are the actor’s goals?
o What preconditions should exist before the story begins?
o What main tasks / functions are performed by the actor?
o What exceptions might come up as the story is described?
o What variations in the actor’s interaction are possible?
o What system info will the actor acquire, produce / change?
o Will the actor have to inform the system about changes in
the external environment?
o What information does the actor desire from the system?
o Does the actor wish to be informed of unexpected changes?
• Use-cases can be further elaborated to provide more detail
• Use-cases can be assessed by stakeholders, and assigned priority
23
http://wikistudent.ws/Unisa
2. Incorrect password entered
3. Password not recognized after 3 attempts
4. ATM does not eject bank card at the end of the transaction
5. User takes a long time to make a selection / to enter password
Priority: Essential, must be implemented
When available: First increment
Frequency of use: As many times as required
Channel to actor: Via ATM control panel
Secondary actors: ATM machine, camera
Channels to secondary actors: ATM machine: computer networks. ATM
machine is independent of the location.
Camera installed for the safety of the client.
Open issues:
1. Should the client use biometrics instead of PIN numbers?
2. Should the ATM machine display client additional information?
3. What will happen if there is a power failure during transaction?
4. How many cameras are to be installed to allow proper
identification should a robbery occur?
Insert card
Enter password
Select account
ATM
Enter amount machine
Process
transaction
Dispense cash
Eject card
Print slip
24
http://wikistudent.ws/Unisa
3. Elaboration: Building the analysis model
• The analysis model provides a description of the required
informational, functional, and behavioral domains for a system
• The analysis model is a snapshot of requirements at a given time
• As the analysis model evolves, some elements become stable,
while others may be more volatile, indicating that the customer
doesn’t yet fully understand requirements for the system
Elements of the analysis model
• Using different modes of representation forces you to consider
requirements from different viewpoints, which is better
• Generic elements common to most analysis models:
o Scenario-based elements
Template-based use-cases
Activity diagrams
o Class-based elements
Class diagrams
o Behavioral elements
State diagrams
o Flow-oriented elements
Data / control flow models
Analysis patterns
• Definition of analysis patterns:
o Things that reoccur across all projects within a specific
application domain. They represent something that can be
reused (e.g. a class, function, behavior…)
• Two benefits that can be associated with analysis patterns:
o They speed up the development of abstract analysis models
o They facilitate the transformation of the analysis model
into a design model by suggesting design patterns
• Information about an analysis pattern is presented in a template
with these headings: Pattern name | Intent | Motivation | Forces
and context | Solution | Consequences | Design | Known uses |
Related patterns
4. Negotiating requirements
• Activities for the beginning of each software process iteration:
1. Identification of the system / subsystem’s key stakeholders
2. Determination of the stakeholders’ “win conditions”
25
http://wikistudent.ws/Unisa
3. Negotiation of the stakeholders’ win conditions to reconcile
them into a set of win-win conditions for all concerned
6. Validating requirements
Questions to ask when reviewing requirements:
• Is each requirement consistent with the overall objectives?
• Are all requirements specified at the right level of abstraction
• Is the requirement really necessary?
• Is each requirement bounded and unambiguous?
• Is a source (e.g. an individual) noted for each requirement?
• Do any requirements conflict with other requirements?
• Is each requirement achievable in the system’s environment?
• Is each requirement testable, once implemented?
• Does the requirements model reflect the system’s behavior?
• Has the requirements model been partitioned to progressively
expose more detailed information about the system?
• Have requirements patterns been used to simplify the model? Have
they all been validated? Are they consistent with requirements?
26
http://wikistudent.ws/Unisa
o If the problem is relatively small and reasonably well
understood, an abbreviated approach may be chosen. For more
complex problems with many requirements, every task defined
for comprehensive requirements engineering should be
performed rigorously. Requirements engineering builds a
bridge to design and construction and cannot be skipped.
27
http://wikistudent.ws/Unisa
• If these patterns are defined and categorized to allow reuse,
then creation of the analysis model is speeded up
• More important, the likelihood of applying reusable design
patterns and executable software components grows dramatically
• Software domain analysis = the identification, analysis, and
specification of common requirements from a specific application
domain, for reuse on multiple projects within that domain
• Goal of domain analysis: To find / create those analysis classes
/ common functions and features that are broadly applicable, so
that they may be reused
• Role of the domain analyst: to discover and define reusable
analysis patterns, analysis classes, and related info that may
be used by many people working on similar applications
• Key inputs for domain analysis:
o Technical literature
o Existing applications
o Customer surveys
o Expert advice
o Current / future requirements
• Key outputs for domain analysis:
o Class taxonomies
o Reuse standards
o Functional models
o Domain languages
28
http://wikistudent.ws/Unisa
o Processes are modeled in a manner that shows how they
transform data as data objects flow through the system: DFD
• Object-oriented analysis
o Focuses on the definition of classes and the manner in
which they collaborate with one another
• Elements of the analysis model:
o Class-based elements
Class diagrams
Analysis packages
CRC models
Collaboration diagrams
o Scenario-based elements
Use-cases – text
Use-case diagrams
Activity diagrams
Swim lane diagrams
o Flow-oriented elements
Data flow diagrams
Control-flow diagrams
Processing narratives
o Behavioral elements
State diagrams
Sequence diagrams
29
http://wikistudent.ws/Unisa
• = a representation of composite information
• E.g. ‘dimensions’, which incorporates height, width, and depth
• A data object can be a thing (report), occurrence (phone call),
event (alarm), role (salesperson), organizational unit (sales
dept), place (warehouse), or a structure (file)
• The data object description incorporates the data object and all
of its attributes – there is no reference to operations
Data attributes
• They define properties of a data object and can be used to:
o Name an instance of the data object
o Describe the instance
o Make reference to another instance in another table
• One or more of the attributes must be defined as an ID (key)
Relationships
• Indicate how data objects are connected to one another
Cardinality and modality
• Cardinality = the no of occurrences of objects in a relationship
• Modality = 0 if there is no explicit need for the relationship
• Modality = 1 if an occurrence of the relationship is mandatory
Object-oriented analysis
• Tasks for OO:
1. Basic user requirements must be communicated between customer
& software engineer
2. Classes must be identified (with attributes & methods)
3. A class hierarchy is defined
4. Define object-to-object relationships (connections)
5. Object behavior must be modeled
6. 1 – 5 are reapplied iteratively until the model is complete
Scenario-based modeling
Writing use-cases
• Inception & elicitation provide the info needed to begin
• Requirements gathering mechanisms are used to
o Identify stakeholders
o Define the scope of the problem
o Specify overall operational goals
o Outline all known functional requirements
o Describe the objects that will be manipulated by the system
• Begin by listing functions / activities of a specific actor
• Primary scenarios don’t consider any alternative interactions
• Secondary scenarios answer these questions:
o Can the actor take some other action?
o What error conditions could occur?
o Might the actor encounter some other (external) behavior?
Developing an activity diagram
30
http://wikistudent.ws/Unisa
• Supplements the use case with a graphical representation of the
flow of interaction within a specific scenario (flow chart!)
• The activity diagram adds additional detail not directly
mentioned (but implied) by the use case
• Rounded rectangles – imply a specific function
• Arrows – represent flow through the system
• Decision diamonds – depict a branching decision
• Solid horizontal lines – indicate parallel activities
Swimlane diagrams
• A variation of the activity diagram
• Additional info: indicates which actor / class is responsible
for the action described by an activity rectangle
• Responsibilities are represented as parallel segments that
divide the diagram vertically
Flow-oriented modeling
• The DFD can be used to complement UML diagrams
• The DFD takes an input-process-output view of a system
• The DFD is presented in a hierarchical fashion, with the first
data flow model (level 0 DFD) representing the system as a whole
Creating a data flow model
• The DFD enables you to develop models of the information domain
and functional domain at the same time
• Performing a grammatical parse on the processing narrative can
generate useful info about how to proceed
• As the DFD is refined into greater levels of detail, the analyst
performs an implicit functional decomposition of the system
• Refine the DFDs until each bubble is ‘single-minded’
Creating a control flow model
• Needed (in addition to the DFD) for applications that:
o are driven by events rather than data
o produce control information rather than reports / displays
o process info with heavy concern for time & performance
• An event / control item is implemented as a Boolean value /
discrete list of conditions (empty/full)
The control specification (CSPEC)
• Represents the behavior of the system in 2 different ways:
• State diagram
o A sequential specification of behavior
• Program activation table
o A combinatorial specification of behavior
• The CSPEC describes behavior, but not the inner workings of the
processes that are activated as a result of this behavior
The process specification (PSPEC)
• Used to describe all flow model processes that appear at the
final level of refinement
• The content can include:
31
http://wikistudent.ws/Unisa
o Narrative text
o Program design language (PDL) description of the algorithm
o Mathematical equations, tables, diagrams, charts…
• By providing a PSPEC to accompany each bubble in the flow model,
you crate a ‘mini-spec’ that can serve as a guide for design of
the software component that will implement the process
Class-based modeling
Identifying analysis classes
• Examine the problem statement and perform a grammatical parse on
the use-cases or processing narratives developed for the system
• 6 selection characteristics when considering potential classes:
1. Retained information
o Must class info be remembered for the system to function?
2. Needed services
o Are there operations that can change the attribute values?
3. Multiple attributes
o A 1-attribute class should be an attribute of another class
4. Common attributes
o Can attributes be applied to all instances of the class?
5. Common operations
o Can operations be applied to all instances of the class?
6. Essential requirements
o External entities that produce / consume info essential to
the system’s operation will always be defined as classes
• A potential class should satisfy all the above characteristics
Specifying attributes
• Study a use-case and select ‘things’ that ‘belong’ to the class
• Ask: What data items define this class in the problem context?
Defining operations
1. Operations that manipulate data (E.g. add, delete, select…)
2. Operations that perform a computation
3. Operations that inquire about the object’s state
4. Operations that monitor an object for the occurrence of an event
• The grammatical parse is again studied and verbs are isolated
CRC modeling
Class: FloorPlan
(Description)
Responsibility: Collaborator:
Defines floor plan name/type
Incorporates walls, doors and windows Wall
Shows position of video cameras Camera
…
Classes
• Entity classes (model / business classes)
o Come directly from the problem statement (e.g. FloorPlan)
32
http://wikistudent.ws/Unisa
o Typically represent things to be stored in a database
o Persist throughout the duration of the application
• Boundary classes
o Used to create the interface (e.g. interactive screen)
o Manage the way entity objects are presented to the user
• Controller classes
o Manage a ‘unit of work’ from start to finish:
The creation / update of entity objects
The instantiation of boundary objects
Complex communication between sets of objects
Validation of data communicated between objects
o Generally not considered until design has begun
Responsibilities (attributes & operations)
• Guidelines for allocating responsibilities:
1. System intelligence should be distributed across classes
o If ‘dumb’ classes are servants to ‘smart’ classes
It concentrates all intelligence within a few classes,
making changes more difficult
It tends to require more classes, i.e. more effort
o If a class has a very long list of responsibilities, this
is an indication of a concentration of intelligence
o In addition, the responsibilities should exhibit the same
level of abstraction
2. Each responsibility should be stated as generally as possible
o So that they can apply to all subclasses
3. Information & related behavior should reside in the same class
o This achieves encapsulation – a cohesive unit
4. Information about one thing should be localized with a single
class, not distributed across multiple classes
5. Share responsibilities among related classes, when appropriate
o E.g. ‘arms’ and ‘legs’ collaborate with each other
Collaborators
• Collaborations identify relationships between classes
• First see whether a class can fulfill each responsibility itself
• There are three different generic relationships between classes:
o Is-part-of relationship
Classes that are part of an aggregate class
o Has-knowledge-of relationship
When one class must acquire info from another class
o Depends-upon relationship
Other dependencies, e.g. ‘head’ connected to ‘body’
• When a complete CRC model has been developed it can be reviewed:
1. All participants in the review are given a subset of the cards
2. All use-case scenarios should be organized into categories
3. The review leader reads the use-case deliberately. As he comes
to a named class, he passes a token to the person holding the
corresponding class index card.
33
http://wikistudent.ws/Unisa
4. When the token is passed, the holder of the class card must
describe the responsibilities noted on the card
5. If the responsibilities and collaborations cannot accommodate
the use-case, modifications are made to the cards
Associations and dependencies
• The difference between associations and dependencies:
• An association defines a relationship between classes
• A dependency relationship exists with clients & servers
• Dependencies are defined by a stereotype
• Stereotype = a UML extensibility mechanism that allows you to
define a special modeling element with custom-defined semantics
• In UML stereotypes are represented in <<double angle brackets>>
Analysis packages
• What is an analysis package and how might it be used?
o A package is used to assemble a collection of related
classes and other elements of the analysis model
34
http://wikistudent.ws/Unisa
o Guard = a Boolean condition that must be satisfied in order
for the transition to occur
o Action = something that occurs concurrently with the state
transition or as a consequence of it
2. Sequence diagrams
o Shows the behavior of the software as a function of time
o Shows how events cause transitions from object to object
o After developing a complete sequence diagram, all of the
events that cause transitions between system objects can be
collated into a set of input events and output events
• How a state diagram for analysis classes differs from the state
diagrams presented for the complete system:
o The state diagrams depicting the state behavior of a system
represent externally observable events and states.
o State diagrams for analysis classes are a component of the
behavioral model and represent the states associated with a
specific analysis class.
Design concepts
Abstraction
• At the highest level of abstraction, a solution is stated in
broad terms using the language of the problem environment
• At lower levels of abstraction more details are provided
36
http://wikistudent.ws/Unisa
• Procedural abstraction
o Instructions that have a specific and limited function
o E.g. ‘Open’ implies a long sequence of procedural steps
• Data abstraction
o A named collection of data that describes a data object
o E.g. ‘Door’ encompasses attributes like type, dimension…
Architecture
• Describe software architecture in your own words:
o The overall structure of the program components, how they
interact, and the structure of the data that they use.
Architecture is also about the ways in which that structure
provides conceptual integrity for a system.
• The architecture serves as a framework from which more detailed
design activities are conducted
• The architectural design can be represented using these models:
o Structural models
Represent architecture as a collection of components
o Framework models
Identify repeatable architectural design frameworks
that are encountered in similar types of applications
o Dynamic models
Address the behavioral aspects of the architecture,
indicating how events can change the structure
o Process models
Focus on the design of the business or technical
process that the system must accommodate
o Functional models
Represent the functional hierarchy of a system
Patterns
• Describe design structures that solve particular design problems
within specific contexts
• The intent of each design pattern is to provide a description
that enables a designer to determine
o Whether the pattern is applicable to the current work
o Whether the pattern can be reused
o Whether the pattern can serve as a guide for developing a
similar, but functionally or structurally different pattern
Modularity
• The effort to develop an individual software module does
decrease as the total number of modules increases
• However, as the number of modules grows, the effort associated
with integrating the modules also grows
• Reasons for modularizing a design:
o Development can be more easily planned
o Software increments can be defined & delivered
o Changes can be more easily accommodated
o Testing & debugging can be conducted more efficiently
o Long-term maintenance won’t have serious side effects
37
http://wikistudent.ws/Unisa
Information hiding
• Details of data structures… are hidden behind a module interface
• Modules communicate with each other only the info necessary to
achieve a software function
• Benefit: inadvertent errors introduced during modification are
less likely to propagate to other locations within the software
Functional independence
• Modules have few functions & interactions with other modules
• This makes them easier to maintain and test because error
propagation is reduced, and reuse is possible
• Independence is assessed using two qualitative criteria:
o Cohesion
Indication of a module’s relative functional strength
o Coupling
Indication of the interdependence among modules
Refinement
• You develop a hierarchy by decomposing macroscopic functions
until reaching programming language statements
• Refinement is actually a process of elaboration because you
provide more and more detail with each successive refinement
• Abstraction and refinement are complementary concepts:
o Abstraction enables a designer to specify procedure and
data and yet suppress low-level details
o Stepwise Refinement helps the designer to reveal low-level
details as design progresses
Refactoring
• Refactoring is a reorganization technique that simplifies the
design of a component without changing its function / behavior
• When software is refactored, the existing design is examined for
redundancy, unused design elements, inefficient algorithms, etc.
Design classes
• Analysis classes represent objects, while design classes present
more technical detail as a guide for implementation
• The design classes must
o Refine the analysis classes by providing design detail that
will enable the classes to be implemented
o Include new classes to implement a software infrastructure
• Five different types of design classes:
o User interface classes (E.g. elements of a metaphor)
o Business domain classes (refinements of analysis classes)
o Process classes (implement low-level business abstractions)
o Persistent classes (represent data stores)
o System classes (functions that enable the system to operate
& communicate within its computing environment & the world)
• Four characteristics of a well-formed design class:
o Complete and sufficient (encapsulate all methods necessary
and nothing more)
o Primitiveness (methods should accomplish one service)
38
http://wikistudent.ws/Unisa
o High cohesion
o Low coupling
40
http://wikistudent.ws/Unisa
o Address a specific element of the design
o E.g. an aggregation of components to solve a problem,
relationships among components, communication mechanisms…
• Idioms (coding patterns)
o Implement an algorithmic element of a component, a specific
interface protocol, or a communication mechanism
• Each of these pattern types differs in the
o Level of abstraction with which it is represented
o Degree to which it provides guidance for construction
Frameworks
• Definition: an implementation-specific skeletal infrastructure
• The skeleton has a collection of ‘plug points’ that enable it to
be adapted to a specific problem domain
• The plug points enable a designer to integrate problem specific
classes or functionality within the skeleton
• OO context: a framework is a collection of cooperating classes
• To be most effective, frameworks are applied with no changes
• Additional design elements may be added, but only via the plug
points that allow the designer to flesh out the skeleton
Chapter 10 – Creating an architectural design
Software architecture
What is architecture?
• Definition: The structure of the system, which comprises:
o Software components,
o the externally visible properties of those components
o and the relationships among them
• Architecture is a representation that lets a software engineer:
o Analyze the effectiveness of the design in meeting its
stated requirements
o Consider architectural alternatives at a stage when making
design changes is still relatively easy
o Reduce the risks associated with constructing software
• The definition emphasizes the role of ‘software components’ in
any architectural representation
• A software component can be a program module / OO class /
databases / middleware
• Architecture design considers two levels of the design pyramid:
o Data design
• Class definitions in OO systems
o Architectural design
• Focuses on the representation of the structure of
software components, their properties, & interactions
Why is architecture important?
1. Enables communication between all stakeholders
2. Highlights early design decisions that will have a profound
impact on all SE work that follows
41
http://wikistudent.ws/Unisa
3. Constitutes a relatively small, graspable model of how the
system is structured and how its components work together
Data design
• Data design translates data objects defined as part of the
analysis model into data structures at the software component
level and a database architecture at the application level
Data design at the architectural level
• Data mining techniques / KDB (knowledge discovery in databases)
navigate through existing databases to extract appropriate info
• Data mining is difficult in an existing database environment, so
a data warehouse adds an additional layer to the architecture
• Data warehouse = a separate data environment not directly
integrated with day-to-day applications that encompasses all
data used by a business
Data design at the component level
• Focuses on the representation of data structures that are
directly accessed by one or more software components
• Principles applicable to data design:
o The systematic analysis principles applied to function &
behavior should also be applied to data
o All data structures and the operations to be performed on
each should be identified
o Establish a mechanism for defining the content of each data
object and the data & operations applied to it
o Leave low-level data design decisions for later
o Only the modules that use the data directly should know the
representation of the data structure
o A library of useful data structures and the operations that
may be applied to them should be developed
o A software design and programming language should support
the specification and realization of abstract data types
42
http://wikistudent.ws/Unisa
o A pattern imposes a rule on the architecture, describing
how the software will handle an aspect of its functionality
o Architectural patterns tend to address specific behavioral
issues within the context of the architecture
Taxonomy of architectural styles
• Data-centered architecture
o A data store resides at the centre of this architecture and
is accessed frequently by other components that modify it
o Integrability: components can be changed & new ones added
to the architecture without concern about other clients
o Client components independently execute processes
• Data-flow architectures
o When input data are to be transformed into output data
o Pipe & filter structure: filters are connected by pipes
that transmit data from one component to the next
o If the data flow degenerates into a single line of
transforms, it is termed batch sequential
• Call and return architecture
o Program structure that is easy to modify & scale
Main program/subprogram architecture
• Control hierarchy: a main program invokes program
components, which in turn may invoke still others
Remote procedure call architecture
• The components of a main program / subprogram
architecture are distributed on a network
• OO architecture
o The components of a system encapsulate data and the
operations that must be applied to manipulate the data
o Message passing to accomplish communication & coordination
• Layered architecture
o Different layers, each accomplishing operations that
progressively become closer to the machine instruction set
Outer layer: components service UI operations
Intermediate layers: provide utility services and
application software functions
Inner layer: components perform OS interfacing
Architectural patterns
• Concurrency
o Many applications must handle multiple tasks in a manner
that simulates parallelism
o Ways to handle concurrency:
Use an OS process management pattern that provides
built-in OS features that allow concurrent execution
Define a task scheduler at the application level
• Persistence
o A DBMS pattern applies storage & retrieval capability
o An application level persistence pattern builds persistence
features into the application architecture
43
http://wikistudent.ws/Unisa
• Distribution
o Addresses the manner in which systems / components
communicate with one another in a distributed environment
o There are two elements to this problem:
The way in which entities connect to one another
The nature of the communication that occurs
o A common architectural pattern established to address the
distribution problem is the broker pattern (E.g. CORBA)
Organization and refinement
• Control
o How is control managed within the architecture?
o Does a distinct control hierarchy exist?
o What is the role of components within the control hierarchy?
o How do components transfer control within the system?
o How is control shared among components?
o What is the control topology?
o Is control synchronized / asynchronous?
• Data
o How are data communicated between components?
o Is the flow of data continuous/ sporadic?
o What is the mode of data transfer?
o Do data components exist and what is their role?
o How do functional components interact with data components?
o Are data components passive / active?
o How do data and control interact within the system?
44
http://wikistudent.ws/Unisa
• Validation = ensures that the software is traceable to customer
requirements (Are we building the right product?)
• V&V encompasses a wide array of SQA activities including: formal
technical reviews, performance monitoring, simulation,
feasibility study, documentation review, algorithm analysis,
development testing, usability testing, installation testing…
Organizing for software testing
• The developer must test the individual units of the program
• The developer also conducts integration testing
• An independent test group becomes involved only after the
software architecture is complete
• An ITG removes the conflict of interest that may be present
• The developer and ITG work closely throughout the project so
that the developer can correct errors that are uncovered
• The ITG is part of the software development project team in the
sense that it becomes involved during analysis & design and
stays involved throughout a large project
45
http://wikistudent.ws/Unisa
o Integration testing is complicated by the scheduled
availability of unit-tested modules (especially when such
modules fall behind schedule)
o For embedded systems, validation testing cannot be
adequately conducted outside of the target hardware
configuration, so validation & system testing are combined
Strategic issues
• Guidelines that lead to a successful testing strategy:
o Specify product requirements long before testing commences
o State testing objectives explicitly
o Understand the users and give a profile for each category
o A testing plan should emphasize ‘rapid cycle testing’
o Build ‘robust’ software that is designed to test itself
o Use formal technical reviews as a filter beforehand
o Conduct FTRs to assess the test strategy and test cases
o Develop a continuous improvement approach for testing
Integration testing
• Problems that can occur when you integrate modules together:
47
http://wikistudent.ws/Unisa
o Data can be lost across an interface
o One module can have adverse affects on others
o Individually acceptable imprecision may be magnified
• Integration testing uncovers errors associated with interfacing
• The program is constructed and tested in small increments, where
errors are easier to isolate and correct
1. Top-down integration
• Work from the main program down through the control hierarchy
• Modules subordinate to the main control module are incorporated
into the structure in either a depth-first or breadth-first way:
o Depth-first integration
Integrates all components on a major control path
A complete function may be implemented & demonstrated
o Breadth-first integration
Incorporates all components at the same level
• Steps for the integration process:
1) The main control module is used as a test driver, and stubs
are substituted for all components directly underneath
2) Stubs are replaced one at a time with actual components
3) Tests are conducted as each component is integrated
4) On completion of each set of tests, another stub is
replaced with the real component
5) Regression testing may be conducted to ensure that new
errors have not been introduced
• Verifies major control / decision points early in testing
• In a well-factored program structure, decision making occurs at
upper levels in the hierarchy and is therefore encountered first
• Problems encountered with top-down testing:
o When processing at low levels in the hierarchy is required
to adequately test upper levels, you have 3 choices:
Delay many tests until stubs are replaced with modules
• Difficult to determine the cause of errors
Develop stubs that simulate the actual module
• Can lead to overhead as stubs become more complex
Do a bottom-up integration
2. Bottom-up integration
• Begins with atomic modules at the lowest levels in the program
• No stubs because subordinate components are always available
• Implementation steps:
1) Low-level components are combined into clusters that
perform a specific software sub-function
2) A driver is written to coordinate test case input & output
3) The cluster is tested
4) Drivers are removed and clusters are combined moving upward
in the program structure
3. Regression testing
• When a new module is integrated, there are changes which may
cause problems with functions that previously worked
48
http://wikistudent.ws/Unisa
• Regression testing = the re-execution of some subset of tests
that have already been conducted to ensure that changes have not
propagated unintended side effects
• Regression testing may be conducted
o Manually
By re-executing a subset of all test cases
o Automatically
With capture/playback tools that let you capture test
cases & results for subsequent playback & comparison
• The regression test suite has 3 different classes of test cases:
o Tests that will exercise all software functions
o Additional tests that focus on software functions that are
likely to be affected by the change
o Tests that focus on the changed software components
• Because the number of regression tests can grow quite large,
they should only address a few errors in each major function
4. Smoke testing
• Designed as a pacing mechanism for time-critical projects,
allowing the team to assess its project on a frequent basis
• Encompasses these activities:
1) Software components that have been translated into code are
integrated into a ‘build’ (includes data files, libraries…)
2) A series of tests is designed to expose errors that will
keep the build from properly performing its function
3) The build is integrated with other builds and the entire
product is smoke tested daily
• Benefits:
o Integration risk is minimized
o The quality of the end-product is improved
o Error diagnosis and correction are simplified
o Progress is easier to assess
Strategic options
• Disadvantage of top-down approach: the need for stubs
• Disadvantage of bottom-up approach: the program as an entity
doesn’t exist until the last module is added
• Sandwich testing = a combined approach that uses top-down tests
for upper levels, and bottom-up tests for subordinate levels
• During integration testing, you should identify critical modules
• Characteristics of a critical module:
o Addresses several software requirements
o Has a high level of control (i.e. high in the structure)
o Is complex / error prone
o Has definite performance requirements
• Critical modules should be tested as early as possible
• Regression tests should focus on critical module functions
Integration test documentation
• An overall plan for software integration and a description of
specific tests are documented in a test specification
49
http://wikistudent.ws/Unisa
• This document contains a
o Test plan (with an integration strategy)
o Test procedure (with testing details)
• Testing is divided into phases and builds that address specific
functional and behavioral characteristics of the software
• Criteria applied for all test phases:
o Interface integrity
o Functional validity
o Information content
o Performance
• The history of actual test results, problems, or peculiarities
is recorded in a test report, added to the test specification
Validation testing
• The software requirements specification is a document that
describes all user-visible attributes of the software
• The specification contains a section called validation criteria
with info that forms the basis for a validation testing approach
Validation test criteria
• A test plan outlines the classes of tests to be conducted
50
http://wikistudent.ws/Unisa
• A test procedure defines specific test cases
• Both plan & procedure are designed to ensure that
o All functional requirements are satisfied
o All behavioral characteristics are achieved
o All performance requirements are attained
o Documentation is correct
o Usability and other requirements are met (compatibility…)
• After each validation test one of two possible conditions exist:
o The function / performance characteristic is accepted
o A deviation from specification is uncovered and a
deficiency list is created
Configuration review (audit)
• Purpose: ensures that all elements of the software configuration
o Have been properly developed
o Are cataloged
o Have the necessary detail to bolster the support phase
Alpha and beta testing
• Alpha testing
o Conducted at the developer’s site by end-users
o The software is used in a natural setting and the developer
looks over the shoulder of users and records problems
o Conducted in a controlled environment
• Beta testing
o Conducted at end-user sites
o The developer is generally not present
o The test is a ‘live’ application of the software in an
environment that can’t be controlled by the developer
o The end-user records all problems and reports them
System testing
• System testing = a series of different tests that verify element
integration and functionality
Recovery testing
• Recovery testing forces the software to fail in a variety of
ways and verifies that recovery is properly performed
• Automatic recovery: evaluate re-initialization, checkpointing
mechanisms, data recovery, and restart for correctness
• Manual recovery: evaluate mean-time-to-repair (MTTR)
Security testing
• Verifies the protection mechanisms built into the system
• The tester plays the role of the hacker / spy
Stress testing
• Executes a system with abnormal quantity, frequency, or volume
51
http://wikistudent.ws/Unisa
• Sensitivity testing: Sometimes a very small range of data may
cause extreme processing / performance degradation
• Sensitivity testing uncovers data combinations with valid input
classes that may cause instability / improper processing
Performance testing
• Tests the run-time performance
• Occurs throughout all steps in the testing process, but shows
true system performance only when all elements are integrated
• Often coupled with stress testing and usually requires both
hardware & software instrumentation (i.e. measuring resource
utilization, like processor cycles)
• External instrumentation can monitor execution intervals, log
events, and sample machine states on a regular basis
• By instrumenting a system, the tester can uncover situations
that lead to degradation and possible system failure
53
http://wikistudent.ws/Unisa
o Well organized, specific & accurate technical documentation
Test characteristics:
• A good test has a high probability of finding an error
o Understand the software and picture how it might fail
• A good test is not redundant
o Every test should have a different purpose
• A good test should be ‘best of breed’
o If you only have time to use a subset of tests, the test
that has the highest likelihood of uncovering a whole class
of errors should be used
• A good test should be neither too simple nor too complex
o Although it is sometimes possible to combine a series of
tests into one test case, rather execute them separately
Black-box testing
• Tests that are conducted at the software interface
• You know the function that the product must perform
54
http://wikistudent.ws/Unisa
o The quality and aesthetic nature of content remains NB
• Continuous evolution
o WebApps evolve continuously, unlike conventional software
• Immediacy
o Time schedules for WebApps are more compressed
• Security
o It is difficult to limit the users who access the WebApp
• Aesthetics
o Part of the appeal of a WebApp is its look and feel
55
http://wikistudent.ws/Unisa
• Design methods
o Address WebApp content, architecture, interface design, and
navigation structure
• Testing methods
o Incorporate formal technical reviews of content & design
model and a wide array of testing techniques that address
component-level and architectural issues, etc…
Tools and technology
• Technologies encompass: HTML, VRML, XML, Java, CORBA, browsers,
multimedia tools, site authoring tools, security tools…
57