SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
Giovanni Asproni
email: giovanni.asproni@zuhlke.com
gasproni@asprotunity.com
twitter: @gasproni
linkedin: http://www.linkedin.com/in/gasproni
Creating An Incremental
Architecture For Your System
OOP Conference 2017, Munich
Photo from: https://commons.wikimedia.org/wiki/
File:Grady_Booch,_CHM_2011_2_cropped.jpg
“all architecture is design, but not all design is
architecture”
http://handbookofsoftwarearchitecture.com/?
s=all+architecture+is+design&searchsubmit=
http://handbookofsoftwarearchitecture.com/?p=63
“Every software-intensive system has an
architecture. In some cases that architecture is
intentional, while in others it is accidental […]
the architecture of a system is the naming
of the most significant design decisions
that shape a system, where we measure
significant by cost of change and by impact
upon use.”
Photo from: https://commons.wikimedia.org/wiki/
File:Grady_Booch,_CHM_2011_2_cropped.jpg
“Cost of change”is a relative value
“Impact upon use”is about how
much the users of the system are
affected
Architecture Is For
• Making structural choices which are costly or
difficult to change once implemented
• Recording and communicating decisions
• Guiding implementation decisions
• Splitting work among teams
“incremental design (also called
evolutionary design) allows you
to build technical infrastructure
(such as domain models and
persistence frameworks)
incrementally, in small pieces, as
you deliver stories”
Incremental Architecture Approaches
• Emergent (TDD)
• Rough Upfront Design (RUFD)
From:https://
Incremental Architecture
• One small feature at a time
• Design
• Implement
• Test
• Deploy
• Rinse and repeat
Why?
• Uncertainty due to
• Limited upfront information
• Business needs changing rapidly
• Built to change vs built to last
• Wide stakeholder community
• Limited budget
Why Not Big Upfront Design?
• Uncertainty due to
• Limited upfront information
• Business needs changing rapidly
• Built to change vs built to last
• Wide stakeholder community
• Limited budget
In software, the chances of success
of a big upfront design are inversely
proportional to the size of the
system being designed.
So what? We already do
incremental design!
BUFD Is Not The Problem
• The problems are
–Speculative Upfront Design (SUFD)
–Absence of refactoring
Start Small!
“A complex system that works is invariably
found to have evolved from a simple
system that worked.”
Travel light!
Focus On What You Know
• No SUFD
• Sufficient design
• Remove“reusable”and“flexible”
from your dictionary
“Favoring simplicity before generality
acts as a tiebreaker between
otherwise equally viable design
alternatives. When there are two
possible solutions, favor the one that
is simpler and based on concrete
need rather than the more intricate
one that boasts of generality.”
Kevlin Henney
“Choose Your Tools With Care”
Giovanni Asproni
Walking Skeleton
From: http://alistair.cockburn.us/Walking+skeleton
“is a tiny implementation of the system
that performs a small end-to-end
function. It need not use the final
architecture, but it should link together
the main architectural components. The
architecture and the functionality can
then evolve in parallel.”
DatabaseServerClient
Walking skeleton
Skeleton On Crutches
DatabaseServerClient
Walking skeleton
Filesystem
https://gojko.net/2014/06/09/forget-the-walking-skeleton-put-it-on-crutches/
http://www.developerdotstar.com/mag/articles/reeves_design.html
“Coding actually makes sense more often than
believed. Often the process of rendering the design in
code will reveal oversights and the need for
additional design effort. The earlier this occurs, the
better the design will be.”
Jack Reeves,“What Is Software Design?”
Design for testability
“When testing is done right, it is almost
unreasonably effective at uncovering
defects that matter.”
John Regehr
http://blog.regehr.org/archives/820
“BDUF design for testability is hard because
it is difficult to know what the tests will
need in the way of control points and
observation points on the SUT. We can
easily build software that is difficult to test.
We can also spend a lot of time designing
in testability mechanisms that are either
insufficient or unnecessary. Either way, we
will have spent a lot of effort with nothing
to show for it.”
TDD at all levels helps
Write a failing
acceptance test
Write a failing
unit test
Make the
test pass
Refactor
Create Feedback Loops
• Continuous Integration
• Continuous Deployment
• Continuous Delivery
Main Architectural Drivers: Qualities
Scalability
Throughput
Latency
Usability
Testability
Security
Maintainability
Supportability
Diagnosability
…
Qualities
© Benedetto Bufalino http://www.designboom.com/art/benedetto-bufalino-
transforms-a-car-into-a-cardboard-ferrari-10-31-2013/
• Have to be baked-in
– They cannot easily be
retrofitted
Often Forgotten Things
• Buildability
• Deployability
• Configurability
• Versioning strategies
How can I include architectural
tasks in my workflow?
• Architecture in the Backlog
• Architectural Trigger
• Architectural Spike
• Technical Debt Management
Patterns
Document After The Fact!
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. SE-12, NO.2, FEBRUARY 1986 251
A Rational Design Process: How and Why to Fake It
DAVID LORGE PARNAS AND PAUL C. CLEMENTS
Abstract-Many have sought a software design process that allows a
program to be derived systematically from a precise statement of re-
quirements. This paper proposes that, although we will not succeed in
designing a real product in that way, we can produce documentation
that makes it appear that the software was designed by such a process.
We first describe the ideal process, and the documentation that it re-
quires. We then explain why one should attempt to design according to
the ideal process and why one should produce the documentation that
would have been produced by that process. We describe the contents of
each of the required documents.
Index Terms-Programming methods, software design, software
documentation, software engineering.
I. THE SEARCH FOR THE PHILOSOPHER'S STONE: WHY
Do WE WANT A RATIONAL DESIGN PROCESS?
APERFECTLY rational person is one who always has
a good reason for what he does. Each step taken can
be shown to be the best way to get to a well defined goal.
Most of us like to think of ourselves as rational profes-
sionals. However, to many observers, the usual process of
designing software appears quite irrational. Programmers
start without a clear statement of desired behavior and im-
plementation constraints. They make a long sequence of
design decisions with no clear statement of why they do
things the way they do. Their rationale is rarely explained.
Many of us are not satisfied with such a design process.
That is why there is research in software design, program-
ming methods, structured programming, and related top-
ics. Ideally, we would like to derive our programs from a
statement of requirements in the same sense that theorems
are derived from axioms in a published proof. All of the
methodologies that can be considered "top down" are the
result of our desire to have a rational, systematic way of
designing software.
This paper brings a message with both bad news and
good news. The bad news is that, in our opinion, we will
never find the philosopher's stone. We will never find a
process that allows us to design software in a perfectly
rational way. The good news is that we can fake it. We
can present our system to others as if we had been rational
designers and it pays to pretend do so during development
and maintenance.
Manuscript received March 18, 1985. This work was supported by the
U.S. Navy and by the National Science and Engineering Research Council
(NSERC) of Canada.
D. L. Parnas is with the Department of Computer Science, University
of Victoria, Victoria, B. C. V8W 2Y2, Canada, and the Computer Science
and Systems Branch, Naval Research Laboratory, Washington, DC 20375.
P. C. Clements is with the Computer Science and Systems Branch, Naval
Research Laboratory, Washington, DC 20375.
IEEE Log Number 8405736.
II. WHY WILL A SOFTWARE DESIGN "PROCESS"
ALWAYS BE AN IDEALIZATION?
We will never see a software project that proceeds in
the "rational" way. Some of the reasons are listed below:
1) In most cases the people who commission the build-
ing of a software system do not know exactly what they
want and are unable to tell us all that they know.
2) Even if we knew the requirements, there are many
other facts that we need to know to design the software.
Many of the details only become known to us as we pro-
gress in the implementation. Some of the things that we
learn invalidate our design and we must backtrack.Be-
cause we try to minimize lost work, the resulting design
may be one that would not result from a rational design
process.
3) Even if we knew all of the relevant facts before we
started, experience shows that human beings are unable
to comprehend fully the plethora of details that must be
taken into account in order to design and build a correct
system. The process of designing the software is one in
which we attempt to separate concerns so that we are
working with a manageable amount of information. How-
ever, until we have separated the concerns, we are bound
to make errors.
4) Even if we could master all of the detail needed, all
but the most trivial projects are subject to change for ex-
ternal reasons. Some of those changes may invalidate pre-
vious design decisions. The resulting design is not one
that would have been produced by a rational design pro-
cess.
5) Human errors can only be avoided if one can avoid
the use of humans. Even after the concerns are separated,
errors will be made.
6) We are often burdened by preconceived design ideas,
ideas that we invented, acquired on related projects, or
heard about in a class. Sometimes we undertake a project
in order to tryout or use a favorite idea. Such ideas may
not be derived from our requirements by a rational pro-
cess.
7) Often we are encouraged, for economic reasons, to
use software that was developed for some other project. In
other situations, we may be encouraged to share our soft-
ware with another ongoing project. The resulting software
may not be the ideal software for either project, i.e., not
the software that we would develop based on its require-
ments alone, but it is good enough and will save effort.
For all of these reasons, the picture of the software de-
signer deriving his design in a rational, error-free way
from a statement of requirements is quite unrealistic. No
0098-5589/86/0200-0251$01.00 © 1986 IEEE
Brownfield And Legacy Systems
• Rewrite from scratch rarely works
• The previous approach still apply
Thank You!
giovanni.asproni@zuhlke.com
@gasproni
Books
ptg6985396
From the Library of Giovanni Asproni
ptg6985396
From the Library of Giovanni Asproni

