Software ontwikkeling is het tonen van informatie door middel van een app, progressive web app (pwa), web applicatie, software systeem of iets dergelijks. Dit kan via het internet, maar het is ook mogelijk om dit alleen via besloten omgevingen -die niet voor de buitenwereld toegankelijk zijn- in te richten.

Waarom software ontwikkeling?

De voordelen van software ontwikkeling voor Start-ups, Scale-ups en Corporates op een rij:

  1. Proces optimalisatie en/of automatisering
  2. Kostenbesparing
  3. Nauwkeurige controle
  4. Verhoogde kwaliteit in dienstverlening
  5. Meer inzicht in data

Nieuwsgierig naar wat wij voor je kunnen betekenen?

Plan dan een vrijblijvend adviesgesprek in. De deur staat altijd open voor een praatje en een kop koffie!

Wij vertellen je graag over software ontwikkeling

Wat wil je weten

7
Tips voor software ontwikkeling

Wil je nog meer informatie over software ontwikkeling?

  1. Software ontwikkeling: Hoe begin ik?

1. Start bij software ontwikkeling vanuit de waardepropositie

Je waardepropositie bij software ontwikkeling beschrijft het probleem dat je oplost of de waarde die je toevoegt. Het maakt duidelijk welk onderscheidend vermogen jouw plek met bijvoorbeeld een software platform in de markt is. Met behulp van bijvoorbeeld een Business Model Canvas maak je een doordacht plan met de doelgroepen, het verdienmodel en relevante partners.

De waardepropositie wil je vervullen door software te laten ontwikkelen. De oplossingsrichting is vaak gebaseerd op aannames. Deze moeten bij eindgebruikers getoetst worden, waar een prototype goed bij kan helpen! Zo zorg je ervoor dat je alleen de meest waardevolle softwarefunctionaliteiten laat ontwikkelen.

Lees meer over het Business Model Canvas in ons blog.

2. Werk bij software ontwikkeling een prototype uit in de vorm van een klikbaar design

Bij software ontwikkeling wordt er met behulp van het ingevulde Business Model Canvas gestart met de eerste visuele ontwerpen. Deze worden met een klikbaar design zo snel mogelijk bij de doelgroep getest om direct feedback te ontvangen. Dit zorgt uiteindelijk voor een beter platform of product en bespaart veel development kosten en aanpassingen in de toekomst.

3. Minimum Viable Product (MVP) uitwerken

Na het uitvoerig testen van het prototype kan gestart worden met de eerste ontwikkeling. Een Minimum Viable Product (MVP) is de eerste versie die het minimale van een product bevat, zodat deze zo vroeg mogelijk kan worden uitgerold naar de eindklant om de propositie te toetsen. Het doel is om zo snel mogelijk feedback te krijgen waarmee de prioriteit bepaald kan worden voor de doorontwikkeling van bijvoorbeeld de webapplicatie.

Bedenk hoe software ontwikkeling zo snel mogelijk al waarde kan opleveren!

2. Hoe ziet de doorontwikkeling eruit?

Opschalen van software

Wanneer een prototype en/of een MVP van de applicatie ervoor heeft gezorgd dat de waarde propositie in de praktijk is gebruikt en getest, wordt het steeds beter meetbaar welke waarde het product bevat. Dat betekent dat er opgeschaald kan worden. De aanpak van het ontwikkelen van een MVP blijf je hanteren maar je gaat wel meer rekening houden met de schaalbaarheid en performance van de software platform. Met het opschalen komen er meer gebruikers op het platform en komt er meer feedback terug. Parallel aan het opschalen in de softwareontwikkeling, ga je dus ook nadenken over het supportproces en bijvoorbeeld activiteiten starten voor het vermarkten van je platform.

 

Volwassen platform

Vanuit het opschalen van je software platform kom je op een punt waarbij de belangrijkste doelgroepen gebruik maken je software platform en het verdienmodel zorgt voor voldoende inkomsten om de doorontwikkeling te bekostigen. Bij een volwassen software platform ga je opnieuw een experimentele fase in door op zoek te gaan naar nieuwe proposities en kansen voor je platform. Het aantal koppelingen of partners zal worden uitgebreid en er zal een structurele onderstroom zijn waarin het platform wordt onderhouden en doorontwikkeld.

