How To Design And Build In An Agile Project

Similar documents
Introduction to Agile and Scrum

Waterfall to Agile. DFI Case Study By Nick Van, PMP

Certified ScrumMaster (CSM) Content Outline and Learning Objectives January 2012

Practical Agile Requirements Engineering

Certified ScrumMaster (CSM) Content Outline and Learning Objectives January 2012

D25-2. Agile and Scrum Introduction

LEAN AGILE POCKET GUIDE

EPL603 Topics in Software Engineering

Software processes that are:

A MODEL FOR RISK MANAGEMENT IN AGILE SOFTWARE DEVELOPMENT

Changing Roles and Responsibilities from Traditional project management to Agile project management

Agile So)ware Development

Agile Systems Engineering: What is it and What Have We Learned?

Agile Projects 7. Agile Project Management 21

WE ARE FOCUSED ON HELPING OUR CLIENTS WORK SMARTER AND MORE EFFICIENTLY SO THAT TOGETHER, WE CAN EMPOWER PEOPLE TO DELIVER GREAT RESULTS.

Agile extreme Development & Project Management Strategy Mentored/Component-based Workshop Series

The Agile Manifesto is based on 12 principles:

AGILE SOFTWARE DEVELOPMENT. BY Sysop Technology Aurangabad

Moderator: Albert Jeffrey Moore, ASA, MAAA. Presenters: Albert Jeffrey Moore, ASA, MAAA Kelly J. Rabin, FSA, MAAA Steven L. Stockman, ASA, MAAA

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

Agile with XP and Scrum

Executive Guide to SAFe 24 July An Executive s Guide to the Scaled Agile Framework.

Comparative Study of Agile Methods and Their Comparison with Heavyweight Methods in Indian Organizations

A Glossary of Scrum / Agile Terms

A Viable Systems Engineering Approach. Presented by: Dick Carlson

Agile Models. Software Engineering Marco Scotto Software Engineering

Development. Lecture 3

Software Development Methodologies

Glossary SAFe 4.0 for Lean Software and Systems Engineering

SECC Agile Foundation Certificate Examination Handbook

Issues in Internet Design and Development

Agile processes. Extreme Programming, an agile software development process

Introduction to Agile Software Development Process. Software Development Life Cycles

Nova Software Quality Assurance Process

Transitioning Your Software Process To Agile Jeffery Payne Chief Executive Officer Coveros, Inc.

Creating a High Maturity Agile Implementation

Agile Development and Software Architecture: Understanding Scale and Risk

in O&M/Sustainment: What s Different? Paul E. McMahon Principal, PEM Systems

Software Development Life Cycle (SDLC)

Learning and Coaching Agile Methods. Görel Hedin Computer Science Lund University, Sweden

Chapter 6. Iteration 0: Preparing for the First Iteration

Agile and lean methods for managing application development process

4180: Defined Processes, Evidence, and Rescuing Corporate Knowledge: Achieving Standards Compliance in Agile and Lean Environments

RUP and XP, Part I: Finding Common Ground

Software Quality and Agile Methods

Agile Scrum Workshop

Software Development Going Incremental, Iterative and Agile:

EXIN Agile Scrum Foundation

Deep Agile Blending Scrum and Extreme Programming. Jeff Sutherland Ron Jeffries

Agile software development

Case Study on Critical Success Factors of Running Scrum *

Impact of Agile Methodology on Software Development

Applying Lean on Agile Scrum Development Methodology

Lean Software Development and Kanban

Bottlenecks in Agile Software Development Identified Using Theory of Constraints (TOC) Principles

Scrum includes a social agreement to be empirical as a Team. What do you think an empirical agreement is?

Using Simulation to teach project management skills. Dr. Alain April, ÉTS Montréal

Agile and lean methods for managing application development process

Basic Trends of Modern Software Development

Agile Development. Perspectives from the Texas Legislative council

Mariusz Chrapko. Before: Software Quality Engineer/ Agile Coach, Motorola, Poland. My Public Profile:

Software Engineering and Scientific Computing

AGILE SOFTWARE DEVELOPMENT: INTRODUCTION, CURRENT STATUS & FUTURE Pekka Abrahamsson Jyväskylä

Agile and Secure: Can We Be Both?

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

InfoAdvisors. Is your Data Modeling Workflow Agile or Fragile?

Agile Based Software Development Model : Benefits & Challenges

PROCESS OF MOVING FROM WATERFALL TO AGILE PROJECT MANAGEMENT MODEL

Agile Software Development Methodologies and Its Quality Assurance

An Agile Project Management Model

Agile development of safety-critical software while meetings standards' requirements

CS435: Introduction to Software Engineering! " Software Engineering: A Practitioner s Approach, 7/e " by Roger S. Pressman

