Se Imp Topic It Comm
Se Imp Topic It Comm
Identification
This phase starts with gathering the business requirements in the baseline
spiral. In the subsequent spirals as the product matures, identification of
system requirements, subsystem requirements and unit requirements are
all done in this phase.
Design
The Design phase starts with the conceptual design in the baseline spiral
and involves architectural design, logical design of modules, physical
product design and the final design in the subsequent spirals.
Construct or Build
The Construct phase refers to production of the actual software product at
every spiral. In the baseline spiral, when the product is just thought of and
the design is being developed a POC (Proof of Concept) is developed in this
phase to get customer feedback.
• New product line which should be released in phases to get enough customer
feedback.
• Significant changes are expected in the product during the development cycle.
• Development can be divided into smaller parts and the risky parts can be
developed earlier which helps in better risk management.
• Not suitable for small or low risk projects and could be expensive for small
projects.
• Process is complex
V-Model - Design
Under the V-Model, the corresponding testing phase of the development
phase is planned in parallel. So, there are Verification phases on one side of
the ‘V’ and Validation phases on the other side. The Coding Phase joins the
two sides of the V-Model.
The following illustration depicts the different phases in a V-Model of the
SDLC.
System Design
Once you have the clear and detailed product requirements, it is time to
design the complete system. The system design will have the understanding
and detailing the complete hardware and communication setup for the
product under development. The system test plan is developed based on
the system design. Doing this at an earlier stage leaves more time for the
actual test execution later.
Architectural Design
Architectural specifications are understood and designed in this phase.
Usually more than one technical approach is proposed and based on the
technical and financial feasibility the final decision is taken. The system
design is broken down further into modules taking up different functionality.
This is also referred to as High Level Design (HLD).
The data transfer and communication between the internal modules and
with the outside world (other systems) is clearly understood and defined in
this stage. With this information, integration tests can be designed and
documented during this stage.
Module Design
In this phase, the detailed internal design for all the system modules is
specified, referred to as Low Level Design (LLD). It is important that the
design is compatible with the other modules in the system architecture and
the other external systems. The unit tests are an essential part of any
development process and helps eliminate the maximum faults and errors at
a very early stage. These unit tests can be designed at this stage based on
the internal module designs.
Coding Phase
The actual coding of the system modules designed in the design phase is
taken up in the Coding phase. The best suitable programming language is
decided based on the system and architectural requirements.
The coding is performed based on the coding guidelines and standards. The
code goes through numerous code reviews and is optimized for best
performance before the final build is checked into the repository.
Validation Phases
The different Validation Phases in a V-Model are explained in detail below.
Unit Testing
Unit tests designed in the module design phase are executed on the code
during this validation phase. Unit testing is the testing at code level and
helps eliminate bugs at an early stage, though all defects cannot be
uncovered by unit testing.
Integration Testing
Integration testing is associated with the architectural design phase.
Integration tests are performed to test the coexistence and communication
of the internal modules within the system.
System Testing
System testing is directly associated with the system design phase. System
tests check the entire system functionality and the communication of the
system under development with external systems. Most of the software and
hardware compatibility issues can be uncovered during this system test
execution.
Acceptance Testing
Acceptance testing is associated with the business requirement analysis
phase and involves testing the product in user environment. Acceptance
tests uncover the compatibility issues with the other systems available in
the user environment. It also discovers the non-functional issues such as
load and performance defects in the actual user environment.
• Easy to manage due to the rigidity of the model. Each phase has specific
deliverables and a review process.
• Not suitable for the projects where requirements are at a moderate to high risk
of changing.
• Planning
• Requirements Analysis
• Design
• Coding
• Acceptance Testing.
At the end of the iteration, a working product is displayed to the customer
and important stakeholders.
What is Agile?
Agile model believes that every project needs to be handled differently and
the existing methods need to be tailored to best suit the project
requirements. In Agile, the tasks are divided to time boxes (small time
frames) to deliver specific features for a release.
The Agile thought process had started early in the software development
and started becoming popular with time due to its flexibility and
adaptability.
The most popular Agile methods include Rational Unified Process (1994),
Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive
Software Development, Feature Driven Development, and Dynamic Systems
Development Method (DSDM) (1995). These are now collectively referred to
as Agile Methodologies, after the Agile Manifesto was published in 2001.
• Easy to manage.
• An overall plan, an agile leader and agile PM practice is a must without which it
will not work.
• Planning
• Requirements Analysis
• Design
• Coding
• Acceptance Testing.
What is Agile?
Agile model believes that every project needs to be handled differently and
the existing methods need to be tailored to best suit the project
requirements. In Agile, the tasks are divided to time boxes (small time
frames) to deliver specific features for a release.
The Agile thought process had started early in the software development
and started becoming popular with time due to its flexibility and
adaptability.
The most popular Agile methods include Rational Unified Process (1994),
Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive
Software Development, Feature Driven Development, and Dynamic Systems
Development Method (DSDM) (1995). These are now collectively referred to
as Agile Methodologies, after the Agile Manifesto was published in 2001.
• Easy to manage.
• An overall plan, an agile leader and agile PM practice is a must without which it
will not work.
Eliciting requirements
The process of gathering requirements by communicat ing wit h the custo mers is
known as elicit ing requirements.
Analyzing requirements
This step helps to determine the qualit y of the requirement s. It involves ident ifying
whether the requirements are unclear, incomplete, ambiguous, and contradictory.
These issues resolved befo re moving to the next step.
Requirements modeling
In Requirements modeling, the requirements are usually documented in different
formats such as use cases, user stories, natural-language documents, or process
specificat ion.
Gantt Charts
Gant charts used in project planning as they provide a visual repres entation of tasks
that are scheduled along wit h the timelines. The Gant charts help to know what is
scheduled to be completed by which date. The start and end dates of all the tasks in
the project can be seen in a single view.
Gap Analysis
Gap analysis is a technique which helps to analyze the gaps in performance of a
software applicat ion to determine whether the business requirements are met or not.
It also involves the steps that are to be taken to ensure t hat all t he business
requirements are met successfully. Gap denotes the difference between the present
state and the target state. Gap analysis is also known as need analysis, need
assessment or need-gap analysis.
Analysis Principles
Over the past two decades, a large number of analysis modeling methods have been developed. Investigators have identified
analysis problems and their causes and have developed a variety of notations and corresponding sets of heuristics to overcome
them. Each analysis method has a unique point of view.
Prototyping is a process that enables developer to create a small model of software. The IEEE 610.12
standard defines prototype as a preliminary form or instance of a system that serves as a model for later
stages for the final complete version of the system. A prototype may be categorised as follows:
1. A paper prototype, which is a model depicting human machine interaction in a form that makes the
user understand how such interaction, will occur.
2. A working prototype implementing a subset of complete features.
3. An existing program that performs all of the desired functions but additional features are added for
improvement.
Prototype is developed so that customers, users and developers can learn more about the problem.
Thus, prototype serves as a mechanism for identifying software requirements. It allows the user to
explore or criticise the proposed system before developing a full scale system.
2.4.1 Types of Prototype Broadly, the prototypes are developed using the following two techniques:
Throw away prototype: In this technique, the prototype is discarded once its purpose is fulfilled and the
final system is built from scratch. The prototype is built quickly to enable the user to rapidly interact
with a working system. As the prototype has to be ultimately discarded, the attention on its speed,
implementation aspects, maintainability and fault tolerance is not paid. In requirements defining phase,
a less refined set of requirements are hurriedly defined and throw away prototype is constructed to
determine the feasibility of requirement, validate the utility of function, uncover missing requirements,
and establish utility of user interface. The duration of prototype building should be as less as possible
because its advantage exists only if results from its use are available in timely fashion.
Evolutionary Prototype: In this, the prototype is constructed to learn about the software problems and
their solutions in successive steps. The prototype is initially developed to satisfy few requirements.
Then, gradually, the requirements are added in the same prototype leading to the better understanding
of software system. The prototype once developed is used again and again. This process is repeated till
all requirements are embedded in this and the complete system is evolved.
According to SOMM [96] the benefits of developing prototype are listed below:
4. A small working system is quickly built to demonstrate the feasibility and usefulness of the application
to management.
2.DFD Diagram
3.Rad Symbols and diagram
5.Gantt Chart
6.IDEF Diagram
7.Gap Analysis