Principles and Techniques of Evolutionary Architecture Rebecca Parsons Chief Technology Officer ThoughtWorks.

Slides:



Advertisements
Similar presentations
Harithan R velagala CSE 532 TERM PAPER. First what is a service? A service is a reusable component which transforms business data. It is self contained.
Advertisements

Test Automation Success: Choosing the Right People & Process
© 2009 The MITRE Corporation. All rights Reserved. Evolutionary Strategies for the Development of a SOA-Enabled USMC Enterprise Mohamed Hussein, Ph.D.
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
Software Development Methodologies 1. A methodology is: A collection of procedures, techniques, principles, and tools that help developers build a computer.
Agile Center of Excellence. Richard K Cheng Agile is just a high level concept.
Agile Architecture Prabhu Venkatesan for COMP-684.
Alternate Software Development Methodologies
Agile development By Sam Chamberlain. First a bit of history..
PRJ270: Essentials of Rational Unified Process
8 September Your Architecture First level diagram: how components fit together.
IS6112 Application Modelling and Design Introduction.
- 1 - Component Based Development R&D SDM Theo Schouten.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
® IBM Software Group © 2007 IBM Corporation Achieving Harmony IBM's Platform and Methodology for Systems Engineering and Embedded Software Development.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Software engineering Process models Pavel Agejkin.
© 2006, Cognizant Technology Solutions. All Rights Reserved. The information contained herein is subject to change without notice. Automation – How to.
An Overview of Agile L e a d i n g C h a n g e T h r o u g h C o l l a b o r a t i o n.
Enterprise Systems & Architectures. Enterprise systems are mainly composed of information systems. Business process management mainly deals with information.
UML - Development Process 1 Software Development Process Using UML (2)
CSI315 Web Technology and Applications
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Chapter 3 – Agile Software Development Lecture 1 1Chapter 3 Agile software development.
1 IBM Software Group ® Mastering Object-Oriented Analysis and Design with UML 2.0 Module 1: Best Practices of Software Engineering.
Software Engineering Modern Approaches
Page 1 MODEL TEST in the small GENERALIZE PROGRAM PROCESS allocated maintenance changes management documents initial requirement project infrastructure.
The Software Development Process Chapter 2 Best Practices.
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Teaching material for a course in Software Project Management & Software Engineering – part II.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem Darwish.
Role-Based Guide to the RUP Architect. 2 Mission of an Architect A software architect leads and coordinates technical activities and artifacts throughout.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
Systems Design Approaches The Waterfall vs. Iterative Methodologies.
Assessing the influence on processes when evolving the software architecture By Larsson S, Wall A, Wallin P Parul Patel.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Chapter 3 Agile Software Development (1/2) Yonsei University 2 nd Semester, 2015 Sanghyun Park.
Service Oriented Architecture (SOA) Dennis Schwarz November 21, 2008.
Design Process for Architecture. Architectural Lifecycle Not all lifecycle plans support Architecture! It is hard to achieve architecture based design.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Process Presentation Kin Wan Li, Ashley Zoch, Mevesh Gopee, Damian Ridgwell, Edwin Lusala,
ANKITHA CHOWDARY GARAPATI
Repurpose, Compose, Profit— Next Generation SOA Infrastructure William Cox Cox Software Architects LLC Copyright 2008.
Software Architecture Evaluation Methodologies Presented By: Anthony Register.
Scenario-Based Analysis of Software Architecture Rick Kazman, Gregory Abowd, Len Bass, and Paul Clements Presented by Cuauhtémoc Muñoz.
Chapter 2: Testing in Software Life Cycle MNN1063 System Testing and Evaluation.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Overview of RUP Lunch and Learn. Overview of RUP © 2008 Cardinal Solutions Group 2 Welcome  Introductions  What is your experience with RUP  What is.
Smart Home Technologies
Software Engineering Principles Practical Advice and Steps for Managing Your Project.
PV213 EIS in Practice: 06 – Development process 1 PV213 Enterprise Information Systems in Practice 06 – Development process.
State of Georgia Release Management Training
CS223: Software Engineering Lecture 16: The Agile Methodology.
CS223: Software Engineering Lecture 14: Architectural Patterns.
SOA Case Studies A Retrospective on Evolutionary vs Big Bang SOA James Carpenter Enterprise Architect Great American Insurance Co.
Extinction of Dinosaurs -> Rise of Microservices.
RATIONAL UNIFIED PROCESS PROCESS FRAMEWORK OVERVIEW.
Agile Center of Excellence. Richard K Cheng Agile is just a high level concept.
CS223: Software Engineering
Definition CASE tools are software systems that are intended to provide automated support for routine activities in the software process such as editing.
Chapter 18 Maintaining Information Systems
Documentation in Continuous Delivery Model and DevOps
Chapter 3 – Agile Software Development
Chapter 8 Software Evolution.
Introduction to SOA Part II: SOA in the enterprise
Presentation transcript:

Principles and Techniques of Evolutionary Architecture Rebecca Parsons Chief Technology Officer ThoughtWorks

Principles of evolutionary architecture Why should I care? Emergent design vs evolutionary architecture How to achieve an evolutionary architecture in practice Techniques of evolutionary architecture Agenda

It’s harder to predict the future Expectations for pace of change are increasing rapidly Business model lifetimes are shortening If you miss your minute of fame... Why Should I Care?

Evolutionary Architecture and Emergent Design Evolutionary versus Emergent Design and Architecture

Postel’s Law Last responsible moment Architect and develop for evolvability Conway’s Law Architect for testability Principles of Evolutionary Architecture

Minimizes technical debt from complexity Delay decisions as long as you can, but no longer Maximizes the information you have Evolutionary, neither emergent nor based on guesswork Decide early what your drivers are, and prioritize decisions accordingly Last Responsible Moment

Consider data lifecycle and ownership Sensible breakdown of functionality Lightweight tooling and documentation Appropriate coupling Architect for Evolvability

Software internal quality metrics focusing on ease of change Find hotspots and focus efforts there Measure continually, focusing on trends Develop for Evolvability

Reversability

Only validate what you need Be conservative in what you send Be liberal in what you receive Use version changes when a contract must be broken Holds for any information exchange Postel’s Law

Business sensible components Aiming towards testability produces a well- architected system Messaging infrastructure used for messaging, not business logic Build pipelines support the volume Testing at many levels, including contract Architect for Testability

Broken communications imply complex integration Organizations design systems reflecting their communication structures If you don’t want your product to look like your organization, change your organization (or your product) Silos often result in broken communication Conway’s Law

Database Refactoring Continuous Delivery Choreography Contract Testing Techniques

Changes compose in the same way functions compose De-compose big change into series of small changes Each change is a refactoring/migration pair (or triple if you include access code) And apply in the various environments during promotion And of course, version control the changes Database Refactoring

Automate testing at all levels Automate environments &configurations Automate builds and deployments and use continuous integration Just because you CAN release at any time doesn’t mean you HAVE to Deployment should be boring!! Continuous Delivery

Maximizes parallel independent work Acceptance tests at the systems’ interface Documents assumptions made One traditional role of Enterprise Architect Used in conjunction with Postel’s Law Contract Testing

Individuals perform to the vision without a conductor As opposed to orchestration Scripted outcomes and vision Introduces new kinds of failure scenarios Distributes authority about interactions Choreography

Understand various forms of technical debt Define your architectural fitness function Delay your decisions as long as you can Create and maintain the testing safety net Implement evidence based re-use Evolutionary Architecture

Thank you!