Softwareentwicklung ohne Abhängigkeiten

475 Aufrufe

Veröffentlicht am

Abhängigkeiten sind das Grundübel der Softwareenwicklung. Durch Einhaltung des Integration Operation Segregation Principle (IOSP) verlieren die Abhängigkeiten ihren Schrecken. Ferner wird der Code so leicht automatisiert testbar. Durch Einhaltung des Principle of Mutual Oblivion (PoMO) werden unnötige Abhängigkeiten reduziert.
Die Folien zeigen die beiden typischen Strukturen von Abhängigkeiten und wie man damit umgeht. Weitere Infos siehe http://refactoring-legacy-code.net

Veröffentlicht in: Software
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
475
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
21
Aktionen
Geteilt
0
Downloads
12
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Softwareentwicklung ohne Abhängigkeiten

  1. 1. Softwareentwicklung
 ohne
 Abhängigkeiten
 
 Stefan Lieser
 @stefanlieser
 http://refactoring-legacy-code.net
  2. 2. Typische Struktur von Abhängigkeiten
  3. 3. A B = Funktionseinheit (Methode, Klasse, etc.) = Abhängigkeit (A ist abhängig von B) Typische Struktur von Abhängigkeiten
  4. 4. Typische Struktur von Abhängigkeiten
  5. 5. Änderungen Typische Struktur von Abhängigkeiten
  6. 6. => Keine Domänenlogik, nur Daten Typische Struktur von Abhängigkeiten
  7. 7. Logik, die das Thema
 der Anwendung betrifft. Domänenlogik
  8. 8. Typische Struktur von Abhängigkeiten
  9. 9. Änderungen Typische Struktur von Abhängigkeiten
  10. 10. => Keine Domänenlogik, nur Integration Typische Struktur von Abhängigkeiten
  11. 11. Unit Tests einfach, da keine Abhängigkeiten
  12. 12. Unit Tests aufwändig, Einsatz von Attrappen
  13. 13. Blätter = Operationen = Domänenlogik Knoten = Integration
  14. 14. Integration Operation Segregation Principle (IOSP)
  15. 15. Wenige Integrationstests Viele Unittests
  16. 16. Viele Integrationstests Wenige Unittests
  17. 17. Integration Operation Data Integration Operation Data Architecture (IODA)
  18. 18. IOSP
  19. 19. Nervenzelle Muskelzelle Motorische Endplatte
  20. 20. Nervenzelle Muskelzelle Motorische Endplatte
  21. 21. Nervenzelle Muskelzelle Acetylcholin Motorische Endplatte
  22. 22. Nervenzelle Muskelzelle Acetylcholin Motorische Endplatte
  23. 23. Principle of Mutual Oblivion (PoMO) Prinzip der gegenseitigen Nichtbeachtung
  24. 24. PoMO
  25. 25. f f2f1 Flow Design: Datenflussdiagramme ( x ) ( y ) ( x ) ( y )( z ) A B = Funktionseinheit (Methode, Klasse, etc.) = Datenfluss (ein x fließt von A nach B) ( x ) = Verfeinerung
  26. 26. f f2f1 Mit Abhängigkeiten (FALSCH!!) ( x ) ( y ) ( x ) ( y )( z ) Y f(X x) { return f1(x); } Y f1(X x) { var z = …. return f2(z); } Y f2(Z z) { var y = … return y; }
  27. 27. f f2f1 ( x ) ( y ) ( x ) ( y )( z ) Y f(X x) { return f1(x); } Y f1(X x) { var z = …. return f2(z); } Y f2(Z z) { var y = … return y; } Integration Integration + Operation Operation Mit Abhängigkeiten (FALSCH!!)
  28. 28. f f2f1 Ohne Abhängigkeiten ( x ) ( y ) ( x ) ( y )( z ) Y f(X x) { var z = f1(x); var y = f2(z); return y; } Z f1(X x) { var z = …. return z; } Y f2(Z z) { var y = … return y; }
  29. 29. f f2f1 ( x ) ( y ) ( x ) ( y )( z ) Y f(X x) { var z = f1(x); var y = f2(z); return y; } Z f1(X x) { var z = …. return z; } Y f2(Z z) { var y = … return y; } Integration Operation Operation Ohne Abhängigkeiten
  30. 30. Projektstruktur
  31. 31. Projektstruktur Application Integration .exe Projekt maximale Abhängigkeiten Referenziert alle anderen Projekte. Startet die Anwendung in der Main Methode.
  32. 32. Projektstruktur Kontrakte Interfaces, Datentypen .dll Projekt keine Abhängigkeiten
  33. 33. Projektstruktur Komponenten Logik, UI, Ressourcen,
 etc. .dll Projekte Keine Abhängigkeiten Referenziert lediglich
 die Kontrakte. Tests referenzieren zugehörige Impl.
  34. 34. crm.contracts crm crm.persistencecrm.logic crm.ui
  35. 35. Integration Operation Segregation Principle (IOSP)
  36. 36. Principle of Mutual Oblivion (PoMO) Prinzip der gegenseitigen Nichtbeachtung
  37. 37. http://refactoring-legacy-code.net http://linkedin.com/in/stefanlieser https://twitter.com/StefanLieser http://xing.com/profile/stefan_lieser

×