Unit 2 - SPM (Half)
Unit 2 - SPM (Half)
1
Fig: The waterfall model
(b) Spiral Model:
2
In the waterfall model, it is possible to escape at the end of any activity in the
sequence.
A feasibility study might decide that the implementation of a proposed
system would be beneficial.
The management therefore authorizes work on the detailed analysis of user
requirements.
Some analysis, might already have taken place at the feasibility stage, but a
more thorough investigation is now launched.
This could reveal that the costs of implementing the system would be higher
than projected benefits and lead to a decision to abandon the project.
A greater level of detail is considered at each stage of the project and a
greater degree of confidence about the probability of success for the project
should be justified.
This can be portrayed as a loop or a spiral where the system to be
implemented is considered in more detail in each sweep.
Each sweep terminates with an evaluation before the next iteration is
embarked upon.
The figure below illustrates how SSADM can be interpreted in such a way.
A key point here is that uncertainty about a project is usually because of a
lack of knowledge about some aspect.
We can spend money on activities at the start of the project that buy
knowledge and reduce that uncertainty.
(c) Software Prototyping:
This is one way, we can buy knowledge and reduce uncertainty.
A prototype is a working model of one or more aspects of the projected
system.
It is constructed and tested quickly and inexpensively in order to test out
assumptions.
Prototypes can be classified as throw-away or evolutionary.
Throw-Away Prototypes:
Tests out some ideas.
Developed using a different software or hardware environment.
Procedural programming language is used.
Evolutionary Prototypes:
Developed and modified until it becomes the operational system.
Standards that are used to develop the software.
Some of the reasons that have been put forward for prototyping follow:
Learning by doing
Improved communication
Improved user involvement
Clarification of partially known requirements
Demonstration of the consistency and completeness of a specification
Reduced need for documentation
Reduced maintenance costs
Feature constraint
Production of expected results
Users can misunderstand the role of the prototype
Lack of project standards possible
3
Lack of control
Additional expense
Machine efficiency
Close proximity of developers
(d) Incremental Delivery:
This approach breaks the application down into small components which are
then implemented and delivered in sequence.
Each component delivered must give some benefit to the user.
Time-boxing is often associated with an incremental approach.
Here the scope of deliverables for an increment is rigidly constrained by an
agreed deadline.
This deadline has to be met, even at the expense of dropping some of the
planned functionality.
Omitted features can be transferred to later increments.
5
Each incremental part is developed over an iteration.
Each iteration is intended to be small and easily manageable, and lasts for a couple
of weeks only.
Agile model adopts an iterative approach.
At a time, only one increment is planned, developed, and deployed.
No long-term plans are made.
Time taken to complete an iteration is called a time box.
The implication of the term ‘time box’ is that the end date for an iteration does not
change.
The development team can decide to reduce the delivered functionality during time
box, but the delivery date is considered sacrosanct.
Besides that, a few other principles discussed below:
Agile model emphasizes face-to-face communication over written documents.
Team size is kept small (5-9 people) to help the team members effectively
communicate with each other and collaborate.
Agile model well-suited for small projects as well as for large projects also.
In large project, the collaborating teams might work at different locations.
In this case, the different teams maintain daily contact through video
conferencing, telephone, e-mail, etc.
An agile project usually includes a customer representative in the teams.
At the end of each iteration, the customer representative along with the
stakeholders review the progress made, re-evaluate the requirements, and give
suitable feedback to the development team.
Agile development projects usually deploy pair programming.
Two programmers work together at one work station.
One types the code while the other reviews the code as it is typed.
The two programmers switch their roles every hour or so.
Programmers working in pairs produce compact well-written programs and
commit fewer errors as compared to programmers working alone.
DYNAMIC SYSTEMS DEVELOPMENT METHOD:
In United Kingdom, SSADM (Structured Systems Analysis and Design Method) has
until recently been a predominant methodology.
In no small part, this has been because of sponsorship by the UK government.
More recently, it has lost some favour, partly because it has been perceived as
overly bureaucratic and prescriptive.
In contrast, there has been an increased interest in the iterative and incremental
approaches.
A consortium has developed guidelines for the use of such techniques and
packaged the overall approach as the Dynamic Systems Development Method
(DSDM).
This has been re-badged as Atern.
It is possible to attend courses on the method and to become an accredited Atern
practitioner.
Eight core Atern principles have been enunciated:
1. Focus on business need
2. Deliver on time
3. Collaborate
4. Never compromise quality
6
5. Develop iteratively
6. Build incrementally from firm foundations
7. Communicate continuously
8. Demonstrate control
The main life-cycle phases are:
Feasibility/foundation
Exploration cycle
Engineering cycle
Deployment
7
Four core values are presented as the foundations of XP.
1. Communication and Feedback:
It is argued that the best method of communication is face-to-face
communication.
Also, the best way of communicating to the users the nature of the
software under production is to provide them with frequent working
increments. Formal documentation is avoided.
2. Simplicity:
The simplest design that implements the users’ requirements should
always be adopted.
Effort should not be spent trying to cater for future possible needs –
which in any case might never actually materialize.
3. Responsibility:
The developers are the ones who are ultimately responsible for the quality
of the software - not/ for example, some system testing or quality control
group.
4. Courage:
This is the courage to throw away work in which you have already
invested a lot of effort, and to start with a fresh design if that is what is
called for.
It is also the courage to try out new ideas - after all, if they do not work
out, they can always be scrapped.
Beck argues that this attitude is more likely to lead to better solutions.
Among the core practices of XP are the following:
The planning exercise
Metaphor
Simple design
Testing
Refactoring
Pair programming
Collective ownership
Continuous integration
Forty-hour weeks
On-site customers
Coding standards
Advantages:
Robustness
Resilience
Cost savings
Lesser risks
Disadvantages:
It assumes constant involvement of customers.
Centered approach rather than design-centered approach.
Lack of proper documentation.
MANAGING ITERATIVE PROCESSES:
Booch suggests that there are two levels of development: the macro process and the
micro process.
8
Fig: A macro process containing three micro processes
Macro process is closely related to the waterfall process model.
At this level, a range of activities carried out by a variety of specialist groups has to
be coordinated.
We need to have some dates when we know that major activities will be finished so
that we bring in staff to work on subsequent activities.
Within this macro process there will be micro process activities which might involve
iterative working.
A system testing has always been one.
The figure below illustrates how a sequential macro process can be imposed on a
number of iterative sub-processes.
With iterative micro processes, the use of time-boxes is needed to control at the
macro level.