Technisch ontwerp
Samen met jou brengen we de wensen en eisen in kaart. Als duidelijk is wat de hoofdzaken en de bijzaken zijn, leggen we in een technisch ontwerp vast hoe de applicatie gebouwd wordt: welke technieken we gebruiken, hoe de gegevens zijn opgebouwd en hoe de applicatie meegroeit als er meer gebruikers en meer functies bij komen.
Een functioneel ontwerp gaat over wat de applicatie doet. Een technisch ontwerp gaat over hoe dat gebouwd wordt. Wij maken ze in die volgorde, zodat je bij elke technische keuze kunt terugzien welke wens erachter zat.
Wat staat er in een technisch ontwerp
Hoe uitgebreid het document is, hangt af van de omvang van de applicatie. Deze onderdelen komen er bij ons altijd in terug.
Datamodel
Welke gegevens je vastlegt, hoe die aan elkaar hangen en welk systeem de bron is als twee systemen hetzelfde veld bijhouden.Koppelingen
Met welke systemen gegevens worden uitgewisseld, in welke richting, hoe vaak, en wat er gebeurt als de andere kant niet reageert.Gebruikers en rechten
Welke rollen er zijn en wat iemand binnen een rol mag zien en doen.Techniekkeuze
Welke database, welke packages en modules, en welke front-end- en back-endtechnieken we kiezen, met de reden waarom.Omgevingen en hosting
Waar de applicatie draait, hoe een wijziging van test naar live gaat en hoe de back-ups lopen. Voor het beheer daarna kun je een SLA met ons afsluiten voor applicatie onderhoud, met afspraken over reactietijden en updates.Beveiliging
Welke maatregelen we inbouwen en welke misbruikroutes we dichtzetten. Standaard zijn dat tweefactorauthenticatie bij het inloggen, rechten per rol in plaats van één beheerdersaccount voor iedereen, versleutelde verbindingen en waar nodig toegang die beperkt is tot vaste IP-adressen. Na de oplevering voeren we een securitycontrole uit op wat er gebouwd is.Ruimte voor fase twee
Wat er later bij kan komen, zodat die functies niet tegen de opzet in werken.
Het datamodel is het onderdeel dat je het moeilijkst terugdraait. Welke databases passen bij je applicatie en hoe de tabellen eruitzien, bepalen we daarom voordat er een regel code staat. Hetzelfde geldt voor de beveiliging van applicaties en websites, want inloggen en rechten achteraf inbouwen raakt vrijwel elk scherm.
Welk risico je loopt, hangt af van de gegevens die de applicatie verwerkt. Per soort leggen we in het ontwerp vast waar ze staan, wie erbij kan en hoe lang ze blijven.
Persoonsgegevens
Zodra er gegevens van mensen in gaan, geldt de AVG. We nemen alleen de velden op die je echt nodig hebt, spreken een bewaartermijn af die zichzelf opruimt, en leggen vast wie ze mag inzien en of dat terug te zien is in een logboek.Inloggegevens
Wachtwoorden gaan versleuteld de database in en zijn niet terug te lezen, ook niet door ons. Daarnaast staat tweefactorauthenticatie aan voor iedereen met beheerrechten en spreken we af hoe lang een sessie geldig blijft.Financiële gegevens
Bij facturen, bedragen en kortingen bepaalt de rechtenstructuur wie ze mag zien en wie ze mag wijzigen. Een wijziging is herleidbaar, zodat je achteraf kunt zien wie wat heeft aangepast.Documenten en bestanden
Contracten, afbeeldingen en bijlagen komen buiten de webmap te staan, zijn alleen op te vragen door iemand die er recht op heeft, en lopen mee in de back-up.
Wat een applicatie zelf niet kan opvangen, hoort bij het beheer erna. In de pakketten waar je applicatie op leunt worden vrijwel wekelijks nieuwe kwetsbaarheden gepubliceerd, en die bewaken we per project in ons securitydashboard.
Het verschil tussen een functioneel ontwerp en een technisch ontwerp
In het functioneel ontwerp staat wat de applicatie moet doen. De schermen, de stappen die een gebruiker doorloopt, de rollen en de regels waar de software zich aan houdt. Iemand zonder technische kennis moet kunnen nakijken of er iets mist, want dat is precies waar het document voor bedoeld is.
In het technisch ontwerp staat hoe die functionaliteit gebouwd wordt. Tabellen, endpoints, achtergrondtaken, cachegedrag en de plek waar bestanden terechtkomen. Dat document bepaalt hoeveel uur het bouwen kost.
Bij kleinere projecten lopen de twee in elkaar over en leggen we ze in één document vast. Zodra er meerdere systemen bij betrokken zijn, splitsen we het, omdat jij de functionele kant goedkeurt en wij de technische kant uitwerken.
Software architectuur: welke keuzes je vastlegt
Software architectuur is de verzameling keuzes die je later moeilijk kunt terugdraaien. Vijf daarvan komen in bijna elk project terug.
Hoe de applicatie is opgedeeld, als één geheel of als losse onderdelen die met elkaar praten.
Waar de logica staat, in de database, in de back-end of in de browser.
Hoe zwaar werk wordt afgehandeld, direct in het verzoek van de gebruiker of op de achtergrond in een wachtrij.
Wat de applicatie doet als een koppeling er even uit ligt.
Hoe je ziet dat het werkt, met logging, monitoring en foutmeldingen die bij ons binnenkomen.
In veel bestaande applicaties zijn deze keuzes nooit vastgelegd. Elke nieuwe functie is daar op een andere plek opgelost, en na een paar jaar kost een kleine wijziging dagen in plaats van uren. In een software audit halen we die keuzes achteraf naar boven, maar aan het begin vastleggen is goedkoper.
Technisch ontwerp voor een website of webapplicatie
Voor een website blijft het ontwerp beperkt tot de opbouw van de pagina's, het beheer van de content en de snelheid. Bij een webapplicatie ontwikkelen komt de logica erbij, en dan bepaalt het ontwerp hoe de applicatie zich houdt bij meer gebruikers en meer data.
Het ontwerp is de tweede stap in ons traject. Na de intake leggen we vast wat we gaan bouwen, daarna bouwen we in sprints en lever je elke twee weken een deel op. De hele werkwijze staat per stap uitgeschreven, inclusief wat we op welk moment van je nodig hebben.
Kies de juiste techniek voor je applicatie
Als je weet wanneer je welke techniek moet toepassen, voorkom je veel problemen. Wil je je applicatie laten overnemen, dan is de gemaakte techniekkeuze het eerste wat we in kaart brengen, want juist daar gaat het geregeld mis. De keuze voor de juiste techniek, opzet en database zorgt ervoor dat de ontwikkeling vlot verloopt en dat je applicatie snel en veilig blijft.
Het kiezen van de juiste techniek zorgt er voor dat de code leesbaar en onderhoudbaar blijft.
Veelgestelde vragen
Wat is een technisch ontwerp?
Een technisch ontwerp beschrijft hoe een applicatie gebouwd wordt. Het datamodel staat erin, de koppelingen met andere systemen, de rollen en rechten, de plek waar de applicatie draait en de keuze voor het framework en de database. Het document is bedoeld voor de ontwikkelaars die eraan gaan werken.
Bij een klein project blijft het kort. Zodra er meerdere systemen gegevens uitwisselen, wordt het uitgebreider, omdat elke koppeling zijn eigen afspraken heeft over richting, frequentie en wat er gebeurt als de andere kant niet reageert.
Wat staat er in een functioneel ontwerp?
In een functioneel ontwerp staat wat de applicatie doet, beschreven in taal die je zonder technische kennis kunt nakijken. Het gaat over de schermen, de stappen die een gebruiker doorloopt, wie wat mag zien en de regels waar de software zich aan houdt.
Wij gebruiken het als de basis voor de urenschatting. Je leest het door en geeft aan wat er mist, en daarna maken we het technisch ontwerp waarin staat hoe we het bouwen.
Wie maakt het technisch ontwerp?
Het technisch ontwerp maken wij, waarna ons ontwikkelteam ermee aan de slag gaat. Loopt iemand tijdens het bouwen tegen iets aan, dan passen we eerst het ontwerp aan en daarna de code.
Je hoeft er zelf niets technisch aan te doen. Wat wij van jou nodig hebben, zijn de wensen en de uitzonderingen in je proces. Die uitzonderingen bepalen namelijk vaak meer van de opzet dan de hoofdlijn.