Unit 1 Notes
Unit 1 Notes
A quality Focus:
Process:
Methods:
Tools:
Components of Software:
2. Documentation:
Source information about the product contained in design documents,
detailed code comments, etc.
3. Operating Procedures:
Set of step-by-step instructions compiled by an organization to help
workers carry out complex routine operations.
1. A workflow Model:
It is the sequential series of tasks and decisions that make up a business
process.
2. The Waterfall Model:
It is a sequential design process in which progress is seen as flowing
steadily downwards. Phases in waterfall model:
(i) Requirements Specification
(ii) Software Design
(iii) Implementation
(iv) Testing
3. Dataflow Model:
It is diagrammatic representation of the flow and exchange of information
within a system.
4. Evolutionary Development Model:
Following activities are considered in this method:
(i) Specification
(ii) Development
(iii) Validation
Classical waterfall model is the basic software development life cycle model.
It is very simple but idealistic. Earlier this model was very popular but
nowadays it is not used. But it is very important because all the other software
development life cycle models are based on the classical waterfall model.
Classical waterfall model divides the life cycle into a set of phases. This model
considers that one phase can be started after completion of the previous phase.
That is the output of one phase will be the input to the next phase. Thus the
development process can be considered as a sequential flow in the waterfall.
Here the phases do not overlap with each other. The different sequential phases
of the classical waterfall model are shown in the below figure:
Let us now learn about each of these phases in brief details:
1. Feasibility Study: The main goal of this phase is to determine whether it
would be financially and technically feasible to develop the software.
The feasibility study involves understanding the problem and then determine
the various possible strategies to solve the problem. These different
identified solutions are analyzed based on their benefits and drawbacks, The
best solution is chosen and all the other phases are carried out as per this
solution strategy.
2. Requirements analysis and specification: The aim of the requirement
analysis and specification phase is to understand the exact requirements of
the customer and document them properly. This phase consists of two
different activities.
Requirement gathering and analysis: Firstly all the requirements
regarding the software are gathered from the customer and then the
gathered requirements are analyzed. The goal of the analysis part is to
remove incompleteness (an incomplete requirement is one in which some
parts of the actual requirements have been omitted) and inconsistencies
(inconsistent requirement is one in which some part of the requirement
contradicts with some other part).
Requirement specification: These analyzed requirements are
documented in a software requirement specification (SRS) document.
SRS document serves as a contract between development team and
customers. Any future dispute between the customers and the developers
can be settled by examining the SRS document.
3. Design: The aim of the design phase is to transform the requirements
specified in the SRS document into a structure that is suitable for
implementation in some programming language.
4. Coding and Unit testing: In coding phase software design is translated into
source code using any suitable programming language. Thus each designed
module is coded. The aim of the unit testing phase is to check whether each
module is working properly or not.
5. Integration and System testing: Integration of different modules are
undertaken soon after they have been coded and unit tested. Integration of
various modules is carried out incrementally over a number of steps.
During each integration step, previously planned modules are added to the
partially integrated system and the resultant system is tested. Finally, after
all the modules have been successfully integrated and tested, the full
working system is obtained and system testing is carried out on this.
System testing consists three different kinds of testing activities as
described below :
1.
Alpha testing: Alpha testing is the system testing performed by the
development team.
Beta testing: Beta testing is the system testing performed by a friendly
set of customers.
Acceptance testing: After the software has been delivered, the customer
performed the acceptance testing to determine whether to accept the
delivered software or to reject it.
Once the core features are fully developed, then these are refined to increase
levels of capabilities by adding new functions in Successive versions. Each
incremental version is usually developed using an iterative waterfall model of
development.
As each successive version of the software is constructed and delivered, now
the feedback of the Customer is to be taken and these were then incorporated
in the next version. Each version of the software have more additional features
over the previous ones.
After Requirements gathering and specification, requirements are then spitted
into several different versions starting with version-1, in each successive
increment, next version is constructed and then deployed at the customer site.
After the last version (version n), it is now deployed at the client site.
Types of Incremental model –
1. Staged Delivery Model – Construction of only one part of the project at a
time.
2. Parallel Development Model – Different subsystems are developed at the
same time. It can decrease the calendar time needed for the development,
i.e. TTM (Time to Market), if enough Resources are available.
The use of powerful developer tools such as JAVA, C++, Visual BASIC,
XML, etc. is also an integral part of the projects.
This model consists of 4 basic phases:
1. Requirements Planning –
It involves the use of various techniques used in requirements elicitation
like brainstorming, task analysis, form analysis, user scenarios, FAST
(Facilitated Application Development Technique), etc. It also consists of
the entire structured plan describing the critical data, methods to obtain it
and then processing it to form final refined model.
2. User Description –
This phase consists of taking user feedback and building the prototype
using developer tools. In other words, it includes re-examination and
validation of the data collected in the first phase. The dataset attributes are
also identified and elucidated in this phase.
3. Construction –
In this phase, refinement of the prototype and delivery takes place. It
includes the actual use of powerful automated tools to transform process
and data models into the final working product. All the required
modifications and enhancements are too done in this phase.
4. Cutover –
All the interfaces between the independent modules developed by separate
teams have to be tested properly. The use of powerfully automated tools
and subparts makes testing easier. This is followed by acceptance testing by
the user.
The process involves building a rapid prototype, delivering it to the customer
and the taking feedback. After validation by the customer, SRS document is
developed and the design is finalised.
Advantages –
Use of reusable components helps to reduce the cycle time of the project.
Feedback from the customer is available at initial stages.
Reduced costs as fewer developers are required.
Use of powerful development tools results in better quality products in
comparatively shorter time spans.
The progress and development of the project can be measured through the
various stages.
It is easier to accommodate changing requirements due to the short iteration
time spans.
Disadvantages –
The use of powerful and efficient tools requires highly skilled
professionals.
The absence of reusable components can lead to failure of the project.
The team leader must work closely with the developers and customers to
close the project in time.
The systems which cannot be modularized suitably cannot use this model.
Customer involvement is required throughout the life cycle.
It is not meant for small scale projects as for such cases, the cost of using
automated tools and techniques may exceed the entire budget of the project.
Applications –
1. This model should be used for a system with known requirements and
requiring short development time.
2. It is also suitable for projects where requirements can be modularized and
reusable components are also available for development.
3. The model can also be used when already existing system components can
be used in developing a new system with minimum changes.
4. This model can only be used if the teams consist of domain experts. This is
because relevant knowledge and ability to use powerful techniques is a
necessity.
5. The model should be chosen when the budget permits the use of automated
tools and techniques required.
Spiral Model
Spiral model is one of the most important Software Development Life Cycle
models, which provides support for Risk Handling. In its diagrammatic
representation, it looks like a spiral with many loops. The exact number of
loops of the spiral is unknown and can vary from project to project. Each loop
of the spiral is called a Phase of the software development process. The
exact number of phases needed to develop the product can be varied by the
project manager depending upon the project risks. As the project manager
dynamically determines the number of phases, so the project manager has an
important role to develop a product using the spiral model.
The Radius of the spiral at any point represents the expenses(cost) of the
project so far, and the angular dimension represents the progress made so far
in the current phase.
The below diagram shows the different phases of the Spiral Model: –
Each phase of the Spiral Model is divided into four quadrants as shown in the
above figure. The functions of these four quadrants are discussed below-
1. Objectives determination and identify alternative
solutions: Requirements are gathered from the customers and the
objectives are identified, elaborated, and analyzed at the start of every
phase. Then alternative solutions possible for the phase are proposed in this
quadrant.
2. Identify and resolve Risks: During the second quadrant, all the possible
solutions are evaluated to select the best possible solution. Then the risks
associated with that solution are identified and the risks are resolved using
the best possible strategy. At the end of this quadrant, the Prototype is built
for the best possible solution.
3. Develop next version of the Product: During the third quadrant, the
identified features are developed and verified through testing. At the end of
the third quadrant, the next version of the software is available.
4. Review and plan for the next Phase: In the fourth quadrant, the
Customers evaluate the so far developed version of the software. In the end,
planning for the next phase is started.
Risk Handling in Spiral Model
A risk is any adverse situation that might affect the successful completion of a
software project. The most important feature of the spiral model is handling
these unknown risks after the project has started. Such risk resolutions are
easier done by developing a prototype. The spiral model supports copying up
with risks by providing the scope to build a prototype at every phase of the
software development.
The Prototyping Model also supports risk handling, but the risks must be
identified completely before the start of the development work of the project.
But in real life project risk may occur after the development work starts, in
that case, we cannot use the Prototyping Model. In each phase of the Spiral
Model, the features of the product dated and analyzed, and the risks at that
point in time are identified and are resolved through prototyping. Thus, this
model is much more flexible compared to other SDLC models.
Why Spiral Model is called Meta Model?
The Spiral model is called a Meta-Model because it subsumes all the other
SDLC models. For example, a single loop spiral actually represents
the Iterative Waterfall Model. The spiral model incorporates the stepwise
approach of the Classical Waterfall Model. The spiral model uses the approach
of the Prototyping Model by building a prototype at the start of each phase as
a risk-handling technique. Also, the spiral model can be considered as
supporting the evolutionary model – the iterations along the spiral can be
considered as evolutionary levels through which the complete system is built.
Advantages of Spiral Model:
Below are some advantages of the Spiral Model.
1. Risk Handling: The projects with many unknown risks that occur as the
development proceeds, in that case, Spiral Model is the best development
model to follow due to the risk analysis and risk handling at every phase.
2. Good for large projects: It is recommended to use the Spiral Model in
large and complex projects.
3. Flexibility in Requirements: Change requests in the Requirements at later
phase can be incorporated accurately by using this model.
4. Customer Satisfaction: Customer can see the development of the product
at the early phase of the software development and thus, they habituated
with the system by using it before completion of the total product.
Disadvantages of Spiral Model:
Below are some main disadvantages of the spiral model.
1. Complex: The Spiral Model is much more complex than other SDLC
models.
2. Expensive: Spiral Model is not suitable for small projects as it is
expensive.
3. Too much dependability on Risk Analysis: The successful completion of
the project is very much dependent on Risk Analysis. Without very highly
experienced experts, it is going to be a failure to develop a project using
this model.
4. Difficulty in time management: As the number of phases is unknown at
the start of the project, so time estimation is very difficult.
What is Concurrent Development model ?
The concurrent process model, sometimes called concurrent engineering.
Concurrent modeling defines a series of events that will trigger transitions from
state to state for each of the software engineering activities, actions, or tasks.
The concurrent model is often more appropriate for system engineering projects
where different engineering teams are involved. it also allows a software team
to represent iterative and concurrent elements of any of the process model.
The concurrent process model defines a series of events that will trigger
transitions from state to state for each of the Software engineering activities,
actions, or tasks.
Advantages of Concurrent process model :
1. This model is applicable to all types of software development
processes.
2. It is easy for understanding and use.
3. It gives immediate feedback from testing.
4. It provides an accurate picture of the current state of a project.
Disadvantages of Concurrent process model :
1. It needs better communication between the team members. This
may not be achieved all the time.
2. It requires to remember the status of the different activities.
Prototype Model
The prototype model requires that before carrying out the development of actual
software, a working prototype of the system should be built. A prototype is a toy
implementation of the system. A prototype usually turns out to be a very crude
version of the actual system, possible exhibiting limited functional capabilities, low
reliability, and inefficient performance as compared to actual software. In many
instances, the client only has a general view of what is expected from the software
product. In such a scenario where there is an absence of detailed information
regarding the input to the system, the processing needs, and the output requirement,
the prototyping model may be employed.
Agile methods break tasks into smaller iterations, or parts do not directly involve
long term planning.
The project scope and requirements are made at the beginning of the development
process.
Plans regarding the number of iterations, the duration and the scope of each
iteration are clearly defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model,
which typically lasts from one to four weeks.
The division of the entire project into smaller parts helps to minimize the project
risk and to reduce the overall project delivery time requirements.
Each iteration involves a team working through a full software development life
cycle including :
planning,
requirements analysis,
design,
coding, and
testing before a working product is demonstrated to the client.
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
1. Requirements gathering: In this phase, you must define the requirements. You
should explain business opportunities and plan the time and effort needed to build
the project. Based on this information, you can evaluate technical and economic
feasibility.
2. Design the requirements: When you have identified the project, work with
stakeholders to define requirements. You can use the user flow diagram or the high-
level UML diagram to show the work of new features and show how it will apply to
your existing system.
3. Construction/ iteration: When the team defines the requirements, the work
begins. Designers and developers start working on their project, which aims to
deploy a working product. The product will undergo various stages of improvement,
so it includes simple, minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work
environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team
receives feedback about the product and works through the feedback.
Due to the lack of proper documentation, once the project completes and the developers
allotted to another project, maintenance of the finished project can become a difficulty
The Development plan for the Team B is as follows: Agile as their development
model.
Since this was an Agile, the project was broken up into several iterations.
The iterations are all of the same time duration.
At the end of each iteration, a working product with a new feature has to be
delivered.
Instead of Spending 1.5 months on requirements gathering, They will decide the
core features that are required in the product and decide which of these features
can be developed in the first iteration.
Any remaining features that cannot be delivered in the first iteration will be
delivered in the next subsequent iteration, based in the priority
At the end of the first iterations, the team will deliver a working software with the
core basic features.
Both the team have put their best efforts to get the product to a complete stage.
But then out of blue due to the rapidly changing environment, the company’s head
come up with an entirely new set of features and want to be implemented as
quickly as possible and wanted to push out a working model in 2 days. Team A was
now in a fix, they were still in their design phase and did not yet started coding and
they had no working model to display. And moreover, it was practically impossible
for them to implement new features since waterfall model there is not reverting
back to the old phase once you proceed to the next stage, that means they would
have to start from the square one again. That would incur them heavy cost and a
lot of overtime. Team B was ahead of Team A in a lot of aspects, all thanks to Agile
Development. They also had the working product with most of the core
requirement since the first increment. And it was a piece of cake for them to add
the new requirements. All they had to do is schedule these requirements for the
next increment and then implement them.
Scrum
Scrum is a framework that uses an iterative and incremental
structure for project management used in Agile software
development.
In other words; it delivers large projects in small chunks.
Scrum is the most popular and widely used Agile methodology.
It is a lightweight framework that helps teams and organizations
address complex problems and adapt to changing requirements.
It allows teams to adapt the processes to suit their project and
organization needs.
SCRUM is an agile development process focused primarily on ways to manage
tasks in team-based development conditions.
o Scrum Master: The scrum can set up the master team, arrange the meeting and
remove obstacles for the process
o Product owner: The product owner makes the product backlog, prioritizes the delay
and is responsible for the distribution of functionality on each repetition.
o Scrum Team: The team manages its work and organizes the work to complete the
sprint or cycle.
eXtreme Programming(XP)
This type of methodology is used when customers are constantly changing demands
or requirements, or when they are not sure about the system's performance.
Crystal:
There are three concepts of this method-
1. Chartering: Multi activities are involved in this phase such as making a development
team, performing feasibility analysis, developing plans, etc.
2. Cyclic delivery: under this, two more cycles consist, these are:
o Team updates the release plan.
o Integrated product delivers to the users.
2. Wrap up: According to the user environment, this phase performs deployment, post-
deployment.
1. Time Boxing
2. MoSCoW Rules
3. Prototyping
The DSDM project contains seven stages:
1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project
1. Eliminating Waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
5. Empowering the team
6. Building Integrity
7. Optimize the whol