Agile Notetaker & Scrum Reference. Designed by Axosoft, the creators of OnTime the #1 selling scrum software.

Software Engineering and Scientific Computing

Software Development Centre

#POvsPM. John Milburn, Pragmatic Marketing David West, CEO Scrum.org

Agile Software Development

In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:

"Bezpieczny Projekt"

Successfully Doing TOGAF in a Scrum Project

The Blending of Traditional and Agile Project Management

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

Agile Software Development in the Large

Adopting Agile Testing

A Capability Maturity Model (CMM)

How To Understand The Software Process

An Introduction to Extreme Programming

The Basics of Scrum An introduction to the framework

Chapter 12. The Product Coordination Team

AGILE SOFTWARE DEVELOPMENT

Agile Project Management

Sometimes: 16 % Often: 13 % Always: 7 %

Is PRINCE 2 Still Valuable in an Agile Environment?

Benefits of Test Automation for Agile Testing

Role of the Business Analyst in an Agile Project

In this Lecture you will Learn: Systems Development Methodologies. Why Methodology? Why Methodology?

Processes in Software Development. Presented by Lars Yde, M.Sc., at Selected Topics in Software Development, DIKU spring semester 2008

Neglecting Agile Principles and Practices: A Case Study

CHALLENGES AND WEAKNESSES OF AGILE METHOD IN ENTERPRISE ARCHITECTURE

EXIN Agile Scrum Foundation. Sample Exam

Transcription:

Requirements Analysis and Emergent Design in Agile Software Development Practices Bruno Rossi Department of Computer Systems and Communications, Lasaris (Lab of Software Architectures and Information Systems) Masaryk University, Brno

Introduction Agile Methodologies (AMs) are based on an incremental process that gives value to the customer during each iteration There is less up-front planning compared to traditional techniques With respect to the architecture of the system, agile methodologies describe it as emerging design, that is the architecture of the system will emerge from several iterations over time 2/39

Outline I will start delving into architectural concerns in traditional software development I will then discuss some of the principles of the agile methodologies, and how those can lead us towards principles for architecture in AMs I will then provide some practical information about emerging design process 3/39

The Software Architecture In early computing days, algorithms and data structures constituted the major design focus As size of software systems started growing in the 70's and 80's, it appeared evident that the organization of a software system - the software architecture deserved more attention Composition of design elements, scaling & performance, and the selection among design alternatives all became relevant 4/39

The Software Architecture The architecture of a software system is about the structure of a system in parts (components, modules, files, objects, classes) deals with the parts, their properties, and their mutual relations facilitates the comprehension of the system supports the communication among the different stakeholders of the development process Non-functional requirements Functional requirements Architecture Design 5/39

The Software Architecture An architecture is formed by several structures (Bass, Clemens, Katzman, 1998) that we call projections It can be useful to analyze architectures at different levels of abstraction, from different points of view: package, class, and object, physical For each of these points of view (we call them projections ) it is possible to find so called architectural styles This is similar to the view in IEEE1471 Standard Image source: wikimedia 6/39

An Analogy Very often the metaphor that is given for the software architecture is the one of buildings architecture common in traditional engineering Krak des Chevaliers, Syria 7/39

An Analogy Very often the metaphor that is given for the software architecture is the one of buildings architecture common in traditional engineering 8/39

An Analogy Let's look as some different architectures of castles Veveří Castle Why does Krak des Chevaliers have such a base compared to castles in Czech Republic? How did the engineers came out with such idea? Pernštejn Castle Bouzov Castle 9/39

An Analogy Let's look as some different architectures of castles Veveří Castle It turns out that eartquakes are quite common in Syria, as such the base could help for the stability of the building This part of the structure has been added after the castle was built Pernštejn Castle Bouzov Castle 10/39

How do we distinguish Design from Architecture?(1/3) Given the difference seen among design ( functional requirements) and architecture ( non-functional requirements) in theory, practically it can be sometimes difficult to see it in practice Example, this is the way in which we can structure a Spring application Handler Mapping 2 Request 1 3 Dispatcher Servlet Model & View 6 Controller 4 5 View Resolver View 11/39

How do we distinguish Design from Architecture?(2/3) Changing this type of structure is an architectural choice As we will need to change many classes and configurations, plus the change is really a non-functional one Handler Mapping 2 Request 1 3 Dispatcher Servlet Model & View 6 Controller 4 5 View Resolver View 12/39

How do we distinguish Design from Architecture?(3/3) Looking at the design perspective changing the way in which our controllers are designed is more a design decision: Handler Mapping 2 GeneralController Request 1 3 Dispatcher Servlet Model & View 6 Controller 4 5 View Resolver Controller View 13/39

