0% found this document useful (0 votes)
47 views69 pages

DevOps Unit - 1 Nagababu

Uploaded by

Bitra Venugopal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
47 views69 pages

DevOps Unit - 1 Nagababu

Uploaded by

Bitra Venugopal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 69

DevOps

UNIT – I

Software Development Life Cycle


UNIT – 1: Syllabus
 Different phases of SDLC, Advantages and Disadvantages of SDLC
 SDLC models: Waterfall, V-Model, prototyping, Incremental, Spiral, Lean and
Agile Model.
 4 Values of Agile Manifesto, 12 Agile Manifesto Principles
 Phases of Agile Software Development Life Cycle.
 Agile SDLC workflow, Benefits of Agile Methodology in Software
Development.
What is SDLC?
 SDLC stands for Software Development Life Cycle and is also referred to as
the Application Development life cycle.
 SDLC is a systematic process for building software that ensures the quality
and correctness of the software built.
 SDLC process aims to produce high-quality software that meets customer
expectations.
 The system development should be complete in the pre-defined time frame
and cost.
 Every phase of the SDLC life Cycle has its own process and deliverables that
feed into the next phase.
Why SDLC?
 It offers a basis for project planning, scheduling, and estimating.
 Provides a framework for a standard set of activities and deliverables.
 It is a mechanism for project tracking and control.
 Increases visibility of project planning to all involved stakeholders of the
development process
 Increased and enhance development speed.
 Improved client relations
 Helps you to decrease project risk and project management plan overhead.
Phases of SDLC:
Phase 1: Requirement gathering and analysis

 Before building a product, a core understanding or knowledge of the product


is very important.
 During this phase, all the relevant information is collected from the
customer to develop a product as per their expectation.
 For Example, A customer wants to have an application which involves
money transactions.
 Once the requirement gathering is done, an analysis is done to check the
feasibility of the development of a product.
Phase 2: Design

 The design phase includes a detailed analysis of new software according to


the requirement phase.
 During this phase, logical designing of the system is converted into physical
designing.
 The decision of all required essential tools such as programming language, a
combination of hardware and software is taken in this phase.
 There are several techniques and tools, such as data flow diagrams,
flowcharts, decision tables, and decision trees, Data dictionary, and the
structured dictionary are used for describing the system design.
Phase 3: Implementation or coding

 In this phase, work is divided into small units, and coding starts by the team
of developers according to the design discussed in the previous phase and
according to the requirements of the client discussed in requirement phase
to produce the desired result.
 Front-end developers develop easy and attractive GUI and necessary
interfaces to interact with back-end operations.
 Back-end developers do back-end coding according to the required
operations.
Phase 4: Testing

 In this phase, after getting the developed GUI and back-end combination, it
is tested against the requirements stated in the requirement phase.
 Testing determines whether the software is giving the result as per the
requirements addressed in the requirement phase or not.
 The Development team makes a test plan to start the test.
 This test plan includes all types of essential testing such as integration
testing, unit testing, acceptance testing, and system testing.
 Non-functional testing is also done in this phase.
 If there are any defects in the s/w or not working as per expectations, then
the testing team gives information to the development team about the issue.
Phase 5: Deployment

 When software testing is completed with a satisfying result, and there are no
remaining issues in the working of the software, it is delivered to the
customer for their use.
 As soon as customers receive the product, they are recommended first to do
the beta testing.
 If any type of defect is encountered while a customer using the software; it
will be informed to the development team of that software to sort out the
problem.
 If it is a severe issue, then the development team solves it in a short time;
otherwise, if it is less severe, then it will wait for the next version.
Phase 6: Maintenance

 Once the system is deployed, and customers start using the developed
system, following 3 activities occur
 Bug fixing – bugs are reported because of some scenarios which are
not tested at all.
 Upgrade – Upgrading the application to the newer versions of the
Software.
 Enhancement – Adding some new features into the existing software.
SDLC: Advantages

 Ample documentation
 Comprehensive steps
 Easy maintenance
 Effective development and design standards
 Sets reliable evaluation costs and completion targets.
 Can monitor full-scale projects.
 Strong control
 Precise user input