Mais conteúdo relacionado

Mais procurados

I build the future - Agile 2014
I build the future - Agile 2014I build the future - Agile 2014
I build the future - Agile 2014Andrew Shafer
 
Death to the DevOps team - Agile Yorkshire 2014
Death to the DevOps team - Agile Yorkshire 2014Death to the DevOps team - Agile Yorkshire 2014
Death to the DevOps team - Agile Yorkshire 2014Matthew Skelton
 
DOES15 - Mike Bland - Pain Is Over, If You Want It
DOES15 - Mike Bland - Pain Is Over, If You Want ItDOES15 - Mike Bland - Pain Is Over, If You Want It
DOES15 - Mike Bland - Pain Is Over, If You Want ItGene Kim
 
DevOps: The Future is Already Here — It’s Just Unevenly Distributed
DevOps: The Future is Already Here — It’s Just Unevenly DistributedDevOps: The Future is Already Here — It’s Just Unevenly Distributed
DevOps: The Future is Already Here — It’s Just Unevenly Distributeddev2ops
 
Agile Practice in a DevOps World
Agile Practice in a DevOps WorldAgile Practice in a DevOps World
Agile Practice in a DevOps WorldMagnus Hedemark
 
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021Lisa Boyer Cooney (she/her)
 
Project management for the rest of us
Project management for the rest of usProject management for the rest of us
Project management for the rest of usCarol Smith
 