Quick Recap on AMs (1/2) Agile Development practices derived from the failure of plan-based development processes and the idea to apply lean practices from industry to software development Lean software development is based on a set of principles Eliminate waste Amplify learning Decide as late as possible Deliver as fast as possible Empower the team Build integrity in See the whole 14/39

Quick Recap on AMs (2/2) Eliminate waste : everything that does not add value to the customer is discarded as waste (muda) Amplify learning: the development process is a learning process, short iterations and learning are key factors Decide as late as possible: to counteract possible changes of requirements Deliver as fast as possible: as in the just-in-time production system Empower the team: more bottom-up approach, developers are not mere resources Build integrity in: the customer must perceive integrity of the system, refactoring is a way to build simplicity into the process See the whole: in short, "Think big, act small, fail fast; learn rapidly" 15/39

The Agile Manifesto relation to the software architecture? Source: agilemanifesto.org 16/39

The Agile Manifesto relation to the software architecture? This is what we have from the Agile Manifesto underlying principles Source: agilemanifesto.org 17/39

Emergent Design What is an emergent design? An emergent design is a proper program structure that derives directly from the coding process The idea is that by focusing on the problem at hand, a proper design will emerge naturally Well is it the same as an emergent architecture? Leffingwell reported the 8 principles of the software architecture in AMs * D. Leffingwell, Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, 1st ed. Addison-Wesley Professional, 2011. 18/39

The 8 Principles of the Agile Architecture Principle 1: the teams that code the system also design the system Driven by the Agile Manifesto (the best architectures, requirements, and designs emerge from self-organizing teams) Teams must be considered accountable for the decisions taken, not those taken by somebody else! Source: D. Leffingwell, Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, 1st ed. Addison-Wesley Professional, 2011. 19/39

The 8 Principles of the Agile Architecture Principle 2: Build the simplest architecture that can possibly work Driven by the Agile Manifesto (Simplicity - the art of maximizing the amount of work not done - is essential) Source: D. Leffingwell, Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, 1st ed. Addison-Wesley Professional, 2011. 20/39

The 8 Principles of the Agile Architecture Principle 3: When in doubt, code it or model it out Having a visible process by means of stories and prototypes allows all the stakeholders to see the reasoning that is behind the architectural building You can use the 4+1 views to model, but remember about throw-away prototyping! Source: D. Leffingwell, Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, 1st ed. Addison-Wesley Professional, 2011. 21/39

The 8 Principles of the Agile Architecture Principle 4: They Build It, They Test It It is the responsibility of the development teams themselves to develop, test, and maintain a system-testing framework that continually assesses the system s ability to meet its functional and non-functional requirements. Evolving the architecture means to evolve also the testing framework. A key principle of agile methodologies is that if the team designs one part and builds it, then the team must also test it Source: D. Leffingwell, Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, 1st ed. Addison-Wesley Professional, 2011. 22/39

The 8 Principles of the Agile Architecture Principle 5: The bigger the system, the longer the runway The assumption of a delivery commitment depends on how much reliable the foundations are So there must be an architectural runway that constitutes a baseline for solid iterations without it missed deadlines are going to happen Source: D. Leffingwell, Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, 1st ed. Addison-Wesley Professional, 2011. 23/39

The 8 Principles of the Agile Architecture Principle 6: System architecture is a collaboration between roles system architects work with the team technical leaders to define the design spikes they will be use to get the common architectural view Product Manager Product Vision Dev team stakeholders System Architect Product Owner Value Stories Design Spikes Tech Lead/ Architect Architecture Vision Source: D. Leffingwell, Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, 1st ed. Addison-Wesley Professional, 2011. 24/39

The 8 Principles of the Agile Architecture Principle 7: There is no monopoly on innovation. One way to foster innovation at the team level is by managing the backlog to have iterations that include spikes to explore new ideas Release Candidate Release Hardening Innovation Iteration iteration iteration iteration Iteration Source: D. Leffingwell, Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, 1st ed. Addison-Wesley Professional, 2011. 25/39

The 8 Principles of the Agile Architecture Principle 8: Implement architectural flow Just as with the stories in the backlog, also for the architectural part there must be an active management, that is the process must be visible and transparent, and all must be continuously updated to maintain a flow for the architectural decisions This is a key part: how do we maintain the system architecture if we need to perform changes? One of the key aspects of AMs is to always have a running system Source: D. Leffingwell, Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, 1st ed. Addison-Wesley Professional, 2011. 26/39

Principle 8 implement architectural workflow In agile, we do not branch and then merge later, we need to apply continuous refactoring supported by unit tests... Still, for some of the largest architectural stories, implementing them in the context of refactoring sessions can be impossible Case A, big but incremental, the system always runs Case B: Big, but Not Entirely Incremental the System Takes an Occasional Break Case C: Really Big and Not Incremental; the System Runs When Needed; Do No Harm Source: D. Leffingwell, Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise, 1st ed. Addison-Wesley Professional, 2011. 27/39