SDLC: Disadvantages

 Unsuitable when there are many iterations and/or regular reviews.


 Difficult to estimate costs and project overruns.
 Inflexible when it comes to changes in requirements.
 Limited automation of documents and standards
 Little parallelism
 The software is required to be thoroughly defined before the start.
 User input might be limited in certain scenarios.
SDLC Models:

1. Waterfall Model
2. Iterative/Incremental Model
3. Spiral Model
4. V Model
5. Prototype Model
6. Lean Model
7. Agile Model
SDLC Models: Waterfall Model
SDLC Models: Advantages of Waterfall Model

• It’s quite simple in terms of visualizing, understanding and implementing.


• It Provides structured way of doing things.
• Works well with small projects where requirements are well understood
beforehand.
• Time spent early in software development cycle can reduce cost at later
stages.
SDLC Models: Disadvantages of Waterfall Model

• Not change friendly.


• Poor resource allocation.
• Communication gap can result in disaster.
• Need crystal clear requirements.
• No working model of software will be available until all phases are
finished.
• It might be difficult to foresee all the risks which will come in later stages
of development.
SDLC Models: Iterative Model

• An iterative life cycle model does not attempt to start with a full
specification of requirements.
• Instead, development begins by specifying and implementing just part of
the software, which is then reviewed to identify further requirements.
• This process is then repeated, producing a new version of the software at
the end of each iteration of the model.
• At each iteration, design modifications are made, and new functional
capabilities are added.
• The basic idea behind this method is to develop a system through
repeated cycles (iterative) and in smaller portions at a time (incremental).
SDLC Models: Iterative Model
SDLC Models: Advantages of Iterative Model

• Parallel development can be planned.


• Progress can be measured.
• Risks are identified and resolved during iteration.
• It supports changing requirements.
• Initial Operating time is less.
• Better suited for large and mission-critical projects.
• During the life cycle, software is produced early which facilitates
customer evaluation and feedback.
SDLC Models: Disadvantages of Iterative Model

• More resources may be required.


• More management attention is required.
• System architecture or design issues may arise because not all
requirements are gathered in the beginning of the entire life cycle.
• Not suitable for smaller projects.
• Management complexity is more.
• Projects progress is highly dependent upon the risk analysis phase.
SDLC Models: Spiral Model

• The Spiral model is a combination of iterative development process model


and sequential linear development model i.e.. the waterfall model with a
very high emphasis on risk analysis.
• It allows incremental releases of the product or incremental refinement
through each iteration around the spiral.
• The spiral model has four phases: Identification, Design, Build,
Evaluation and Risk analysis.
• Each phase in Spiral model begins with design goal and ends with client
review.
• S/W is released in a series of incremental releases.
SDLC Models: Spiral Model
SDLC Models: Advantages of Spiral Model

• Risk Handling
• Good for large projects
• Flexibility in Requirements
• Customer Satisfaction
• Iterative and Incremental Approach
• Emphasis on Risk Management
• Improved Communication
• Improved Quality
SDLC Models: Disadvantages of Spiral Model

• This Spiral Model is much more complex than other SDLC models.
• Expensive
• Difficulty in time management
• The Spiral Model can be complex, as it involves multiple iterations of
the software development process.
• The Spiral Model can be time-consuming, as it requires multiple
evaluations and reviews.
• The Spiral Model can be resource-intensive, as it requires a significant
investment in planning, risk analysis, and evaluations.
SDLC Models: V Model

• V-Model also referred to as the Verification and Validation Model.


• It follows a sequential design process same as the waterfall model.
• Testing of the device is planned in parallel with a corresponding stage of
development.
• Verification involves a static analysis method (review) done without
executing code.
• Validation involves dynamic analysis method (functional, non-functional),
testing is done by executing code.
SDLC Models: V Model
Phases of Verification Phase of V-model

• Business requirement analysis


• System Design: System engineers analyze and interpret the business of the
proposed system.
• Architecture Design: Consists of the list of modules, brief functionality of
each module, their interface relationships, dependencies, database tables,
architecture diagrams, technology detail, etc.
• Module Design: In the module design phase, the system breaks down into
small modules. The detailed design of the modules is specified, which is
known as Low-Level Design.
• Coding Phase
Phases of Validation Phase of V-model
• Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during
the module design phase. Unit testing verifies that the smallest entity can
function correctly when isolated from the rest of the codes/ units.
• Integration Testing: Integration Test Plans are developed during the
Architectural Design Phase. These tests verify that groups created and tested
independently can coexist and communicate among themselves.
• System Testing: System Tests Plans are developed during System Design
Phase. System Test ensures that expectations from an application developer
are met.
• Acceptance Testing: Acceptance tests reveal the compatibility problems
with the different systems, which is available within the user atmosphere.
V-model: Advantages

