Agile Manifesto Principles

Similar documents
Mike Vincent. mvasoftware.net

Session 11E Adopting Agile Ground Software Development. Supannika Mobasser The Aerospace Corporation

Agile Essentials Track: Business Services

AGILE SOLUTIONS. Agile Basics

Agile 101. Brent Hurley Chief Problem Solver Gira Solutions. Values, Principles

Certified Scrum Developer Program Introduction presented by. Copyright Davisbase LLC

Agile Software Development. Agile Software Development Basics. Principles of the Agile Alliance. Agile Manifesto. Agenda. Agile software development

HELP!!! THE SCRUM MASTER IS THE IMPEDIMENT!

Agile & Lean / Kanban

AGILE methodology- Scrum

Scrum Intro What s in it for me?

AGILE MYTH BUSTERS- THAT S NOT AGILITY!

Continuous integration for BI

Agile at Scale -Beyond SAFe. John B Hudson, B.Sc., PMP, ACP, CSM, SPC

Comparing Scrum And CMMI

Improving Agile Execution in the Federal Government

Applying Agile Principles to Project Management. Tyler Monson PMP, CSM Hiren D. Vashi PMP, PMI-ACP, CSM, CSP

From Theory to Data Product

Introduction to Agile Life Cycles. CSCI 5828: Foundations of Software Engineering Lecture 07 09/13/2016

How to Prepare for and Implement a Project Using Scrum

AHGILE A N D B O O K

TANGIBLE STRATEGIES FOR ALIGNING YOUR PROCESSES WITH AGILE

INTRO TO AGILE PRESENTED BY. Copyright Davisbase LLC

Introduction to Agile and Scrum

Scrum er ikke en religion

Management by Consensus

PMBOK versus Agile (Is Agile the New PMBOK?)

Johanna Rothman. Chapter 1 Why Agile and Lean Approaches Work. Copyright 2017

Assessment: was ist ein High Performance Team

Presented by Only Agile. What is Agile?

Agile Development Methods: Philosophy and Practice. CSCE 315 Programming Studio, Fall 2017 Tanzir Ahmed

Scrum. Software Engineering and. The Waterfall model. The Waterfall model - some arguments. The Waterfall model - some arguments. Time.

Software Processes. With a focus on Agile/Scrum CPSC310 Software Engineering

18-642: Software Development Processes

What is Scrum: An Introduction to the Scrum Framework

Managing Projects of Chaotic and Unpredictable Behavior

software development lifecycle (sdlc) models & agile methods

Agile for Hardware Development

Agile Delivery Framework (ADF)

Standard Work and the Lean Enterprise Net Objectives Inc. All Rights Reserved.

Dr J Paul Gibson, Dept. INF, TSP, Evry, France

Thrivent s Agile Transformation Journey

Software Engineering Lecture 5 Agile Software Development

Application of Agile Delivery Methodologies. Bryan Copeland Energy Corridor Brown Bag Event August 31, 2016

BUILDING BUSINESS CAPABILITY 2017

Agile and Scrum 101 from the Trenches - Lessons Learned

Extreme Programming, an agile software development process

Scrum Team Roles and Functions

Introduction to Agile/Extreme Programming

Burn Up and Burn Down An Overview of Scrum. Neal Kuhn Business Systems Architects, LLC

Software Engineering. Reading. Reasons for modeling a process. Process

Agile Test Plan How to Construct an Agile Test Plan

Part 1. Software engineering Facts. CSC 4181 Compiler Construction Software Engineering Lectures. What is software engineering? What is software?

Scaling Agile to the Enterprise

Professional Scrum Developer with Rudi Larno & Steven Kockelkoren. May 9 May 13, 2011 Belgium (location TBD)

Agile Engineering. for Managers. Introducing agile engineering principles for non-coders

Agile Software Requirements. Matthew Renze Iowa State University COMS 409 Software Requirements

Introduction. Agile overview. 12 Agile Principles

SCRUM - LESSONS FROM THE TRENCHES

Innovation at Intuit. Ian Maple Agile Transformation Leader Intuit Inc. Designing for

Step 1. Empty your cup...

The tension between agile and architecture

Process, Models, Methods, Diagrams Software Development Life Cyles. Part - II

Architecting for Agility. William A. Estrem, Ph.D President

Introduction to Software Life Cycles and Agile. CSCI 5828: Foundations of Software Engineering Lecture 03 09/02/2014

IBM Innovate 2010 Managing Requirements for Your Agile Team

Agile Software Development. Stefan Balbo / Patrick Dolemieux

Did You Pack the 12 Agile Principles on Your Agile Journey?

SCRUM GUIDE SCRUM GUIDE 02. * Agile Software Development with Scrum, Ken Schwaber, Microsoft Press, 2004

Optional Inner Title Slide

Portfolio Management In An Agile World

AGILE LESSONS FROM THE NEW PMBOK. Presented by Eddie Merla, PMI-ACP, PMP

Joe s Unofficial Scrum Checklist

The Software Life Cycle

Agile Software Development

INF5181: Process Improvement and Agile Methods in Systems Development