Nieuwsgierig naar wat wij voor jou kunnen betekenen?

3. Welke ontwikkelmethoden zijn er?

Vanuit het opschalen van je software platform kom je op een punt waarbij de belangrijkste doelgroepen gebruik maken je software platform en het verdienmodel zorgt voor voldoende inkomsten om de doorontwikkeling te bekostigen. Bij een volwassen software platform ga je opnieuw een experimentele fase in door op zoek te gaan naar nieuwe proposities en kansen voor je platform. Het aantal koppelingen of partners zal worden uitgebreid en er zal een structurele onderstroom zijn waarin het platform wordt onderhouden en doorontwikkeld.

Agile

Wanneer op voorhand niet gedetailleerd is beschreven wat het eindproduct moet worden, wil je een wendbaar (agile) ontwikkelproces. Het uitgangspunt bij agile software development is om feedback in plaats van een planning als basis te gebruiken. In korte iteraties wordt telkens een deel van de software opgeleverd dat direct bruikbaar is in de praktijk. Zo verzamel je in een vroeg stadium de feedback die nodig is om tot het eindproduct te komen en lever je in een kort tijdsbestek al waarde voor eindgebruikers.

Waterfall

Met de waterval ontwikkelmethode heb je maximaal grip op het proces. Er wordt gefaseerd gewerkt en iedere nieuwe fase wordt pas gestart zodra de voorgaande fase succesvol is doorlopen. Bij aanvang van een project wordt zeer uitgebreid beschreven waar het eindproduct aan moet voldoen en wat er nodig is om dit te realiseren. Hierdoor ontstaat een helder beeld van de kosten en de planning. Het nadeel is dat je niet in staat bent om tussentijds in te spelen op nieuwe inzichten omdat dit kan betekenen dat alle eerder afgeronde fases opnieuw moeten worden uitgevoerd. Een ander groot nadeel is dat je pas waarde levert nadat het volledige ontwikkeltraject is afgerond. Het is dus niet mogelijk om tussentijds al een deel te gebruiken en daar opbrengsten uit te genereren.

Agile vs Waterfall

Binnen Agile zijn er diverse methodes

Scrum

Binnen de agile ontwikkelmethode wordt veel flexibiliteit geboden om tijdens het proces wijzigingen door te voeren. Het nadeel daarvan is dat het lastig is om vooraf te weten wat het eindproduct gaat worden, welke planning hieraan vasthangt en wat ervoor nodig is om dit te realiseren. Met scrum worden er bewezen projectmanagement technieken toegepast om daar meer grip op te krijgen. Zo wordt bij aanvang van een iteratie het werk ingepland waardoor je weet wat er aan het einde van de iteratie wordt opgeleverd. Door de voortgang uit het verleden door te trekken op de wensenlijst van de toekomst, krijg je een globaal beeld welke functionaliteit in de komende iteraties wordt opgepakt. Bij scrum wordt een multidisciplinair team ingezet: een team dat alle specialisaties bevat om iedere uitdaging op te lossen. Hierdoor krijg je meer grip op de benodigde capaciteit maar blijf je wel zo flexibel mogelijk in wat er ontwikkeld moet worden.

Planning
Flexibiliteit in prioriteit

Kaniban

Kanban biedt de meeste flexibiliteit om bij te sturen in wat er ontwikkeld moet worden. Simpel gezegd staat er een geprioriteerde to-do lijst klaar en wordt van boven naar beneden gewerkt. Kanban is sterk gericht op het doen van één ding tegelijk. Wanneer je zo snel mogelijk wilt starten en voortgang wilt maken, maar verwacht al snel nieuwe inzichten te krijgen en bij wilt sturen, dan kan Kanban goed passen. Het nadeel is dat door deze maximale flexibiliteit het erg lastig is om de planning en doorlooptijden te bepalen.

Planning
Flexibiliteit in prioriteit

Flow

De ontwikkelmethode Flow biedt maximale flexibiliteit op het ontwikkelwerk en op de benodigde capaciteit. Flow gaat ervan uit dat er enerzijds een pool is met ontwikkelpunten en anderzijds een pool met mensen uit allerlei disciplines. Zodra uit de pool met mensen iemand beschikbaar komt, wordt uit de pool met ontwikkelpunten gekeken wat er opgepakt kan worden. Andersom wordt vanuit de pool met ontwikkelpunten beoordeeld welke disciplines nodig zijn. Er zijn geen vaste structuren, geen vaste middelen en geen planning. Het voordeel van Flow is dat overhead geminimaliseerd wordt en het een sfeer creëert om maximaal productief te zijn. Het nadeel is dat er geen mogelijkheid is om perspectief te bieden in tijd en geld. Ook is het nodig dat de ontwikkelpartij een zeer volwassen cultuur heeft. Wanneer zeer ervaren ontwikkelaars jarenlang samenwerken en het belangrijker is om te leveren dan om planningen af te geven, is Flow de meest productieve ontwikkelmethode.

Planning
Flexibiliteit in prioriteit

Wij kiezen Scrum

Omdat het ons in staat stelt om verwachtingen met de klant over planning en budget af te stemmen en ondertussen de meeste flexibiliteit geeft om snel waarde te creëren bij het ontwikkelen van software.

Nieuwsgierig naar wat wij voor jou kunnen betekenen?

4. Hoe ziet jouw scrum team eruit?

Om een software ontwikkeltraject tot een succes te maken heb je diverse rollen nodig. Afhankelijk van de opdracht zal de benodigde rollen en capaciteit verschillen. Kies het type opdracht om te zien welke rollen daarbij komen kijken.

Een product owner is de schakel tussen de klant en het ontwikkelteam. De product owner brengt de belangen van zowel de klant als de techniek in balans, waardoor het ontwikkelteam maximale waarde creëert voor het eindproduct.

De product manager is gericht op het ontwikkelen en bewaken van de visie en strategie van een product. Het is de spin in het web voor alle stakeholders en zorgt ervoor dat alle wensen tot een concrete roadmap worden vertaald. Daarvoor worden business cases uitgewerkt en tegen elkaar afgewogen. Wanneer een product vermarkt wordt helpt een product manager bij de aanpak.

Een User Experience/User Interface designer is verantwoordelijk voor de look en feel en de gebruiksvriendelijkheid van een applicatie. Een designer zorgt ervoor dat de wensen van de klant vertaald worden naar een visuele uitwerking. Tijdens het ontwikkeltraject zijn de ontwerpen de leidraad voor de ontwikkelaars.

De scrum master bewaakt de ontwikkelmethode en zorgt ervoor dat er binnen een ontwikkelteam continu geacteerd wordt op het verbeteren van het proces. Een scrum master coacht een ontwikkelteam in het oplossen van knelpunten. Daarnaast helpt een scrum master om de klant en/of stakeholders optimaal gebruik te laten maken van de voordelen van het scrum proces.

Een back-end developer is verantwoordelijk voor alle techniek die je als gebruiker van een applicatie niet ziet. Een back-end developer maakt de logica binnen een applicatie, zorgt dat data correct en efficiënt wordt opgeslagen en dat de software beschikbaar en stabiel draait op een hosting platform.

Een front-end developer is verantwoordelijk voor alle techniek die je als gebruiker ziet en de functies van een applicatie waar je gebruik van maakt. Een front-end developer maakt de interface en zorgt dat dit op de gewenste hardware prettig werkt. Gebruiksvriendelijkheid en toegankelijkheid spelen hierin een belangrijke rol.

Wanneer een back-end ontwikkelaar ook in de front-end stack kan werken, spreken we van een fullstack developer. Dit draagt bij aan een goede samenwerking tussen de front-end en de back-end. Echter, wanneer een project zwaar leunt op de front-end doordat er bijvoorbeeld animaties worden toegepast, is een fullstack developer niet voldoende.

Een software architect werkt op globaal niveau de technische architectuur van software uit. Gedurende een ontwikkeltraject bewaakt de software architect technische standaarden en heeft het de doorslaggevende stem bij technische knelpunten.

