Antipatrones de Software

21
Teach Yourself C++ in 21 Days

description

Esta presentación recorre una serie de falacias comunes respecto al desarrollo de software y una serie de antipatrones clásicos.

Transcript of Antipatrones de Software

Page 1: Antipatrones de Software

Teach Yourself C++ in 21 Days

Page 2: Antipatrones de Software

Falacias y AntipatronesFalacias y Antipatrones

Martín SalíasMartín Salías

Page 3: Antipatrones de Software

Las 7 falacias de la computación distribuidaLas 7 falacias de la computación distribuida

Esencialmente todos, al construir su Esencialmente todos, al construir su primer aplicación distribuida, hacen las primer aplicación distribuida, hacen las siguientes siete presunciones.siguientes siete presunciones.

Todas resultan ser falsas a largo plazo, Todas resultan ser falsas a largo plazo, y todas causan y todas causan grandesgrandes problemas y problemas y dolorosasdolorosas experiencias de aprendizaje. experiencias de aprendizaje.

Peter DeutschPeter Deutsch

Page 4: Antipatrones de Software

1. La red es confiable1. La red es confiable

Page 5: Antipatrones de Software

2. La latencia es cero2. La latencia es cero

Page 6: Antipatrones de Software

3. El ancho de banda es infinito3. El ancho de banda es infinito

Page 7: Antipatrones de Software

4. La red es segura4. La red es segura

Page 8: Antipatrones de Software

5. La topología no cambia5. La topología no cambia

Page 9: Antipatrones de Software

6. Hay un solo Administrador6. Hay un solo Administrador

Page 10: Antipatrones de Software

7. El costo de transporte es cero 7. El costo de transporte es cero

Page 11: Antipatrones de Software

88. La red es homogénea (Gosling). La red es homogénea (Gosling)

Page 12: Antipatrones de Software

99. El sistema es monolítico (Neward). El sistema es monolítico (Neward)

Page 13: Antipatrones de Software

1010. El sistema está terminado (Neward). El sistema está terminado (Neward)

Page 14: Antipatrones de Software

1111? La lógica de negocios puede ? La lógica de negocios puede –y debe– ser centralizada (Neward)–y debe– ser centralizada (Neward)

Page 15: Antipatrones de Software

CorolarioCorolario

Page 16: Antipatrones de Software
Page 17: Antipatrones de Software

MetodologíaMetodología

• Copy and paste programmingCopy and paste programming

• Golden hammer / Silver BulletGolden hammer / Silver Bullet

• Improbability factorImprobability factor

• Premature optimizationPremature optimization

• Programming by permutationProgramming by permutation

• Reinventing the wheel / Reinventing the square wheelReinventing the wheel / Reinventing the square wheel

• Tester Driven DevelopmentTester Driven Development

Page 18: Antipatrones de Software

ProgramaciónProgramación• Accidental complexityAccidental complexity

• Action at a distanceAction at a distance

• Blind faithBlind faith

• Boat anchor / Lava flowBoat anchor / Lava flow

• Busy spinBusy spin

• Caching failureCaching failure

• Cargo cult programmingCargo cult programming

• Coding by exceptionCoding by exception

• Error hidingError hiding

• Hard codeHard code

• Loop-Loop-switchswitch sequence sequence

• Magic numbers / stringsMagic numbers / strings

• Soft codeSoft code

• Spaghetti codeSpaghetti code

Page 19: Antipatrones de Software

DiseñoDiseño• Big ball of mudBig ball of mud

• Database-as-IPCDatabase-as-IPC

• Gold platingGold plating

• Inner-platform effectInner-platform effect

• Input kludgeInput kludge

• Interface bloatInterface bloat

• Magic pushbuttonMagic pushbutton

• Race hazardRace hazard

• Stovepipe systemStovepipe system

Page 20: Antipatrones de Software

Orientación a ObjetosOrientación a Objetos

Page 21: Antipatrones de Software

BibliografíaBibliografía

[email protected]@salias.com.arblog.salias.com.arblog.salias.com.ar@MartinSalias@MartinSalias