Scrum. a description. V Scrum Alliance,Inc 1

1. The Case for Agile 2. The Scrum Process 3. Scaling Scrum

Waterfall to Agile: Flipping the Switch Bhushan Gupta Nike Inc. October 9, 2012

Agile Development Doesn t Have to Mean Fragile Enterprise Processes

Architectural Practices and Challenges in Using Agile Software Development Approaches

From Adoption to Transition

Aligning Architecture work with Agile Teams

Processes and Life- Cycles. Kristian Sandahl

Agile Project Management Certificate Program

Are we measuring the right thing?

THE PURPOSE OF TESTING

Quest 2015 Webinar Series:

Sample Exam ISTQB Agile Foundation Questions. Exam Prepared By

Agile, IT, and the Business Community

Success of Agile Environment in Complex Projects

An Introduction to Scrum

A Guide to Critical Success Factors in Agile Delivery

A Case Study. What, When, Why. Agile Systems Engineering. Project Objectives. How to accomplish this??? What is All at Once? Logistical Planning

Agile Tutorial for the Senior Project Class School of Computing and Information Sciences Florida International University

Agile Governance. Governance, Risk and Compliance in the Digital Age

CM MatchPoint Agile. Christoph Heinrich, CM First Plex Track A / Session 17

The Faster Road to Innovation Why Workopolis Went Agile

Scrum - Introduction. Petri Heiramo. Agile Coach, CST

D25-4. How Intertech Uses Agile

Transcription:

Agile Manifesto Principles Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a development team is face to- face conversation. Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. Continuous attention to technical excellence and good design enhances agility. Simplicity--the art of maximizing the amount of work not done--is essential. The best architectures, requirements, and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

The Wisdom of Building Roads and Bridges

BDUF = Big Design Up Front The approach in which the design is to be completed and perfected before implementation starts

Why Big Design Up Front Seems Good Requirements are better understood Thinking things out ahead of time saves headaches Changes to specs are cheaper than changes to code Bugs are cheaper to fix early

Why Big Design Up Front Isn t Good Requirements aren t well known in the first place Requirements change Developers are not able to foresee all problems Some implementation is required to flesh out the details Customers are not able to tell you what they want Only what they don t want after they see it There is no business value in architecture or design!

Lean Architecture Lean Architecture Defers engineering Gives craftsman wiggle room for change Defers implementation (delivers lightweight API s and descriptions of relationships) Lightweight documentation People Collective planning and cooperation End user mental model Classic Software Architecture Includes engineering Tries to limit large changes as dangerous (fear change?) Includes much implementation (platforms, libraries) or none at all (documentation only) Documentation-focused, to describe the implementation or compensate for its absence Tools and notations Specialized planning and control Technical coupling and cohesion

What is Emergent Architecture? The opposite of Big Design Up Front It allows architecture to emerge as you develop Some architectural decisions will need to be made before you write your first line of code Technologies, frameworks, languages, patterns, practices Most of these decisions will be hard to change later

Where are you today? BDUF Emergent Waterfall Some DUF Cowboy

So, who designed this thing anyway?

How much do you need and when? You need to strike a balance, find the right time and effort for your project Some upfront planning is critical for large, complex projects Ongoing thinking, prototyping, and architecture experiments are important too Choose the last responsible moment Just enough just in time

This has worked for me One day architecture session Everyone with something to contribute in the room Whiteboards that will persist for life of development Update as needed What we need Infrastructure What we have to integrate with How big is it? Works for greenfield & brownfield projects/products

Some Qualities of Agile Architecture Pragmatic, fit for purpose Modular Strive for simplicity No unintended redundancy No overlapping functionality Supports the important ilities Sustainable Provides business value

Fit for Purpose The solution should be suitable for the intended purpose Defined by title, user story, and acceptance criteria Example Title: All cars must stop at One Microsoft Way User Story: As the intersection safety officer I want all cars approaching One Microsoft Way to stop so no geek pedestrians get injured Acceptance Criteria: solution should be universally understood, should be available 24x7, should have a low TCO

It s all About Business Value The Scrum Guide says that every sprint must generate a Done, useable, and potentially releasable product increment Therefore: It is not ok to have an architecture sprint It is not ok to have an infrastructure sprint There is no such thing as sprint 0 And while we re on the topic: there s no such thing as done done

Business Value and Priority Let the customer value and prioritize the what, not the how Architecture and infrastructure decisions are the how Architecture exists to serve the team, not the other way around Quality attributes (the ilities ) become acceptance criteria or entries on the Definition of Done Let the team (not the customer) decide what is fit for purpose

Specifying Acceptance Criteria This can be done incrementally Disambiguity 1. Initially, a story can just have a title 2. Later, the story can be updated to include a more detailed description 3. Later, the story can be updated to include detailed acceptance criteria 4. Later, the story can be linked to a test case with more detailed criteria 5. Later, the test case can have detailed, manual steps specified 6. Manual tests can be recorded and played-back as automated tests

Architecture is part of the backlog A good Scrum/Agile product backlog should include: Features Requirements Enhancements Bugs Architecture Knowledge acquisition

Agile Models Intended to communicate Minimal time invested Often informal Often discarded Little m

Risk Types of Project Risks Schedule & budget Operational execution resources communications Technical too complex poorly defined misunderstood Reduce, Mitigate Risk Develop incrementally Integrate often Inspect and adapt Design innovate if needed

Spikes A spike solution is a simple program to figure out answers to tough technical or design problems It only addresses the problem under examination and ignores all other concerns Most are not good enough to keep, expect it to be a throw away Typically within the time-box of a sprint

An Architect is part of the team No ivory towers Involved as a member of the development team Hands-on, do what s needed Architectural leadership Mentors others Engaged with the business

Communities of Practice A group of people who share a craft and/or a profession Meet regularly, collaborate for integration and improvement

Developing architecture The team performs design as part of the sprint to provide a solid basis to support their sprint goal Some sprints (i.e. sprint 1) will be more design-heavy than others The team should keep this in mind as they make their forecasts Every sprint delivers potentially shippable increment(s) of functionality

Think in Slices Not Layers Layers = delayed value Slices = value every Sprint

Make Smart Decisions Leverage popular, maintainable, and testable architectures, frameworks, and patterns Build in the flexibility to adapt to reasonable changes without building a meta-product Don t gold plate

Don t Over-Architect the Product Build at least one increment of business functionality every sprint Build enough of the architecture and design to support that business functionality Build adequate architecture and design to meet any non-functional requirements Solve today s problem today, tomorrow s problem tomorrow

Nature is not Linear There are boundaries where conditions change Boundaries likely have chaotic behavior Nature is not linear, nor is software

Your Architecture Will Change You ll encounter boundaries Handle today s problems today and tomorrow s problems tomorrow

Minimize Documentation Create just enough documentation as a basis of discussion Choose whiteboards over electronic media Models can help you Understand and visualize a system, application, or component Models can hurt you Don t model what s not in scope for that sprint Don t become a slave to the model Let the Team decide if and when to use models Burn them at the earliest responsible time

When Should you Maintain Documentation? When there is business value in that documentation i.e. an ISV providing API docs When the documentation can be auto-generated or serves additional technical purposes i.e. generating Sequence diagrams i.e. using Layer diagrams for validation

Layer Diagrams Layer diagrams allow you to visualize the logical architecture of your system A layer diagram organizes the physical artifacts in your system into logical, abstract groups called layers These layers help you identify, describe, and differentiate the kinds of tasks that those artifacts perform More than just pretty pictures, these diagrams can be used for ongoing validation

Effective Emergent Architecture Use Principles, Patterns, and Practices Refactor Test early, often, and automatically Application Lifecycle Management Deploy frequently

Principles, Patterns, and Practices Use popular Principles effectively Coupling, cohesion, composition, encapsulation, Use popular Patterns effectively GoF,.NET, Microsoft P&P, MVC, MVP, MVVM, Use popular Practices effectively Behavior-Driven Development (BDD) Domain-Driven Design (DDD) Liskov Substitution Principle (LSP) Defensive Programming Don t Repeat Yourself (DRY) Open-Closed Principle (OCP) Dependency Injection (DI) Interface Segregation Principle (ISP) Separation of Concerns (SoC) Dependency Inversion Inversion of Control (IoC) Single Responsibility Design by Contract (DbC) Principle of Least Privilege (PLP) Test-Driven Development (TDD) And my favorite: YAGNI (You Ain t Gonna Need It)

Refactoring A disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior You should refactor Little and often At the unit as well as architecture level Using automated unit tests, CI, and code coverage Using automated regression tests Using modern tools

Know when you are Done Done defines when an increment of product functionality is potentially shippable Definition of Done A simple, auditable checklist owned by the team It can be influenced by organizational standards and specific requirements of the product or release Can be maintained In a document or wiki In your ALM tooling

Example: A Simple Definition of Done Designed Refactored Coded No clever techniques Code review User Acceptance tested Integration tested Regression tested Performance tested Security tested Design review Unit tested Functional tested Unit test harness

Be Transparent Everyone should be able to inspect The team s definition of Done The product backlog (user stories) The sprint backlog (tasks) The impediments Deployments Test results Bugs Everyone should adapt to these inspections

Emergent Architecture is Important The best architectures, requirements, and designs emerge from self-organizing teams. Make it a part of your whole product and application lifecycle

Burndown Deliver business value every Sprint Architects are active members of the development teams Leverage smart people and experience Big design up front is waste Delay requirements until last responsible moment Only keep documentation if it delivers business value Choose popular principles, patterns, practices Inspect and adapt every sprint

Learning More

For More Info https://www.scrum.org/resources/nexus http://www.scaledagileframework.com/agile-architecture/ http://www.mountaingoatsoftware.com/blog/agile-designintentional-yet-emergent http://www.infoq.com/news/2013/08/architecture-scrum http://blog.accentient.com/emergent-architecturepresentation-at-teched-2011/ http://www.slideshare.net/rwirfs-brock/why-we-needarchitects-and-architecture-on-agile-projects

Thank You! Mike Vincent mikev@mvasoftware.com www.mvasoftware.net