Agile Software Development and Maintenance - hepguru

lumpysteerSoftware and s/w Development

Dec 2, 2013 (4 years and 7 months ago)


Team 7


Deborah Yoon

Kagan Erdil

Emily Finn

Jay Meattle

Sunyoung Park

Kevin Keating

Wednesday, December 3

The Nature of Maintenance

Maintenance + Evolution

Corrective: Correct faults and errors

Adaptive: Adapt to changes in environment


business rule, gov’t policies. ex) bank and ECU

Perfective: Accommodate new user requirements


successful product results in more changes


example: adding online HELP command

Preventive: Increase maintainability


example: code restructuring, documentation updating

Maintenance is expensive (money, time)

$ 70 billion for 10 billion lines of code spent annually in US

Comprises half time of the total life cycle of software

: 49% for pharmaceutical, 75% for automobile companies

50% is spent on Perfective maintenance

Maintenance is product + service

Consumers judge the quality of the software maintenance in
service aspect

The Nature of Maintenance (Con’t)

Why include it?

80% of the 100 billion lines of code in production
in the world is unstructured, patched, badly

Lost pet fees cost Toronto $700,000

Maintenance Process Models

Quick fix model

Boehm’s model

Osborne’s model

Iterative Enhancement model

Reuse oriented model

Reverse Engineering

Reverse Engineering

Recover lost information

Facilitate migration between platforms

Improve/provide documentation

Prove alternative views

Extract reusable components

Cope complexity


Analysis/isolation tasks

Change design

Code/unit test


integration, acceptance and regression


Reuse and Reusability

Program Understanding

Management and Organizational Issues


Selection criterias





Programming language

Ease of use

Openness of architecture

Stability of vendor

Organizational culture

Iterative Development

Small iterations for each change made

Conduct meetings throughout the iterations

In maintenance, a new iteration for each new
feature or fixed bug

Types of Iterative Development

Extreme Programming (XP)

Shortest possible iterations

First Testing

Acceptance Tests

Rational Unified Process (RUP)

Document User Requirements

Update user requirements throughout the process


Daily meetings

Four phases: Planning, Architecture, Sprints, Closure

Maintenance and Iterative Dev

Don’t change the whole system at once

Minimize downtime

Ensure final product adheres to user

Small iterations, small fixes

Industry and technology move extremely fast

Requirements change at rates that swamp traditional

Customers have become increasingly unable to
definitively state their needs upfront while expected
more from their software

The Agile method is an alternative to documentation
driven, heavyweight software development processes.

Agile Software Development and Maintenance

Agile Software Development and Maintenance

Agile Manifesto

Individuals and interactions

over valued over processes and

Working software

over comprehensive documentation

Customer collaboration

over contract negotiation

Responding to change

over following a plan


Primary goal

deliver working software

Secondary goal

set up other work products for the next game
(e.g. maintenance)

Agile Software Development and

Since this method considers setting up tools such as
comprehensive documentation a secondary objective,
subsequent stages in the software’s life cycle such as
maintenance are harder to implement.

However, the best way to go about the actual
maintenance stage is probably the Agile method
because of its very nature stemming from its primary
focus on delivering working software.

Component Based Software

construction of software systems that makes use of reusable

develop software systems by selecting appropriate off
the shelf
components and then assemble them with a well
software architecture.

Components and Glue codes


Glue codes

Real World Applications

Enterprise JavaBean, COM , CORBA, etc.

Maintenance in CBSD

Role of Maintainers of CBSD is different from that in
other custom
built systems.

Maintenance Activities for CBSD

Glueing and wrapping


Fault identification and isolation

Updating component configuration

Monitoring and auditing system behavior

Component testing

Advantages and Disadvantages of

Components can be reused

they are written only once, and then assembled with their
ability to be reused.

Components do not rely on the surrounding system, and the
surroundings of a component have no need to know exactly
how it performs.

Increased cost efficiency and productivity

Making use of the components is complex

For the developer or maintainer there will be the requirement
to keep, a catalogue of the different components and have a
good understanding of the different interfaces and the way
they work in order to understand the system.

Open source

Blurring the Line

Software is available before version 1.0

Blurs the line between development and

Akin to incremental development

Are now a nearly infinite number of increments

Users are co

Linus’s Law

“Given enough eyeballs, all bugs are shallow”

“Debugging is parallelizable”

“The total cost of maintaining a widely used
program is typically 40% or more of the cost of
developing it. Surprisingly this cost is strongly
affected by the number of users.
More users find
more bugs


Frederick P. Brooks,
Mythical Man Month

Third Party Maintenance

Because source is open, anyone can maintain a

Not just developer

Companies such as Red Hat, Mandrake SuSE
offer maintenance for Linux


Estimated at 50% of software life cycle

Number of models exist

Method used to develop the software will affect