La metodología de desarrollo de software es un conjunto de métodos aplicados en varias etapas del ciclo de vida del software y que tienen un enfoque filosófico común [1] .
Cada metodología se caracteriza por su [2] :
En un caso particular, cuando la metodología se aplica en la etapa de programación (diseño), se suele denominar paradigma de programación [2] .
Hay tres formas en que se pueden rastrear las metodologías. En primer lugar, pueden ser una expresión de la experiencia práctica. En segundo lugar, las metodologías pueden derivar de uno de los cuatro modelos de algoritmos: máquina de Turing abstracta (programación imperativa), funciones recursivas de Hilbert y Ackerman (programación estructurada), cálculo lambda de Church (programación funcional), algoritmos normales de Markov (programación lógica) [3 ] [4 ] . En tercer lugar, las metodologías se pueden explicar a través del mapeo de una de las tres estructuras del lenguaje de modelado a la estructura del lenguaje de programación [5] . Las partes constituyentes pueden ser una estructura de datos , una estructura de control y lógica . Cada una de las nueve asignaciones define una metodología o un método de programación bastante serio. Por ejemplo, el mapeo lógico-lógico subyace a la programación lógica [4] .
Al abordar la metodología como si tuviera un núcleo ( ing. core ) correspondiente al método de descripción del algoritmo y características adicionales , se pueden distinguir los siguientes cinco núcleos principales de metodologías [6] :
Puede verse que estas metodologías están en una escala que va desde la navegación (control de ejecución paso a paso) hasta la especificación (determinación de los requisitos para el resultado) [6] .
La especificidad (especificidad topológica) es una forma de elegir métodos para refinar el núcleo de la metodología. El criterio de calidad de una topología particular puede ser el costo total del desarrollo de software. A su vez, los costos de desarrollo dependen, entre otras cosas, de las abstracciones clave del lenguaje: abstracción de datos, abstracción de control y modularidad. Por ejemplo, en una metodología imperativa, uno puede adherirse a los métodos de programación estructurada , lo que brinda una topología más ventajosa en términos de abstracciones del lenguaje. El resultado es una metodología de programación estructurada [7] .
Según la arquitectura del hardware, la implementación puede ser centralizada o paralela. Por ejemplo, la metodología de programación paralela (imperativa), la metodología de programación paralela lógica [8] .
Además, la metodología puede ser híbrida. Por ejemplo, la mezcla más común de programación funcional y lógica [8] .
También se investiga la unificación de metodologías de programación.
Los lenguajes de programación bien pueden admitir ciertas metodologías, pero esto no significa que un determinado lenguaje no pueda usarse en absoluto con una metodología que no sea nativa, sino que se requerirán más esfuerzos y recursos [2] .
Las metodologías de programación se diferencian en el costo total de resolver problemas con diferentes características (cálculos científicos, problemas financieros, sistemas en tiempo real , etc.). La escala de tareas y la eficiencia del software que se está creando también son factores importantes en la elección de una metodología de programación [9] .
Desarrollo de software | |
---|---|
Proceso | |
Conceptos de alto nivel | |
Direcciones |
|
Metodologías de desarrollo | |
Modelos |
|
Figuras notables |
|