Impact of Agile Methodology on Software Architecture

Slides:



Advertisements
Similar presentations
Scrum in 10 slides.
Advertisements

International Scrum Institute
What is Agile? Agile is a software methodology based on iterative and incremental development, where requirements and solutions evolve through collaboration.
Agile Project Management with Scrum
SCRUM John Drew. SCRUM - overview Scrum is a project management discipline that has evolved since the early 1990s to deliver software that meets business.
NAUG NAUG Knowledge Evening – th February 2007.
Scrum CS These slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Morning – 9am Getting Started Agile Manifesto Values & Principles Scrum Framework ~~ 10:40 to 11:00 Break ~~ Scrum Roles Backlog Grooming Estimation.
Rules of the Game  Loosely based upon the TV show, “Who wants to be a millionaire.®”  Once the question is read, you will have 30 seconds to discuss.
Agile development By Sam Chamberlain. First a bit of history..
Introduction to Agile.
Dr. Tom WayCSC Software Processes CSC 4700 Software Engineering.
1 Agile Methodology & Programming Ric Holt July 2009.
Software Engineering- Scrum 徐 瑋 Alen 林芳瑜 Flora 1.
Current Trends in Systems Develpment
When is Agile the Best Project Management Method? Lana Tylka.
Copyright © 2012 by Mark J. Sebern Scrum Overview (from
Computer Science and Software Engineering© 2014 Project Lead The Way, Inc. Software Design Process.
Scrum Santhosh Srinivasan. Outline What is Scrum What is Scrum Why Scrum Why Scrum Scrum Practices Scrum Practices Why Scrum works Why Scrum works Pros.
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
Copyright © by Mark J. Sebern Software Engineering Process I SE 2800.
Intelligence and Information Systems 1 3/17/2004 © 2004 Raytheon Company USC/CSE Executive Workshop on Agile Experiences March 17, 2004 A Raytheon Agile.
Introduction to Agile. Introduction Who is this guy?
Industrial Software Development Process Bashar Ahmad RISC Software GmbH.
Managing Agile Software Development Teams Using Scrum AKA: Wrangling Developers for Fun and Profit!
Agile Methodology. -Dhanashree Kumkar -Plus91 Technologies.
Informed Traveler Program and Applications Agile / Scrum Overview Jerry Inberg.
The Scrum Framework Presented by Somnath Ghosh Scrum Practitioner 24 hours weeks.
CMPS 116 Software Design Project. Introduction Instructor: Dr. Huahai Yang IBM Research – Almaden Former SUNY Albany Programming.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(3)
Copyright © Curt Hill Scrum Software Development Paradigms What is a Scrum?
Utilize Agile Project Management for GIS Projects Jennifer Prather and Lana Tylka.
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Embedded Systems Software Engineering
Agile Methodology and Scrum
CEN 4010 Intro to Software Engineering Professor Alex Roque
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Agile Project Management
AGILE SCRUM METHODOLOGY
Scrum.
Agile Training Day 2 November 17, 2015.
CSC 355 – Newer Approaches to System Development Life Cycles & Processes, Spring 2017 March 2017 Dr. Dale Parson.
Wael Ellithy, Ph.D. Arx ICT
SCRUM.
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Product Sprint Backlog Backlog Up to 1 Month The Scrum Framework
Spring 2013 Advising Starts this week.
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Agile Software Development Brian Moseley.
By: By: Agile Scrum Master Online Training.
Product Backlog List of things that needs to be done to make the product come into existence 
CSCE 741 Software Process Lecture 04 Availability
Software Engineering (CSI 321)
Project Management and the Agile Manifesto
Scrum MODULE 3 – Part 3.
How to Successfully Implement an Agile Project
Teaching slides Chapter 1.
Summarizing Our Models to Date
Johanna Rothman Know What “Done” Means Chapter 11
Scrum Overview.
Management Fundamentals: Scrum 101
CSCE 741 Software Process Lecture 04 Availability
Introduction to Agile Blue Ocean Workshops.
Software Process Models
Adjective: Able to move quickly and easily. Principles and Values
Scrum in 10 slides by Pierre Mengal – Scrum In Ten Slides v2.0 is licensed under a Creative Commons Attribution-NoDerivs 3.0 Unported.
Software Development In Agile
Scrum in Action.
Agile, Scrum and CMMI Methodologies
Presentation transcript:

Impact of Agile Methodology on Software Architecture Hessam Modaberi | Software Architecture course

Agenda 01 | Agility through Scrum Framework 02 | Architectural Agility 03 | Dependency Injection

01 | Agility through Scrum Framework

Why Agile? Two potential waterfall problems Freeze Requirements Building an architecture for emergent problem space is difficult Considerable effort before delivering any feature to user

What is Agile development ? Agile SDLC model is a combination of iterative and incremental process model Requirements

Definition of Scrum Scrum (n): A framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value.

Scrum Theory Scrum is founded on empirical process control theory, or empiricism Three pillars: Transparency (definition of DONE) Inspection Adaptation

The Sprint The heart of Scrum, a time-box of one month or less during which a “Done”, useable, and potentially releasable product Increment is created. (Iteration)

Product Backlog and Spring Backlog PBI The Product Backlog lists all features, functions, requirements, enhancements, and fixes that constitute the changes to be made to the product in future releases. The Sprint Backlog is the set of Product Backlog items selected for the Sprint. Product Backlog

Scrum Team Product Owner - is the sole person responsible for managing the Product Backlog Development Team – 3 to 9 team members Scrum Master - is responsible for ensuring Scrum is understood and enacted Two Scrum team characteristics : self-organizing cross-functional

Scrum Events Sprint Retrospective All events are time-boxed events Duration: 3 hours All events are time-boxed events One month sprint Spring planning Duration: 8 hours Sprint Review Duration: 4 hours Daily Scrum Duration: 15 min Input to this meeting: Product backlog Latest product increment Capacity of dev team Any impediments?

02 | Architectural Agility

The Challenge The critical role of the underlying architecture is often overlooked Enhancement Agility: the ability to keep adjusting the product to emerging needs through the addition of new features. Agile approach has its shortfalls stemming mainly from dependency analysis: Individual stories cannot be regarded in isolation Stories have dependencies upon the architectural elements of the system.

Problem Demonstration (Example) Authentication and Authorization with ACL, leads to change Security Arc component Business need (Sprint 1): System users have different accesses based on their roles

Problem Demonstration (2) Business need changes (Sprint 2): Users have access based-on their permissions

Result of preceding approach Too-familiar situation features gradually take longer and longer to implement code becomes more and more buggy Eventually, the system must be scrapped and rewritten “from scratch”

Architectural Agility A Thesis from Carnegie Mellon University and Software Engineering Institute (SEI) Architectural Agility allows architectural development to follow a “just-in-time” model. A steady and consistent focus on continuing architectural evolution in support of emerging customer-facing features (instead of myopic focus on user stories).

Architectural Agility (2) Without Architectural Agility, Enhancement Agility cannot be reliably sustained. Truly optimizing user value requires teams to look ahead and anticipate future needs The architecture should not over-anticipate emergent needs, delaying delivery of user value and risking development of overly complex and unneeded architectural constructs

Architectural Agility (3) Architectural anticipation must be “informed. “informed anticipation” can be achieved through: Dependency Analysis Real-option Analysis Technical debt

Agile Release Planning Architectural Elements in Agile Iteration planning

Architecture Dependency Management Dependency Structure Matrix (DSM) Domain Mapping Matrices (DMM)

Real-option Analysis and Technical debt Management Technical debt: The extra development work that arises when code that is easy to implement in the short run is used instead of applying best overall solution. In agile release planning, real options analysis is a way to look at the allocation of architectural elements to releases based on their dependencies from the perspective of future value.

Architecture Heuristics while not required for the current release, should potentially be incorporated into the current release in anticipation of future stakeholder goals.

03 | Dependency Injection

Why Dependency Injection? Often, Agile projects are rapidly fielded! Ward Cunningham: “ Dependency injection is a key element of agile architecture”

Data Access Object (DAO) Presentation CostomerService addCustomre(..) Has following dependencies : createCustomer(..) createAuthority(..) doTask3(..) doTask4(..) Business Layer Service CustomerDao createCustomer(..) Data Layer Data Access Object (DAO) AuthorityDao createAthority(..) DB

Dependent Classes Bridge Design Pattern Interface A Class 2 implements Class 1 uses class 2 through Interface A Class 1 Class 2 Class 1 depends on Class 2 Server Client These two classes are loosely coupled classes

Dependency Injection Explanation public class TextEditor { private SpellChecker spellChecker; public TextEditor() { spellChecker = new SpellChecker(); }

Dependency Injection Explanation (2) public class TextEditor { private SpellCheckerInterface spellChecker; public TextEditor(SpellCheckerInterface spellChecker ) { this.spellChecker = spellChecker; }

DI in Java Spring IoC Container Context Dependency Injection (Oracle Standard)

Thank you!