Successfully reported this slideshow.

Devnology Community Day

700 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Devnology Community Day

  1. 1. Software Anti-Patterns (uit de praktijk) André Boonzaaijer – aboonzaaijer@sogyo.nl
  2. 2. Agenda <ul><li>Voorstellen </li></ul><ul><li>Context </li></ul><ul><li>Anti-Patterns </li></ul>SOFTWARE INNOVATORS
  3. 3. Wie ben ik? <ul><li>André Boonzaaijer </li></ul><ul><li>Sogyo Academy </li></ul><ul><ul><li>Trainer </li></ul></ul><ul><ul><li>Coach </li></ul></ul><ul><ul><li>Architect/Developer </li></ul></ul>SOFTWARE INNOVATORS
  4. 4. <ul><li>Context </li></ul>SOFTWARE INNOVATORS
  5. 5. Context SOFTWARE INNOVATORS Software leverancier Software gebruiker
  6. 6. + SOFTWARE INNOVATORS
  7. 7. Software levenscyclus SOFTWARE INNOVATORS Lifecycle Revolutie Evolutie 10% 10 jaar Platform, Taal, Design Patterns, Proces, Tools 90%
  8. 8. Software leveranciers: tijdlijn SOFTWARE INNOVATORS DOS 1990 2000 2010 Win32 Managed / Web
  9. 9. The ‘Sogyo’ of software systems SOFTWARE INNOVATORS 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
  10. 10. <ul><li>Anti-Patterns </li></ul>SOFTWARE INNOVATORS
  11. 11. 10-year RAD-Race SOFTWARE INNOVATORS DOS 1990 2000 2010 Win32 Managed / Web
  12. 12. 10-year RAD-Race User Interface ‘ Monoliet’ Database
  13. 13. 10-year RAD-Race Presentation Layer Data Layer User Interface ‘ Monoliet’ Database
  14. 14. 10-year RAD-Race Presentation Layer Data Layer Business logic
  15. 15. 10-year RAD-Race Presentation Layer Data Layer Business logic
  16. 16. 10-year RAD-Race: Conclusion? Presentation Layer Data Layer Business logic
  17. 17. Token-ring development <ul><li>Heen en weer mailen sources </li></ul><ul><li>Geen tracking van changes </li></ul><ul><li>Veel communicatie-overhead </li></ul><ul><li>Source Control </li></ul><ul><li>CI oplossing </li></ul>
  18. 18. Framework mania <ul><li>“ Het bestaat al”: zoveel mogelijk hergebruiken </li></ul>SOFTWARE INNOVATORS Source UI Fw Data Fw Logging Fw <ul><li>Veel afhankelijkheden (versies) </li></ul><ul><li>Stijle leercurve: veel fw’s leren </li></ul><ul><li>Neemt eplosief toe per geintroduceerd </li></ul><ul><li>framework: combinatorische effecten </li></ul><ul><li>Te strict werken met frameworks verstart </li></ul><ul><li>(4-GL achtig) </li></ul><ul><li>Te voorkomen door stricte selectie </li></ul><ul><li>(“architectuur”) </li></ul><ul><li>- Op te lossen door ontkoppeling </li></ul>
  19. 19. <ul><li>See also: Swiss army knife </li></ul>Over-Generic Development “ Generic “ Code SOFTWARE INNOVATORS <ul><li>Bijvoorbeeld: uit de hand gelopen </li></ul><ul><li>“ Layer Supertype” </li></ul><ul><li>- Super generiek plug-in framework </li></ul><ul><li>Overdraagbaarheid... </li></ul><ul><li>Voorkomen door duidelijk </li></ul><ul><li>design, goed review/monitoring </li></ul><ul><li>proces </li></ul><ul><li>Oplossen door Refactoring: </li></ul><ul><li>overhevelen naar specifieke code </li></ul>Specific code
  20. 20. Let’s make it ourselves <ul><li>See also: Re-invent the wheel </li></ul><ul><li>Validatieframeworks </li></ul><ul><li>O/R bridge </li></ul><ul><li>Rule engine </li></ul>SOFTWARE INNOVATORS <ul><li>Oorzaken: trots, onwetendheid </li></ul><ul><li>Per definitie slecht gedocumenteerd </li></ul><ul><li>Slechte overdraagbaarheid </li></ul><ul><li>Voorkomen door ervaring, kennis en </li></ul><ul><li>kunde </li></ul><ul><li>Is niet altijd slecht: heeft een </li></ul><ul><li>hoge educatieve meerwaarde en </li></ul><ul><li>geeft volledige controle </li></ul>
  21. 21. Let’s make it ourselves SOFTWARE INNOVATORS
  22. 22. Ever-lasting service interface <ul><li>See also: Wolf ticket </li></ul>SOFTWARE INNOVATORS public class SuperGenericNeverBreakingService : System.Web.Services.WebService { [WebMethod] public string ProcessMessage(string xmlMessage) { return DoSomeMagicWithLotsOfDatabasesAndStuff(); } }
  23. 23. 3NF business modeling SOFTWARE INNOVATORS <ul><li>“ Mooi” genormaliseerd model </li></ul><ul><li>Wat gebeurt er als een bedrijf </li></ul><ul><li>verhuist? </li></ul><ul><li>Oplossing door modelleren: </li></ul><ul><li>“ Generieke” oplossing: Datavault </li></ul>
  24. 24. Who Built the Pyramids? <ul><li>(Over)-designed custom framework, 10 jaar oud </li></ul><ul><li>Geen of nauwelijks documentatie </li></ul><ul><li>De makers zijn weg </li></ul><ul><li> 10-year RAD Race. </li></ul>SOFTWARE INNOVATORS
  25. 25. Inverse domain language <ul><li>Babylon revisited </li></ul><ul><li>Bon </li></ul><ul><li>Regel </li></ul><ul><li>Post </li></ul><ul><li>Vracht </li></ul><ul><li>== Transportorder </li></ul>SOFTWARE INNOVATORS
  26. 26. DDD – the technologist’s way <ul><li>DDD gaat over: </li></ul>SOFTWARE INNOVATORS 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.
  27. 27. Conclusies <ul><li>Modelleren is een vak </li></ul><ul><li>Expliciet zijn is belangrijker dan generiek zijn </li></ul><ul><li>Onderbouw en verifieer je keuzes </li></ul>SOFTWARE INNOVATORS
  28. 28. Contact <ul><li>André Boonzaaijer </li></ul><ul><li>[email_address] </li></ul><ul><li>030 - 220 22 16 </li></ul><ul><li>Web: www.sogyo.nl </li></ul><ul><li>Blog: www.software–innovators.nl </li></ul>SOFTWARE INNOVATORS
  29. 29. The ASP.Net Trap <ul><li>Windows development == ASP.NET development </li></ul><ul><li>Web is stateless, ASP.NET dus ook ! </li></ul><ul><li>Minder transparante abstracties voor “echte” web developers (PHP, Servlet/JSP developers) </li></ul>SOFTWARE INNOVATORS

×