DevOps Unit 1
DevOps Unit 1
• Planning
• Analysis
• Design
• Implementation (Coding)
• Testing & Deployment
• Maintenance
Planning
• The first stage of SDLC is all about “What do we want?” Project
planning is a vital role in the software delivery lifecycle since this is
the part where the team estimates the cost and defines the
requirements of the new software.
• The main goal of this stage is that everyone understands even the
minute detail of the requirement. Hardware, operating systems,
Analysis
• The project team collects information from stakeholders, including
analysts, users, and clients. They conduct interviews, surveys, and
focus groups to understand the user's expectations and needs. The
process involves not only asking the right questions but also
accurately interpreting the responses.
• After collecting the data, the team analyzes it, distinguishing the
essential features from the desirable ones. This analysis helps the
team understand the software's functionality, performance, security,
and interface needs.
Design
• The Design phase is all about building the framework. Key activities
include crafting data flow diagrams, constructing entity-relationship
diagrams, and designing user interface mock-ups. The team also
identifies system dependencies and integration points. They also set
the software's limitations, such as hardware constraints,
performance requirements, and other system-related factors.
Software prototypes are built prior to the actual software to get valuable
feedback from the customer. Feedbacks are implemented and the
prototype is again reviewed by the customer for any change. This process
goes on until the model is accepted by the customer.
Advantages:
● Prototype model reduces the cost and time of development as the
defects are found much earlier.
● Missing features or functionality or a change in requirement can be
identified in the evaluation phase and can be implemented in the refined
prototype.
● Involvement of a customer from the initial stage reduces any confusion in
the requirement or understanding of any functionality.
Disadvantages:
● Since the customer is involved in every phase, the customer can change
the requirement of the end product which increases the complexity of the
scope and may increase the delivery time of the product.
Spiral model
Spiral model phases are followed in the iterations. The loops in the model represent
the phase of the SDLC process i.e. the innermost loop is of requirement gathering &
analysis which follows the Planning, Risk analysis, development, and evaluation.
Next loop is Designing followed by Implementation & then testing.
Spiral Model has four phases:
• Planning
● Risk Analysis
● Engineering
● Evaluation
Spiral model
● Planning
The first phase of the Spiral Model is the planning phase, where the scope of the
project is determined and a plan is created for the next iteration of the spiral.
● Risk Analysis
In the risk analysis phase, the risks associated with the project are identified
and evaluated. Risks can be operational (e.g., team changes), technical (e.g.,
untested technologies), or external (e.g., regulatory changes).
● Engineering
In the engineering phase, the software is developed based on the requirements
gathered in the previous iteration.
● Evaluation
In the evaluation phase, the software is evaluated to determine if it meets the
customer’s requirements and if it is of high quality.
Contd..
Advantages:
Disadvantages:
Disadvantages:
● Complete requirements and understanding of a product are required to break
down and build incrementally.
Big Bang model
Big Bang Model does not have any defined process. Money and efforts are put
together as the input and output come as a developed product which might be or
might not be the same as what the customer needs.
Big Bang Model does not require much planning and scheduling. The developer
does the requirement analysis & coding and develops the product as per his
understanding. This model is used for small projects only. There is no testing team
and no formal testing is done, and this could be a cause for the failure of the
project.
Contd..
Advantages:
Disadvantages:
● Big Bang models cannot be used for large, ongoing & complex projects.
● High risk and uncertainty.
Agile model
• The meaning of Agile is swift or versatile. "Agile process model" refers to a
software development approach based on iterative development. Agile methods
break tasks into smaller iterations, or parts that do not directly involve long term
planning. The project scope and requirements are laid down 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. 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.
Agile model
• The agile software development life cycle is a software development project
methodology that prioritizes adaptability, flexibility, rapid development, and
transformation.
• Agile Model is a combination of the Iterative and incremental model. This model
focuses more on flexibility while developing a product rather than on the
requirement.
• In Agile, a product is broken into small incremental builds. It is not developed as
a complete product in one go. Each build increments in terms of features. The
next build is built on the previous functionality.
• In agile iterations are termed as sprints. Each sprint lasts for 2-4 weeks. At the
end of each sprint, the product owner verifies the product and after his approval,
it is delivered to the customer.
Phases of Agile model
• Requirements gathering
• Design the requirements
• Construction/ iteration
• Testing/ Quality assurance
• Deployment
• Feedback
Planning & Requirements gathering
• The planning phase in Agile is about defining the overall vision
and high-level objectives of the project. The Product Owner works
with stakeholders to create a Product Backlog, which is a
prioritized list of features or tasks to be completed. This backlog
is dynamic and evolves over time as new requirements emerge.
Design
• During this phase, the team focuses on designing the system
architecture and features based on the requirements defined in
the backlog. However, Agile design is adaptive and can change
as the project progresses, unlike traditional SDLCs where the
design is typically fixed early on.
Construction/ iteration
• This phase involves the actual coding and implementation of the
features identified in the product backlog. Teams typically work in
sprints (usually 1-4 weeks), and each sprint results in a
potentially shippable product increment.
Testing
• Testing in Agile is continuous and happens throughout the
development process, rather than as a separate phase at the
end. This ensures that issues are caught early, and the product
evolves in a stable, reliable manner.
Deployment
• Once the software is developed, tested, and reviewed, it is
deployed to production. In Agile, deployment can happen
frequently, even after every sprint, ensuring that the product is
always ready for release.
Maintenance
• After the software is deployed, maintenance is an ongoing
activity. Agile allows teams to adapt and respond to feedback
from users and stakeholders, and they can address issues or add
new features in subsequent iterations.
Contd..
Advantages of Agile Model:
• It allows more flexibility to adapt to the changes.
● The new feature can be added easily.
● Customer satisfaction as the feedback and suggestions are taken at
every stage.
Disadvantages:
● Lack of documentation.
● Agile needs experienced and highly skilled resources.
● If a customer is not clear about how exactly they want the product to
be, then the project would fail.
Types of Agile Framework
● If you choose an agile software project model, the second step is to
choose the framework based on your development team, workflow,
scale, project complexity, requirements, targets, and needs.
Scrum
Scrum is used to do tasks in a scenario where teams are involved. The
idea of scrum comes from the game of rugby and it helps in the proper
working of smaller teams. The three aspects of scrum can be described
as below:
● Scrum Master helps in building the team, look after sprint meetings
and take care of problems in the path of progress.
● Product Owner helps in building the product backlog. The owner also
gives the most priority to the backlog and ensures that there is
delivery after every iteration.
● The Scrum Team looks after their work and completes the sprint.
Scrum
Key Roles
• Product Owner: Manages the product backlog and prioritizes features.
• Scrum Master: Facilitates the Scrum process and removes impediments.
• Development Team: Cross-functional team that delivers the product
increment.
Key Artifacts
• Product Backlog: List of prioritized work items (user stories, tasks).
• Sprint Backlog: Subset of the product backlog selected for a sprint.
• Increment: The working product delivered at the end of a sprint.
Scrum
Services:
• Sprint Planning: Plan what work will be completed during the sprint.
• Daily Standup: Short daily meeting to discuss progress, plans, and blockers.
• Sprint Review: Showcase the completed work to stakeholders.
• Sprint Retrospective: Reflect on the sprint to identify improvements.
Lean
Lean Software Development is an Agile framework that applies principles from Lean
manufacturing to the software development process. Its primary focus is on delivering
maximum value to the customer by eliminating waste, optimizing processes, and fostering
continuous improvement.
Principles of Lean Software Development
Eliminate Waste - Identify and remove anything that does not add value to the customer.
Build Quality In - Prevent defects rather than fixing them later.
Create Knowledge - Emphasize learning and adapting through feedback and experimentation.
Defer Commitment - Make decisions as late as possible to allow for maximum flexibility and
adaptability.
Lean
Deliver Fast - Minimize lead time and deliver value to customers as quickly as possible.
Respect People - Empower individuals and teams to contribute their best work.
Optimize the Whole - Focus on the entire system rather than optimizing individual
components.
Extreme Programming
This methodology is helpful when the demand is not stable i.e. the requirement of the
demand is always changing. It can be also used when there is uncertainty regarding the
functionality of the whole system. Thus, with the help of extreme programming, the product is
released in shorter intervals of time thus creating checkpoints and improving productivity. The
aim of extreme programming works with respect to the customer.
The different phases of extreme programming are:
● Planning
● Analysis
● Execution
● Wrapping
● Closure
Kanban method
• The Japanese word Kanban refers to a card that has all the information which is required and done on
the product during its process of completion. This method is widely used in software development.
• Kanban is a visual framework for managing work that focuses on optimizing the flow of tasks through a
system. It does not prescribe time-boxed iterations.
• Visualize Workflow: Use a Kanban board with columns (e.g., To Do, In Progress, Done).
• Limit Work in Progress (WIP): Set limits to prevent bottlenecks and improve flow.
• Manage Flow: Continuously monitor and optimize the flow of tasks.
• Continuous Improvement: Use feedback and metrics to improve the process.
Feature-Driven Development (FDD)
Key Practices:
• Crystal is a family of Agile frameworks (e.g., Crystal Clear, Crystal Orange, Crystal Red) that
Key Practices:
• DSDM is an Agile framework focused on delivering projects on time and within budget while emphasizing
Key Practices:
• MoSCoW Prioritization: Categorize requirements into Must Have, Should Have, Could Have, and Won’t
Have.
Along with the software tools and processes, agile suggests that the people working in the
processes are equally if not more important. A project can be the most successful if the people
working on it are the best suited for it.
● A working software
Working software is more important. It is of utmost importance according to the agile manifesto
to provide the customers with working software than to have piles and piles of documentation.
Contd..
● Customer collaboration
Previously there would only be a contract between the customer and the developer. So after the
project would be completed it would be handed over to the customer. Many times a situation
would arise that the product asked for and the product delivered was not the same. Thus agile
insists on continuous delivery so that the developer and the customer are on the same page
and can react to changing market conditions.
● Responding to change
According to the Agile Manifesto, there might be many phases in software development when
changes can be done to the product. These changes should be encouraged irrespective of the
phase the project is in. This helps in achieving better goals and revised results.