• Easy to Understand.
• Testing Methods like planning, test designing happens well before coding.
• This saves a lot of time. Hence a higher chance of success over the
waterfall model.
• Avoids the downward flow of the defects.
• Works well for small plans where requirements are easily understood.
V-model: Disadvantages

• Very rigid and least flexible.


• Not a good for a complex project.
• Software is developed during the implementation stage, so no early
prototypes of the software are produced.
• If any changes happen in the midway, then the test documents along
with the required documents, must be updated.
SDLC Models: Prototyping Model

• In this model, a prototype is built, tested, and reworked until an acceptable


prototype is achieved.
• It also creates base to produce the final system or software.
• It works best in scenarios where the project’s requirements are not known in
detail.
• It is an iterative, trial and error method which takes place between developer
and client.
SDLC Models: Prototyping Model
SDLC Models: Prototyping Model Phases

• Prototyping Model has following six SDLC phases:


• Requirements gathering and analysis
• Quick design
• Build a Prototype
• Initial user evaluation
• Refining prototype
• Implement Product and Maintain
SDLC Models: Advantages of Prototyping Model

• Reduce the risk of incorrect user requirement.


• Good where requirement is changing/uncommitted.
• Regular visible process aids management
• Support early product marketing
• Reduce Maintenance cost.
• Errors can be detected much earlier as the system is made side by side
SDLC Models: Disadvantages of Prototyping Model

• Prototyping is a slow and time taking process.


• Prototyping may encourage excessive change requests.
• Poor documentation because the requirements of the customers are
changing.
• An unstable/badly implemented prototype often becomes the final
product.
• Difficult to know how long the project will last.
• Prototyping tools are expensive.
• Special tools & techniques are required to build a prototype.
• It is a time-consuming process.
SDLC Models: Lean Model

• Lean development allows us to obtain information directly from the source


and eliminates the common problem of producing software that doesn't meet
customers' needs.
• In this model, a team creates a barely functional prototype and sells it to the
market.
• The team then collects customer feedback on what they like, dislike, and
want to see improved.
• It then iterates based on this information.
Key Principles of Lean Software Development

• Eliminate waste: Lean development aims to eliminate anything that does


not add value to the customer.
• Amplify learning: Through extensive code review and cross-team
meetings, the learning is enhanced.
• Delay commitment: Requirements change due to customer feedback,
the competitive marketplace, or emerging technologies.
• Deliver fast: Create a simple solution, test it with customers, and
improve incrementally based on their feedback.
Key Principles of Lean Software Development

• Empower the team: LSD focuses on empowering team members, rather


than controlling them.
• Build integrity in: LSD is all about prevent waste, keeping an eye on not
sacrificing quality.
• Optimize the whole: Lean’s principle allows managers to break an issue
into small constituent parts to optimize the team’s workflow, create unity
among members, and inspire a sense of shared responsibility which
results in enhancing the team performance.
SDLC Models: Agile Model

• Agile SDLC model is a combination of iterative and incremental process


models.
• Agile Methods break the product into small incremental builds.
• Each iteration typically lasts from about one to three 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.
SDLC Models: Agile Model
SDLC Models: Agile Model Phases

 Requirements gathering
 Design the requirements
 Construction/ iteration
 Testing
 Deployment
 Feedback
SDLC Models: Advantages of Agile Model

 Frequent Delivery
 Face-to-Face Communication with clients.
 Efficient design and fulfils the business requirement.
 Anytime changes are acceptable.
 It reduces total development time.
 Easy to manage.
SDLC Models: Disadvantages of Agile Model

 Not suitable for handling complex dependencies.


 More risk of sustainability, maintainability and extensibility.
 Depends heavily on customer interaction, so if customer is not clear, team
can be driven in the wrong direction.
 The Agile Development is more code focused and produces less
documentation.
Agile Manifesto: 4 Values and 12 Principles

 The Agile Manifesto, created in 2001, sets out the key values and principles.
 The Agile Manifesto is a guide that consists of four foundational values