DOES 2016 Sciencing the Crap Out of DevOps
DOES 2016 Sciencing the Crap Out of DevOpsDOES 2016 Sciencing the Crap Out of DevOps
DOES 2016 Sciencing the Crap Out of DevOpsNicole Forsgren
 
DevOps: What's Buried in the Fine Print
DevOps: What's Buried in the Fine PrintDevOps: What's Buried in the Fine Print
DevOps: What's Buried in the Fine PrintJeffery Smith
 
How Metrics Make Your DevOps Awesome
How Metrics Make Your DevOps AwesomeHow Metrics Make Your DevOps Awesome
How Metrics Make Your DevOps AwesomeNicole Forsgren
 
Retrospective Anti-Patterns by Aino Corry at #AgileIndia2019
Retrospective Anti-Patterns by Aino Corry at #AgileIndia2019Retrospective Anti-Patterns by Aino Corry at #AgileIndia2019
Retrospective Anti-Patterns by Aino Corry at #AgileIndia2019Agile Software Community of India
 
SOLVING MLOPS FROM FIRST PRINCIPLES, DEAN PLEBAN, DagsHub
SOLVING MLOPS FROM FIRST PRINCIPLES, DEAN PLEBAN, DagsHubSOLVING MLOPS FROM FIRST PRINCIPLES, DEAN PLEBAN, DagsHub
SOLVING MLOPS FROM FIRST PRINCIPLES, DEAN PLEBAN, DagsHubDevOpsDays Tel Aviv
 
