Flexible Application Development

Mijn visie voor de beste aanpak om flexibel, efficiënt maar degelijk maatwerk software te bouwen, vat ik samen met een zelfbedachte term: FAD (Flexible Application Development).  FAD is een manier van werken dat de flexibiliteit van RAD/Agile methoden combineert met een degelijke technische architectuur. Zonder extra hulpmiddelen leidt een degelijke architectuur meestal tot veel extra werk voor de ontwikkelaars. Het geheim van FAD is de manier waarop het potentiële nadeel van een degelijke architectuur juist wordt omgebogen tot het tegenovergestelde. De gekozen architectuur wordt uitgekristalliseerd in een application framework dat zoveel mogelijk de "domme" repetitieve ontwikkelaars taken automatiseert. In plaats van een blok aan het been van de ontwikkelaars wordt het applicatie framework juist een geavanceerd stuk gereedschap dat het vanzelfsprekende automatiseert. Hierdoor kan de ontwikkelaar zich dus  maximaal concentreren op het eigenlijke werk.

Het werken met een FAD applicatie framework betekent wel een forse investering aan het begin van de rit. Deze investering verdient zichzelf gemakkelijk terug binnen een groter project of als er meerdere kleinere applicaties gebouwd kunnen worden met hetzelfde framework.

De pijlers van een FAD applicatie framework zijn:

  • Maak de relationele database transparant met een volwassen model-driven ORM (Object Relational Mapper). Vandaag de dag is het EF (Entity Framework) in .NET 3.5 SP1 de aangewezen kandidaat hiervoor.
  • Het hart van de applicatie logica bestaat uit use-case controllers. Het framework standaardiseert de manier waarop de use-case controllers met elkaar en met de UI communiceren. Deze use-case controllers kunnen uitstekend uitgevoerd worden als WF (Workflow Foundation) statemachine workflows. WF is een standaard onderdeel van .NET 3.x
  • Meta-data over de business entiteiten (labels, verplichte velden, default waarden, maximale lengte van tekstvelden enz) en security regels worden op één enkele plek in de applicatie vastgelegd. Alle andere onderdelen, zoals de UI controls in het framdwork, zijn "slim genoeg" om deze meta-data op te halen en te verwerken. De Visible, ReadOnly en Enabled eigenschappen van de controls in de schermen van de UI worden centraal geset door een framework mechanisme dat het overzicht heeft over alle elementen die deze settings beïnvloeden. Deze invloeden zijn: statische security regels, dynamische security regels, en de status waarin de use-case zich bevindt. In de logica achter elke scherm van de UI is hier dus geen regel code voor nodig. De UI code blijft trouwens in het algemeen tot een absoluut minimum beperkt.

Met de voortschrijdende mogelijkheden van het .NET framework zelf is het onvermijdelijk dat een optimaal FAD applicatie framework regelmatig opnieuw gebouwd zal moeten worden. Men mag stellen dat een FAD framework na drie jaar alweer redelijk verouderd zal zijn.

Mijn vorige FAD framework heb ik gebaseerd op de model-driven ORM van  Nolics (.NET 2.0). Deze is inmiddels verouderd door de invoering van het EF (Entity Framework) binnen .NET 3.5 SP1. Omdat de bouw van een FAD applicatie framework volgens de laatste stand van de .NET techniek een forse investering is, ben ik op zoek naar partners om de kosten van deze investering te spreiden.
Een begin is er in elk geval. U kunt de vorderingen van mijn experimenten volgen via menu optie Application Framework.