Een functioneel ontwerp (FO) is het onderdeel in een softwareontwikkelingsproces waarin de te programmeren functionaliteit is beschreven, in gewone mensentaal. Het is een document waaraan in de regel diverse medewerkers een bijdrage leveren. Het maakt samen met het gegevensmodel deel uit van het systeemontwerp, ook wel logisch ontwerp genoemd. In het softwareontwikkelingsproces komt het systeemontwerp na de haalbaarheidsstudie (in sommige softwareontwikkelmethoden de 'definitiestudie') en vóórdat de programmeurs aan de slag gaan. Het kan onder meer gaan om het automatiseren of verbeteren van processen en applicaties, het maken van apps, websites, webpagina's of overzichten. Een FO kan zowel een heel systeem beschrijven als één onderdeel of een groep van onderdelen.
Een FO bevat de uitwerking van de gewenste functionaliteit en is daarmee als het ware de blauwdruk van wat het te bouwen of aan te passen informatiesysteem moet gaan doen. Het bestaat voor een groot deel uit tekst, maar bevat ook schema's, diagrammen en andere visuele weergaves van de beoogde processen. Een FO is een essentieel onderdeel van een softwareontwikkelingstraject en kan niet worden overgeslagen. Het is hèt communicatiemiddel tussen opdrachtgever, gebruikers (indien van toepassing), programmeurs en andere betrokkenen. De opdrachtgever en (toekomstige) gebruikers leveren input: de eisen en wensen voor het systeem. De opdrachtgever fiatteert het FO uiteindelijk, waarmee hij/zij bevestigt dat dit inderdaad is wat moet kunnen. Aan de hand van het goedgekeurde FO worden de planningen gemaakt en de begroting opgesteld of bijgesteld. Vervolgens beschouwen de programmeurs het FO als hun opdracht voor de te maken programma's; een FO voorkomt zoveel mogelijk eigen interpretaties door de programmeurs en daarmee vertraging omdat de gebruikers iets anders voor ogen hadden dan wat de programmeurs interpreteerden.
Bij het tot stand komen van een FO zijn in de regel diverse medewerkers betrokken:
De opbouw van een FO kan als volgt zijn, afhankelijk van de omvang en aard van het project, de opdracht en de gehanteerde ontwikkelmethode: