Upgrade to Pro — share decks privately, control downloads, hide ads and more …

software architecture is written with lower cas...

software architecture is written with lower case 'a'

looking at software and software architecture from a different perspective..
DEVCON1 Telefonica I+D Nov12

Ruben Gonzalez Blanco

November 27, 2012
Tweet

More Decks by Ruben Gonzalez Blanco

Other Decks in Programming

Transcript

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

    Ruben  Gonzalez  Blanco   Nov12  DEVCON1  Telefonica  I+D  
  2. So-ware  Development  occurs  through   ConOnuous    Human  CreaOve  Cycles

      IntenOon   RealizaOon   Feedback   Synthesis  
  3. 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.    
  4. 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  
  5. In  fact,  there  is  not  a  single  definiOon   of

     So-ware  Architecture  and  the  role   of  So-ware  Architect  
  6. Looking  at  so-ware  from  a  different   perspecOve  trying  to

     re-­‐understand   what  “So-ware  a-­‐rchitecture”  is  
  7. Harmony  and  Melody   The  HARMONY  provides  the  base  

     for  the  MELODY   Harmony  is  transversal  to  the  music  Melodies  
  8. 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  
  9. 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’  
  10. 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  
  11. 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  
  12. Not  having    Conceptual  Integrity  leads   to  chaoOc  systems

      MulOple  minds  working  in  complex  system  without  unity  and  conceptual  integrity  
  13. 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  
  14. 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?  
  15. “TradiOonal”  So-ware  Architect   architect  derives  from  the  LaOn  architectus,

     which  derives  from  the  Greek   arkhitekton  (arkhi-­‐,  chief  +  tekton,  builder),  i.e.,  chief  builder  
  16. So-ware  Harmonist  =  Technical  Leader   Services   Modules  

    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
  17. 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    
  18. 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  
  19. 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  
  20. 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   IntenOonal   Emergent   IntenOonal   Emergent  
  21. 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/  
  22. 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  
  23. There  is  no  silver  bullet   There  is  no  single

     correct  architecture  and  no  single  “right  answer”.   JAZZWARE