Rapid Software Development: Dr. Vu Thi Huong Giang
Rapid Software Development: Dr. Vu Thi Huong Giang
@2012-2013
Plan
Build
Deliver
Covered topics
Agile method
Extreme programming
Rapid application development
Rapid prototyping
I. AGILE METHOD
1. Concept
2. Principles
3. Problems
1. Concept
Agility is the ability to create and respond to change
in order to profit in a turbulent business environment.
Agile methods are created to cope with the overheads
involved in design methods. These methods:
Focus on the code rather than the design
Are based on an iterative approach to software
development (incremental development)
Are intended to deliver working software quickly and evolve
this quickly to meet changing requirements (incremental
delivery)
Description
Customer
involvement
Incremental
delivery
Embrace change
Maintain simplicity
I. EXTREME
PROGRAMMING (XP)
Perhaps the best-known and most widely used agile
method
1. Idea of XP
2. The XP release cycle
3. XP and agile principles
4. Problem with XP
Evaluate system
Release software
Plan release
Develop / integrate
/ test software
Incremental planning
Small Releases
Simple Design
Evaluate system
Release software
Plan release
Develop / integrate
/ test software
Refactoring
Pair Programming
Collective Ownership
Evaluate system
Release software
Plan release
Develop / integrate
/ test software
Continuous Integration
Sustainable pace
On-site Customer
Description in XP
Customer
involvement
Incremental
delivery
Transfer
Deposit
Withdraw
Transfer
Deposit
Withdraw
3.2. Testing in XP
Test-first development
Incremental test development from scenarios
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
Test-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
executed automatically The
test includes a check that
it has executed correctly
All previous and new tests
are automatically run when
new functionality is added
Thus checking that the
new functionality has not
introduced errors
Transfer
Deposit
Withdraw
3.3. Refactoring
XP proposes refactoring to make changes easier when
they have to be implemented.
Refactoring is the process of constant code
improvement where code is reorganized and rewritten
to make it more efficient, easier to understand, etc
Refactoring is required because frequent releases
mean that code is developed incrementally and
therefore tends to become messy
Refactoring should not change the functionality of the
system
Automated testing simplifies refactoring as you can
see if the changed code still runs the tests
successfully
4. Problems with XP
Customer involvement
Architectural design
Test complacency
It is easy for a team to believe that because it has many tests, the
system is properly tested
Because of the automated testing approach, there is a tendency to
develop tests that are easy to automate rather than tests that are
good tests
1. Concept
2. Characteristics of RAD processes
3. RAD environment tools
1. Concept
Agile methods have received a lot of attention
but other approaches to rapid application
development have been used for many years
These are designed to develop data-intensive
business applications and rely on programming
and presenting information from a database
A RAD environment
Links to office applications such as a
spreadsheet for the analysis and manipulation
of numeric information or a word processor
for report template creation
Interface
generator
Office
systems
DB
programming
language
Report
generator
Database managemensystem
Interface generation
Many applications are based around complex
forms and developing these forms manually is a
time-consuming activity
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
1.1. Prototype
A prototype is an initial version of a software system that is
used to demonstrate concepts, try out design options and,
generally, to find out more about the problem and its
possible solutions
A prototype is used:
In the requirements engineering process: help customers and
developers understand the requirements for the system
Establish
prototype
objectives
Define
prototype
functionality
Develop
prototype
Evaluate
prototype
Prototyping
plan
Outline
definition
Executable
prototype
Evaluation
report
Evolutionary
prototyping
Delivered
system
Throw-away
Prototyping
Executable Prototype +
System Specification
Outline
Requirements
Develop abstract
specification
Build prototype
system
N
Deliver
system
YES
System
adequate?
Use prototype
system
Problems:
Management problems
Maintenance problems
Contractual problems
Develop
prototype
Evaluate
prototype
Specify
system
Reusable
components
Develop
software
Validate
system
Delivered
software
system
Language
Smalltalk
Java
Prolog
Lisp
Type
Object-oriented
Object-oriented
Logic
List-based
Application domain
Interactive systems
Interactive systems
Symbolic processing
Symbolic processing
Reusable
software
components
Component
composition
framework
Control and
integration code
Executable
prototype
a. Compound documents
For some applications, a prototype can be
created by developing 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 applications
Table 1
Table 2
Word processor
Text 2
Text 4
Text 3
Sound 2
Spreadsheet
Sound 1
Text 5
Audio player
b. Visual 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
application requirements
Date component
File
Edit
Views
Layout
Options
Help
General
Index
3.876
User prompt
component +
script
Draw canvas
component
Tree display
component
Conclusion
Key points
Extreme programming includes practices such as
systematic testing, continuous improvement and
customer involvement
Customers are involved in developing
requirements which are expressed as simple
scenarios
The approach to testing in XP is a particular
strength where executable tests are developed
before the code is written
Key problems with XP include difficulties of
getting representative customers and problems of
architectural design
Key points
A prototype can be used to give end-users a
concrete impression of the systems capabilities
Prototyping is becoming increasingly used for
system development where rapid development is
essential
Throw-away prototyping is used to understand
the system requirements
In evolutionary prototyping, the system is
developed by evolving an initial version to the
final version
Key points
Rapid development of prototypes is essential. This
may require leaving out functionality or relaxing
non-functional constraints
Prototyping techniques include the use of very
high-level languages, database programming and
prototype construction from reusable components
Prototyping is essential for parts of the system
such as the user interface which cannot be
effectively pre-specified. Users must be involved in
prototype evaluation