Agile Software Development and Maintenance

Download Report

Transcript Agile Software Development and Maintenance

Team 7
Maintenance
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

The Nature of Maintenance (Con’t)

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
Why include it?

80% of the 100 billion lines of code in
production in the world is unstructured, patched,
badly documented

Lost pet fees cost Toronto $700,000
http://catless.ncl.ac.uk/Risks/21.24.html#subj2.1
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

Tasks








Analysis/isolation tasks
Change design
Code/unit test
Testing- integration, acceptance and regression
Documentation
Reuse and Reusability
Program Understanding
Management and Organizational Issues
Tools/Products

Selection criterias









Capability
Features
Cost/benefit
Platform
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)




Rational Unified Process (RUP)



Shortest possible iterations
Test-First Testing
Acceptance Tests
Document User Requirements
Update user requirements throughout the process
Scrum


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
requirements
Small iterations, small fixes
Agile Software Development and Maintenance



Industry and technology move extremely fast
Requirements change at rates that swamp traditional
methods
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 Manifesto





Individuals and interactions over valued over processes and
tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Goals


Primary goal – deliver working software
Secondary goal – set up other work products for the next game
(e.g. maintenance)
Agile Software Development and
Maintenance

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
Dvelopment

construction of software systems that makes use of reusable
components.

develop software systems by selecting appropriate off-the shelf
components and then assemble them with a well-defined
software architecture.

Components and Glue codes



Components
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
Tailoring:
Fault identification and isolation
Updating component configuration
Monitoring and auditing system behavior
Component testing
Advantages and Disadvantages of
CBSD

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
maintenance
Akin to incremental development


Are now a nearly infinite number of increments
Users are co-developers
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
project


Not just developer
Companies such as Red Hat, Mandrake SuSE
offer maintenance for Linux
Summary




Estimated at 50% of software life cycle
Number of models exist
Method used to develop the software will affect
maintenance
Questions?