SlideShare una empresa de Scribd logo
1 de 11
Simplicity




             Slide 1 of 11
             23. October 2012




             Matthias Kraaz

             © Zühlke 2012
Simplicity




Simplicity – the art of maximizing the amount of work not done –
is essential.
                              The Manifesto for Agile Software Development




Simplicity | Matthias Kraaz                           23. October 2012   Slide 2 of 11   © Zühlke 2012
Simplicity




The “Gang of Four” Design Patterns
•      Creational patterns (5)
•      Structural patterns (7)
•      Behavioral patterns (12)




Simplicity | Matthias Kraaz          23. October 2012   Slide 3 of 11   © Zühlke 2012
Simplicity




                              class Bridge


                                             Bridge

                                                      «use»
                                    API                                    SPI




Simplicity | Matthias Kraaz                             23. October 2012         Slide 4 of 11   © Zühlke 2012
Simplicity


All problems in computer science can be solved by another level
of indirection. But that usually will create another problem.
                              David Wheeler, 1927-2004, inventor of the subroutine


On the other hand, the effect that indirection has on the
comprehensibility of our code is a very important concern,
because over the last 50 years, in contrast to the dizzying
increases in CPU speeds, the ability of humans to understand
code hasn't improved much.
                                                                      Diomidis Spinellis



