Arquitetura e Agilidade

Manifesto ágil

https://agilemanifesto.org/

Estamos descobrindo maneiras melhores de desenvolver
software, fazendo-o nós mesmos e ajudando outros a
fazerem o mesmo. Através deste trabalho, passamos a valorizar:

Indivíduos e interações mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano

Ou seja, mesmo havendo valor nos itens à direita,
valorizamos mais os itens à esquerda.

Signatários Originais (2001)

Alistair Cokburn Andrew Hunt Arie van Bennekum Brian Marick Dave Thomas James Grenning Jeff Sutherland Jim Highsmith Jon Kern Ken Schwaber Kent Beck Martin Fowler Mike Beedle Robert C. Martin Ron Jeffries Steve Mellor Ward Cumningham

Alistair Cockburn

Surviving Object-Oriented Projects

Janeiro/1998

Writing Effective Use Cases

pt-br Outubro/2000

Crystal Clear

A Human-Powered Methodology for Small Teams

Outubro/2004

Andrew Hunt & Dave Thomas

The Pragmatic Programmer

Setembro/1999

Dave Thomas

Agile is Dead (Long Live Agility)

https://www.youtube.com/watch?v=a-BOSpxYJ9M

Arie Van Bennekum

Lean Agile Marketing

How to Become Agile and Deliver Markeging Success

Fevereiro/2017

Brian Marick

The Craft of Software Testing

Subsystem Testing

Dezembro/1994

James W. Grenning

Test-Driven Development for Embedded C

Abril/2011

Jeff Sutherland & Ken Schwaber

qrcode oopsla 95
http://www.jeffsutherland.org/oopsla/schwapub.pdf

Criaram a primeira sugestão de processo Scrum apresentada na OOPSLA em 1995 OOPSLA (Object-Oriented Programming, Systems, Languages & Applications)

Jeff Sutherland

Business Object Design and Implementation

Maio/1997

The Power of SCRUM

Novembro/2011

Software in 30 days

Maio/2012

SCRUM: The Art of Doing Twice the Work in Half the Time

Setembro/2014

The SCRUM Fieldbook

A Master Class on Accelerating Performance, Getting Results, and Defining the Future

Outubro/2019

Ken Schwaber

Agile Software Development with Scrum

Outubro/2001

Agile Project Management with Scrum

Fevereiro/2004

The Enterprise and Scrum

Junho/2007

Software in 30 Days

Maio/2012

Jim Highsmith

Agile Software Development Ecosystems

Abril/2002

Agile Project Management

Creating Innovative Products

Abril/2004

Adaptive Leadership

Accelerating Enterprise Agility

Novembro/2013

EDGE

Value-Driven Digital Transformation

Agosto/2019

Jon Kern

Java Design

Building Better Apps & Applets

Dezembro/1998

Kent Beck

Extreme Programming Explained

Embrace Change

Outubro/1999

Planning Extreme Programming

Embrace Change

Outubro/2000

Test-Driven Development

By Example

Novembro/2002

Martin Fowler

Analysis Patterns

Reusable Object Models

Outubro/1996

UML Distilled

Applying the Standard Object Modeling Language

Janeiro/1997

Planning Extreme Programming

Outubro/2000

Patterns of Enterprise Application Architecture

pt-br Março/2002

Domain-Specific Languages

Setembro/2010

Refactoring

Improving the Design of Existing Code

pt-br Março/2012

Mike Beedle

Agile Software Development with SCRUM

Outubro/2001

Robert C. Martin

(UNCLE BOB)

Agile Software Development

Principles, Patterns, and Practices

Outubro/2002

Clean Code

A Handbook of Agile Software Craftmanship

pt-br Agosto/2008

The Clean Coder

A Code of Conduct for Professional Programmers

pt-br Maio/2011

Clean Architecture

A Craftmanship's Guide to Software Structure and Design

pt-br Setembro/2017

Clean Agile

Back to Basics

Setembro/2019

Ron Jeffries

Extreme Programming Installed

Outubro/2000

Extreme Programming Adventures in C#

Fevereiro/2004

The Nature of Software Development

Fevereiro/2015

Steve Mellor

(Stephen J. Mellor)

Structured Development for Real-Time Systems

Junho/1986

Object-Oriented Systems Analysis

Modeling the World in Data

Abril/1988

Object Lifecycles

Modeling the World in States

Setembro/1991

Executable UML

A Foundation for Model-Driven Architecture

Maio/2002

MDA Distilled

Principles of Model-Driven Architecture

Março/2004

Ward Cumningham

Analysis Patterns

Reusable Object Models

Outubro/1996

The Wiki Way

Quick Collaboration on the Web

Abril/2001

Timeline

Perceba a evolução dos conteúdos dos autores

