Download - Devnology Community Day
![Page 1: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/1.jpg)
Software Anti-Patterns(uit de praktijk)André Boonzaaijer – [email protected]
![Page 2: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/2.jpg)
SOFTWARE INNOVATORS 2
Agenda
Voorstellen Context Anti-Patterns
![Page 3: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/3.jpg)
SOFTWARE INNOVATORS 3
Wie ben ik?
André Boonzaaijer Sogyo Academy
▫ Trainer
▫ Coach
▫ Architect/Developer
![Page 4: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/4.jpg)
SOFTWARE INNOVATORS 4
Context
![Page 5: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/5.jpg)
Context
SOFTWARE INNOVATORS 5
Software leverancier
Software gebruiker
![Page 6: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/6.jpg)
+
SOFTWARE INNOVATORS 6
![Page 7: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/7.jpg)
Software levenscyclus
SOFTWARE INNOVATORS 7
Lifecycle
Revolutie Evolutie
10%
10 jaar
Platform,Taal,
Design
Patterns,Proces,
Tools
90%
![Page 8: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/8.jpg)
Software leveranciers: tijdlijn
SOFTWARE INNOVATORS 8
DOS
1990 2000 2010
Win32 Managed / Web
![Page 9: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/10.jpg)
SOFTWARE INNOVATORS 10
Anti-Patterns
![Page 11: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/11.jpg)
10-year RAD-Race
SOFTWARE INNOVATORS 11
DOS
1990 2000 2010
Win32 Managed / Web
![Page 12: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/12.jpg)
10-year RAD-Race
12
User Interface
‘Monoliet’
Database
![Page 13: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/13.jpg)
10-year RAD-Race
13
Presentation Layer
Data Layer
User Interface
‘Monoliet’
Database
![Page 14: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/14.jpg)
10-year RAD-Race
14
Presentation Layer
Data Layer
Business logic
![Page 15: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/15.jpg)
10-year RAD-Race
15
Presentation Layer
Data Layer
Business logic
![Page 16: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/16.jpg)
10-year RAD-Race: Conclusion?
16
Presentation Layer
Data Layer
Business logic
![Page 17: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/21.jpg)
Let’s make it ourselves
SOFTWARE INNOVATORS 21
![Page 22: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/25.jpg)
Inverse domain language
Babylon revisited
Bon Regel Post Vracht
== Transportorder
SOFTWARE INNOVATORS 25
![Page 26: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/28.jpg)
SOFTWARE INNOVATORS 28
Contact
André Boonzaaijer
030 - 220 22 16
Web: www.sogyo.nl
Blog: www.software–innovators.nl
![Page 29: Devnology Community Day](https://reader035.vdocuments.us/reader035/viewer/2022062514/558b02cbd8b42a97688b45eb/html5/thumbnails/29.jpg)
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