Desenvolvemento en dentes de serra

Coñécese como **desenvolvemento en desntes de serra** un enfoque metodolóxico da xestión de proxectos de software onde cada unha das fases se executa de maneira secuencial, sen saltos atrás nin modificacións, pero onde se van intercalando revisións e testaxes. É un dos enfoques tradicionais, que nace co obxectivo de mellorar o modelo de desenvolvemento en fervenza.

## Concepto 
O modelo de desenvolvemento en dentes de serra é unha metodoloxía de xestión de proxectos de software, onde:
* cada unha das fases segue unha orde secuencial
* non se comeza unha fase ata que está rematada a anterior
* non se volve atrás no proceso cara a fases anteriores.
* intercálanse fases de participación do cliente con fases onde non participa
Denomínase de dentes de serra porque a representación gráfica máis habitual é unha serie de bicos distribuídos a ambos os lados dunha liña imaxinaria, onde os bicos superiores se corresponden coa interacción co cliente, mentres que os bicos inferiores correspóndense co traballo do equipo de desenvolvemento do software. Estes bicos son bastante simétricos (pode non haber unha equivalencia exacta) e seguen un progreso, ou liña, como lle corresponde por ser un modelo secuencial.

## Vantaxes e inconvenientes
O modelo en dentes de serra nace como mellora fronte ao desenvolvemento en fervenza ou ao desenvolvemento en uve, e comparte case todas as súas vantaxes e inconvenientes. Por exemplo, é bastante intuitivo e non dedica, polo menos na teoría, demasiado tempo ás fases de planificación e xestión, se ben o proceso de revisión, testaxe e validación é máis complexo e longo dado que require a produción de prototipos e a revisión co cliente. Ademais, a continua intervención do cliente fai máis posible que o produto finalmente executado coincida coas necesidades do cliente.

A orzamentación é máis complexa ca nun desenvolvemento en fervenza, dado que é o cliente quen aproba ou non o pase á seguinte fase: se esa aprobación non se produce, os proxectos esténdense no tempo e aumentan os custos. E se ben este modelo permite a revisión do traballo dunha forma máis sistemática có desenvolvemento en fervenza, tampouco é un método moi receptivo aos cambios: é relativamente pouco custosa a corrección da última fase, pero a revisión das primeiras fases (erros na análise ou nas especificacións) son moi difíciles de solventar (aínda que, cando menos na teoría, estes erros deberían ser menos frecuentes).

## Fases típicas
Ao igual ca noutras metodoloxías lineais, as fases do desenvolvemento en dentes de serra dependen do tipo de proxecto e da composición do equipo: proxectos máis complexos ou con equipos maiores adoitan ter máis fases, detallan máis os pasos ou implican distintos departamentos ou roles, mentres que os proxectos máis simples e os equipos máis pequenos reducen e agrupan as fases. A xeito de orientación podemos presentar o seguinte modelo de fases. Loxicamente, distintos equipos denominarán estas fases con termos diferentes.

# **Requisitos do sistema**, a fase onde o cliente expresa as súas necesidades. É polo tanto unha fase de cliente.
# **Análise**, a fase do equipo de desenvolvemento onde se describe como debe funcionar o software, e onde se deseñan as bases de datos, a estrutura relacional, a arquitectura etcétera.
# **Prototipado**, que é unha fase de cliente onde se lle presenta un modelo, gráfico ou executado, para que este valide.
# **Deseño detallado**, cando se describe o funcionamento proposto para o software, incluídas as súas interfaces.
# **Prototipado**, que é unha fase de cliente, de novo, e onde se lle presentan a este todos os deseños de interface, ben de xeito gráfico ou ben funcional.
# **Implementación**, cando se fai a programación informática escribindo o código. É a fase máis importante, e agrupa non só a propia escritura de código, senón tamén a implementación e integración.
# **Testaxe**, onde se revisa que o código cumpra as especificacións do deseño detallado. É unha fase interna, onde non participa o cliente, e pode considerarse unha subfase da implementación.
# **Testaxe de cliente**, onde o cliente chequea que o produto de software coincide co que solicitara nas necesidades e na revisión dos distintos prototipos.

## Notas