$30 off During Our Annual Pro Sale. View Details »

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

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  

    View Slide

  2. Wrong  Job  Title?  
    So-ware  Architect  
    So-ware  Engineer  

    View Slide

  3. Why  not  So-ware  Doctor?  

    View Slide

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

    View Slide

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

    View Slide

  6. So-ware  Development  occurs  through  
    ConOnuous    Human  CreaOve  Cycles  
    IntenOon   RealizaOon  
    Feedback  
    Synthesis  

    View Slide

  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.    

    View Slide

  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  

    View Slide

  9. So-ware  Programming  is  not  like  pure  
    Engineering  

    View Slide

  10. So-ware  Programing  is  not  like  
    Building  ConstrucOon  

    View Slide

  11. So-ware  Programmers  are  not  like  
    ConstrucOon  Workers  

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. Perhaps  So-ware  is  like  Music  

    View Slide

  16. Computer  vs  Music  Player  

    View Slide

  17. Program  vs  Pentagram    

    View Slide

  18. Programming  vs  Composing  

    View Slide

  19. Running  a  Program  vs  Playing  Music  
    compiled  
    interpreted  

    View Slide

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

    View Slide

  21. Harmony  and  Melody  
    The  HARMONY  provides  the  base    for  the  MELODY  
    Harmony  is  transversal  to  the  music  Melodies  

    View Slide

  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  

    View Slide

  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’  

    View Slide

  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  

    View Slide

  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  

    View Slide

  26. Not  having    Conceptual  Integrity  leads  
    to  chaoOc  systems  
    MulOple  minds  working  in  complex  system  without  unity  and  conceptual  integrity  

    View Slide

  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  

    View Slide

  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?  

    View Slide

  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  

    View Slide

  30. Bad  So-ware  Architect  ConcepOon  

    View Slide

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

    View Slide

  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

    View Slide

  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  
     

    View Slide

  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  

    View Slide

  35. ElaboraOng  So-ware  Harmony  

    View Slide

  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  

    View Slide

  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  

    View Slide

  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/  

    View Slide

  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  

    View Slide

  40. There  is  no  silver  bullet  
    There  is  no  single  correct  architecture  and  no  single  “right  answer”.  
    JAZZWARE  

    View Slide

  41. Q  &  A  

    View Slide