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

software architecture is written with lower case 'a'

software architecture is written with lower case 'a'

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

53eaf4a8485500cb61099a1286e230e3?s=128

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. Wrong  Job  Title?   So-ware  Architect   So-ware  Engineer  

  3. Why  not  So-ware  Doctor?  

  4. What  is  So-ware  Development?     A  personal  understanding  

  5. So-ware  Development  is  a  process  of   conOnuous  Knowledge  TransformaOon

        Problem   SoluOon   Knowledge  about    
  6. So-ware  Development  occurs  through   ConOnuous    Human  CreaOve  Cycles

      IntenOon   RealizaOon   Feedback   Synthesis  
  7. 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.    
  8. 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  
  9. So-ware  Programming  is  not  like  pure   Engineering  

  10. So-ware  Programing  is  not  like   Building  ConstrucOon  

  11. So-ware  Programmers  are  not  like   ConstrucOon  Workers  

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

  13. In  fact,  there  is  not  a  single  definiOon   of

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

     re-­‐understand   what  “So-ware  a-­‐rchitecture”  is  
  15. Perhaps  So-ware  is  like  Music  

  16. Computer  vs  Music  Player  

  17. Program  vs  Pentagram    

  18. Programming  vs  Composing  

  19. Running  a  Program  vs  Playing  Music   compiled   interpreted

     
  20. So-ware  Programming,  like  music,   requires  deliberate  pracOce  

  21. Harmony  and  Melody   The  HARMONY  provides  the  base  

     for  the  MELODY   Harmony  is  transversal  to  the  music  Melodies  
  22. 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  
  23. 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’  
  24. 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  
  25. 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  
  26. Not  having    Conceptual  Integrity  leads   to  chaoOc  systems

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

     which  derives  from  the  Greek   arkhitekton  (arkhi-­‐,  chief  +  tekton,  builder),  i.e.,  chief  builder  
  30. Bad  So-ware  Architect  ConcepOon  

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

  32. 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
  33. 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    
  34. 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  
  35. ElaboraOng  So-ware  Harmony  

  36. 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  
  37. 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  
  38. 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/  
  39. 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  
  40. There  is  no  silver  bullet   There  is  no  single

     correct  architecture  and  no  single  “right  answer”.   JAZZWARE  
  41. Q  &  A