Agile Software Development and Maintenance - hepguru

lumpysteerSoftware and s/w Development

Dec 2, 2013 (3 years and 6 months ago)

49 views

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


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
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)


Shortest possible iterations


Test
-
First Testing


Acceptance Tests


Rational Unified Process (RUP)


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


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 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?