Simplicity | Matthias Kraaz                                  23. October 2012   Slide 5 of 11   © Zühlke 2012
Simplicity


    class Gas-AHP Architektur



                                                                           Wird zyklisch von Main
                                                                           aufgerufen




                                          REG::RHM         «use»                  REG::RRB

                                                                      +    RRB_Hauptschleife() : void

                                                           «use»




                                                                                       «use»                 «use»
                                                                                                                                                                                                Abgrenzung
                                                                                                                                                                                                Verantwortlichkeit zu
                                                                            «use»                «use»
                                                                                                                                                                                                SDS?
                                                                                                                                       STK::SDI
                                                                                     «use»

                                                                                                                                                                                                            STK::SDE
                                                                                                                                                                                                                                                                                                                                                                           STK::SZP


                                                                                                            STK::SKF



                                                                                                                                                                                                                                                                      Abgrenzung
                                                                                                                                                                                                    «use»                                                             Verantwortlichkeit zu
                                                                                    STK::SMV                                                                                                                                                                          SDE?
                                                                                                                                                                                                                                             «use»                                                                              «use»

                                                                                                                                            «use»     «use»
                                                                                                                                                                                                     «use»
                                                                                                                                                                                                                                                                     «use»
                                                                                                                                                                          «use»                                                                                                STK::SDS
                                                                                                                                                                                        «use»

                                                                                                                                                                                                                                                                      +   SDS_VS1Server() : void
                                              STK::SDG
                                                                                                                                                                           «use»
                                  +   SDG_showDebugMessage() : void
                                                                                                                                                                                                               «use»                      «use»
                                                                                                                                                        STK::SDV                                                                                                          «use» «use»
        Abhängigkeiten zu
                                                                                                       STK::SSU
        praktisch allen                                                                                                                                                                                                                                                                                                                                                        «use»
                                                                                                                                                                                                                                                                               STK::SBD
        Modulen (nicht im
                                                                                                                               «use»                                                            «use»           «use»
        Modell enthalten).            STK::Main
                                                                                                                                                       «use»                                                                               «use»
                                                                                                                                                                                            «use»
                                                                                                                                                                                                                 «use»
                                                                                                                                                                                                                                                                                              «use»


                                                                                                                                                                                                                                                                                                                               «use»
                                                                                                                                                                                             «use»

                                            STK::SDL                                                                                                                                                                            «use»
                                                                                                                 STK::SKD
                                                                                                                                                                                                                                                                                                                               «use»
                                                                                                                                                                                                                                                                                                      STK::SKO
                                                                                                                                                               STK::SKT
                                                                                                                                                                                                              «use»
                                                                                                                                                                                                             «use»
            Querschnittliche                                                                                                                                                                                                              «use»                              «use»
                                                                                                                                                                                                                                                                              «use»
            Module: Verwendung
            in verschiedensten              STK::SRP
            Modulen (nicht alle                                                                                                                                                                                                                                                                                                                                               STK::SSY
            Verwendungen im                                                                                                                                                                                                                            «use»
            Modell enthalten).                                                                                                                                                                                          «use»
                                                                                                                                                                                                                            «use»                                                                                  «use»


                                                                                                                                                                                                                                                                                                                            «use»
                                            STK::SZT                                                                                                                                                                                                                                                           «use»
                                                                                                                                                                                    «use»                                                                                   «use»
                                                                                                                                                                                                                                                                      STK::SCB
                                                                                                                                           «use»
                                                                                                                                                                                                                                                                                                                                                        «use»
                                                                                                                                                                            «use»                                                                                                                  «use»                                                  Fragt Adressen zum
                                                                                                                                                                                                                                                                                                   «use»                                                  Speichern des Backups
                                                                                                                                                                                                                                                                                                                                                                    «use»
                                                                                                                                                                                                                                                                                                                                                          im EEPROM und
                                              «use»                                                                                                                                            Nur lesend.                                                                                                                                                Fehlerstatus ab.
                                                                                               «use»     «use»                 «use»                                                             «use»
                                                                                                                                                                                                                                            STK::SRG                                                       «use»
                                             STK::TSY                                                                                                                                                                                                                 «use»
                                                                                                                                                                                                                                                                                                       «use»
                                                                                                                                                                                                                                                                              «use»

                                                                                                                                                                                                                                                                                                                                                        STK::SCS
                                                                                                                                                                                                                                                                                      KEE_hwqcCheckEEPR
                                                                                                                                                                                                                    «use»                                                             OM
                                                                                                                                                                                                               «use»                                                                                                                    +    SCS_FehlerStatus() : void
                                                                                                                                                                                                                                                                                                                               «use»




                                                                                                                                                                                                                                                              «use»


                                                                                                                                           STK::KBD                                                                                                                        «use»
                                                                                               STK::KKO                                                            STK::KEE                                                                                                                                                                    KTM_showZeile für
                                                                                                                                                                                                                                                                                                                    «use»                                                                                                  «use»
                                                                                                                                                                                                                                                                                                                                               "Wink"
                                                                                                                       «use»

                                             THA_flashEnable/THA
                                             _flashDisable
                                                                                    «use»
                                                                                                                                                                                                                                                     «use»
                                                                                                                                                                                                                                                                                                                                                                    «use»



                                                                                                                     «use»                «use»        «use»

                                                                          «use»
                                                                                                                                                                                                                                                                                                                   STK::KVS                                     STK::KTM


                                                                                                                                                                                                                                                                                                                                                                                         Abhängigkeiten zu
                                                                                                                                                                                                                                                                                                                                        «use»
                                                                                                                                                                                                                                                                                                                                                                                         praktisch allen
                                                                                                                                       STK::TIB                                                                                                                                                                                                                                          Modulen (nicht im
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Composite Beziehung:
                                                                                                                                                                                                                                                                                                                                                                                         Modell enthalten).
                                                                                                                                                                                                        Composite Beziehung:                                                                                                                                                                                                                                                      - Teile von RIO sind in
                                                                                                                                                                                                        - Teile von LIO sind in                                                                                                                                                                                                                                                   anderen Modulen
                                                                                                                                                                                                        anderen Modulen                                                                                                                                                                                                                                                           implementiert
                                                                                                                                                                                                        implementiert                                    STK::LIO                                                                                                                                                                                             STK::RIO            - RIO benutzt auch die
                                                                                                                                                                                                        - LIO benutzt auch die                                                                                                                                                                                                                                                    anderen Module
                                                                                                                                                                                                        anderen Module                                                                                                                                                                                                                                                            - die anderen Module
                                                                                                                                                                                                        - die anderen Module                                                                                                                                                                                                                                                      benutzen RIO
                                                                                                                                                                                                        benutzen LIO                                                                                                                        «use»                  «use»




                                                                                                                                                                                                                                                                                                                                                                                                                           «use»




                                                                                                                                                                                                                      STK::TDI                    STK::TAI                 STK::TSM                STK::TDO                                                                                                                               STK::KKM_EAH1
                                                                                                                                                                                                                                                                                                                            STK::TPW                               STK::TSA                               STK::KKM_VC100   STK::KKM_EEV                   STK::KKM_Solar   STK::KKM_MI        STK::KKM_FB   STK::KKM_AIR

                                                                                                                                                                                                                                                                                                                                                    +    TSA_empfangeRingPuffer() : void
                                                                                                                                                                                                                                                                                                                                                    +    TSA_getZeichen() : void
                                                                                                                                                                                                                                                                                                                                                    +    TSA_sendePuffer() : void




                                                                                                                                                                                                                                 «use»       «use»           «use»        «use»




                                                                                                                                                                                                                                         STK::THA




Simplicity | Matthias Kraaz                                                                                                                                                                                                                                                                                                                                                                                                                               23. October 2012                                                 Slide 6 of 11   © Zühlke 2012
Simplicity




                              YAGNI
                              You ain’t gonna need it!




