devnology community day

29
Software Anti-Patterns (uit de praktijk) André Boonzaaijer – [email protected]

Upload: boonzaai

Post on 25-Jun-2015

448 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Devnology Community Day

Software Anti-Patterns(uit de praktijk)André Boonzaaijer – [email protected]

Page 2: Devnology Community Day

SOFTWARE INNOVATORS 2

Agenda

Voorstellen Context Anti-Patterns

Page 3: Devnology Community Day

SOFTWARE INNOVATORS 3

Wie ben ik?

André Boonzaaijer Sogyo Academy

▫ Trainer

▫ Coach

▫ Architect/Developer

Page 4: Devnology Community Day

SOFTWARE INNOVATORS 4

Context

Page 5: Devnology Community Day

Context

SOFTWARE INNOVATORS 5

Software leverancier

Software gebruiker

Page 6: Devnology Community Day

+

SOFTWARE INNOVATORS 6

Page 7: Devnology Community Day

Software levenscyclus

SOFTWARE INNOVATORS 7

Lifecycle

Revolutie Evolutie

10%

10 jaar

Platform,Taal,

Design

Patterns,Proces,

Tools

90%

Page 8: Devnology Community Day

Software leveranciers: tijdlijn

SOFTWARE INNOVATORS 8

DOS

1990 2000 2010

Win32 Managed / Web

Page 9: Devnology Community Day

The ‘Sogyo’ of software systems

SOFTWARE INNOVATORS 9

Delphi,C++,

C,VB,

Smalltalk,DSDM,

RUP,Waterfall,

RAD,JBF,

(T/PL) SQL,Client/server,

PHP

Java SE / Java EE,C# / ASP.NET,SCRUM,XP,Issue tracking,Source control,Continuous Integration,AJAX / Comet,MDD,DDD,Architecture,O/R bridging,SOA,EDA,Requirements modeling

Page 10: Devnology Community Day

SOFTWARE INNOVATORS 10

Anti-Patterns

Page 11: Devnology Community Day

10-year RAD-Race

SOFTWARE INNOVATORS 11

DOS

1990 2000 2010

Win32 Managed / Web

Page 12: Devnology Community Day

10-year RAD-Race

12

User Interface

‘Monoliet’

Database

Page 13: Devnology Community Day

10-year RAD-Race

13

Presentation Layer

Data Layer

User Interface

‘Monoliet’

Database

Page 14: Devnology Community Day

10-year RAD-Race

14

Presentation Layer

Data Layer

Business logic

Page 15: Devnology Community Day

10-year RAD-Race

15

Presentation Layer

Data Layer

Business logic

Page 16: Devnology Community Day

10-year RAD-Race: Conclusion?

16

Presentation Layer

Data Layer

Business logic

Page 17: Devnology Community Day

Token-ring development

17

- Heen en weer mailen sources- Geen tracking van changes- Veel communicatie-overhead

- Source Control- CI oplossing

Page 18: Devnology Community Day

Framework mania

“Het bestaat al”: zoveel mogelijk hergebruiken

SOFTWARE INNOVATORS 18

Source

UI Fw

Data Fw

Logging Fw

- Veel afhankelijkheden (versies)- Stijle leercurve: veel fw’s leren- Neemt eplosief toe per geintroduceerd framework: combinatorische effecten - Te strict werken met frameworks verstart (4-GL achtig)

- Te voorkomen door stricte selectie (“architectuur”)- Op te lossen door ontkoppeling

Page 19: Devnology Community Day

See also: Swiss army knife

“Generic “ Code

Over-Generic Development

SOFTWARE INNOVATORS 19

- Bijvoorbeeld: uit de hand gelopen “Layer Supertype”- Super generiek plug-in framework- Overdraagbaarheid...

- Voorkomen door duidelijk design, goed review/monitoring proces-Oplossen door Refactoring: overhevelen naar specifieke code

Specific code

Page 20: Devnology Community Day

Let’s make it ourselves

See also: Re-invent the wheel

Validatieframeworks O/R bridge Rule engine

SOFTWARE INNOVATORS 20

- Oorzaken: trots, onwetendheid- Per definitie slecht gedocumenteerd- Slechte overdraagbaarheid

- Voorkomen door ervaring, kennis en kunde- Is niet altijd slecht: heeft een hoge educatieve meerwaarde en geeft volledige controle

Page 21: Devnology Community Day

Let’s make it ourselves

SOFTWARE INNOVATORS 21

Page 22: Devnology Community Day

Ever-lasting service interface

See also: Wolf ticket

SOFTWARE INNOVATORS 22

public class SuperGenericNeverBreakingService : System.Web.Services.WebService

{

[WebMethod]

public string ProcessMessage(string xmlMessage)

{

return DoSomeMagicWithLotsOfDatabasesAndStuff();

}

}

Page 23: Devnology Community Day

3NF business modeling

SOFTWARE INNOVATORS 23

- “Mooi” genormaliseerd model- Wat gebeurt er als een bedrijf verhuist?

cd Class Model

Company Transport

- Date: long

City From

To

cd Class Model

Company Transport

- Date: long

City

Location

- Date: long

From

To1..*

- Oplossing door modelleren:

- “Generieke” oplossing: Datavault

Page 24: Devnology Community Day

Who Built the Pyramids?

(Over)-designed custom framework, 10 jaar oud

Geen of nauwelijks documentatie

De makers zijn weg

10-year RAD Race.

SOFTWARE INNOVATORS 24

Page 25: Devnology Community Day

Inverse domain language

Babylon revisited

Bon Regel Post Vracht

== Transportorder

SOFTWARE INNOVATORS 25

Page 26: Devnology Community Day

DDD – the technologist’s way

DDD gaat over:

SOFTWARE INNOVATORS 26

Persistency, Repositories, value objects, (re)hydration,

identity, O/R mapping, Persistency Ignorance, decoupling, inversion of

control, dependency injection, ....

NEE! DDD gaat over: Begrijpen van (ergo: modelleren van) de business van je klant.PUNT.

Page 27: Devnology Community Day

Conclusies

Modelleren is een vak

Expliciet zijn is belangrijker dan generiek zijn

Onderbouw en verifieer je keuzes

SOFTWARE INNOVATORS 27

Page 28: Devnology Community Day

SOFTWARE INNOVATORS 28

Contact

André Boonzaaijer

[email protected]

030 - 220 22 16

Web: www.sogyo.nl

Blog: www.software–innovators.nl

Page 29: Devnology Community Day

The ASP.Net Trap

Windows development == ASP.NET development

Web is stateless, ASP.NET dus ook!

Minder transparante abstracties voor “echte” web developers (PHP, Servlet/JSP developers)

SOFTWARE INNOVATORS 29