to develop, maintain, replace and alter or enhance specific software.
To
foster realistic expectations of what the
systems will and will not provide.
Ensure Provide To
the delivery of high quality systems.
strong management control.
reduce the risks of project failure.
Maximize
productivity.
Purpose of the software or system is
determined.
Involves breaking down the system for
analysis of the situation and project goals.
It is performed by the senior members of
the team with inputs from the customer, the sales department, market surveys and domain experts in the industry.
Planning for the quality assurance
requirements .
Identification of the risks associated with
the project.
Basic project approach is planned.
Product feasibility study in the economical,
operational, and technical areas are done.
The customer requirements identified
during the requirements gathering and analysis activity are organized into a SRS document.
Important components of this document are
functional requirements, the nonfunctional requirements, and the goals of implementation
Based on the requirements specified in SRS
design approach for the product architecture is proposed and documented in a DDS .
Design approach defines all the architectural
modules of the product communication and data flow representation.
The internal design of all the modules of the
proposed architecture should be clearly defined with the minutest of the details in DDS.
Modular and subsystem programming code
will be accomplished during this stage. Developers have to follow the coding guidelines defined by their organization. The programming language is chosen with respect to the type of software being developed. If the design is performed in a detailed and organized manner, code generation can be accomplished without much hassle.
Products
defects are reported, tracked, fixed
and retested, until the product reaches the quality standards defined in the SRS. Most common testing are unit, system and user acceptance. Types of testing are: # White box testing # Black box testing # Regression testing
# Performance testing # Data set testing # Integration testing
Once the system is
tested it is ready to go live. Sometime product deployment happens in stages as per the organizations business strategy. The product may first be released in a limited segment and tested in the real business environment (UAT- User acceptance testing).
Waterfall
Iterative
Agile
RAD
Earliest SDLC approach used for software
development.
Any phase in the development process
begins only if the previous phase is complete.
Also referred to as a linear-sequential life
cycle model.
Easy to understand and use
Provides structure to inexperienced staf Milestones are well understood Sets requirements stability Good for management control (plan, staf, track) Works well when quality is more important than cost or schedule
All requirements must be known upfront
Deliverables created for each phase are
considered frozen
Cannot adopt the changes in requirements
For bigger and complex projects, this
model is not good as risk factor is higher.
Can give a false impression of progress
Requirements are stable and well
understood
The tools and technology used is stable
and is not dynamic
There are no ambiguous requirements
Ample resources with required expertise
are available to support the product
Agile software development is a conceptual
framework for software engineering that promotes development iterations throughout the life-cycle of the project. AGILE promotescontinuous iterationof development and testing throughout the software development life cycle of the project. Both development and testing activities are concurrent
Adaptive Software Development (ASD)
Feature Driven Development (FDD) Crystal Clear Dynamic Software Development Method (DSDM) Rapid Application Development (RAD) Scrum Extreme Programming (XP) Rational Unify Process (RUP)
Customer satisfaction by rapid, continuous
delivery of useful software. People and interactions are emphasized rather than process and tools. Customers, developers and testers constantly interact with each other. Working software is delivered frequently (weeks rather than months). Close, daily cooperation between business people and developers. Continuous attention to technical excellence and good design. Regular adaptation to changing circumstances. Even late changes in requirements are welcomed
In case of some software deliverables, especially
the large ones, it is difficult to assess the efort required at the beginning of thesoftware development life cycle. Lack of emphasis on necessary designing and documentation. Project can easily get taken of track if the customer representative is not clear what final outcome that they want. Only senior programmers are capable of taking the kind of decisions required during the development process. No place for newbie programmers, unless combined with experienced resources.
The main advantage of backward scalability
in Agile is not possible with waterfall.
Under waterfall approach we cannot change
the decisions and implementations that we had made under the previous stages.
If we want to make changes under waterfall
we will have to build the entire project from the scratch once again.
Flexibility to error check under any part of the
development stage makes Agile more bug free and lesserroneousas compared to Waterfall which can only test bugs at the end of the development module. Since Agile providesflexibilityto make changes as per customer requirements it is more inclined towards better client satisfaction. Real set back for the Waterfall model whichdoesntallow any modifications once the module has been completed.
Under Agile development modular
partitioning of the software can be efectively carried out as compared to waterfall. Agile can be of great help under situations where simultaneous development of diferent modules at the same time as per time bound is required. If we want the project to be more segregated Agile comes as a pain relief for developers