The document discusses topics related to rapid software development and evolution, including agile methods, extreme programming, rapid application development, and software prototyping. It provides details on characteristics of rapid application development processes like concurrent specification, design, and implementation. Iterative development approaches are covered along with advantages and challenges. Specific agile methods like extreme programming, with practices like test-driven development and pair programming, are also summarized.
3. Rapid software developmentp p
• Because of rapidly changing business environments• Because of rapidly changing business environments,
businesses have to respond to new Opportunities and
C i iCompetition.
• Businesses may be willing to accept lower quality
software if rapid delivery of essential functionality is
possible.p
4. RequirementsRequirements
• Because of the changing environment, it is often
impossible to arrive at a stable, consistent set of
system requirements.
• Therefore a waterfallwaterfall modelmodel of development is
impracticalimpractical and an approach to development based onimpracticalimpractical and an approach to development based on
iterative specification and delivery is the only way
fto deliver software quickly.
5. Characteristics of RAD processesCharacteristics of RAD processes
• The processes of specification, design and
implementation are concurrentconcurrent. There is no detailed
specification and design documentation is minimized.
• The system is developed in a seriesseries ofof incrementsincrements. End
users evaluate each increment and make proposals forusers evaluate each increment and make proposals for
later increments.
• System user interfaces are usually developed using an
interactiveinteractive developmentdevelopment systemsystem..
6. An iterative development processAn iterative development process
Define system
deliverables
ValidateBuild systemSpecify systemDesign system
de e ab es
Validate
increment
Build system
increment
Specify system
increment
Design system
architecture
NO
System
complete?
Integrate
increment
Validate
system
Deliver final
system
NO
YES
7. Advantages of incremental developmentg p
• Accelerated delivery of customer services. Each
increment delivers the highest priority functionality to the
customer.
• User engagement with the system. Users have to be
involved in the development which means the system isinvolved in the development which means the system is
more likely to meet their requirements and the users are
more committed to the systemmore committed to the system.
8. Problems with incremental developmentp
• Management problems
– Progress can be hard to judge and problems hard to find
because there is no documentation to demonstrate what hasbecause there is no documentation to demonstrate what has
been done.
• Contractual problems
The normal contract may include a specification; without a– The normal contract may include a specification; without a
specification, different forms of contract have to be used.
• Validation problems
– Without a specification, what is the system being tested ?
• Maintenance problems
– Continual change tends to corrupt software structure making it
more expensive to change and evolve to meet new
requirements.
9. Agile methodsAgile methodsAgile methodsAgile methods
• Dissatisfaction with the overheads involved in design methods led to
the creation of agile methods These methods:the creation of agile methods. These methods:
– Focus on the code rather than the design;
A b d it ti h t ft d l t– Are based on an iterative approach to software development;
– Are intended to deliver working software quickly and evolve this
i kl t t h i i tquickly to meet changing requirements.
• Agile methods are probably best suited to small/medium-sized
b i tbusiness systems.
10. Principles of agile methodsPrinciples of agile methods
Principle Description
C t i l t Th t h ld b l l i l d th h t thCustomer involvement The customer should be closely involved throughout the
development process. Their role is provide and prioritise new
system requirements and to evaluate the iterations of the system.
Incremental delivery The software is developed in increments with the customery p
specifying the requirements to be included in each increment.
People not process The skills of the development team should be recognised and
exploited. The team should be left to develop their own ways of
working without prescriptive processesworking without prescriptive processes.
Embrace change Expect the system requirements to change and design the system
so that it can accommodate these changes.
Maintain simplicity Focus on simplicity in both the software being developed and inMaintain simplicity Focus on simplicity in both the software being developed and in
the development process used. Wherever possible, actively work
to eliminate complexity from the system.
11. Problems with agile methodsProblems with agile methods
• Team membersmembers may be unsuitedunsuited to the intense involvement that
characterizes agile methods.
•• PrioritizingPrioritizing changeschanges can be difficult where there are multiplemultiple
k h ldk h ldstakeholdersstakeholders..
• Maintaining simplicity requires extra work.
• Contracts may be a problem as with other approaches to iterative
development.
12. Extreme programmingExtreme programming
• Perhaps the best-known and most widely used agile method.
• Extreme Programming (XP) takes an ‘extreme’ approach to iterative
development.
– New versions may be built several times per day;
– Increments are delivered to customers every 2 weeks;
– All tests must be run for every build and the build is only
accepted if tests run successfully.
14. Extreme programming practices 1p g g p
Incremental planning Requirements are recorded on Story Cards and the Stories to be
included in a release are determined by the time available andy
their relative priority. The developers break these Stories into
development ‘Tasks’.
Small Releases The minimal useful set of functionality that provides business
value is developed first Releases of the system are frequent andvalue is developed first. Releases of the system are frequent and
incrementally add functionality to the first release.
Simple Design Enough design is carried out to meet the current requirements
and no more.
Test first development An automated unit test framework is used to write tests for a new
piece of functionality before that functionality itself is
implemented.
Refactoring All developers are expected to refactor the code continuously asRefactoring All developers are expected to refactor the code continuously as
soon as possible code improvements are found. This keeps the
code simple and maintainable.
15. Extreme programming practices 2p g g p
Pair Programming Developers work in pairs, checking each otherÕs work and
providing the support to always do a good job.
Collective Ownership The pairs of developers work on all areas of the system, so that
no islands of expertise develop and all the developers own all the
code. Anyone can change anything.
Continuous Integration As soon as work on a task is complete it is integrated into theContinuous Integration As soon as work on a task is complete it is integrated into the
whole system. After any such integration, all the unit tests in the
system must pass.
Sustainable pace Large amounts of over-time are not considered acceptable as the
net effect is often to reduce code quality and medium termnet effect is often to reduce code quality and medium term
productivity
On-site Customer A representative of the end-user of the system (the Customer)
should be available full time for the use of the XP team. In an
extreme programming process the customer is a member of theextreme programming process, the customer is a member of the
development team and is responsible for bringing system
requirements to the team for implementation.
16. Requirements scenariosRequirements scenarios
• In XP, user requirements are expressed as scenariosscenarios or useruser
storiesstories..
• These are written on cardscards and the development team break them
d i i l i k Th k h b i fdown into implementation tasks. These tasks are the basis of
schedule and cost estimates.
Th t h th t i f i l i i th t l• The customer chooses the stories for inclusion in the next release
based on their priorities and the schedule estimates.
17. Story card for document downloadingStory card for document downloading
Downloading and printing an article
First, you select the article that you want from a displayed list. You
then have to tell the system how you will pay for it - this can either
be through a subscription, through a company account or by credit
cardcard.
After this, you get a copyright form from the system to fill in and,
when you have submitted this, the article you want is downloadedy , y
onto your computer.
You then choose a printer and a copy of the article is printed. You
tell the system if printing has been successfultell the system if printing has been successful.
If the article is a print-only article, you can’t keep the PDF version
so it is automatically deleted from your computer .y y p
18. Testing in XPTesting in XP
• Test-first development.
• Incremental test development from scenarios.
• User involvement in test development and validation• User involvement in test development and validation.
• Automated test harnesses are used to run all component
tests each time that a new release is built.
20. Test case descriptionTest case description
Test 4: Test cr edit card validityTest 4: Test cr edit card validity
Input:
Astring representing the credit card number and two integers representing
the month and year when the card expires
T tTests:
Check that all bytes in the string are digits
Check that the month lies between 1 and 12 and the
year is greater than or equal to the current year .
Using the first 4 digits of the credit card number ,g g ,
check that the card issuer is valid by looking up the
card issuer table. Check credit card validity by submitting the card
number and expiry date information to the card
issuer
Output:Output:
OK or error message indicating that the card is invalid
21. Test-first developmentTest first development
• Writing tests before code clarifies the requirements to be
implemented.
• Tests are written as programs rather than data so that they can be
d i ll Th i l d h k h i hexecuted automatically. The test includes a check that it has
executed correctly.
All i d t t t ti ll h• All previous and new tests are automatically run when new
functionality is added. Thus checking that the new functionality
has not introduced errorshas not introduced errors.
22. Pair programmingPair programming
• In XP, programmers work in pairs, sitting together to develop code.
• This helps develop common ownership of code and spreads
knowledge across the team.
It i f l i h li f d i• It serves as an informal review process as each line of code is
looked at by more than 1 person.
• It encourages refactoring as the whole team can benefit from this• It encourages refactoring as the whole team can benefit from this.
• Measurements suggest that development productivity with pair
programming is similar to that of two people working independentlyprogramming is similar to that of two people working independently.
23. Rapid application developmentRapid application development
• Agile methods have received a lot of attention but other• Agile methods have received a lot of attention but other
approaches to rapid application development have been
d fused for many years.
• These are designed to develop data-intensive business
applications and rely on programming and presenting
information from a database.
24. RAD environment toolsRAD environment tools
• Database programming languageDatabase programming language
• Interface generator
• Links to office applicationsLinks to office applications
• Report generators
26. Interface generationInterface generation
• Many applications are based around complex forms andy pp p
developing these forms manually is a time-consuming
activity.
RAD i t i l d t f ti• RAD environments include support for screen generation
including:
– Interactive form definition using drag and drop techniques;
– Form linking where the sequence of forms to be presented is
specified;
– Form verification where allowed ranges in form fields is defined.g
27. Visual programmingVisual programming
• Scripting languages such as Visual Basic support visual
programming where the prototype is developed by
creating a user interface from standard items and
associating components with these items
• A large library of components exists to support this type
of development
• These may be tailored to suit the specific applicationThese may be tailored to suit the specific application
requirements
29. COTS reuseCOTS reuse
• An effective approach to rapid development is to
configure and link existing off the shelf systems.
• For example, a requirements management system couldp , q g y
be built by using:
– A database to store requirements;– A database to store requirements;
– A word processor to capture requirements and format
treports;
– A spreadsheet for traceability management;
30. Compound documentsCompound documents
• For some applications, a prototype can be created by
developing a compound documentdeveloping a compound document.
• This is a document with active elements (such as a
spreadsheet) that allow user computations.
• Each active element has an associated application which
is invoked when that element is selected.
• The document itself is the integrator for the different• The document itself is the integrator for the different
applications.
32. Software prototypingSoftware prototyping
• A prototype is an initial version of a system used to
demonstrate concepts and try out design options.
• A prototype can be used in:
– The requirements engineering process to help with
requirements elicitation and validation;requirements elicitation and validation;
– In design processes to explore options and develop a
UI design;UI design;
– In the testing process to run back-to-back tests.
33. Benefits of prototypingBenefits of prototyping
• Improved system usability• Improved system usability.
• A closer match to users’ real needs.
• Improved design quality.
• Improved maintainability.Improved maintainability.
• Reduced development effort.
36. Throw-away prototypesThrow away prototypes
• Prototypes should be discarded after development as
they are not a good basis for a production system:
– It may be impossible to tune the system to meet non-
functional requirements;
Prototypes are normally undocumented;– Prototypes are normally undocumented;
– The prototype structure is usually degraded through
rapid change;
– The prototype probably will not meet normal
organisational quality standards.
38. Topics coveredTopics covered
• Program evolution dynamics
• Software maintenance
E l ti• Evolution processes
L t l ti• Legacy system evolution
39. Software changeSoftware change
• Software change is inevitableg
– New requirements emerge when the software is used;
– The business environment changes;
Errors must be repaired;– Errors must be repaired;
– New computers and equipment is added to the system;
– The performance or reliability of the system may have to be
i dimproved.
• A key problem for organisations is implementing and
managing change to their existing software systems.g g g g y
40. Importance of evolutionImportance of evolution
• Organisations have huge investments in their software• Organisations have huge investments in their software
systems - they are critical business assets.
• To maintain the value of these assets to the business,
they must be changed and updated.
• The majority of the software budget in large companies
is devoted to evolving existing software rather thanis devoted to evolving existing software rather than
developing new software.
42. Program evolution dynamics
• Program evolution dynamics is the study of the
Program evolution dynamics
• Program evolution dynamics is the study of the
processes of system change.
• After major empirical studies, Lehman and Belady
proposed that there were a number of ‘laws’ which
applied to all systems as they evolved.
43. Lehman’s lawsLehman s laws
Law Description
Continuing change A program that is used in a real-world environment necessarily
must change or become progressively less useful in that
environment.
Increasing complexity As an evolving program changes, its structure tends to become
more complex. Extra resources must be devoted to preserving
d i lif i th t tand simplifying the structure.
Large program evolution Program evolution is a self-regulating process. System
attributes such as size, time between releases and the number of
reported errors is approximately invariant for each system
release.
Organisational stability Over a programÕs lifetime, its rate of development is
approximately constant and independent of the resources
devoted to system development.
Conservation of
familiarity
Over the lifetime of a system, the incremental change in each
release is approximately constant.
Continuing growth The functionality offered by systems has to continually increase
to maintain user satisfaction.
Declining quality The quality of systems will appear to be declining unless they
are adapted to changes in their operational environment.
Feedback system Evolution processes incorporate multi agent multi loopFeedback system Evolution processes incorporate multi-agent, multi-loop
feedback systems and you have to treat them as feedback
systems to achieve significant product improvement.
44. Software maintenance
• Modifying a program after it has been put into use
Software maintenance
Modifying a program after it has been put into use.
• Changes are implemented by modifying existing components and
adding new components to the systemadding new components to the system.
45. Maintenance is inevitable
• The system requirements are likely to change
while the system is being developed because
Maintenance is inevitable
while the system is being developed because
the environment is changing.
• Systems MUST be maintained therefore if they• Systems MUST be maintained therefore if they
are to remain useful in an environment.
46. Types of maintenance
• Maintenance to repair softwaresoftware faultsfaults
Ch i t t tt d fi i id fi i i i th t it
Types of maintenance
– Changing a system to correctcorrect deficienciesdeficiencies in the way meets its
requirements.
M i t t d t ft t diff t titi i ti t• Maintenance to adapt software to a different operatingoperating environmentenvironment
– Changing a system so that it operates in a different environment
( t OS t ) f it i iti l i l t ti(computer, OS, etc.) from its initial implementation.
• Maintenance to add to or modify the system’s functionality
– Modifying the system to satisfy new requirements.
47. Distribution of maintenance effort
Fault repair
(17%)
Functionality
addition or
Software
addition or
modification
(65%)
Software
adaptation
(18%)
48. Maintenance costs
• Usually greater than development costs
Maintenance costs
• Affected by both technicaltechnical and nonnon--technicaltechnical
factorsfactors..
• Ageing software can have high support costs
(e.g. old languages, compilers etc.).
50. Maintenance cost factors
• Team stability
– Maintenance costs are reduced if the same staff are involved with
Maintenance cost factors
– Maintenance costs are reduced if the same staff are involved with
them for some time.
• Contractual responsibilityp y
– The developers of a system may have no contractual responsibility for
maintenance so there is no incentive to design for future change.
• Staff skills
– Maintenance staff are often inexperienced and have limited domain
knowledge.
• Program age and structure
– As programs age, their structure is degraded and they become harder
to understand and change.
51. Maintenance predictionMaintenance prediction
• Maintenance prediction is concerned with assessing which parts of
the system maymay causecause problemsproblems and have high maintenance costs
52. Maintenance predictiona te a ce p ed ct o
What parts of the system
will be the most expensive
to maintain?What parts of the system are
Predicting
maintainability
to maintain?What parts of the system are
most likely to be affected by
change requests?
y
What will be the lifetime
maintenance costs of this
Predicting system
changes
Predicting
maintenance
costs
maintenance costs of this
system?
What will be the costs of
maintaining this system
over the next year?
How many change
requests can be
expected?
53. Process metricsProcess metrics
• Process measurements may be used to assess maintainabilityProcess measurements may be used to assess maintainability
– Number of requests for corrective maintenance;
Average time required for impact analysis;– Average time required for impact analysis;
– Average time taken to implement a change request;
N b f t t di h t– Number of outstanding change requests.
• If any or all of these is increasing, this may indicate a decline in
i t i bilitmaintainability.
54. Evolution processesEvolution processes
• Evolution processes depend onEvolution processes depend on
– The type of software being maintained;
The development processes used;– The development processes used;
– The skills and experience of the people involved.
P l f h th d i f t l ti Ch• Proposals for change are the driver for system evolution. Change
identification and evolution continue throughout the system lifetime.
55. The system evolution processThe system evolution process
Release
planning
Change
implementa tion
System
release
Impact
analysis
Change
requests
Platform
adaptation
System
enhancement
Fault repair
57. Urgent change requestsUrgent change requests
• Urgent changes may have to be implemented without going through
all stages of the software engineering processall stages of the software engineering process
– If a serious system fault has to be repaired;
If h t th t ’ i t ( OS d )– If changes to the system’s environment (e.g. an OS upgrade)
have unexpected effects;
If th b i h th t i id– If there are business changes that require a very rapid response
(e.g. the release of a competing product).
59. System Re-engineeringSystem Re engineering
• Re-structuring or re-writing part or all of aRe structuring or re writing part or all of a
legacy system without changing its
functionality.y
60. Advantages of reengineeringAdvantages of reengineering
• Reduced risk• Reduced risk
– There is a high risk in new software development.
There may be development problems, staffing
problems and specification problems.
• Reduced cost
The cost of re engineering is often significantly less– The cost of re-engineering is often significantly less
than the costs of developing new software.
61. Reengineering process activitiesReengineering process activities
• Source code translation
C t d t l– Convert code to a new language.
• Reverse engineering
– Analyse the program to understand it;
• Program structure improvement
– Restructure automatically for understandability;
• Program modularisation
– Reorganise the program structure;
• Data reengineering
– Clean-up and restructure system data.
63. Legacy system evolutionLegacy system evolution
• Organisations that rely on legacy systems must choose a strategy
for evolving these systemsfor evolving these systems
– Scrap the system completely and modify business processes so
that it is no longer required;that it is no longer required;
– Continue maintaining the system;
T f th t b i i t i it– Transform the system by re-engineering to improve its
maintainability;
R l th t ith t– Replace the system with a new system.
• The strategy chosen should depend on the system quality and its
b i lbusiness value.
64. Legacy system categoriesLegacy system categories
• Low quality, low business value
– These systems should be scrapped– These systems should be scrapped.
• Low-quality, high-business value
These make an important business contribution but are– These make an important business contribution but are
expensive to maintain. Should be re-engineered or replaced if a
suitable system is availablesuitable system is available.
• High-quality, low-business value
Replace with COTS scrap completely or maintain– Replace with COTS, scrap completely or maintain.
• High-quality, high business value
C ti i ti i l t i t– Continue in operation using normal system maintenance.
66. Business value assessmentBusiness value assessment
• Assessment should take different viewpoints into accountAssessment should take different viewpoints into account
– System end-users;
Business customers;– Business customers;
– Line managers;
IT– IT managers;
– Senior managers.
• Interview different stakeholders and collate results.
67. System quality assessmentSystem quality assessment
• Business process assessmentBusiness process assessment
– How well does the business process support the current goals of
the business?the business?
• Environment assessment
How effective is the system’s environment and how expensive is– How effective is the system s environment and how expensive is
it to maintain?
• Application assessment• Application assessment
– What is the quality of the application software system?
68. Business process assessmentBusiness process assessment
• Use a viewpoint-oriented approach and seek answers from system
stakeholdersstakeholders
– Is there a defined process model and is it followed?
– Do different parts of the organisation use different processes for thep g p
same function?
– How has the process been adapted?
– What are the relationships with other business processes and are these
necessary?
– Is the process effectively supported by the legacy application software?
• Example - a travel ordering system may have a low business value because
f th id d f b b d d iof the widespread use of web-based ordering.
69. Environment assessment 1Environment assessment 1
Factor QuestionsFactor Questions
Supplier
stability
Is the supplier is still in existence? Is the supplier financially
stable and likely to continue in existence? If the supplier is
no longer in business, does someone else maintain theg
systems?
Failure rate Does the hardware have a high rate of reported failures?
Does the support software crash and force system restarts?
Age How old is the hardware and software? The older the
hardware and support software, the more obsolete it will be.
It may still function correctly but there could be significant
economic and business benefits to moving to more modern
systems.
Performance Is the performance of the system adequate? Do performance
problems have a significant effect on system users?
70. Environment assessment 2Environment assessment 2
Support
requirements
What local support is required by the hardware and
software? If there are high costs associated with this support,
it may be worth considering system replacement.
Maintenance
costs
What are the costs of hardware maintenance and suppo rt
software licences? Older hardware may have higher
maintenance costs than modern systems Support softwaremaintenance costs than modern systems. Support software
may have high annual licensing costs.
Interoperability Are there problems interfacing the system to other systems?
Can compilers etc. be used with current versions of theCan compilers etc. be used with current versions of the
operating system? Is hardware emulation required?
71. Application assessment 1Application assessment 1
Factor Questions
Understandability How difficult is it to understand the source code of the
current system? How complex are the control structures
that are used? Do variables have meaningful names thatthat are used? Do variables have meaningful names that
reflect their function?
Documentation What system documentation is available? Is the
documentation complete, consistent and up-to-date?
Data Is there an explicit data model for the system? To what
extent is data duplicated in different files? Is the data used
by the system up-to-date and consistent?
Performance Is the performance of the application adequate? DoPerformance Is the performance of the application adequate? Do
performance problems have a significant effect on system
users?
72. Application assessment 2Application assessment 2
Programming
language
Are modern compilers available for the programming
language used to develop the system? Is the programming
language still used for new system development?
C fi ti A ll i f ll t f th t d bConfiguration
management
Are all versions of all parts of the system managed by a
configuration management system? Is there an explicit
description of the versions of components that are used in
the current system?
Test data Does test data for the system exist? Is there a record of
regression tests carried out when new features have been
added to the system?
P l kill A h l il bl h h h kill i iPersonnel skills Are there people available who have the skills to maintain
the application? Are there only a limited number of people
who understand the system?
73. Chapter Review Questionsp Q
1. Explain Step involved for Rapid Application Development
( )(RAD)in detail.
2. Explain extreme programming process in detail with example.
3. Discuss agile method of software development in detail.
4. Define prototyping? Explain with example.
5. Discuss Lehman’s laws of software evolution.
6. Explain evolution process with illustration.
7. Discuss different types of software maintenance.
8. Explain the Re-engineering process in detail.