along with twelve supporting principles that establish the groundwork for
the Agile approach for software or any product development.
 The following are list of four values of Agile Manifesto:
o Individuals and Interactions Over Processes and Tools
o Working Software Over Comprehensive Documentation
o Customer Collaboration Over Contract Negotiation
o Responding to Change Over Following a Plan
Agile Manifesto: 4 Values
Individuals and Interactions Over Processes and Tools
• Valuing people more highly than processes or tools is easy to understand
because it is the people who respond to business needs.
• If the process or the tools drive development, the team is less responsive to
change and less likely to meet customer needs.
• In the case of individuals, communication is fluid and happens when a need
arises.
• In the case of process, communication is scheduled and requires specific
content.
Agile Manifesto: 4 Values
Working Software Over Comprehensive Documentation
• In traditional methodologies, priority was always given to documentation of
the product that was about to be developed and delivered.
• Agile does not eliminate documentation, but it streamlines it in a form that
gives the developer what is needed to do the work.
• The requirements in Agile are documented in the form of user stories and
epics.
• The Agile Manifesto values documentation, but it values working software
more.
Agile Manifesto: 4 Values
Customer Collaboration Over Contract Negotiation
• In the waterfall methodology, the customer negotiates the requirements of
the product with the Project Manager before starting the product.
• The Agile Manifesto explains that the customer is engaged throughout the
process of the development and can easily track the progress of the project.
• Agile Methodology uses an iterative and incremental approach that helps the
customers to give feedback to Product Increments and satisfy their needs
from the products.
• Flexibility in Agile is also a benefit for the customers as changes can be
easily accommodated in the product and the customer need not wait till the
whole product is completed.
Agile Manifesto: 4 Values
Responding to Change Over Following a Plan
• Traditional software development regarded change as an expense, so it was
to be avoided.
• With Agile, the shortness of an iteration means priorities can be shifted from
iteration to iteration and new features can be added into the next iteration.
• Agile’s view is that changes always improve a project; changes provide
additional value.
Agile Manifesto: 12 Principles

 The following are list of 12 principles of Agile Manifesto:


1. Customer Satisfaction 10. Simplicity
2. Welcome Change 11. Self-organized Teams
3. Deliver the Working Software 12. Review the Work Regularly
4. Collaboration
5. Motivation
6. Face-to-face Conversation
7. Measure the Progress as per the Working Software
8. Maintain Constant Pace
9. Monitoring
Agile Manifesto: 12 Principles
• Customer Satisfaction: This is done through early and continuous delivery
of valuable software.
• Welcome Change: Making changes during software development is common
and inevitable. Every changing requirement should be welcome, even in the
late development phase.
• Deliver the Working Software: Deliver the working software frequently,
ranging from a few weeks to a few months with considering the shortest
period.
• Collaboration: Businesspeople and developers must work together during
the entire life of a project development phase.
Agile Manifesto: 12 Principles
• Motivation: Provide an environment that supports individual team members
and trust them. It makes them feel responsible for getting the job done
thoroughly.
• Face-to-face Conversation: Face-to-face conversation between Scrum
Master and development team and between the Scrum Master and
customers for the most efficient and effective method of conveying
information to and within a development team.
• Measure the Progress as per the Working Software
• Maintain Constant Pace: The aim of agile development is sustainable
development.
Agile Manifesto: 12 Principles
• Monitoring: Pay regular attention to technical excellence and good design to
maximize agility.
• Simplicity: Keep things simple and use simple terms to measure the work
that is not completed.
• Self-organized Teams: The Agile team should be self-organized. They
should not be depending heavily on other teams because the best
architectures, requirements, and designs emerge from self-organized teams.
• Review the Work Regularly: The work should be reviewed at regular
intervals, so that the team can reflect on how to become more productive
and adjust its progress accordingly.
Agile Software Development Life Cycle:

 Agile Software Development Life Cycle (SDLC) is the combination of both


iterative and incremental process models.
 It focuses on process adaptability and customer satisfaction by rapid
delivery of working software product.
 Agile SDLC breaks down the product into small incremental builds. These
builds are provided into iterations.
 In the agile SDLC development process, the customer can see the result and