Agile Workshop for Online Team
Agile Workshop for Online TeamAgile Workshop for Online Team
Agile Workshop for Online TeamJan Palencar
 
Building Great Software Engineering Teams
Building Great Software Engineering TeamsBuilding Great Software Engineering Teams
Building Great Software Engineering TeamsBrian Link
 
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil Zambrana
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil ZambranaMasterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil Zambrana
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil ZambranaIIMN. Instituto Internacional de Marketing
 

Mais procurados (20)

I build the future - Agile 2014
I build the future - Agile 2014I build the future - Agile 2014
I build the future - Agile 2014
 
Death to the DevOps team - Agile Yorkshire 2014
Death to the DevOps team - Agile Yorkshire 2014Death to the DevOps team - Agile Yorkshire 2014
Death to the DevOps team - Agile Yorkshire 2014
 
DOES15 - Mike Bland - Pain Is Over, If You Want It
DOES15 - Mike Bland - Pain Is Over, If You Want ItDOES15 - Mike Bland - Pain Is Over, If You Want It
DOES15 - Mike Bland - Pain Is Over, If You Want It
 
SAFe and DevOps - better together
SAFe and DevOps - better togetherSAFe and DevOps - better together
SAFe and DevOps - better together
 
Modeling and Measuring DevOps Culture
Modeling and Measuring DevOps CultureModeling and Measuring DevOps Culture
Modeling and Measuring DevOps Culture
 
DevOps: The Future is Already Here — It’s Just Unevenly Distributed
DevOps: The Future is Already Here — It’s Just Unevenly DistributedDevOps: The Future is Already Here — It’s Just Unevenly Distributed
DevOps: The Future is Already Here — It’s Just Unevenly Distributed
 
Agile Practice in a DevOps World
Agile Practice in a DevOps WorldAgile Practice in a DevOps World
Agile Practice in a DevOps World
 
Developer Nirvana
Developer NirvanaDeveloper Nirvana
Developer Nirvana
 
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
 
Project management for the rest of us
Project management for the rest of usProject management for the rest of us
Project management for the rest of us
 
DOES 2016 Sciencing the Crap Out of DevOps
DOES 2016 Sciencing the Crap Out of DevOpsDOES 2016 Sciencing the Crap Out of DevOps
DOES 2016 Sciencing the Crap Out of DevOps
 
DevOps: What's Buried in the Fine Print
DevOps: What's Buried in the Fine PrintDevOps: What's Buried in the Fine Print
DevOps: What's Buried in the Fine Print
 
How Metrics Make Your DevOps Awesome
How Metrics Make Your DevOps AwesomeHow Metrics Make Your DevOps Awesome
How Metrics Make Your DevOps Awesome
 
Retrospective Anti-Patterns by Aino Corry at #AgileIndia2019
Retrospective Anti-Patterns by Aino Corry at #AgileIndia2019Retrospective Anti-Patterns by Aino Corry at #AgileIndia2019
Retrospective Anti-Patterns by Aino Corry at #AgileIndia2019
 
ALTNET
ALTNETALTNET
ALTNET
 
Why Even DevOp?
Why Even DevOp?Why Even DevOp?
Why Even DevOp?
 
SOLVING MLOPS FROM FIRST PRINCIPLES, DEAN PLEBAN, DagsHub
SOLVING MLOPS FROM FIRST PRINCIPLES, DEAN PLEBAN, DagsHubSOLVING MLOPS FROM FIRST PRINCIPLES, DEAN PLEBAN, DagsHub
SOLVING MLOPS FROM FIRST PRINCIPLES, DEAN PLEBAN, DagsHub
 
Agile Workshop for Online Team
Agile Workshop for Online TeamAgile Workshop for Online Team
Agile Workshop for Online Team
 
