Metodologia dezvoltării software este un ansamblu de metode aplicate în diferite etape ale ciclului de viață al software -ului și având o abordare filozofică comună [1] .
Fiecare metodologie este caracterizată prin [2] :
Într-un caz particular, atunci când metodologia este aplicată în etapa de programare (proiectare), se numește de obicei paradigma de programare [2] .
Există trei moduri prin care metodologiile pot fi urmărite. În primul rând, ele pot fi o expresie a experienței practice. În al doilea rând, metodologiile pot deriva din unul dintre cele patru modele de algoritm: mașină Turing abstractă (programare imperativă), funcții recursive Hilbert și Ackerman (programare structurată), calculul lambda al lui Church (programare funcțională), algoritmi normali Markov (programare logică) [3 ] [4 ] ] . În al treilea rând, metodologiile pot fi explicate prin maparea uneia dintre cele trei structuri ale limbajului de modelare la structura limbajului de programare [5] . Părțile constitutive pot fi o structură de date , o structură de control și o logică . Fiecare dintre cele nouă mapări definește fie o metodologie, fie o metodă de programare destul de serioasă. De exemplu, maparea logico-logică stă la baza programării logice [4] .
Când abordați metodologia ca având un nucleu ( ing. nucleu ) corespunzător metodei de descriere a algoritmului și caracteristici suplimentare , se pot distinge următoarele cinci nuclee principale de metodologii [6] :
Se poate observa că aceste metodologii sunt pe o scară de la navigație (controlul execuției pas cu pas) până la specificație (determinarea cerințelor pentru rezultat) [6] .
Specificitatea (specificitatea topologică) este o modalitate de alegere a metodelor de rafinare a nucleului metodologiei. Criteriul de calitate al unei anumite topologii poate fi costul total al dezvoltării software. La rândul lor, costurile de dezvoltare depind, printre altele, de abstracțiile cheie ale limbajului: abstracția datelor, abstracția controlului și modularitatea. De exemplu, într-o metodologie imperativă, se poate adera la metodele de programare structurată , ceea ce oferă o topologie mai avantajoasă în ceea ce privește abstracțiile limbajului. Rezultatul este o metodologie de programare structurată [7] .
Conform arhitecturii hardware, implementarea poate fi centralizată sau paralelă. De exemplu, metodologia programării paralele (imperative), metodologia programării paralele logice [8] .
În plus, metodologia poate fi hibridă. De exemplu, cel mai comun amestec de programare funcțională și logică [8] .
De asemenea, se efectuează cercetări privind unificarea metodologiilor de programare.
Limbajul de programare poate susține anumite metodologii, dar asta nu înseamnă că un anumit limbaj nu poate fi folosit deloc cu o metodologie care nu este nativă, ci doar că vor fi necesare mai multe efort și resurse [2] .
Metodologiile de programare diferă în ceea ce privește costul total al rezolvării problemelor cu diferite caracteristici (calcule științifice, probleme financiare, sisteme în timp real etc.). Amploarea sarcinilor și eficiența software-ului creat sunt, de asemenea, factori importanți în alegerea unei metodologii de programare [9] .
Dezvoltare de software | |
---|---|
Proces | |
Concepte de nivel înalt | |
Directii |
|
Metodologii de dezvoltare | |
Modele |
|
Cifre notabile |
|