This document provides an overview of Agile software development and DevOps. It begins with an introduction to software engineering principles. It then covers Agile concepts like values, principles and methods including Scrum, Kanban, and lean. Scrum roles, artifacts, and events are defined. Kanban and lean concepts like limiting work in progress and value streams are explained. Finally, DevOps is introduced as the convergence of development and operations to enable continuous delivery through automation. The document aims to give attendees a foundation in Agile and DevOps best practices for software development.
9. Engineering
• What a cook should wear?
• How the kitchen should be organized?
• Best kitchenware to use
• How to buy and store ingredients
10. Software Engineering
Is an engineering discipline that is concerned
with all aspects of software production
11. Difference between Computer Science
and Software Engineering
• Computer Science is concerned with theories,
and methods that underlie computer and
software systems
• Software Engineering is concerned with
practical problems of producing software
12. Programmer, Software Developer and
Software Engineer
• A Programmer is anyone who can create a program in at
least one programming language, regardless of the use of a
systematic approach
• A Software Developer is a Programmer who doesn’t only
care about simply writing code, but also cares about the
requirement analysis, the functional specification, the
design, the testing, the deployment and the maintenance
of the software product they work on
• A Software Engineer is one who applies Engineering
disciplines and principles to software creation
13. Software Process
• A Software Process is a set of activities that
produce a software product
1. Software Specification
2. Software Development
3. Software Validation
4. Software Evolution
16. Disadvantages of Waterfall
• Equates Software Development to a
production line conveyor belt
• Customer sees the software product too late
• Too much waste
19. Incremental and Iterative Model
• An iterative process is one that makes
progress through successive refinement
• An incremental process is one in which
software is built and delivered in pieces. Each
piece, or increment, represents a complete
subset of functionality
26. Technical Definition of Agile
• A group of software development methods based
on iterative and incremental development
• Requirements and solutions evolve through
collaboration between self-organizing, cross-
functional teams
• Promotes adaptive planning, evolutionary
development and delivery, a time-boxed
iterative approach, and encourages rapid and
flexible response to change
27. History
• On February 11-13 2001, 17 people met to
find common grounds in software
development methodologies
• What emerged is the Agile Software
Development Manifesto
28.
29.
30. Layers of Agile Development
N Tools
N Practices
N Methods
12 Principles
4 Values
31. Agile Values
• Individuals and interactions over processes
and tools
• Working software over comprehensive
documentation
• Customer collaboration over contract
negotiation
• Responding to change over following a plan
32. 12 Principles of Agile Software (1)
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. Business people and developers must work
together daily throughout the project.
33. 12 Principles of Agile Software (2)
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.
34. 12 Principles of Agile Software (3)
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.
38. Agile Practices
• Pair Programming
• Test Driven Development
• Automated Test Driven Development
• Behavior Driven Development
• Collective Ownership
• Continuous Deployment
• Continuous Integration
• Version Control
• Definition of Ready
• Definition of Done
42. Definition of Scrum
Scrum in the sport of rugby, is a way of
restarting the game, either after an accidental
infringement or (in rugby league only) when the
ball has gone out of play
45. Scrum Values
Focus
Because we focus on only a few things at a time, we
work well together and produce excellent work. We
deliver valuable items sooner.
Courage
Because we work as a team, we feel supported and
have more resources at our disposal. This gives us
the courage to undertake greater challenges.
46. Scrum Values
Openness
As we work together, we express how we're doing, what's
in our way, and our concerns so they can be addressed.
Commitment
Because we have great control over our own destiny, we
are more committed to success.
Respect
As we work together, sharing successes and failures, we
come to respect each other and to help each other
become worthy of respect.
48. Roles in Scrum
• Product Owner
• Development Team
• Scrum Master
49. Product Owner
• Decides what goes into the product backlog and,
equally important, what does not
• Maintains the product backlog and orders the items in
the backlog to deliver the highest value
• Works with the team and the stakeholders to
continuously improve the quality of the product
backlog and everyone’s understanding of the items it
contains
• Decides which product backlog items to ask the team
deliver in the current sprint
• Decides when to ship the product, with a preference
toward more frequent delivery
50. Scrum Master
• Coach the team
• Keep the team moving forward
• Help everyone understand Scrum
51. Development Team
• Product development (Coding, Testing, etc.)
• Work breakdown
• Task assignment
• Process improvement
• Coordination of tasks
• Detail coordination with other technical
groups
• Individual accountability
57. Analyzing Stakeholders
• Two Dimensional Analysis
– Power / Interest Grid
– Power / Influence Grid
– Influence / Impact Grid
– Influence / Attitude Grid
• Three Dimensional Analysis
– Salience Model (Power, Urgency and Legitimacy)
58. Power / Interest Model
Keep Satisfied
e.g. Functional Manager
HighPower
Low Interest
Monitor
e.g. Backup resources
LowPower
Manage Closely
e.g. Client
Keep Informed
e.g. End-user
High Interest
59. Salience Model
• Power
The ability the project stakeholder has to influence
outcome of an organization, deliverable or project
• Legitimacy
The authority and level of involvement a project
stakeholder has on a project
• Urgency
The time expected by a project stakeholder for
responses to their expectations
63. User Stories
• Written in the following notation:
– As who
– I want what
– So that why
• A User Story has three components (3Cs):
o Card
o Conversation
o Confirmation
73. What is Lean?
• Is a systematic method in which the core idea
is to maximize customer value while
minimizing waste (“Muda”)
• Derived mostly from Toyota Production
System (TPS) or “Just-in-time production”
74. Value and Waste
• Value = What the customer pays money for
• Waste = Everything else!
– Muda ("non-value-adding work")
o Type 1: The non value added activity for end customer but it
is necessary
o Type 2: The non value added activity for end customer which
are not necessary. It is targeted to eliminate this type of
wastage
– Muri ("overburden")
– Mura ("unevenness")
76. Waste Types in SWD
1. Inventory
2. Overproduction
3. Extra Processing
4. Transportation
5. Waiting
6. Motion
7. Defects
1. Partially Done Work
2. Extra Features
3. Repeating the
repeated
4. Handoffs
5. Delays
6. Task Switching
7. Defects
77. Lean Principles in SWD
• Eliminate/Minimize waste
• Amplify learning
• Decide as late as possible
• Deliver as fast as possible
• Empower the team
• Build quality in
• See the whole
78. Lean Tools
• Continuous Flow-of-Value
• Value Stream Mapping
• Bottleneck Analysis
• Single Minute Exchange of Die (SMED)
• Kanban (Pull System)
• Poka-Yoke (Error-proofing)
• 5 Whys
• Kaizen (Continuous Improvement)
• SMART Goals (Specific, Measurable, Attainable,
Relevant, and Time-Specific)
80. Kanban
Kanban is a method for visualizing the flow of
work, in order to balance demand with available
capacity and spot bottlenecks. Work items are
visualized to give participants a view of progress
and process, from start to finish. Team
members pull work as capacity permits, rather
than work being pushed into the process when
requested.
81. Kanban Principles
1. Start with existing process
2. Agree to pursue incremental, evolutionary
change
3. Respect current process, roles, responsibilities
and titles
4. Leadership at all levels
82. Kanban Core Properties
1. Visualize the Workflow
2. Limit Work In Progress (WIP):
Reduce Batch Size of your Efforts (BASE)
Little’s Law:
Cycle Time = Work-in-progress / Average Completion Time
3. Manage Flows
4. Make Process Policies Explicit
5. Use feedback loops
6. Improve Collaboratively
87. DevOps - Definition
is a culture, movement or practice that
emphasizes the collaboration and
communication of both Software Developers
and other Information-Technology
professionals while automating the process of
software delivery and infrastructure changes
88. DevOps - Definition
It aims at establishing a culture and
environment where building, testing, and
releasing software, can happen rapidly,
frequently, and more reliably
89. DevOps - Components
1. Collaboration of People
2. Convergence of Process
3. Creation and Exploitation of Tools
95. Conclusion
• Developing Software is complex!
• There is no Silver Bullet!
• Agility is a journey, not a destination
• If one methodology is a religion, you should not be
religious!
• Learning will always be the #1 bottleneck
• Software Engineering is a key element in Software
Development
96. Conclusion
There is no single development, in either
technology or management technique, which by
itself promises even one order-of-magnitude
improvement within a decade in productivity, in
reliability, in simplicity.
No Silver Bullet - Essence and Accident in Software
Engineering
Frederick P. Brooks, Jr.
University of North Carolina at Chapel Hill