Building Great Software Engineering Teams
Building Great Software Engineering TeamsBuilding Great Software Engineering Teams
Building Great Software Engineering Teams
 
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil Zambrana
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil ZambranaMasterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil Zambrana
Masterclass IIMN - Agile (pensamiento y técnicas) - por José Carlos Gil Zambrana
 

Semelhante a Creating An Incremental Architecture For Your System

Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemGiovanni Asproni
 
Abcd iqs ssoftware-projects-mercecrosas
Abcd iqs ssoftware-projects-mercecrosasAbcd iqs ssoftware-projects-mercecrosas
Abcd iqs ssoftware-projects-mercecrosasMerce Crosas
 
Visualization for Software Analytics
Visualization for Software AnalyticsVisualization for Software Analytics
Visualization for Software AnalyticsMargaret-Anne Storey
 
Software engineering the genesis
Software engineering  the genesisSoftware engineering  the genesis
Software engineering the genesisPawel Szulc
 
COMPUTER APPLICATION PROJECT ON
COMPUTER APPLICATION PROJECT ON COMPUTER APPLICATION PROJECT ON
COMPUTER APPLICATION PROJECT ON Jitender Suryavansh
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsUwe Friedrichsen
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture uploadThe Real Dyl
 
online news portal system
online news portal systemonline news portal system
online news portal systemArman Ahmed
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile DevelopmentHayim Makabee
 
1-PE-I-OOAD.pptx
1-PE-I-OOAD.pptx1-PE-I-OOAD.pptx
1-PE-I-OOAD.pptxKALPANAC20
 
1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docxjackiewalcutt
 
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - TrivadisTechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - TrivadisTrivadis
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineeringHitesh Mohapatra
 
Organisering av digitale prosjekt: Hva har IT-bransjen lært om store prosjekter?
Organisering av digitale prosjekt: Hva har IT-bransjen lært om store prosjekter?Organisering av digitale prosjekt: Hva har IT-bransjen lært om store prosjekter?
Organisering av digitale prosjekt: Hva har IT-bransjen lært om store prosjekter?Torgeir Dingsøyr
 
The critical need for software architecture practices in software development...
The critical need for software architecture practices in software development...The critical need for software architecture practices in software development...
The critical need for software architecture practices in software development...Alexander Decker
 

Semelhante a Creating An Incremental Architecture For Your System (20)

Creating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your SystemCreating An Incremental Architecture For Your System
Creating An Incremental Architecture For Your System
 
Abcd iqs ssoftware-projects-mercecrosas
Abcd iqs ssoftware-projects-mercecrosasAbcd iqs ssoftware-projects-mercecrosas
Abcd iqs ssoftware-projects-mercecrosas
 
Visualization for Software Analytics
Visualization for Software AnalyticsVisualization for Software Analytics
Visualization for Software Analytics
 
Software engineering the genesis
Software engineering  the genesisSoftware engineering  the genesis
Software engineering the genesis
 
COMPUTER APPLICATION PROJECT ON
COMPUTER APPLICATION PROJECT ON COMPUTER APPLICATION PROJECT ON
COMPUTER APPLICATION PROJECT ON
 
On System Design
On System DesignOn System Design
On System Design
 
Excavating the knowledge of our ancestors
Excavating the knowledge of our ancestorsExcavating the knowledge of our ancestors
Excavating the knowledge of our ancestors
 
Agile architecture upload
Agile architecture uploadAgile architecture upload
Agile architecture upload
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
ROOTS2011 Continuous Delivery
ROOTS2011 Continuous DeliveryROOTS2011 Continuous Delivery
ROOTS2011 Continuous Delivery
 
online news portal system
online news portal systemonline news portal system
online news portal system
 
Software Architecture for Agile Development
Software Architecture for Agile DevelopmentSoftware Architecture for Agile Development
Software Architecture for Agile Development
 
1-PE-I-OOAD.pptx
1-PE-I-OOAD.pptx1-PE-I-OOAD.pptx
1-PE-I-OOAD.pptx
 
