Assignment 02 SP
Assignment 02 SP
Software Process
Assignment 02
Josiah Prathaban
SE/2017/022
Question 01.
01. In the Scrum Guide they mention a team’s success with scrum depends on five values: commitment,
courage, focus, openness, and respect.
1. Commitment - People personally commit to achieving the goals of the Scrum team.
Scrum teams must be able to work together as a unit to achieve a common goal. That means
trusting one another to follow through on their tasks and deliver to the best of their abilities.
This will only happen when each team member is fully committed to the team and the project.
2. Courage - The Scrum team members have courage to do the right thing and work on tough
problems.
Scrum teams must have the courage to be honest, open, and transparent both with
themselves and with stakeholders about the project’s progress and any roadblocks they’re
experiencing. Team members also need the courage to ask for help when it’s needed, to try
new tactics or methods they’re not used to, and to respectfully disagree and have open
dialogue.
3. Focus - Everyone focuses on the work of the Sprint and the goals of the Scrum team.
Sprint is a specified period of time during which team members work to achieve a stated goal. In
order to get the most out of each sprint, each team member must remain focused on the task at
hand as well as how it impacts the sprint goal.
4. Openness - The Scrum team and its stakeholders agree to be open about all the work and the
challenges with performing the work.
For the Scrum team to make the most progress in the shortest time possible, each team
member must be brutally honest and open about their own progress. The purpose of the daily
Scrum meeting is to identify and solve problems. That can’t happen if team members aren’t
forthcoming about issues or roadblocks they’re experiencing. Additionally, team members must
be open to working with their colleagues and view them as valuable contributors to the success
of the project.
5. Respect - Scrum team members respect each other to be capable, independent people.
Respect in a Scrum team means recognizing that no single individual or their contribution is
more valuable than another. Respect also means trusting your fellow team members to fulfill
their tasks, listening to and considering their ideas, and recognizing their accomplishments.
Procut Owner
Product Owner is responsible for maximizing the value of the product and also for the effective
Product Backlog management. Here are some responsibilities for Product Owners.
• Create and maintain the product backlog.
• Work with the Product Manager to create a product vision and roadmap.
• Collaborate with the Scrum Master to ensure the product's development aligns with its
original vision.
• Ensure the product backlog is updated and available to the entire development team.
• Work across departments and prioritize tasks for the Scrum Master based on
stakeholder needs.
• Evaluate progress throughout the development process.
Scrum Master
The Scrum Master is responsible for the Scrum Team’s effectiveness. They do this by enabling
the Scrum Team to improve its practices, within the Scrum framework. Below are some of the
common responsibilities for the Scrum Master position.
• Plan and execute the Agile Methodology with the Scrum development team.
• Monitor the sprint's progress and remove roadblocks impeding the product's
development.
• Work with the Product Owner to make sure the product backlog is up to date.
• Communicate changes in the product backlog to the development team.
• Motivate the development team to complete tasks on time.
• Report on the success of the sprint.
Why it is not good to have the same person assigned to play the role of “Product Owner” and
“Scrum Master”?
Because The product owner and scrum master are two different roles that complement each
other. If one is not played properly, the other suffers.
The Product Owner is a full-time job, and if they're taking time to perform Scrum Master duties,
they'll have to cut corners when creating the product backlog and managing the development
process. There'll be less room for innovation and more focus on completing tasks before
deadlines. Since the product owner has too much on their plate, the value of your product will
begin to suffer.
17 software developers who gathered in Utah, USA, to discuss their ideas and different approaches to
software development. Their smart thoughts were expressed in the famous Agile Manifesto. The Agile
Manifesto consists of 4 foundational values and 12 supporting principles that lead the Agile approach to
software development. Each Agile methodology applies the 4 values in different ways. However, all of
them rely on these values to guide the development and delivery of high-quality, working software.
It’s crucial to value people more highly than processes or tools. It is the people who respond to
business needs and drive the development process. When the development is driven by the
process or tools, then the team is less responsive to changes and less likely to meet customer
needs.
Documenting the product for development and ultimate delivery required enormous amounts
of time. Technical requirements, specifications, prospectus, testing plans, interface design
documents, and different approvals were required for each. There were long delays in
development. Agile values documentation, but it values working software more.
Negotiations are important. It’s about the period when customers and a product manager work
out the details of a delivery with all the details. However, collaboration is a different creature
entirely and it really matters.
According to Waterfall, customers negotiate the requirements for the product, often in great
detail, prior to any work starting. The Agile Manifesto describes a customer who collaborates
throughout the development process, making. It’s easier for development to meet their needs
of the customer.
According to Agile methods, the customer may be included at intervals for periodic demos, but a
project could just as easily have an end-user as a daily part of the team.
These principles can guide us define whether or not we are being Agile.
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable
software.
2. Welcome changing requirements, even late in development. Agile processes harness change for
the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a
preference to the shorter timescale.
4. Businesspeople and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they need
and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a development
team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and users should
be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
10. Simplicity — the art of maximizing the amount of work not done — is essential.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts
its behavior accordingly.
A timebox is a time limit placed on a task or activity. A timebox in Agile determines when a team must
do something, minimizing risk by implementing careful estimation techniques and project planning to
achieve successful outcomes.
Backlog grooming is a regular session where backlog items are discussed, reviewed, and prioritized by
product managers, product owners, and the rest of the team. The primary goal of backlog grooming is to
keep the backlog up-to-date and ensure that backlog items are prepared for upcoming sprints.
Question 03.
01. DevOps
DevOps describes a culture and set of processes that bring development and operations teams together
to complete software development. It allows organizations to create and improve products at a faster
pace than they can with traditional software development approaches. And it’s gaining popularity at a
rapid rate.
Here are the reasons why the industry has been so quick to adopt DevOps principles:
A DevOps engineer works with diverse teams and departments to create and implement software
systems. People who work in DevOps are experienced IT professionals who collaborate with software
developers, quality assurance professionals, and IT staff to manage code releases.
Containerization platforms
Ref: https://raygun.com/blog/best-devops-tools/
Docker
It’s widely regarded as one of the most important DevOps tools. Docker has made containerization
popular in the tech world, mainly because it makes distributed development possible and helps
automate the deployment process. It isolates applications into separate containers, so they become
portable across environments and more secure. Docker apps are OS- and platform-independent. We can
use Docker containers instead of virtual machines such as VirtualBox. With Docker, we don’t have to
worry about dependency management. We can package all dependencies within the app’s container
and ship the whole thing as an independent unit. Then, we can run the app on any machine or platform
without a headache.
GIT
Git is one of the most popular DevOps tools, widely used across the software industry. It’s a distributed
SCM (source code management) tool, loved by remote teams and open-source contributors. Git allows
us to track the progress of our development work. We can save different versions of our source code
and return to a previous version when necessary. It’s also great for experimenting, as we can create
separate branches and merge new features only when they’re ready to go.
Kubernetes
Kubernetes is a container orchestration platform that takes container management to the next level.
Kubernetes works well with Docker or any of its alternatives to help us group our containers into logical
units. We may not need a container orchestration platform if we have only a few containers. However,
it’s the next logical step once we reach a certain level of complexity and need to scale our resources.
Kubernetes allows us to automate the process of managing hundreds or thousands of containers.
Jenkins
Jenkins is one of the most popular DevOps automation tools in the market. It’s an open-source CI/CD
server that allows us to automate the different stages of our delivery pipeline. The main reason for
Jenkins’ popularity is its huge plugin ecosystem. With more than 1,800 plugins, it integrates with almost
all DevOps tools, including Docker, Puppet, Octopus Deploy, and more. With Jenkins, we can set up and
customize your CI/CD pipeline according to our own needs. With Jenkins, we can iterate and deploy new
code as quickly as possible. It also allows you to measure the success of each step of your pipeline. You
can use it either as a simple CI server solely on the development side or as a complete CI/CD solution
that also takes care of our deployment workflow.