software architecture is written with lowercase a

41
architecture in so-ware is wri/en with lowercase ‘a’ Ruben Gonzalez Blanco Nov12 DEVCON1 Telefonica I+D

Upload: ruben-gonzalez-blanco

Post on 22-Jan-2018

347 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Software Architecture is written with lowercase a

architecture  in  so-ware  is  wri/en  with  lowercase  ‘a’  

Ruben  Gonzalez  Blanco  Nov12  DEVCON1  Telefonica  I+D  

Page 2: Software Architecture is written with lowercase a

Wrong  Job  Title?  

So-ware  Architect  So-ware  Engineer  

Page 3: Software Architecture is written with lowercase a

Why  not  So-ware  Doctor?  

Page 4: Software Architecture is written with lowercase a

What  is  So-ware  Development?    

A  personal  understanding  

Page 5: Software Architecture is written with lowercase a

So-ware  Development  is  a  process  of  conOnuous  Knowledge  TransformaOon    

Problem   SoluOon  

Knowledge  about    

Page 6: Software Architecture is written with lowercase a

So-ware  Development  occurs  through  ConOnuous    Human  CreaOve  Cycles  

IntenOon   RealizaOon  

Feedback  

Synthesis  

Page 7: Software Architecture is written with lowercase a

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.    

Page 8: Software Architecture is written with lowercase a

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  

Page 9: Software Architecture is written with lowercase a

So-ware  Programming  is  not  like  pure  Engineering  

Page 10: Software Architecture is written with lowercase a

So-ware  Programing  is  not  like  Building  ConstrucOon  

Page 11: Software Architecture is written with lowercase a

So-ware  Programmers  are  not  like  ConstrucOon  Workers  

Page 12: Software Architecture is written with lowercase a

Does  So-ware  Architecture  and  So-ware  Architects  make  sense?  

Page 13: Software Architecture is written with lowercase a

In  fact,  there  is  not  a  single  definiOon  of  So-ware  Architecture  and  the  role  

of  So-ware  Architect  

Page 14: Software Architecture is written with lowercase a

Looking  at  so-ware  from  a  different  perspecOve  trying  to  re-­‐understand  what  “So-ware  a-­‐rchitecture”  is  

Page 15: Software Architecture is written with lowercase a

Perhaps  So-ware  is  like  Music  

Page 16: Software Architecture is written with lowercase a

Computer  vs  Music  Player  

Page 17: Software Architecture is written with lowercase a

Program  vs  Pentagram    

Page 18: Software Architecture is written with lowercase a

Programming  vs  Composing  

Page 19: Software Architecture is written with lowercase a

Running  a  Program  vs  Playing  Music  

compiled  

interpreted  

Page 20: Software Architecture is written with lowercase a

So-ware  Programming,  like  music,  requires  deliberate  pracOce  

Page 21: Software Architecture is written with lowercase a

Harmony  and  Melody  

The  HARMONY  provides  the  base    for  the  MELODY  Harmony  is  transversal  to  the  music  Melodies  

Page 22: Software Architecture is written with lowercase a

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  

Page 23: Software Architecture is written with lowercase a

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’  

Page 24: Software Architecture is written with lowercase 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  

Page 25: Software Architecture is written with lowercase a

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  

Page 26: Software Architecture is written with lowercase a

Not  having    Conceptual  Integrity  leads  to  chaoOc  systems  

MulOple  minds  working  in  complex  system  without  unity  and  conceptual  integrity  

Page 27: Software Architecture is written with lowercase a

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  

Page 28: Software Architecture is written with lowercase a

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?  

Page 29: Software Architecture is written with lowercase a

“TradiOonal”  So-ware  Architect  

architect  derives  from  the  LaOn  architectus,  which  derives  from  the  Greek  arkhitekton  (arkhi-­‐,  chief  +  tekton,  builder),  i.e.,  chief  builder  

Page 30: Software Architecture is written with lowercase a

Bad  So-ware  Architect  ConcepOon  

Page 31: Software Architecture is written with lowercase a

Be/er  So-ware  Architect  ConcepOon  SOll  can  be  improved  

Page 32: Software Architecture is written with lowercase a

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

Page 33: Software Architecture is written with lowercase a

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  

 

Page 34: Software Architecture is written with lowercase a

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  

Page 35: Software Architecture is written with lowercase a

ElaboraOng  So-ware  Harmony  

Page 36: Software Architecture is written with lowercase a

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  

Page 37: Software Architecture is written with lowercase a

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  

Page 38: Software Architecture is written with lowercase a

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/  

Page 39: Software Architecture is written with lowercase a

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  

Page 40: Software Architecture is written with lowercase a

There  is  no  silver  bullet  

There  is  no  single  correct  architecture  and  no  single  “right  answer”.  

JAZZWARE  

Page 41: Software Architecture is written with lowercase a

Q  &  A