devnology community day

Post on 25-Jun-2015

448 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Software Anti-Patterns(uit de praktijk)André Boonzaaijer – aboonzaaijer@sogyo.nl

SOFTWARE INNOVATORS 2

Agenda

Voorstellen Context Anti-Patterns

SOFTWARE INNOVATORS 3

Wie ben ik?

André Boonzaaijer Sogyo Academy

▫ Trainer

▫ Coach

▫ Architect/Developer

SOFTWARE INNOVATORS 4

Context

Context

SOFTWARE INNOVATORS 5

Software leverancier

Software gebruiker

+

SOFTWARE INNOVATORS 6

Software levenscyclus

SOFTWARE INNOVATORS 7

Lifecycle

Revolutie Evolutie

10%

10 jaar

Platform,Taal,

Design

Patterns,Proces,

Tools

90%

Software leveranciers: tijdlijn

SOFTWARE INNOVATORS 8

DOS

1990 2000 2010

Win32 Managed / Web

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

SOFTWARE INNOVATORS 10

Anti-Patterns

10-year RAD-Race

SOFTWARE INNOVATORS 11

DOS

1990 2000 2010

Win32 Managed / Web

10-year RAD-Race

12

User Interface

‘Monoliet’

Database

10-year RAD-Race

13

Presentation Layer

Data Layer

User Interface

‘Monoliet’

Database

10-year RAD-Race

14

Presentation Layer

Data Layer

Business logic

10-year RAD-Race

15

Presentation Layer

Data Layer

Business logic

10-year RAD-Race: Conclusion?

16

Presentation Layer

Data Layer

Business logic

Token-ring development

17

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

- Source Control- CI oplossing

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

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

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

Let’s make it ourselves

SOFTWARE INNOVATORS 21

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();

}

}

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

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

Inverse domain language

Babylon revisited

Bon Regel Post Vracht

== Transportorder

SOFTWARE INNOVATORS 25

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.

Conclusies

Modelleren is een vak

Expliciet zijn is belangrijker dan generiek zijn

Onderbouw en verifieer je keuzes

SOFTWARE INNOVATORS 27

SOFTWARE INNOVATORS 28

Contact

André Boonzaaijer

aboonzaaijer@sogyo.nl

030 - 220 22 16

Web: www.sogyo.nl

Blog: www.software–innovators.nl

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

top related