Een tester bewaakt de kwaliteit van een applicatie en zorgt ervoor dat er zo vroegtijdig mogelijk fouten worden ontdekt voordat de code naar de live omgeving gaat. 

5. Hoe versnel ik mijn software project?

Het versnellen van een software project gebeurt door goede keuzes te maken in de functionaliteit die je ontwikkeld en de manier waarop je de functionaliteit ontwikkelt. Wanneer een project groeit in functionaliteit en complexiteit, kunnen zelfs de meest eenvoudige wijzigingen veel meer tijd in beslag nemen dan bij de start van een project. Blijf sturen op de belangrijkste functies die het meeste opleveren voor je belangrijkste groep gebruikers. Breng iedere functie terug naar wat echt noodzakelijk is, zodat je complexiteit verlaagt. Probeer te kijken wat weggelaten kan worden in plaats van extra functies die erbij moeten. Zo ontwikkel je software effectief!

Constante waarde kan geleverd worden door het project per feature uit te werken en op te leveren. Dit noemen wij feature driven development of Continuous Delivery; direct opleveren zodra er een feature is uitgewerkt. Hierbij heeft het ontwikkelteam de focus op één feature, waardoor er ook weinig context wisselingen zijn in de werkzaamheden. Je kunt zelfs zeggen dat je sneller software kunt ontwikkelen door minder te doen.

Zoals in de afbeelding is weergegeven lever je met de Scrum methode elke 2 weken features op die op dat moment zijn uitgewerkt. Bij Feature Driven Development (FDD) lever je na elke afgeronde feature deze al op. Dit stelt je in staat om zo vroeg mogelijk feedback te geven op ontwikkelingen en is het ontwikkelteam zo snel mogelijk in staat om dit te verwerken en heeft het team de kennis van de functionaliteit ook nog vers in het geheugen.

Het begrip less is more is niet alleen van toepassing op de functionaliteit die je gaat ontwikkelen maar ook bij de capaciteit dat wordt ingezet moet je scherp blijven kijken naar wat er noodzakelijk is. Meer mensen betekent ook meer communicatielijnen en dus zal je effectief gezien niet sneller gaan. Soms kan je zelfs versnellen door in capaciteit af te schalen.

Meer weten over onze projecten?

6. Welke software ontwikkeltechnieken zijn er?

Er zijn enorm veel software ontwikkel technieken en er komen ieder jaar ook nieuwe technieken bij. In de basis stelt iedere techniek je in staat om software te ontwikkelen. Ieder software product heeft een ander doel, gebruikt andere hardware en wordt op verschillende manieren gebruikt. De techniek kan je hierop laten aansluiten waardoor je sneller, stabieler en betrouwbaarder kunt ontwikkelen. Software is vaak op te splitsen in de front-end, alles wat je als gebruiker ziet en interactie mee hebt, en de back-end, alle logica om gegevens op te slaan en te raadplegen.

Wij leggen je uit wat de belangrijkste technieken zijn en waar Create voor kiest.

FRONT-END TECHNIEKEN

De drie meest gebruikte front-end technieken zijn:

React, in 5294660 projecten wereldwijd

Vue, in 1821848 projecten wereldwijd

Angular, in 1630131 projecten wereldwijd

Wij maken gebruik van React omdat de innovatiekracht
van dit platform past bij onze visie en gewenste manier van werken.
React biedt de flexibiliteit om maatwerk te leveren en zorgt voor een enorme performance van onze applicaties. Doordat dit front-end framework door veel ontwikkelaars wordt toegepast, is er een grote community om ervaringen te delen en worden problemen snel opgelost. Daarbij wordt er continuverbeteringen aangebracht waardoor wij in staat zijn om innovatieve applicaties te ontwikkelen.

BACK-END TECHNIEKEN

De drie meest gebruikte back-end technieken zijn:

PHP, gebruikt in 79.2% van alle projecten wereldwijd

Net Core, gebruikt in 8.9% van alle projecten wereldwijd

Java, gebruikt in 3.4% van alle projecten wereldwijd

