Chapter 2 - SEAM Models
Chapter 2 - SEAM Models
APRIL 2024
Maintenance AASTU
Chapter 2
• maintenance
• Shorter time frame: A maintenance activity may span from a few hours to a few months, whereas software
development may span one or more years.
• Available test data: In software development, test cases are designed from scratch, whereas software
maintenance can select a subset of these test cases and execute them as regression tests.
1. Reuse
2. Staged
• Therefore, the new system is likely to reuse many components of the old system.
• Based on this concept, three process models for maintenance have been proposed
by Basili:
• Quick fix model: In this model, necessary changes are quickly made to the code and then to
the accompanying documentation.
• Iterative enhancement model: In this model, first changes are made to the highest level
documents. Eventually, changes are propagated down to the code level.
• Full reuse model: In this model, a new system is built from components of the old system
and others available in the repository.
Cont…
• In Quick Fix Model, as illustrated in Figure below.
• source code is modified to fix the problem;
• Often changes to the source code are made with no prior investigation such as analysis
of impact of the changes, ripple effects of the changes, and regression testing.
• Their model divides the lifespan of a typical system into four stages:
• Initial development – The first delivered version is produced. Knowledge about the
system is fresh and constantly changing. In fact, change is the rule rather than the
exception. Eventually, an architecture emerge and stabilizes.
• Evolution – Simple changes are easily performed and more major changes are possible
too, albeit the cost and risk are now greater than in the previous stage. Knowledge
about the system is still good, although many of the original developers will have
moved on. For many systems, most of its lifespan is spent in this phase.
2. The Staged Model for CSS
• Servicing – The system is no longer a key asset for the developers, who
concentrate mainly on maintenance tasks rather than architectural or
functional change. Knowledge about the system has lessened and the effects
of change have become harder to predict. The costs and risks of change have
increased significantly.
• Phase out – It has been decided to replace or eliminate the system entirely,
either because the costs of maintaining the old system have become
prohibitive or because there is a newer solution waiting in the pipeline. An
exit strategy is devised and implemented, often involving techniques such as
wrapping and data migration. Ultimately, the system is shut down.
Cont…
Figure: The simple staged model for the CSS life cycle ©IEEE, 2000
Cont…
• The evolution process is the backbone of the model.
Figure: The versioned staged model for the CSS life cycle ©IEEE, 2000
The Staged Model for FLOSS
• Three major differences are identified between CSS systems and FLOSS systems.
• In Figure below, the rectangle with the label “Initial development” has been
visually highlighted because it can be the only initial development stage in the
evolution of FLOSS systems. In other words, it does not have any evolution
track for FLOSS system.
• With some systems that were analyzed, after a transition from Evolution to
Servicing, a new period of evolution was observed. This possibility is depicted in
Figure as a broken arc from the Servicing stage to the Evolution stage.
• A request for change to the software is normally made by the users of the
software system or the customers, and it starts the maintenance process.
• The request for change (CR) is submitted in the form of a modification request
(MR) for a correction or for an enhancement. MR & CR are used
interchangeably.
• Activities included in this phase are as follows:
• reject or accept the MR,
• identify and estimate the resources needed to change the system; and
• put the MR in a batch of changes scheduled for implementation.
Cont…
• The process is viewed to have
two major components:
• feasibility analysis.
• detailed analysis.
• In this phase tests are performed on the full system to ensure that the
modified system complies with the original requirements as well as the new
modifications.
• System-level testing comprises a broad spectrum of testing activities:
functionality testing, robustness testing, stability testing, load testing,
performance testing, security testing, and regression testing.
Cont…