SE_WEEK2
SE_WEEK2
Software Development Life Cycle (SDLC) is a process used by the software industry to design, develop
and test high quality software’s. The SDLC aims to produce a high-quality software that meets or exceeds
customer expectations, reaches completion within times and cost estimates.
SDLC Models
There are various software development life cycle models defined and designed which are followed during
the software development process. These models are also referred as Software Development Process
Models.
Following are the most important and popular SDLC models followed in the industry −
Waterfall Model
Iterative Model
Spiral Model
V-Model
Big Bang Model
Agile model
Project size
Consider the size of the project you will be working on. Larger projects mean bigger teams, so you’ll need
more extensive and elaborate project management plans.
Project complexity
Complex projects may not have clear requirements. The requirements may change often, and the cost of
delay is high. Ask yourself if the project requires constant monitoring or feedback from the client.
Cost of delay
Is the project highly time-bound with a huge cost of delay, or are the timelines flexible?
Customer involvement
Do you need to consult the customers during the process? Does the user need to participate in all phases?
Project resources
This involves the amount and availability of funds, staff, and other resources.
Page 1
Comparison between a defined process and an empirical process:
Defined Process Empirical Process
The entire project is completed within a single The entire project is completed in short cycles where it is
cycle which may take months. reviewed after each cycle.
The project manager knows most of the Everyone involved in the project has an equal right to know about
information of the project. the details of the project.
The accountability of the project is on the The accountability of the project is on everyone who is creating
project manager. and delivering the product.
The developers are told how and what they The developers are given an idea such as a user story where they
have to create and there is no scope of could employ any techniques or software and deliver the result
creativity or freedom. according to their judgement.
Page 2
This model assumes that everything is carried out and taken place perfectly as planned in the previous
stage and there is no need to think about the past issues that may arise in the next phase. This model does
not work smoothly if there are some issues left at the previous step. The sequential nature of model does
not allow us go back and undo or redo our actions.
This model is best suited when developers already have designed and developed similar software in the
past and is aware of all its domains.
Advantages:
These are some advantages of Waterfall Model.
Disadvantages:
These are some disadvantages of Waterfall Model.
Incremental model
Incremental Model is a process of software development where requirements are broken down into
multiple standalone modules of software development cycle. Incremental development is done in steps
from analysis design, implementation, testing/verification, maintenance.
Each iteration passes through the requirements, design, coding and testing phases. And each subsequent
release of the system adds function to the previous release until all designed functionality has been
implemented.
Page 3
Requirement Analysis: Requirement and specification of the software are collected.
Design: Some high-end function are designed during this stage
Code: Coding of software is done during this stage
Test: Once the system is deployed, it goes through the testing phase
Agile manifesto:
Agile is a time-bound, iterative approach to software delivery that builds software incrementally from the
start of the project, instead of trying to deliver all at once.
The Agile approach to software development is defined by its commitment to creating software
incrementally -- or in regular increases and stages. The approach offers users new versions, or releases, of
software following brief periods of work. Those brief periods of work are often called sprints.
The four core values of Agile software development as stated by the Agile Manifesto are:
individuals and interactions over processes and tools;
working software over comprehensive documentation;
customer collaboration over contract negotiation; and
responding to change over following a plan.
Page 4
Motivation − Projects should be built around motivated individuals. Provide an environment to
support individual team members and trust them so as to make them feel responsible to get the job
done.
Face-to-face Conversation − Face-to-face conversation is the most efficient and effective method
of conveying information to and within a development team.
Measure the Progress as per the Working Software − Working software is the key and it should
be the primary measure of progress.
Maintain Constant Pace − Agile processes aim towards sustainable development. The business,
the developers, and the users should be able to maintain a constant pace with the project.
Monitoring − Pay regular attention to technical excellence and good design to enhance agility.
Simplicity − Keep things simple and use simple terms to measure the work that is not completed.
Self-organized Teams − An agile team should be self-organized and should not depend heavily on
other teams because the best architectures, requirements, and designs emerge from self-organized
teams.
Review the Work Regularly − Review the work done at regular intervals so that the team can
reflect on how to become more effective and adjust its behavior accordingly.
Communication
Coordination
Balance of team member contributions
Mutual support
Effort
Cohesion
Page 5
decisions. For this arrangement to work, each team member has to be confident in their work and commit
to pushing through the most difficult, frustrating blocks.
Agile model
Agile SDLC model is a combination of iterative and incremental process models with focus on process
adaptability and customer satisfaction by rapid delivery of working software product. Agile Methods break
the product into small incremental builds. These builds are provided in iterations. Each iteration typically
lasts from about one to three weeks. Every iteration involves cross functional teams working
simultaneously on various areas like −
Planning
Requirements Analysis
Design
Coding
Unit Testing and
Acceptance Testing.
At the end of the iteration, a working product is displayed to the customer and important stakeholders.
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.
Page 6
The advantages of the Agile Model are as follows
Page 7
Instead of specifying everything at great detail upfront and delivering something less, an Agile framework
turns that upside down. We want to focus first on a very well defined Vision, decompose that into Themes
(large chunks of functionality), and based on the priority of those Themes start elaborating more specific
detail of the features, and then the highest priority features into stories, and the highest priority stories into
technical designs and ultimately working software.
Page 8