Softwareudviklingsmetodologi er et sæt metoder, der anvendes på forskellige stadier af softwarens livscyklus og har en fælles filosofisk tilgang [1] .
Hver metode er karakteriseret ved dens [2] :
I et bestemt tilfælde, når metoden anvendes på programmerings- (design)stadiet, kaldes det normalt programmeringsparadigmet [2] .
Der er tre måder, hvorpå metoder kan spores. For det første kan de være udtryk for praktisk erfaring. For det andet kan metoder stamme fra en af fire algoritmemodeller: abstrakt Turing-maskine (imperativ programmering), Hilbert og Ackerman rekursive funktioner (struktureret programmering), Kirkens lambda-regning (funktionel programmering), normale Markov-algoritmer (logisk programmering) [3 ] [4 ] . For det tredje kan metoderne forklares gennem kortlægning af en af modelleringssprogets tre strukturer til programmeringssprogets struktur [5] . De konstituerende dele kan være en datastruktur , en kontrolstruktur og logik . Hver af de ni kortlægninger definerer enten en metode eller en ret seriøs programmeringsmetode. For eksempel ligger logik-logik-mappingen til grund for logisk programmering [4] .
Når man nærmer sig metodikken som havende en kerne ( eng. core ) svarende til metoden til at beskrive algoritmen, og yderligere funktioner , kan følgende fem hovedkerner af metoder skelnes [6] :
Det kan ses, at disse metoder er på en skala fra navigation (trin-for-trin udførelseskontrol) til specifikation (bestemmelse af kravene til resultatet) [6] .
Specificitet (topologisk specificitet) er en måde at vælge metoder til at forfine kernen i metodikken. Kvalitetskriteriet for en bestemt topologi kan være de samlede omkostninger ved softwareudvikling. Til gengæld afhænger udviklingsomkostningerne blandt andet af centrale sprogabstraktioner: dataabstraktion, kontrolabstraktion og modularitet. For eksempel kan man i en imperativ metodologi overholde metoderne til struktureret programmering , hvilket giver en mere fordelagtig topologi med hensyn til sprogabstraktioner. Resultatet er en struktureret programmeringsmetodologi [ 7] .
Ifølge hardwarearkitekturen kan implementeringen være centraliseret eller parallel. For eksempel metoden for (imperativ) parallel programmering, metodikken for logisk parallel programmering [8] .
Derudover kan metodikken være hybrid. For eksempel den mest almindelige blanding af funktionel og logisk programmering [8] .
Der udføres også forskning i ensretning af programmeringsmetoder.
Programmeringssprog kan godt understøtte visse metoder, men det betyder ikke, at et bestemt sprog slet ikke kan bruges med en metode, der ikke er hjemmehørende i det, men kun at der kræves mere indsats og ressourcer [2] .
Programmeringsmetoder adskiller sig i de samlede omkostninger ved at løse problemer med forskellige karakteristika (videnskabelige beregninger, økonomiske problemer, realtidssystemer osv.). Skalaen af opgaver og effektiviteten af den software, der skabes, er også vigtige faktorer ved valget af en programmeringsmetodologi [9] .
Softwareudvikling | |
---|---|
Behandle | |
Koncepter på højt niveau | |
Vejbeskrivelse |
|
Udviklingsmetoder _ | |
Modeller | |
Bemærkelsesværdige tal |
|