Upload
boonzaai
View
448
Download
0
Tags:
Embed Size (px)
Citation preview
Software Anti-Patterns(uit de praktijk)André Boonzaaijer – [email protected]
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
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