Simplicity | Matthias Kraaz                              23. October 2012   Slide 7 of 11   © Zühlke 2012
Simplicity




                       class Simplicity


                                Class1               Class2

                                          «use»




Simplicity | Matthias Kraaz                       23. October 2012   Slide 8 of 11   © Zühlke 2012
Simplicity




  class Refactoring


                              Class1                                           Class2

                                       «use»
                                               Interface1




Simplicity | Matthias Kraaz                                 23. October 2012       Slide 9 of 11   © Zühlke 2012
Simplicity



    class Increment


                                                                               Class3




                              Class1                                           Class2

                                       «use»
                                               Interface1




Simplicity | Matthias Kraaz                                 23. October 2012       Slide 10 of 11   © Zühlke 2012
Simplicity




                                KISS
                              Keep it simple, stupid!




Simplicity | Matthias Kraaz                             23. October 2012   Slide 11 of 11   © Zühlke 2012

Más contenido relacionado

Destacado

Kiedy makijaz staje sie pasja
Kiedy makijaz staje sie pasjaKiedy makijaz staje sie pasja
Kiedy makijaz staje sie pasja
emaras
 
The best seven and a half years of my life have
The best seven and a half years of my life haveThe best seven and a half years of my life have
The best seven and a half years of my life have
newb55
 
My Visual Resume
My Visual ResumeMy Visual Resume
My Visual Resume
AceCS1989
 
Modern day curing revised july 2006
Modern day curing revised july 2006Modern day curing revised july 2006
Modern day curing revised july 2006
curing1958
 
Presentation1 For Online Class
Presentation1 For Online ClassPresentation1 For Online Class
Presentation1 For Online Class
Tkhi222
 
Financial management main book
Financial management main bookFinancial management main book
Financial management main book
Yasin Mahmood
 

Destacado (18)

Where2 Kerja Presentation Revised 29112012
Where2 Kerja Presentation Revised 29112012Where2 Kerja Presentation Revised 29112012
Where2 Kerja Presentation Revised 29112012
 
Visual Resume
Visual ResumeVisual Resume
Visual Resume
 
Visual Resume
Visual ResumeVisual Resume
Visual Resume
 
Kiedy makijaz staje sie pasja
Kiedy makijaz staje sie pasjaKiedy makijaz staje sie pasja
Kiedy makijaz staje sie pasja
 
On line exam_demo
On line exam_demoOn line exam_demo
On line exam_demo
 
Portfolio presentation
Portfolio presentationPortfolio presentation
Portfolio presentation
 
The best seven and a half years of my life have
The best seven and a half years of my life haveThe best seven and a half years of my life have
The best seven and a half years of my life have
 
My Visual Resume
My Visual ResumeMy Visual Resume
My Visual Resume
 
Media Evaluation
Media EvaluationMedia Evaluation
Media Evaluation
 
Modern day curing revised july 2006
Modern day curing revised july 2006Modern day curing revised july 2006
Modern day curing revised july 2006
 
Presentation1 For Online Class
Presentation1 For Online ClassPresentation1 For Online Class
Presentation1 For Online Class
 
St. lucia
St. luciaSt. lucia
St. lucia
 
Museo d´arte sacra di San Paolo Brasile
Museo d´arte sacra di San Paolo BrasileMuseo d´arte sacra di San Paolo Brasile
Museo d´arte sacra di San Paolo Brasile
 
Financial management main book
Financial management main bookFinancial management main book
Financial management main book
 
Cars
CarsCars
Cars
 
P209 leithiser-relationaldb-formal-specifications
P209 leithiser-relationaldb-formal-specificationsP209 leithiser-relationaldb-formal-specifications
P209 leithiser-relationaldb-formal-specifications
 
Capela de São Pedro de Monte Alegre - Piracicaba
Capela de São Pedro de Monte Alegre - PiracicabaCapela de São Pedro de Monte Alegre - Piracicaba
Capela de São Pedro de Monte Alegre - Piracicaba
 
Governors business taskforce decd
Governors business taskforce decdGovernors business taskforce decd
Governors business taskforce decd
 

