Wat is software ontwikkeling?_

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.

software ontwikkeling laboratorium

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 JOU KUNNEN BETEKENEN?

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

Wij vertellen graag over software ontwikkeling

Wat wil je weten?


Software ontwikkeling: hoe begin ik?
Hoe ziet de doorontwikkeling eruit?
Welke ontwikkelmethoden zijn er?
Hoe ziet jouw scrum team eruit?
Hoe versnel ik mijn software project?
Welke software ontwikkeltechnieken zijn er?
Tips voor 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.

      step 1 diagram
      Welk klantprobleem los je op?
      Volledig ingevuld? Start met het uitwerken van een prototype!
    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.

      step 2 diagram
    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!

      step 3 diagram
  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.

    step 2 diagram
  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.

    Agile diagram

    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.

    Waterfall diagram

    Agile vs Waterfall

    Het verschil in 3 afbeeldingen weergegeven:

    Agile vs waterfall kosten en tijd grafiek
    Agile vs waterfall geplot op 4 waarden
    Agile vs waterfall tijdlijn

    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
    scrum figure

    Kanban

    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
    Kanban Diagram

    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
    Flow diagram

    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.

  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.

    Kies een opdracht

    Menno Commandeur, een Product Manager

    Product Manager

    Alle rollen

    Kies een opdracht

    Menno Commandeur, een Product Manager

    Product Manager

  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.

    step 5 diagram
  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 continu verbeteringen aangebracht waardoor wij in staat zijn om innovatieve applicaties te ontwikkelen.

    step 6 frontend diagram

    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.

    step 6 backend diagram
  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.

    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.

    Testmethodes