Structured development for real-time systems05/1986
Object-oriented systems analysisModeling the world in data03/1988
Object lifecyclesModeling the world in states08/1991
The craft of software testingSubsystem testing11/1994
Analysis PatternsReusable object models09/1996
UML DistiledApplying the standard object modeling language12/1996
Business object design and implementation04/1997
Surviving object-oriented projects12/1997
Java DesignBuilding better apps & applets11/1998
The pragmatic programmer08/1999
Extreme Programming ExplainedEmbrace change09/1999
Writing effective use cases09/2000
Planning extreme programming09/2000
Extreme programming installed09/2000
Agile Software Development with Scrum01/2001
Agile Manifest01/2001
The wiki wayQuick collaboration on the web03/2001
Pattern of enterprise application architecture02/2002
Agile software development ecosystems03/2002
Executable UMLA foundation for model-driven architecture04/2002
Agile software developmentPrinciples, patterns, and practices09/2002
Test-driven developmentby example10/2002
Agile Project Management01/2004
Extreme programming adventures in C#01/2004
MDA DistilledPrinciples of model-driven architecture02/2004
Agile project managementcreating innovative products03/2004
Crystal clearA Human-Powered Methodology for Small Teams09/2004
The enterprise and scrum05/2007
Clean codeA handbook of agile software craftmanship07/2008
Domain-specific languages08/2010
Test-driven development for embedded C03/2011
The clean coderA code of conduct for professional programers04/2011
The power of scrum10/2011
RefactoringImproving the design of existing code02/2012
Software in 30 days04/2012
Adaptive leadershipAccelerating enterprise agility10/2013
Scrum: the art of doing twice the work in half the time08/2014
The nature of software development01/2015
Lean agile marketingHow to become agile and deliver marketing success01/2017
Clean architectureA craftmanship's guide to software structure and design06/2017
EDGEValue-driven digital transformation07/2019
Clean agileBack to basics08/2019
The scrum fieldbookA master class on accelerating performance, getting results, and defining the future09/2019

Arquitetura e Agilidade

A Arquitetura de Soluções tecnológicas, em todos os seus níveis, sempre foi responsável por garantir que as aplicações fossem as mais adaptáveis e resiliêntes. Tentando olhar além do funcional e preparar o software e o processo para mudanças e impactos futuros.

Ou seja, a base da boa arquitetura é fomentar a agilidade.

Eficiência x Inovação

Balancear estes dois pilares é o grande desafio das empresas. Se a empresa focar muito em inovação, pode gerar um grande problema de custos e escala futura. Por outro lado, se olhar apenas para eficiência, com certeza perderá oportunidades de negócio e tração.

Mundo VUCA

Em um mundo de incertezas, é cada vez mais complexo para qualquer time de Arquitetos tentar prever padrões dentro de ecossistêmas de negócio tão voláteis. Em um mundo onde as tecnologias evoluem de maneira devastadora é impossível definir uma única solução correta para os problemas de negócio.

A velocidade das mudanças

E como lidar com as rápidas mudanças tecnológicas e as diversas novas soluções que aparecem todos os dias? Como usar os conceitos de agilidade para que as pessoas se apoiem na descoberta e melhoria contínua?

O modelo tradicional já não é suficiente para os novos modelos de trabalho. Os próprios conceitos de agilidade nos mostram o caminho.

Indivíduos e Interações

Aplicar processos rígidos só vai distanciar as pessoas da informação que precisam para tomar as melhores decisões.

Manter uma postura aberta sobre as opiniões dos times de tecnologia envolvidos com as demandas de negócio e interagir de forma transparênte para apoiar na priorização dos requisitos não funcionais que podem ser críticos para o cliente.

Software em funcionamento

Ter milhares de padrões e documentações para que os times possam executar suas funções pode até dar a impressão de controle. Mas é fato que essas indas e vindas perdem o foco no que realmente importa. Um sistema funcionando para o cliente.

Aqui é muito importante salientar a palavra funcionando. O foco do arquiteto é mostrar através de dados e argumentos quais os cenários que podem levar o usuário a considerar que o sistema não funciona. (Disponibilidade, Consistência, Performance, Segurança ...)

Colaboração com o cliente

É humanamente impossível conhecer todas as tecnologias e soluções do mercado. Como avaliar tudo?

A chave para esta resposta é Colaboração com os times de desenvolvimento. Dar flexibilidade para que testem novas ideias e tecnologias para solucionar os problemas é o primeiro passo para fomentar um ambiente de inovação. Inovação que permite que novos padrões e arquiteturas emerjam dos times.

A proximidade do Arquiteto para ajudar a identificar os requisitos não funcionais mais críticos é essencial nesse processo.

Responder a mudanças

Definir uma arquitetura inicial completa (big design up front) e tentar seguir o plano não permite que as pessoas encontrem soluções diferentes para novos problemas.

O arquiteto precisa dar opções ao invés de direcionamentos. Por isso a colaboração com os diversos times é tão importante. Da inovação nascem novas opções para soluções futuras.

E se tirar o arquiteto da jogada?

Esse é um caminho que algumas empresas tentam seguir. Considerando empresas de tamanho pequeno, de até 500 pessoas de tecnologia, essa pode ser uma saída. Mas logo a interação entre os times vai reduzir (com o foco em seus próprios projetos) e muito desperdício será gerado.

O arquiteto ágil é aquele que age como elo entre as soluções, fomenta o compartilhamento de informações e garante que os times tenham opções viáveis para solucionar seus problemas.

OBRIGADO!

LinkedIn