Simplicity - The Art Of Maximizing The Amount Of Work Not Done

  • 1. Simplicity Slide 1 of 11 23. October 2012 Matthias Kraaz © Zühlke 2012
  • 2. Simplicity Simplicity – the art of maximizing the amount of work not done – is essential. The Manifesto for Agile Software Development Simplicity | Matthias Kraaz 23. October 2012 Slide 2 of 11 © Zühlke 2012
  • 3. Simplicity The “Gang of Four” Design Patterns • Creational patterns (5) • Structural patterns (7) • Behavioral patterns (12) Simplicity | Matthias Kraaz 23. October 2012 Slide 3 of 11 © Zühlke 2012
  • 4. Simplicity class Bridge Bridge «use» API SPI Simplicity | Matthias Kraaz 23. October 2012 Slide 4 of 11 © Zühlke 2012
  • 5. Simplicity All problems in computer science can be solved by another level of indirection. But that usually will create another problem. David Wheeler, 1927-2004, inventor of the subroutine On the other hand, the effect that indirection has on the comprehensibility of our code is a very important concern, because over the last 50 years, in contrast to the dizzying increases in CPU speeds, the ability of humans to understand code hasn't improved much. Diomidis Spinellis Simplicity | Matthias Kraaz 23. October 2012 Slide 5 of 11 © Zühlke 2012
  • 6. Simplicity class Gas-AHP Architektur Wird zyklisch von Main aufgerufen REG::RHM «use» REG::RRB + RRB_Hauptschleife() : void «use» «use» «use» Abgrenzung Verantwortlichkeit zu «use» «use» SDS? STK::SDI «use» STK::SDE STK::SZP STK::SKF Abgrenzung «use» Verantwortlichkeit zu STK::SMV SDE? «use» «use» «use» «use» «use» «use» «use» STK::SDS «use» + SDS_VS1Server() : void STK::SDG «use» + SDG_showDebugMessage() : void «use» «use» STK::SDV «use» «use» Abhängigkeiten zu STK::SSU praktisch allen «use» STK::SBD Modulen (nicht im «use» «use» «use» Modell enthalten). STK::Main «use» «use» «use» «use» «use» «use» «use» STK::SDL «use» STK::SKD «use» STK::SKO STK::SKT «use» «use» Querschnittliche «use» «use» «use» Module: Verwendung in verschiedensten STK::SRP Modulen (nicht alle STK::SSY Verwendungen im «use» Modell enthalten). «use» «use» «use» «use» STK::SZT «use» «use» «use» STK::SCB «use» «use» «use» «use» Fragt Adressen zum «use» Speichern des Backups «use» im EEPROM und «use» Nur lesend. Fehlerstatus ab. «use» «use» «use» «use» STK::SRG «use» STK::TSY «use» «use» «use» STK::SCS KEE_hwqcCheckEEPR «use» OM «use» + SCS_FehlerStatus() : void «use» «use» STK::KBD «use» STK::KKO STK::KEE KTM_showZeile für «use» «use» "Wink" «use» THA_flashEnable/THA _flashDisable «use» «use» «use» «use» «use» «use» «use» STK::KVS STK::KTM Abhängigkeiten zu «use» praktisch allen STK::TIB Modulen (nicht im Composite Beziehung: Modell enthalten). Composite Beziehung: - Teile von RIO sind in - Teile von LIO sind in anderen Modulen anderen Modulen implementiert implementiert STK::LIO STK::RIO - RIO benutzt auch die - LIO benutzt auch die anderen Module anderen Module - die anderen Module - die anderen Module benutzen RIO benutzen LIO «use» «use» «use» STK::TDI STK::TAI STK::TSM STK::TDO STK::KKM_EAH1 STK::TPW STK::TSA STK::KKM_VC100 STK::KKM_EEV STK::KKM_Solar STK::KKM_MI STK::KKM_FB STK::KKM_AIR + TSA_empfangeRingPuffer() : void + TSA_getZeichen() : void + TSA_sendePuffer() : void «use» «use» «use» «use» STK::THA Simplicity | Matthias Kraaz 23. October 2012 Slide 6 of 11 © Zühlke 2012
  • 7. Simplicity YAGNI You ain’t gonna need it! Simplicity | Matthias Kraaz 23. October 2012 Slide 7 of 11 © Zühlke 2012
  • 8. Simplicity class Simplicity Class1 Class2 «use» Simplicity | Matthias Kraaz 23. October 2012 Slide 8 of 11 © Zühlke 2012
  • 9. Simplicity class Refactoring Class1 Class2 «use» Interface1 Simplicity | Matthias Kraaz 23. October 2012 Slide 9 of 11 © Zühlke 2012
  • 10. Simplicity class Increment Class3 Class1 Class2 «use» Interface1 Simplicity | Matthias Kraaz 23. October 2012 Slide 10 of 11 © Zühlke 2012
  • 11. Simplicity KISS Keep it simple, stupid! Simplicity | Matthias Kraaz 23. October 2012 Slide 11 of 11 © Zühlke 2012