Agility vs Architectural decisions According to Kruchten, there is a tension between adaptation versus anticipation It all goes down to the following consideration... Agile: deciding at the last responsible moment with the fear that Architects may anticipate too much decisions but many points of view need to be considered Abrahamsson, P.; Babar, M.A.; Kruchten, P., "Agility and Architecture: Can They Coexist?," Software, IEEE, vol.27, no.2, pp.16,22, March-April 2010 28/39

Agility vs Architectural decisions Semantics of architecture What do we mean by architecture: where is the border between architecture, design and requirements constraints? Scope How much is the activity level needed for the architecture? it depends on the project context Age of system Rate of change Governance Size Criticality Context Team Distribution Business Model Stable Architecture Abrahamsson, P.; Babar, M.A.; Kruchten, P., "Agility and Architecture: Can They Coexist?," Software, IEEE, vol.27, no.2, pp.16,22, March-April 2010 29/39

Agility vs Architectural decisions Lifecycle That is when do architectural decision happen? they need to be placed in early phases, agile needs a way to cope with such decision such as not overplanning Role On larger systems the architect play many roles, while in smaller everyone can be an architect Abrahamsson, P.; Babar, M.A.; Kruchten, P., "Agility and Architecture: Can They Coexist?," Software, IEEE, vol.27, no.2, pp.16,22, March-April 2010 30/39

Agility vs Architectural decisions Documentation What about the different ways to represent the software architecture? the key here is communication and to provide what is really needed Methods Many architectural approaches follow cycles similar to SCRUM integration should not be too difficult Abrahamsson, P.; Babar, M.A.; Kruchten, P., "Agility and Architecture: Can They Coexist?," Software, IEEE, vol.27, no.2, pp.16,22, March-April 2010 31/39

What does current research report? There is not much, if we look into scaling agile for regulated environments Cawley et al. [10] with a systematic review identified 21 relevant works, of which 14 were peer-reviewed papers And one interesting paper is the one of Fitzgerald et al. about an adapted version of SCRUM still not much is discussed about architecture What is evident is that the process need to be adapted, taking a standardized agile approach will lead to failure as reported by Kruchten Scaling Agile Methods to Regulated Environments: An Industry Case Study O. Cawley, X. Wang, and I. Richardson, Lean/agile software development methodologies in regulated environments state of the art, in Int l Conf. Lean Enterprise Software and Systems, LNBIP 65, 2010. 32/39

Personal experience I will provide some considerations from a small development project to manage strategical planning based on a web platform Codebase ~7000 Java LOCs plus JSP and Javascript code ~5 developers, 1 year time No software architect external to the team Developed by students, period 2010-2011 It can provide a sort of case study for the emergence of the software architecture, with some lessons learnt 33/39

PE emergence of architecture How did the architecture emerge? Two detailed ways Agreement within the team The frameworks and technologies used imposed some architectural choices (e.g. security layers) Major lesson learnt: there must be a senior developer (in absence of an architect) that takes into account the architectural integrity of the system warning other team members about parts of the system that violate the architectural view common to the team 34/39

PE architectural integrity How to maintain architectural integrity over time? There are some key points: Stakeholders must be aware of the fact that some iterations are for innovation and refactoring Must convince the stakeholders about the importance of these iterations Without a testing system in place mere architectural reconstruction is not possible but testing architectural concerns is way more difficult When you start losing the architectural runway, changes will require more code duplication, more time, and as well lead to more bugs (if we assume that more code leads to more bugs) 35/39

PE - Communication How to communicate the architecture to other team members? The composition of the teams is very likely to change over time generation of architectural views from the code is a key part in letting new team members understand the current system's architecture Throw away modeling is not a problem in this case, and typically initial models if not updated can lead to problems 36/39

PE Refactoring Sessions Refactoring sessions If refactoring sessions are not allowed by the stakeholder, the system architecture will start becoming a sort of compromise This is especially relevant if you have changing requirements and quite large system This is highly effective for design but what about architecture? 37/39

Conclusions Many practices of AMs are of paramount importance: refactoring, continuous integration, collective code ownership without these practices it is impossible to build a proper architectural runaway still for contexts in which architecture is important, this is not enough Experience shows that using standardized agile processes in architecture heavy domains leads to failures we need to be agile and adapt agility balancing adaptation vs anticipation We need to understand that the agile process in place needs to be adapted to take into account the architectural concerns this depending on the context 38/39

Questions Thank you! I will be happy to answer your questions, for additional enquires brossi@mail.muni.cz 39/39