Wij maken gebruik van PHP omdat dit stabiel, betrouwbaar,
goed onderhoudbaar en uitbreidbaar is. De meeste webapplicaties
maken gebruik van PHP, waardoor er veel kennis gedeeld wordt en
er voldoende ontwikkelaars beschikbaar zijn met kennis van deze techniek.
Standaard stukken code worden onder ontwikkelaars veel gedeeld,
waardoor bij nieuwe projecten niet telkens dezelfde code opnieuw
hoeft te worden geschreven.

7. Tips voor software ontwikkeling

1. Maak gebruik van testmethodes die passen bij jouw softwareproject

Door een risicoanalyse te doen op jouw softwareproject, kan je bepalen welke onderdelen getest moeten worden, wat hiervoor nodig is en hoe vaak dit moet gebeuren. Deze factoren bepalen welke testmethode het beste past bij jouw softwareproject. Voorkomen is beter dan genezen en pas daarom Test-driven Development (TDD) toe tijdens het ontwikkelproces. Dit is een ontwikkelmethode voor software waarbij eerst tests worden geschreven en daarna pas de code. TDD kan op lange termijn de ontwikkelsnelheid verbeteren en helpt ontwikkelaars om gefocust te blijven op het bieden van de eenvoudigste oplossingen voor een software gerelateerd probleem.

Unittesten is een testmethode om delen van de uitgewerkte code afzonderlijk te testen. Zo kunnen eventuele fouten in de code vroegtijdig worden opgemerkt wat het ontwikkelproces kan versnellen en meer stabiliteit van het platform zal bieden.

Een geïsoleerde test waarbij wordt gekeken of de specifieke functie op zichzelf werkt. Doet het onderdeel wat het zou moeten doen?

Bij deze test wordt er gekeken of de nieuw toegevoegde functie ook werkt in samenwerking met andere functies van de applicatie waar deze functie mee samenwerkt.

Dit is een test waarbij wordt gecontroleerd of zaken die geen verband houden met een nieuw toegevoegde functie nog steeds volgens verwachting functioneren.

Een acceptatie test wordt door een klant uitgevoerd ter controle of de opgeleverde functies aan de wensen voldoen.

Het testen van de werking van de applicatie met de eindgebruikers kan met behulp van usability tests. Hierbij wordt er gekeken of de uitgewerkte functies het gewenste resultaat voor de gebruikers oplevert en of zij de applicatie begrijpen.

Dit zijn tests die worden uitgevoerd ter controle van de stabiliteit van een platform bij een hoge belasting van de server. Zo voorkom je in een later stadia server problemen.

2. Maak de gebruiker onderdeel van je software ontwikkelproces

Jouw eindgebruikers zijn de belangrijkste stakeholders van jouw project. Start een gebruikersgroep op en valideer ontwerpen voor de start van de ontwikkelingen. Valideer na de ontwikkelingen het product nogmaals om er vroegtijdig achter te komen of iets wel of niet werkt. Dit scheelt niet alleen tijd en geld maar zorgt er ook voor dat het product aansluit bij de wensen en behoeftes van de eindgebruikers.

Wil je nog meer informatie over software ontwikkeling?

Je mag ons alles vragen

Of gewoon kennis komen maken. Wij vinden het geweldig om over jouw vraagstukken na te denken.

Contact us
Jeroen Rutte contact
+31 (0)23 727 1077 09:00 - 17:00 info@endeavour.nl
work@endeavour.nl
Gonnetstraat 32 2011 KA Haarlem

Let us contact you

We build

Platforms

We bouwen websites, apps of e-commerce platforms die ingericht zijn om jouw doelgroep te triggeren, je merk te vertegenwoordigen en je doelstellingen te behalen.
We create

Content

Content is de vertaling van jouw merk naar beeld en tekst. Blijf met je doelgroep in contact door middel van video, copy, social media en influencers.
We spark

Growth

Maak een plan voor meetbare groei en ontdek wat je daadwerkelijk verdient aan je marketinginspanningen als ads, data, e-mail en nog zo veel meer.
We provide

Inhousing

Laat je team ondersteunen door de nieuwe generatie marketeers, die matchen met je organisatie en je uitdagen met een frisse blik en hun persoonlijke expertises en skills.

We shape

Digital Strategy

Behaal doelstellingen door je merk slim in de markt te zetten.
Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.