understand whether he/she is satisfied with it or not.
Agile Software Development Life Cycle:
Agile Software Development Life Cycle:

 Each iteration of agile SDLC consists of cross-functional teams working on


various phases.
o Requirements gathering
o Design the requirements
o Construction/ iteration
o Testing
o Deployment
o Feedback
The Phases of Agile SDLC:
The Phases of Agile SDLC:

Phase 1: Concept & Requirement


 In this stage, stakeholders determine their basis of requirement & overall
project assessment.
 After that, the developing team draws the solution by requirement analysis.
The Phases of Agile SDLC:

Phase 2: Design
 The team discusses the product functionality, programming language,
essential tools, etc.
 In the design stage, the team remains engaged in things like:
o The layout of the mobile, desktop, and various devices for the website
o Color schemes fix according to the project.
o What programming languages should use?
o Backend frameworks designs
o System server designs
The Phases of Agile SDLC:

Phase 3: Development
 In this phase,
o The development team initiates the building code.
o Sets up the hardware.
o Configures the servers.
o The designers are working on improving the user interface & user
experience.
o The testers analyze the requirements.
o Start designing test plans.
The Phases of Agile SDLC:

Phase 4: Integration & Testing


 In this phase, the development team conducts a couple of tests to ensure the
software functionalities.
 If there is any error or bugs, the developer team will fix it with immediate
action & ensure secure software.
The Phases of Agile SDLC:

Phase 5: Implementation & Deployment


 In this phase, the operation team makes themselves busy getting the
software live and running smoothly.
 After all, in the deployment phase, the vital round of quality assurance is
mainly done.
 After that, the development team provides additional training to the users,
define & resole new bugs to run the software smoothly.
Phase 6: Review & Retirement
 In this phase, the development team runs the back-channel communication,
takes the user feedback & shows the outcomes of the project to the clients.
Agile SDLC workflow:

From start to the final completion of software development, the Agile iteration
workflow consists of five steps
Agile SDLC workflow:

 Planning: In the planning stage, the developer team imagined the whole
project & made the sprint backlog, calculated the average time of release
product, & determined about the required agile technologies.

 Building: In the building or design process, the Agile development team


creates input functions & prepares the system for start testing.

 Testing: In this step, the whole system is tested before the final production
approach. The quality assurance team works to find bugs and analyze the
user flow diagram to fix and enhance the user acceptance of the application.
Agile SDLC workflow:

 Delivery: After performing a series of testing, user training, enhancing


system functionalities developers team release the software.

 Feedback: Client & user feedback is taken in this step to see the outcomes
& whether the software works and is functional or not.
 All in all, this is the step of application retirement, a continuous flow of
review & up-gradation of the software.
Benefits of Agile Methodology in S/W Dev’t:
Benefits of Agile Methodology in S/W Dev’t:

 Increase the Software Quality: In the Agile method, every project can break
down into multiple units that serve an easily manageable process. Enables
the team on proper development and testing that reaches a high-quality
assurance level.
 Opportunity for Changes: Agile method gives teams a chance to time-to-
time flexible change process and refines the complete product life cycle.
 Progress Transparency: Clients or product owners can have enough
involvement with their project by going an agile approach. They participate
in the process, from planning software iterations, prioritizing functionalities,
and reviewing sessions to regular software releases.
Benefits of Agile Methodology in S/W Dev’t:

 Predictable Schedule and Costs: Cost and schedule are fixed on the agile
software development methodologies. This means every cost is predictable
that can be executed within a specified time frame by the team. In this way,
the client gets the cost of each feature and sprint plan.
 Early Delivery Through Sprints: An Agile sprint cycle lasts about 1 to 4
weeks, using schedule permits teams to serve additional features rapidly
with a high level of unity. In addition, it gives them a chance to execute a
software release or testing on the required software earlier than planned as
there's sufficient business value.
Benefits of Agile Methodology in S/W Dev’t:

 Engagement with Stakeholders: The agile models offer much higher


opportunity for collaboration between clients and the project team. Through
frequent working software delivery, teams will get trusted by the client on
their capability to come with top-notch quality software.

 Priority on Business Value: The client is free to figure out the priority of
features. Then the project manager & the team determines the most
important thing, such as prioritizing the client's business goals. Therefore,
they can provide features that create the most business value in clients'
minds.

You might also like