SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
Softwareentwicklung

ohne

Abhängigkeiten



Stefan Lieser

@stefanlieser

http://refactoring-legacy-code.net
Typische Struktur von
Abhängigkeiten
A B
= Funktionseinheit (Methode, Klasse, etc.)
= Abhängigkeit (A ist abhängig von B)
Typische Struktur von
Abhängigkeiten
Typische Struktur von
Abhängigkeiten
Änderungen
Typische Struktur von
Abhängigkeiten
=>
Keine Domänenlogik,
nur Daten
Typische Struktur von
Abhängigkeiten
Logik, die das Thema

der Anwendung betrifft.
Domänenlogik
Typische Struktur von
Abhängigkeiten
Änderungen
Typische Struktur von
Abhängigkeiten
=>
Keine Domänenlogik,
nur Integration
Typische Struktur von
Abhängigkeiten
Unit Tests einfach, da keine Abhängigkeiten
Unit Tests aufwändig, Einsatz von Attrappen
Blätter = Operationen = Domänenlogik
Knoten = Integration
Integration Operation
Segregation Principle (IOSP)
Wenige Integrationstests
Viele Unittests
Viele Integrationstests
Wenige Unittests
Integration
Operation
Data
Integration Operation
Data Architecture (IODA)
IOSP
Nervenzelle
Muskelzelle
Motorische Endplatte
Nervenzelle
Muskelzelle
Motorische Endplatte
Nervenzelle
Muskelzelle
Acetylcholin
Motorische Endplatte
Nervenzelle
Muskelzelle
Acetylcholin
Motorische Endplatte
Principle of Mutual
Oblivion (PoMO)
Prinzip der
gegenseitigen
Nichtbeachtung
PoMO
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
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;
}
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!!)
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;
}
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
Projektstruktur
Projektstruktur
Application
Integration
.exe Projekt
maximale
Abhängigkeiten
Referenziert alle anderen
Projekte. Startet die
Anwendung in der Main
Methode.
Projektstruktur
Kontrakte
Interfaces, Datentypen
.dll Projekt
keine Abhängigkeiten
Projektstruktur
Komponenten
Logik, UI, Ressourcen,

etc.
.dll Projekte
Keine Abhängigkeiten
Referenziert lediglich

die Kontrakte.
Tests referenzieren
zugehörige Impl.
crm.contracts
crm
crm.persistencecrm.logic crm.ui
Integration Operation
Segregation Principle (IOSP)
Principle of Mutual
Oblivion (PoMO)
Prinzip der
gegenseitigen
Nichtbeachtung
http://refactoring-legacy-code.net
http://linkedin.com/in/stefanlieser
https://twitter.com/StefanLieser
http://xing.com/profile/stefan_lieser

Contenu connexe

Tendances

Tendances (20)

Portfolio management lean canvas
Portfolio management lean canvasPortfolio management lean canvas
Portfolio management lean canvas
 
Scaling Agile With SAFe (Scaled Agile Framework)
Scaling Agile With SAFe (Scaled Agile Framework)Scaling Agile With SAFe (Scaled Agile Framework)
Scaling Agile With SAFe (Scaled Agile Framework)
 
Scaled Agile Framework SAFe 4.0
Scaled Agile Framework SAFe 4.0Scaled Agile Framework SAFe 4.0
Scaled Agile Framework SAFe 4.0
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
Módulo 7. Gestión de proyectos ágiles
Módulo 7. Gestión de proyectos ágilesMódulo 7. Gestión de proyectos ágiles
Módulo 7. Gestión de proyectos ágiles
 
Agile Communities of Practice: Set Up, Sustain, Succeed
Agile Communities of Practice: Set Up, Sustain, SucceedAgile Communities of Practice: Set Up, Sustain, Succeed
Agile Communities of Practice: Set Up, Sustain, Succeed
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache Camel
 
DevOps: A Culture Transformation, More than Technology
DevOps: A Culture Transformation, More than TechnologyDevOps: A Culture Transformation, More than Technology
DevOps: A Culture Transformation, More than Technology
 
Microservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karafMicroservices OSGi-running-with-apache-karaf
Microservices OSGi-running-with-apache-karaf
 
AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...
AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...
AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...
 
Adoptando y escalando la agilidad en corporaciones
Adoptando y escalando la agilidad en corporacionesAdoptando y escalando la agilidad en corporaciones
Adoptando y escalando la agilidad en corporaciones
 
RefCard API Architecture Strategy
RefCard API Architecture StrategyRefCard API Architecture Strategy
RefCard API Architecture Strategy
 
Building a Solid Business Case for Cloud Migration
Building a Solid Business Case for Cloud MigrationBuilding a Solid Business Case for Cloud Migration
Building a Solid Business Case for Cloud Migration
 
SAFe DevOps digital workbook (5.0)
SAFe DevOps digital workbook (5.0) SAFe DevOps digital workbook (5.0)
SAFe DevOps digital workbook (5.0)
 
Chaos engineering & Gameday on AWS
Chaos engineering & Gameday on AWSChaos engineering & Gameday on AWS
Chaos engineering & Gameday on AWS
 
Deep Dive on Delivering Amazon EC2 Instance Performance
Deep Dive on Delivering Amazon EC2 Instance PerformanceDeep Dive on Delivering Amazon EC2 Instance Performance
Deep Dive on Delivering Amazon EC2 Instance Performance
 
[es] Agile Management es diferente - CAS2014
[es] Agile Management es diferente - CAS2014[es] Agile Management es diferente - CAS2014
[es] Agile Management es diferente - CAS2014
 
Cloud foundry: The Platform for Forging Cloud Native Applications
Cloud foundry: The Platform for Forging Cloud Native ApplicationsCloud foundry: The Platform for Forging Cloud Native Applications
Cloud foundry: The Platform for Forging Cloud Native Applications
 
Case Study: The internals of Amazon.com's architecture that allows it to secu...
Case Study: The internals of Amazon.com's architecture that allows it to secu...Case Study: The internals of Amazon.com's architecture that allows it to secu...
Case Study: The internals of Amazon.com's architecture that allows it to secu...
 
AWS Cloud Assessment
AWS Cloud AssessmentAWS Cloud Assessment
AWS Cloud Assessment
 

Softwareentwicklung ohne Abhängigkeiten