Upload
ruben-gonzalez-blanco
View
348
Download
2
Embed Size (px)
Citation preview
architecture in so-ware is wri/en with lowercase ‘a’
Ruben Gonzalez Blanco Nov12 DEVCON1 Telefonica I+D
Wrong Job Title?
So-ware Architect So-ware Engineer
Why not So-ware Doctor?
What is So-ware Development?
A personal understanding
So-ware Development is a process of conOnuous Knowledge TransformaOon
Problem SoluOon
Knowledge about
So-ware Development occurs through ConOnuous Human CreaOve Cycles
IntenOon RealizaOon
Feedback
Synthesis
Till the Desired Working So2ware Emerges
Inten%on' Realiza%on'
Feedback'
Synthesis'
Inten%on' Realiza%on'
Feedback'
Synthesis'
Inten%on' Realiza%on'
Feedback'
Synthesis'
Inten%on' Realiza%on'
Feedback'
Synthesis'
Inten%on' Realiza%on'
Feedback'
Synthesis'
Compile Failed
Run Failed
Test Failed
Test Passed
Enhance Idea/Design
Test Failed
Inten%on' Realiza%on'
Feedback'
Synthesis'
Test Passed
WORKING SOFTWARE
IntenFonal
Emergent
Emergence is the key characterisOc of complex systems.
In some sense is a kind of Art or Cra-
Problem & Programming Idea
Code, Run & Test
Review Outcome
Programmer
Scene & PainOng Idea
Paint
Review Outcome Painter
Digital Experience Creators Visual Experience Creators
So-ware Programming is not like pure Engineering
So-ware Programing is not like Building ConstrucOon
So-ware Programmers are not like ConstrucOon Workers
Does So-ware Architecture and So-ware Architects make sense?
In fact, there is not a single definiOon of So-ware Architecture and the role
of So-ware Architect
Looking at so-ware from a different perspecOve trying to re-‐understand what “So-ware a-‐rchitecture” is
Perhaps So-ware is like Music
Computer vs Music Player
Program vs Pentagram
Programming vs Composing
Running a Program vs Playing Music
compiled
interpreted
So-ware Programming, like music, requires deliberate pracOce
Harmony and Melody
The HARMONY provides the base for the MELODY Harmony is transversal to the music Melodies
Perhaps Programming So-ware is like Jazz
Original Dixieland Jass Band
Melodies are improvised/created on top of a shared Harmony created by a composer
Everybody is a Composer
The Harmony provides consistency
So-ware Architect = So-ware Harmonist = So-ware Harmony Composer
See the lower case ‘a’
So-ware Programmers = So-ware Melody Composers
JAZZWARE
So-ware Architecture = So-ware Harmony See the lower case ‘a’
So-ware Harmony is about Conceptual Integrity
Anywhere you look in your system, you can tell that the design is part of the same overall design style, theme, mood …is about Design and Style Consistency in all dimensions of the system
Fed Brooks: “It is be>er to have a system...reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas”
User interface, technologies, coding styles, naming convenFons, directory structures, classes, components, interfaces, internal and external behavior, deployment…
Conceptual Integrity tries to limit the system complexity Conceptual Integrity simplifies collaboraOon when creaOng so-ware
The Mythical Man-‐Month
Conceptual Integrity examples
• Unix • based on the noOon of a "file” (e.g. directories, devices,
filesystems, named pipes and sockets are all sort-‐of files) • Smalltalk
• "everything is an object", and the small set of other accompanying principles
• SQL • "all data is in tables", with keys and constraints
• Lisp • "everything is a list”
h>p://c2.com/cgi/wiki?ConceptualIntegrity
Not having Conceptual Integrity leads to chaoOc systems
MulOple minds working in complex system without unity and conceptual integrity
7 Dimensions
Process Dimension
Deployment Dimension
Logical Dimension
External Dimension
Implementation Dimension
Solu%on Vision Classes, Modules, Design Components, Interfaces, Interac%ons
Use Cases / User Stories UX Guidelines
Run%me Processes, Threads Protocols, Inter-‐process Communica%on, Integra%ons
Implementa%on Structure and Components Frameworks, Libraries Base Technologies, Programming Languages
Infrastructure, Hardware and Network Topology
Data Dimension
Environment Dimension Environments Tools Development Process, Methods and Prac%ces
Data En%%es Data Messages
Logical
Physical
Achieving Conceptual Integrity
FredBrooks: "Conceptual integrity in turn dictates that the design must proceed from one mind, or from a very small number of agreeing resonant minds"
Aristocracy vs Democracy?
“TradiOonal” So-ware Architect
architect derives from the LaOn architectus, which derives from the Greek arkhitekton (arkhi-‐, chief + tekton, builder), i.e., chief builder
Bad So-ware Architect ConcepOon
Be/er So-ware Architect ConcepOon SOll can be improved
So-ware Harmonist = Technical Leader Services
Mod
ules
Packages
Classes
Code
Breadth & Depth
Process Dimension
Deployment (Dimension
Logical((Dimension
External Dimension
Implementation Dimension
Classes,'Modules,'Design''Components,'Interfaces
Use'Cases'/'User'Stories'UX'Guidelines'
Run=me'Processes,'Threads''Protocols,''InterAprocess'Communica=on'
Implementa=on'Structure'and'Components'Frameworks,'Libraries'Base'Technologies,'Programming'Languages
Infrastructure,'Hardware'and'Network'Topology'
Data Dimension
Environment Dimension Environments'Tools'Development'Process,'Methods'and'Prac=ces'
Data'En==es'Data'Messages'
7 Dimensions
So-ware Harmonist = Technical Leader or Development Leader
• Is able to compose and play So-ware • is hands on
• Guides, Coaches and Leads other So-ware Composers • is a reference
So-ware Harmonist = Technical Leader or Development Leader
• Keeps Conceptual Integrity and Unity across the system and teams, while limiOng complexity • Retains the final say in technical disputes or arguments within
the team(s)
Small teams with resonant minds could not need an specific tech leader
ElaboraOng So-ware Harmony
From IntenOonal to Emerging
Initial team
Agile Project Kickoff
Management team
Architecture team
time
Initial project team
Prototyping team
I1 I2 I3
Initial team
Agile Project Kickoff
Management team
Architecture team
time
Initial project team
Prototyping team
I1 I2 I3
Feature 1 Team
Feature2 Team
Infraestructure Team
I4 I5
Prototyping team
• IntenOonal harmony (architecture) is explicitly idenOfied and then implemented • Accidental harmony (architecture) emerges from the mulOtude of individual design
decisions that occur during development, only a-er which can we name that architecture
Process Dimension
Deployment (Dimension
Logical((Dimension
External Dimension
Implementation Dimension
Classes,'Modules,'Design''Components,'Interfaces
Use'Cases'/'User'Stories'UX'Guidelines'
Run=me'Processes,'Threads''Protocols,''InterAprocess'Communica=on'
Implementa=on'Structure'and'Components'Frameworks,'Libraries'Base'Technologies,'Programming'Languages
Infrastructure,'Hardware'and'Network'Topology'
Data Dimension
Environment Dimension Environments'Tools'Development'Process,'Methods'and'Prac=ces'
Data'En==es'Data'Messages'
INTENTIONAL
EMERGENT
GROWING
So-ware Harmony(architecture) is Elaborated, Built, Used and Executed
Architecture=Harmony is created as set of subopOmal design decisions that can be re-‐factor later on
SP1 SP2 SP3 SP4 SP5 SP6 SP7 SP8 Sprint0 SP9
Building the Harmony Using Building ….. Using
IntenO
onal
Emergent
IntenO
onal
Emergent
The Dilemma
Solu%on : Assuring Conceptual Integrity via Capacity Alloca%on to architecture = Harmony
Source: Dean Leffinweel , h>p://scaledagileframework.com/guidance/assuring-‐architectural-‐integrity-‐via-‐capacity-‐allocaFon/
Desired A/ributes of a So-ware Work
High Cohesion each part/element is narrowed focused in its primary task
Low Coupling
each part is self-‐contained/orthogonal achieved thru separaOon of concerns and encapsulaOon Conceptual Integrity
there is a consistent design* and style across all so-ware dimensions
(*) programming is design
Source: “The Art in Computer Programming”, By Andrew Hunt and David Thomas
There is no silver bullet
There is no single correct architecture and no single “right answer”.
JAZZWARE
Q & A