Monday, November 25, 2013

Software Development Life Cycle

The software life cycle typically includes the following: requirements analysis, design, coding, testing, installation and maintenance. In between, there can be a requirement to provide Operations and support activities for the product.

Requirements Analysis. Software organizations provide solutions to customer requirements by developing appropriate software that best suits their specifications. Thus, the life of software starts with origin of requirements. Very often, these requirements are vague, emergent and always subject to change.
Analysis is performed to - To conduct in depth analysis of the proposed project, To evaluate for technical feasibility, To discover how to partition the system, To identify which areas of the requirements need to be elaborated from the customer, To identify the impact of changes to the requirements, To identify which requirements should be allocated to which components.

Design and Specifications. The outcome of requirements analysis is the requirements specification. Using this, the overall design for the intended software is developed.
Activities in this phase - Perform Architectural Design for the software, Design Database (If applicable), Design User Interfaces, Select or Develop Algorithms (If Applicable), Perform Detailed Design.

Coding. The development process tends to run iteratively through these phases rather than linearly; several models (spiral, waterfall etc.) have been proposed to describe this process.

Activities in this phase - Create Test Data, Create Source, Generate Object Code, Create Operating Documentation, Plan Integration, Perform Integration

Testing. The process of using the developed system with the intent to find errors. Defects/flaws/bugs found at this stage will be sent back to the developer for a fix and have to be re-tested. This phase is iterative as long as the bugs are fixed to meet the requirements.
Activities in this phase - Plan Verification and Validation, Execute Verification and validation Tasks, Collect and Analyze Metric Data, Plan Testing, Develop Test Requirements, Execute Tests

Installation. The so developed and tested software will finally need to be installed at the client place. Careful planning has to be done to avoid problems to the user after installation is done.
Activities in this phase - Plan Installation, Distribution of Software, Installation of Software, Accept Software in Operational Environment.

Operation and Support. Support activities are usually performed by the organization that developed the software. Both the parties usually decide on these activities before the system is developed.
Activities in this phase - Operate the System, Provide Technical Assistance and Consulting, Maintain Support Request Log.

Maintenance. The process does not stop once it is completely implemented and installed at user place; this phase undertakes development of new features, enhancements etc.
Activities in this phase - Reapplying Software Life Cycle.


Various Life Cycle Models
The way you approach a particular application for testing greatly depends on the life cycle model it follows.This is because, each life cycle model places emphasis on different aspects of the software i.e. certain models provide good scope and time for testing whereas some others don’t. So, the number of test cases developed, features covered, time spent on each issue depends on the life cycle model the application follows.

No matter what the life cycle model is, every application undergoes the same phases described above as its life cycle.

Following are a few software life cycle models, their advantages and disadvantages.

Waterfall Model
Prototyping Model
Spiral Model
Prototyping Model
Spiral Model
Strengths:
•Emphasizes completion of
one phase before moving
on
•Emphasizes early
planning, customer input,
and design
•Emphasizes testing as an
integral part of the life
cycle
•Provides quality gates at
each life cycle phase
Weakness:
•Depends on capturing
and freezing requirements
early in the life cycle
•Depends on separating
requirements from design
• Feedback is only from
testing phase to any
previous stage
•Not feasible in some
organizations
• Emphasizes products
rather than processes
Strengths:
•Requirements can be
set earlier and more
reliably
•Requirements can be
communicated more
clearly and completely
between developers and
clients
•Requirements and
design options can be
investigated quickly and
with low cost
•More requirements and
design faults are caught
early
Weakness:
•Requires a prototyping
tool and expertise in
using it – a cost for the
development
organization
•The prototype may
become the production
system
Strengths:
• It promotes reuse of existing software
in early stages of development.
• Allows quality objectives to be
formulated during development.
• Provides preparation for eventual
evolution of the software product.
• Eliminates errors and unattractive
alternatives early.
• It balances resource expenditure.
• Doesn’t involve separate approaches
for software development and software
maintenance.
• Provides a viable framework for
integrated Hardware-software system
development.
Weakness:
• This process needs or usually
associated with Rapid Application
Development, which is very difficult
practically.
• The process is more difficult to
manage and needs a very different
approach as opposed to the waterfall
model (Waterfall model has
management techniques like GANTT
charts to assess)

No comments:

Post a Comment