1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx
 
Introduction
IntroductionIntroduction
Introduction
 
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - TrivadisTechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
Organisering av digitale prosjekt: Hva har IT-bransjen lært om store prosjekter?
Organisering av digitale prosjekt: Hva har IT-bransjen lært om store prosjekter?Organisering av digitale prosjekt: Hva har IT-bransjen lært om store prosjekter?
Organisering av digitale prosjekt: Hva har IT-bransjen lært om store prosjekter?
 
The critical need for software architecture practices in software development...
The critical need for software architecture practices in software development...The critical need for software architecture practices in software development...
The critical need for software architecture practices in software development...
 
AntiPatterns
AntiPatternsAntiPatterns
AntiPatterns
 

Mais de Giovanni Asproni

Remote Mob Programming In A High Stakes Environment (Agile Manchester 2023)
Remote Mob Programming In A High Stakes Environment (Agile Manchester 2023)Remote Mob Programming In A High Stakes Environment (Agile Manchester 2023)
Remote Mob Programming In A High Stakes Environment (Agile Manchester 2023)Giovanni Asproni
 
Remote mobprogrammingina highstakesenvironment
Remote mobprogrammingina highstakesenvironmentRemote mobprogrammingina highstakesenvironment
Remote mobprogrammingina highstakesenvironmentGiovanni Asproni
 
Methodology Patterns (Agile Cambridge 2014)
Methodology Patterns (Agile Cambridge 2014)Methodology Patterns (Agile Cambridge 2014)
Methodology Patterns (Agile Cambridge 2014)Giovanni Asproni
 
Writing usableap isinpractice
Writing usableap isinpracticeWriting usableap isinpractice
Writing usableap isinpracticeGiovanni Asproni
 

Mais de Giovanni Asproni (6)

Remote Mob Programming In A High Stakes Environment (Agile Manchester 2023)
Remote Mob Programming In A High Stakes Environment (Agile Manchester 2023)Remote Mob Programming In A High Stakes Environment (Agile Manchester 2023)
Remote Mob Programming In A High Stakes Environment (Agile Manchester 2023)
 
Remote mobprogrammingina highstakesenvironment
Remote mobprogrammingina highstakesenvironmentRemote mobprogrammingina highstakesenvironment
Remote mobprogrammingina highstakesenvironment
 
Design For Testability
Design For TestabilityDesign For Testability
Design For Testability
 
Faking Hell
Faking HellFaking Hell
Faking Hell
 
Methodology Patterns (Agile Cambridge 2014)
Methodology Patterns (Agile Cambridge 2014)Methodology Patterns (Agile Cambridge 2014)
Methodology Patterns (Agile Cambridge 2014)
 
Writing usableap isinpractice
Writing usableap isinpracticeWriting usableap isinpractice
Writing usableap isinpractice
 

Último

%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 

Último (20)

%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 

Creating An Incremental Architecture For Your System

  • 1. Giovanni Asproni email: giovanni.asproni@zuhlke.com gasproni@asprotunity.com twitter: @gasproni linkedin: http://www.linkedin.com/in/gasproni Creating An Incremental Architecture For Your System OOP Conference 2017, Munich
  • 2. Photo from: https://commons.wikimedia.org/wiki/ File:Grady_Booch,_CHM_2011_2_cropped.jpg “all architecture is design, but not all design is architecture” http://handbookofsoftwarearchitecture.com/? s=all+architecture+is+design&searchsubmit=
  • 3. http://handbookofsoftwarearchitecture.com/?p=63 “Every software-intensive system has an architecture. In some cases that architecture is intentional, while in others it is accidental […] the architecture of a system is the naming of the most significant design decisions that shape a system, where we measure significant by cost of change and by impact upon use.” Photo from: https://commons.wikimedia.org/wiki/ File:Grady_Booch,_CHM_2011_2_cropped.jpg
  • 4. “Cost of change”is a relative value
  • 5. “Impact upon use”is about how much the users of the system are affected
  • 6. Architecture Is For • Making structural choices which are costly or difficult to change once implemented • Recording and communicating decisions • Guiding implementation decisions • Splitting work among teams
  • 7. “incremental design (also called evolutionary design) allows you to build technical infrastructure (such as domain models and persistence frameworks) incrementally, in small pieces, as you deliver stories”
  • 8. Incremental Architecture Approaches • Emergent (TDD) • Rough Upfront Design (RUFD) From:https://
  • 9. Incremental Architecture • One small feature at a time • Design • Implement • Test • Deploy • Rinse and repeat
  • 10. Why? • Uncertainty due to • Limited upfront information • Business needs changing rapidly • Built to change vs built to last • Wide stakeholder community • Limited budget
  • 11. Why Not Big Upfront Design? • Uncertainty due to • Limited upfront information • Business needs changing rapidly • Built to change vs built to last • Wide stakeholder community • Limited budget
  • 12. In software, the chances of success of a big upfront design are inversely proportional to the size of the system being designed.
  • 13. So what? We already do incremental design!
  • 14. BUFD Is Not The Problem • The problems are –Speculative Upfront Design (SUFD) –Absence of refactoring
  • 15. Start Small! “A complex system that works is invariably found to have evolved from a simple system that worked.”
  • 17. Focus On What You Know • No SUFD • Sufficient design • Remove“reusable”and“flexible” from your dictionary
  • 18. “Favoring simplicity before generality acts as a tiebreaker between otherwise equally viable design alternatives. When there are two possible solutions, favor the one that is simpler and based on concrete need rather than the more intricate one that boasts of generality.” Kevlin Henney
  • 19. “Choose Your Tools With Care” Giovanni Asproni
  • 20. Walking Skeleton From: http://alistair.cockburn.us/Walking+skeleton “is a tiny implementation of the system that performs a small end-to-end function. It need not use the final architecture, but it should link together the main architectural components. The architecture and the functionality can then evolve in parallel.”
  • 22. Skeleton On Crutches DatabaseServerClient Walking skeleton Filesystem https://gojko.net/2014/06/09/forget-the-walking-skeleton-put-it-on-crutches/
  • 23. http://www.developerdotstar.com/mag/articles/reeves_design.html “Coding actually makes sense more often than believed. Often the process of rendering the design in code will reveal oversights and the need for additional design effort. The earlier this occurs, the better the design will be.” Jack Reeves,“What Is Software Design?”
  • 25. “When testing is done right, it is almost unreasonably effective at uncovering defects that matter.” John Regehr http://blog.regehr.org/archives/820
  • 26. “BDUF design for testability is hard because it is difficult to know what the tests will need in the way of control points and observation points on the SUT. We can easily build software that is difficult to test. We can also spend a lot of time designing in testability mechanisms that are either insufficient or unnecessary. Either way, we will have spent a lot of effort with nothing to show for it.”
  • 27. TDD at all levels helps Write a failing acceptance test Write a failing unit test Make the test pass Refactor
  • 28. Create Feedback Loops • Continuous Integration • Continuous Deployment • Continuous Delivery
  • 29. Main Architectural Drivers: Qualities Scalability Throughput Latency Usability Testability Security Maintainability Supportability Diagnosability …
  • 30. Qualities © Benedetto Bufalino http://www.designboom.com/art/benedetto-bufalino- transforms-a-car-into-a-cardboard-ferrari-10-31-2013/ • Have to be baked-in – They cannot easily be retrofitted
  • 31. Often Forgotten Things • Buildability • Deployability • Configurability • Versioning strategies
  • 32. How can I include architectural tasks in my workflow?
  • 33. • Architecture in the Backlog • Architectural Trigger • Architectural Spike • Technical Debt Management Patterns
  • 34. Document After The Fact! IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. SE-12, NO.2, FEBRUARY 1986 251 A Rational Design Process: How and Why to Fake It DAVID LORGE PARNAS AND PAUL C. CLEMENTS Abstract-Many have sought a software design process that allows a program to be derived systematically from a precise statement of re- quirements. This paper proposes that, although we will not succeed in designing a real product in that way, we can produce documentation that makes it appear that the software was designed by such a process. We first describe the ideal process, and the documentation that it re- quires. We then explain why one should attempt to design according to the ideal process and why one should produce the documentation that would have been produced by that process. We describe the contents of each of the required documents. Index Terms-Programming methods, software design, software documentation, software engineering. I. THE SEARCH FOR THE PHILOSOPHER'S STONE: WHY Do WE WANT A RATIONAL DESIGN PROCESS? APERFECTLY rational person is one who always has a good reason for what he does. Each step taken can be shown to be the best way to get to a well defined goal. Most of us like to think of ourselves as rational profes- sionals. However, to many observers, the usual process of designing software appears quite irrational. Programmers start without a clear statement of desired behavior and im- plementation constraints. They make a long sequence of design decisions with no clear statement of why they do things the way they do. Their rationale is rarely explained. Many of us are not satisfied with such a design process. That is why there is research in software design, program- ming methods, structured programming, and related top- ics. Ideally, we would like to derive our programs from a statement of requirements in the same sense that theorems are derived from axioms in a published proof. All of the methodologies that can be considered "top down" are the result of our desire to have a rational, systematic way of designing software. This paper brings a message with both bad news and good news. The bad news is that, in our opinion, we will never find the philosopher's stone. We will never find a process that allows us to design software in a perfectly rational way. The good news is that we can fake it. We can present our system to others as if we had been rational designers and it pays to pretend do so during development and maintenance. Manuscript received March 18, 1985. This work was supported by the U.S. Navy and by the National Science and Engineering Research Council (NSERC) of Canada. D. L. Parnas is with the Department of Computer Science, University of Victoria, Victoria, B. C. V8W 2Y2, Canada, and the Computer Science and Systems Branch, Naval Research Laboratory, Washington, DC 20375. P. C. Clements is with the Computer Science and Systems Branch, Naval Research Laboratory, Washington, DC 20375. IEEE Log Number 8405736. II. WHY WILL A SOFTWARE DESIGN "PROCESS" ALWAYS BE AN IDEALIZATION? We will never see a software project that proceeds in the "rational" way. Some of the reasons are listed below: 1) In most cases the people who commission the build- ing of a software system do not know exactly what they want and are unable to tell us all that they know. 2) Even if we knew the requirements, there are many other facts that we need to know to design the software. Many of the details only become known to us as we pro- gress in the implementation. Some of the things that we learn invalidate our design and we must backtrack.Be- cause we try to minimize lost work, the resulting design may be one that would not result from a rational design process. 3) Even if we knew all of the relevant facts before we started, experience shows that human beings are unable to comprehend fully the plethora of details that must be taken into account in order to design and build a correct system. The process of designing the software is one in which we attempt to separate concerns so that we are working with a manageable amount of information. How- ever, until we have separated the concerns, we are bound to make errors. 4) Even if we could master all of the detail needed, all but the most trivial projects are subject to change for ex- ternal reasons. Some of those changes may invalidate pre- vious design decisions. The resulting design is not one that would have been produced by a rational design pro- cess. 5) Human errors can only be avoided if one can avoid the use of humans. Even after the concerns are separated, errors will be made. 6) We are often burdened by preconceived design ideas, ideas that we invented, acquired on related projects, or heard about in a class. Sometimes we undertake a project in order to tryout or use a favorite idea. Such ideas may not be derived from our requirements by a rational pro- cess. 7) Often we are encouraged, for economic reasons, to use software that was developed for some other project. In other situations, we may be encouraged to share our soft- ware with another ongoing project. The resulting software may not be the ideal software for either project, i.e., not the software that we would develop based on its require- ments alone, but it is good enough and will save effort. For all of these reasons, the picture of the software de- signer deriving his design in a rational, error-free way from a statement of requirements is quite unrealistic. No 0098-5589/86/0200-0251$01.00 © 1986 IEEE
  • 35. Brownfield And Legacy Systems • Rewrite from scratch rarely works • The previous approach still apply
  • 37. Books ptg6985396 From the Library of Giovanni Asproni ptg6985396 From the Library of Giovanni Asproni