Functionele analyse en ontwerp

Rekenen

In deze les zullen we zien dat, nadat het probleem is gespecificeerd, het ontwerpen van een programma in principe bestaat uit het doorlopen van vier fasen: de analyse, het ontwerp, de implementatie en het testen. Dat betekent niet dat die fasen ook altijd in die volgorde wordt uitgevoerd. Vaak kan een zijsprongetje in de vorm van een experiment, het uitwerken van een gelukkige inval, best nuttig zijn.

Het ontwerpen van een programma: een sjabloon

Probleemstelling

Bestudeer het probleem zorgvuldig. Onderken wat het probleem is en zorg een goed inzicht in wat nodig is voor de oplossing. Dring door tot de kern van het probleem en elimineer aspecten die in eerste instantie niet van belang zijn, bijvoorbeeld de achtergrondkleur van tekst op het scherm. Kortom afbakenen wat wel en niet tot het probleem hoort. Dit is helemaal niet zo eenvoudig als het lijkt.

Analyse

Welke informatie moet het programma geven? Als gevraagd wordt of een bepaald boek in de bibliotheek aanwezig is en op het scherm van de computer verschijnt alleen als antwoord 'ja' dan zal de vrager/vraagster niet erg tevreden zijn. Het programma zal ook moeten aangeven waar het staat. Bepaal met welke gegevens, de invoer, je moet werken, wat moet worden berekend en met welke nauwkeurigheid (indien van toepassing). Welke theoretische kennis en/of formules heb je nodig. Bepaal welke aanvullende gegevens nodig zijn (bijv. natuurconstanten) en hoe de resultaten moeten worden gepresenteerd, de uitvoer, bijv. tabellen of grafieken.

Als blijkt dat de specificatie onvolledig is ga dan terug naar de fase van de probleemspecificatie en probeer aanvullende gegevens van de opdrachtgever te krijgen of kom zelf met suggesties.

Ontwerp

Bedenk een lijst met stappen, een algoritme, waarmee het probleem wordt opgelost. Probeer beknopt te beschrijven wat bij elke stap gedaan moet worden. Een dergelijke beschrijving die vaak noch in correct Nederlands noch in correct Java is gesteld noemen we pseudocode. Voor pseudocode bestaat geen syntaxis. Bijvoorbeeld:
Neem aan dat de hypotenusa van een rechthoekige driehoek moet worden berekend.
Een korte analyse leert ons dat:

  1. de afmetingen van twee rechthoekzijden moeten worden ingevoerd.
  2. de hypotenusa wordt gevonden door de wortel uit de som van de kwadraten van de rechthoekzijden te berekenen.

De volgorde van acties, het algoritme, zal dan zijn:

  1. lees de beide rechthoekzijden
  2. bereken de hypotenusa.
  3. druk de de lengte van de hypotenusa af.

De volgorde: invoeren van gegevens, bewerken ervan, uitvoeren van resultaten zul je in verschillende vormen in vrijwel elk programma terugvinden.

Het vinden van een goed algoritme is i.h.a. het meest creatieve maar ook moeilijkste deel van de hele ontwerpfase. Als je een algoritme denkt te hebben gevonden controleer dan voordat je verder gaat of het correct werkt. Kies bijv. zorgvuldig een aantal getallen, waaronder 0, en controleer zonodig op papier of de bij deze getallen verwachte uitkomsten ook werkelijk ontstaan. Een foutief algoritme in Java implementeren leidt slechts tot tijdverlies.

Implementatie

Vertaal het algoritme naar een Java programma. Daarvoor is kennis van de taal Java nodig. Die kennis zullen we stapsgewijs opbouwen.

Test

Test het programma en verifieer dat het werkt zoals verwacht. Test het programma met verschillende sets gegevens (testvectoren). Vooral uiterste waarden en nul willen nogal eens voor problemen zorgen.

Een uitgewerkt voorbeeld: Rekenen met gebroken getallen

copyright ® Little World 1998