Diferencia entre revisiones de «Metodologías de desarrollo de software»
| (No se muestran 4 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
| − | + | '''Unidade Didáctica 1. Metodoloxías de desenvolvemento de software, DevOps e despregamento en contedores''' | |
| − | + | = Introdución = | |
O desenvolvemento de software moderno require a aplicación de metodoloxías que permitan organizar o traballo dos equipos, mellorar a calidade do produto e reducir os tempos de entrega. A evolución das necesidades do mercado provocou a transición desde metodoloxías tradicionais, baseadas nunha planificación ríxida, cara a metodoloxías áxiles, centradas na adaptación ao cambio e na entrega continua de valor. | O desenvolvemento de software moderno require a aplicación de metodoloxías que permitan organizar o traballo dos equipos, mellorar a calidade do produto e reducir os tempos de entrega. A evolución das necesidades do mercado provocou a transición desde metodoloxías tradicionais, baseadas nunha planificación ríxida, cara a metodoloxías áxiles, centradas na adaptación ao cambio e na entrega continua de valor. | ||
| Línea 7: | Línea 7: | ||
Paralelamente, a aparición das prácticas DevOps e das tecnoloxías de contedores transformou os procesos de desenvolvemento, integración e despregamento de aplicacións, permitindo automatizar tarefas e reducir os riscos asociados á posta en produción. | Paralelamente, a aparición das prácticas DevOps e das tecnoloxías de contedores transformou os procesos de desenvolvemento, integración e despregamento de aplicacións, permitindo automatizar tarefas e reducir os riscos asociados á posta en produción. | ||
| − | + | = Metodoloxías de desenvolvemento de software = | |
As metodoloxías de desenvolvemento de software son conxuntos de principios, procedementos e boas prácticas que permiten planificar, organizar e controlar o ciclo de vida dun proxecto software. | As metodoloxías de desenvolvemento de software son conxuntos de principios, procedementos e boas prácticas que permiten planificar, organizar e controlar o ciclo de vida dun proxecto software. | ||
| − | + | == Metodoloxías tradicionais == | |
As metodoloxías tradicionais caracterízanse por unha planificación detallada desde o inicio do proxecto, unha forte documentación e unha separación clara entre as diferentes fases de desenvolvemento. | As metodoloxías tradicionais caracterízanse por unha planificación detallada desde o inicio do proxecto, unha forte documentación e unha separación clara entre as diferentes fases de desenvolvemento. | ||
| − | + | === Modelo en cascada (Waterfall) === | |
O modelo Waterfall é unha das metodoloxías máis antigas e coñecidas. Baséase nun proceso secuencial no que cada fase debe completarse antes de iniciar a seguinte. | O modelo Waterfall é unha das metodoloxías máis antigas e coñecidas. Baséase nun proceso secuencial no que cada fase debe completarse antes de iniciar a seguinte. | ||
| Línea 21: | Línea 21: | ||
[[Ficheiro:Waterfall_model.svg|miniatura|centro|500px|Esquema do modelo en cascada.]] | [[Ficheiro:Waterfall_model.svg|miniatura|centro|500px|Esquema do modelo en cascada.]] | ||
| − | + | ==== Características ==== | |
* Estrutura lineal e secuencial. | * Estrutura lineal e secuencial. | ||
| Línea 29: | Línea 29: | ||
* Validación do produto ao final do proceso. | * Validación do produto ao final do proceso. | ||
| − | + | ==== Fases do modelo Waterfall ==== | |
# '''Análise de requisitos''' | # '''Análise de requisitos''' | ||
| Línea 49: | Línea 49: | ||
## Actualizacións e melloras. | ## Actualizacións e melloras. | ||
| − | + | ==== Vantaxes ==== | |
* Fácil de comprender e xestionar. | * Fácil de comprender e xestionar. | ||
| Línea 55: | Línea 55: | ||
* Boa trazabilidade documental. | * Boa trazabilidade documental. | ||
| − | + | ==== Inconvenientes ==== | |
* Difícil adaptación a cambios. | * Difícil adaptación a cambios. | ||
| Línea 61: | Línea 61: | ||
* Alto custo de modificacións en fases avanzadas. | * Alto custo de modificacións en fases avanzadas. | ||
| − | + | == Metodoloxías áxiles == | |
As metodoloxías áxiles xorden como resposta ás limitacións dos modelos tradicionais. O seu obxectivo principal é proporcionar valor ao cliente mediante entregas frecuentes e unha rápida adaptación aos cambios. | As metodoloxías áxiles xorden como resposta ás limitacións dos modelos tradicionais. O seu obxectivo principal é proporcionar valor ao cliente mediante entregas frecuentes e unha rápida adaptación aos cambios. | ||
| − | + | === Manifesto Áxil === | |
Publicado en 2001, establece catro valores fundamentais: | Publicado en 2001, establece catro valores fundamentais: | ||
| Línea 74: | Línea 74: | ||
* Resposta ao cambio sobre seguimento estrito dun plan. | * Resposta ao cambio sobre seguimento estrito dun plan. | ||
| − | + | === Scrum === | |
Scrum é a metodoloxía áxil máis utilizada na industria do software. | Scrum é a metodoloxía áxil máis utilizada na industria do software. | ||
| − | + | ==== Roles ==== | |
* '''Product Owner''' | * '''Product Owner''' | ||
| Línea 91: | Línea 91: | ||
** Implementa as funcionalidades. | ** Implementa as funcionalidades. | ||
| − | + | ==== Elementos principais ==== | |
* Product Backlog. | * Product Backlog. | ||
| Línea 97: | Línea 97: | ||
* Incremento de produto. | * Incremento de produto. | ||
| − | + | ==== Eventos ==== | |
* Sprint. | * Sprint. | ||
| Línea 105: | Línea 105: | ||
* Sprint Retrospective. | * Sprint Retrospective. | ||
| − | + | ==== Vantaxes ==== | |
* Adaptación rápida aos cambios. | * Adaptación rápida aos cambios. | ||
| Línea 111: | Línea 111: | ||
* Maior participación do cliente. | * Maior participación do cliente. | ||
| − | + | === Kanban === | |
Kanban é unha metodoloxía baseada na visualización do fluxo de traballo. | Kanban é unha metodoloxía baseada na visualización do fluxo de traballo. | ||
| − | + | ==== Principios ==== | |
* Visualizar o traballo. | * Visualizar o traballo. | ||
| Línea 122: | Línea 122: | ||
* Mellora continua. | * Mellora continua. | ||
| − | + | ==== Taboleiro Kanban ==== | |
{| class="wikitable" | {| class="wikitable" | ||
| Línea 142: | Línea 142: | ||
|} | |} | ||
| − | + | === Extreme Programming (XP) === | |
XP céntrase na excelencia técnica e na calidade do código. | XP céntrase na excelencia técnica e na calidade do código. | ||
| − | + | ==== Prácticas destacadas ==== | |
* Programación por parellas. | * Programación por parellas. | ||
| Línea 154: | Línea 154: | ||
* Pequenas entregas frecuentes. | * Pequenas entregas frecuentes. | ||
| − | + | == Comparativa entre metodoloxías tradicionais e áxiles == | |
{| class="wikitable" | {| class="wikitable" | ||
| Línea 183: | Línea 183: | ||
|} | |} | ||
| − | + | == Ferramentas de xestión de proxectos == | |
As metodoloxías de desenvolvemento adoitan complementarse con ferramentas de xestión e seguimento. | As metodoloxías de desenvolvemento adoitan complementarse con ferramentas de xestión e seguimento. | ||
| − | + | === Ferramentas tradicionais === | |
* Microsoft Project. | * Microsoft Project. | ||
| Línea 193: | Línea 193: | ||
* GanttProject. | * GanttProject. | ||
| − | + | === Ferramentas para metodoloxías áxiles === | |
* Jira. | * Jira. | ||
| Línea 209: | Línea 209: | ||
* Facilitar a colaboración entre equipos. | * Facilitar a colaboración entre equipos. | ||
| − | + | = Integración e despregamento continuos propios de DevOps = | |
| − | + | == Que é DevOps? == | |
DevOps é unha cultura de traballo que integra os equipos de desenvolvemento (Development) e operacións (Operations) co obxectivo de acelerar a entrega de software mantendo elevados niveis de calidade e estabilidade. | DevOps é unha cultura de traballo que integra os equipos de desenvolvemento (Development) e operacións (Operations) co obxectivo de acelerar a entrega de software mantendo elevados niveis de calidade e estabilidade. | ||
| − | + | == Obxectivos de DevOps == | |
* Automatización de procesos. | * Automatización de procesos. | ||
| Línea 223: | Línea 223: | ||
* Monitorización continua. | * Monitorización continua. | ||
| − | + | == Ciclo DevOps == | |
[[Ficheiro:Devops-toolchain.svg|miniatura|centro|500px|Ciclo de vida DevOps.]] | [[Ficheiro:Devops-toolchain.svg|miniatura|centro|500px|Ciclo de vida DevOps.]] | ||
| Línea 230: | Línea 230: | ||
# Planificación. | # Planificación. | ||
| − | |||
# Desenvolvemento. | # Desenvolvemento. | ||
| − | |||
# Integración. | # Integración. | ||
| − | |||
# Probas. | # Probas. | ||
| − | |||
# Despregamento. | # Despregamento. | ||
| − | |||
# Operación. | # Operación. | ||
| − | |||
# Monitorización. | # Monitorización. | ||
| − | + | == Integración continua (Continuous Integration - CI) == | |
A integración continua consiste en integrar frecuentemente os cambios realizados polos desenvolvedores nun repositorio común. | A integración continua consiste en integrar frecuentemente os cambios realizados polos desenvolvedores nun repositorio común. | ||
| − | + | ==== Obxectivos ==== | |
* Detectar erros rapidamente. | * Detectar erros rapidamente. | ||
| Línea 253: | Línea 247: | ||
* Automatizar compilacións e probas. | * Automatizar compilacións e probas. | ||
| − | + | ==== Fluxo básico ==== | |
# Desenvolvedor realiza cambios. | # Desenvolvedor realiza cambios. | ||
| − | |||
# Envía o código ao repositorio Git. | # Envía o código ao repositorio Git. | ||
| − | |||
# O servidor CI executa: | # O servidor CI executa: | ||
| − | |||
## Compilación. | ## Compilación. | ||
| − | |||
## Análise de código. | ## Análise de código. | ||
| − | |||
## Probas automáticas. | ## Probas automáticas. | ||
| − | |||
# Xeración de artefactos. | # Xeración de artefactos. | ||
| − | + | == Despregamento continuo (Continuous Deployment - CD) == | |
O despregamento continuo automatiza a publicación das novas versións en contornos de produción. | O despregamento continuo automatiza a publicación das novas versións en contornos de produción. | ||
| − | + | ==== Beneficios ==== | |
* Menor tempo de entrega. | * Menor tempo de entrega. | ||
| Línea 279: | Línea 267: | ||
* Incremento da fiabilidade. | * Incremento da fiabilidade. | ||
| − | + | == Ferramentas DevOps habituais == | |
{| class="wikitable" | {| class="wikitable" | ||
| Línea 305: | Línea 293: | ||
|} | |} | ||
| − | + | = Despregamento en contedores de aplicacións e CI/CD = | |
| − | + | == Introdución aos contedores == | |
Os contedores permiten empaquetar unha aplicación xunto coas súas dependencias para executala de forma consistente en diferentes contornos. | Os contedores permiten empaquetar unha aplicación xunto coas súas dependencias para executala de forma consistente en diferentes contornos. | ||
| − | + | == Características dos contedores == | |
* Illamento de procesos. | * Illamento de procesos. | ||
| Línea 319: | Línea 307: | ||
* Reproducibilidade. | * Reproducibilidade. | ||
| − | + | = Docker como plataforma de contedores = | |
Docker converteuse no estándar de facto para a creación e execución de contedores. | Docker converteuse no estándar de facto para a creación e execución de contedores. | ||
| − | + | ==== Elementos principais ==== | |
* Docker Engine. | * Docker Engine. | ||
| Línea 331: | Línea 319: | ||
* Docker Hub. | * Docker Hub. | ||
| − | + | == Proceso de despregamento dunha aplicación en contedores == | |
# Desenvolvemento da aplicación. | # Desenvolvemento da aplicación. | ||
| − | |||
# Creación do Dockerfile. | # Creación do Dockerfile. | ||
| − | |||
# Xeración da imaxe. | # Xeración da imaxe. | ||
| − | |||
# Almacenamento nun rexistro. | # Almacenamento nun rexistro. | ||
| − | |||
# Execución do contedor. | # Execución do contedor. | ||
| − | |||
# Monitorización e actualización. | # Monitorización e actualización. | ||
| − | + | == Integración continua aplicada aos contedores == | |
Nun proceso CI moderno: | Nun proceso CI moderno: | ||
# O desenvolvedor realiza cambios no código. | # O desenvolvedor realiza cambios no código. | ||
| − | |||
# Git detecta o cambio. | # Git detecta o cambio. | ||
| − | |||
# O sistema CI executa probas. | # O sistema CI executa probas. | ||
| − | |||
# Créase automaticamente unha imaxe Docker. | # Créase automaticamente unha imaxe Docker. | ||
| − | |||
# Publícase no rexistro corporativo. | # Publícase no rexistro corporativo. | ||
| − | + | == Pipeline CI/CD para contedores == | |
{| class="wikitable" | {| class="wikitable" | ||
| Línea 385: | Línea 364: | ||
|} | |} | ||
| − | + | == Exemplo de fluxo completo == | |
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
| Línea 405: | Línea 384: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | + | == Vantaxes do uso de CI/CD con contedores == | |
* Automatización completa do proceso. | * Automatización completa do proceso. | ||
| Línea 413: | Línea 392: | ||
* Menor tempo entre desenvolvemento e produción. | * Menor tempo entre desenvolvemento e produción. | ||
| − | + | = Resumo = | |
As metodoloxías tradicionais, como Waterfall, ofrecen unha estrutura secuencial adecuada para proxectos con requisitos estables. Pola contra, as metodoloxías áxiles permiten adaptarse rapidamente aos cambios e entregar valor de forma continua. | As metodoloxías tradicionais, como Waterfall, ofrecen unha estrutura secuencial adecuada para proxectos con requisitos estables. Pola contra, as metodoloxías áxiles permiten adaptarse rapidamente aos cambios e entregar valor de forma continua. | ||
DevOps complementa estas metodoloxías mediante a automatización dos procesos de integración, proba e despregamento. A utilización de contedores e de pipelines CI/CD converteuse nun elemento fundamental para a entrega rápida, fiable e escalable de aplicacións modernas. | DevOps complementa estas metodoloxías mediante a automatización dos procesos de integración, proba e despregamento. A utilización de contedores e de pipelines CI/CD converteuse nun elemento fundamental para a entrega rápida, fiable e escalable de aplicacións modernas. | ||
Revisión actual del 10:49 18 jun 2026
Unidade Didáctica 1. Metodoloxías de desenvolvemento de software, DevOps e despregamento en contedores
Sumario
- 1 Introdución
- 2 Metodoloxías de desenvolvemento de software
- 3 Integración e despregamento continuos propios de DevOps
- 4 Despregamento en contedores de aplicacións e CI/CD
- 5 Docker como plataforma de contedores
- 6 Resumo
Introdución
O desenvolvemento de software moderno require a aplicación de metodoloxías que permitan organizar o traballo dos equipos, mellorar a calidade do produto e reducir os tempos de entrega. A evolución das necesidades do mercado provocou a transición desde metodoloxías tradicionais, baseadas nunha planificación ríxida, cara a metodoloxías áxiles, centradas na adaptación ao cambio e na entrega continua de valor.
Paralelamente, a aparición das prácticas DevOps e das tecnoloxías de contedores transformou os procesos de desenvolvemento, integración e despregamento de aplicacións, permitindo automatizar tarefas e reducir os riscos asociados á posta en produción.
Metodoloxías de desenvolvemento de software
As metodoloxías de desenvolvemento de software son conxuntos de principios, procedementos e boas prácticas que permiten planificar, organizar e controlar o ciclo de vida dun proxecto software.
Metodoloxías tradicionais
As metodoloxías tradicionais caracterízanse por unha planificación detallada desde o inicio do proxecto, unha forte documentación e unha separación clara entre as diferentes fases de desenvolvemento.
Modelo en cascada (Waterfall)
O modelo Waterfall é unha das metodoloxías máis antigas e coñecidas. Baséase nun proceso secuencial no que cada fase debe completarse antes de iniciar a seguinte.
miniatura|centro|500px|Esquema do modelo en cascada.
Características
- Estrutura lineal e secuencial.
- Documentación exhaustiva.
- Forte planificación inicial.
- Escasa flexibilidade ante cambios.
- Validación do produto ao final do proceso.
Fases do modelo Waterfall
- Análise de requisitos
- Identificación das necesidades do cliente.
- Definición funcional do sistema.
- Deseño
- Arquitectura da aplicación.
- Deseño de bases de datos.
- Deseño de interfaces.
- Implementación
- Desenvolvemento do código fonte.
- Probas
- Verificación do funcionamento.
- Corrección de erros.
- Despregamento
- Instalación do sistema en produción.
- Mantemento
- Corrección de incidencias.
- Actualizacións e melloras.
Vantaxes
- Fácil de comprender e xestionar.
- Adecuado para proxectos con requisitos estables.
- Boa trazabilidade documental.
Inconvenientes
- Difícil adaptación a cambios.
- Entrega tardía do produto funcional.
- Alto custo de modificacións en fases avanzadas.
Metodoloxías áxiles
As metodoloxías áxiles xorden como resposta ás limitacións dos modelos tradicionais. O seu obxectivo principal é proporcionar valor ao cliente mediante entregas frecuentes e unha rápida adaptación aos cambios.
Manifesto Áxil
Publicado en 2001, establece catro valores fundamentais:
- Individuos e interaccións sobre procesos e ferramentas.
- Software funcionando sobre documentación exhaustiva.
- Colaboración co cliente sobre negociación contractual.
- Resposta ao cambio sobre seguimento estrito dun plan.
Scrum
Scrum é a metodoloxía áxil máis utilizada na industria do software.
Roles
- Product Owner
** Define os requisitos do produto. ** Prioriza o traballo.
- Scrum Master
** Facilita o proceso Scrum. ** Elimina impedimentos.
- Equipo de Desenvolvemento
** Implementa as funcionalidades.
Elementos principais
- Product Backlog.
- Sprint Backlog.
- Incremento de produto.
Eventos
- Sprint.
- Sprint Planning.
- Daily Scrum.
- Sprint Review.
- Sprint Retrospective.
Vantaxes
- Adaptación rápida aos cambios.
- Entregas frecuentes.
- Maior participación do cliente.
Kanban
Kanban é unha metodoloxía baseada na visualización do fluxo de traballo.
Principios
- Visualizar o traballo.
- Limitar o traballo en curso (WIP).
- Xestionar o fluxo.
- Mellora continua.
Taboleiro Kanban
| Pendente | En progreso | En probas | Rematado |
|---|---|---|---|
| Análise de requisitos | Desenvolvemento API | Probas unitarias | Deseño da base de datos |
| Creación de casos de uso | Desenvolvemento frontend | Validación funcional | Configuración do repositorio Git |
Extreme Programming (XP)
XP céntrase na excelencia técnica e na calidade do código.
Prácticas destacadas
- Programación por parellas.
- Desenvolvemento guiado por probas (TDD).
- Integración continua.
- Refactorización constante.
- Pequenas entregas frecuentes.
Comparativa entre metodoloxías tradicionais e áxiles
| Aspecto | Tradicionais | Áxiles |
|---|---|---|
| Planificación | Inicial e detallada | Iterativa e adaptativa |
| Cambios | Custosos | Esperados e frecuentes |
| Documentación | Moi extensa | Esencial e enfocada ao valor |
| Participación do cliente | Limitada | Continua |
| Entrega de valor | Ao final do proxecto | Incremental e continua |
Ferramentas de xestión de proxectos
As metodoloxías de desenvolvemento adoitan complementarse con ferramentas de xestión e seguimento.
Ferramentas tradicionais
- Microsoft Project.
- OpenProject.
- GanttProject.
Ferramentas para metodoloxías áxiles
- Jira.
- Trello.
- Azure DevOps.
- GitLab.
- GitHub Projects.
Estas ferramentas permiten:
- Xestionar tarefas.
- Controlar incidencias.
- Planificar sprints.
- Xerar informes de seguimento.
- Facilitar a colaboración entre equipos.
Integración e despregamento continuos propios de DevOps
Que é DevOps?
DevOps é unha cultura de traballo que integra os equipos de desenvolvemento (Development) e operacións (Operations) co obxectivo de acelerar a entrega de software mantendo elevados niveis de calidade e estabilidade.
Obxectivos de DevOps
- Automatización de procesos.
- Redución de erros humanos.
- Entregas máis rápidas.
- Maior colaboración entre equipos.
- Monitorización continua.
Ciclo DevOps
miniatura|centro|500px|Ciclo de vida DevOps.
As fases habituais son:
- Planificación.
- Desenvolvemento.
- Integración.
- Probas.
- Despregamento.
- Operación.
- Monitorización.
Integración continua (Continuous Integration - CI)
A integración continua consiste en integrar frecuentemente os cambios realizados polos desenvolvedores nun repositorio común.
Obxectivos
- Detectar erros rapidamente.
- Reducir conflitos de integración.
- Automatizar compilacións e probas.
Fluxo básico
- Desenvolvedor realiza cambios.
- Envía o código ao repositorio Git.
- O servidor CI executa:
- Compilación.
- Análise de código.
- Probas automáticas.
- Xeración de artefactos.
Despregamento continuo (Continuous Deployment - CD)
O despregamento continuo automatiza a publicación das novas versións en contornos de produción.
Beneficios
- Menor tempo de entrega.
- Redución de intervención manual.
- Incremento da fiabilidade.
Ferramentas DevOps habituais
| Función | Ferramenta |
|---|---|
| Control de versións | Git |
| Integración continua | Jenkins |
| Plataforma DevOps | GitLab CI/CD |
| Automatización | Ansible |
| Contedores | Docker |
| Orquestración | Kubernetes |
Despregamento en contedores de aplicacións e CI/CD
Introdución aos contedores
Os contedores permiten empaquetar unha aplicación xunto coas súas dependencias para executala de forma consistente en diferentes contornos.
Características dos contedores
- Illamento de procesos.
- Portabilidade.
- Escalabilidade.
- Rapidez de despregamento.
- Reproducibilidade.
Docker como plataforma de contedores
Docker converteuse no estándar de facto para a creación e execución de contedores.
Elementos principais
- Docker Engine.
- Docker Image.
- Docker Container.
- Docker Registry.
- Docker Hub.
Proceso de despregamento dunha aplicación en contedores
- Desenvolvemento da aplicación.
- Creación do Dockerfile.
- Xeración da imaxe.
- Almacenamento nun rexistro.
- Execución do contedor.
- Monitorización e actualización.
Integración continua aplicada aos contedores
Nun proceso CI moderno:
- O desenvolvedor realiza cambios no código.
- Git detecta o cambio.
- O sistema CI executa probas.
- Créase automaticamente unha imaxe Docker.
- Publícase no rexistro corporativo.
Pipeline CI/CD para contedores
| Etapa | Acción |
|---|---|
| Commit | Envío do código ao repositorio |
| Build | Compilación da aplicación |
| Test | Execución de probas automáticas |
| Package | Xeración da imaxe Docker |
| Push | Publicación da imaxe nun rexistro |
| Deploy | Despregamento automático nos contornos de destino |
Exemplo de fluxo completo
Programador
↓
Repositorio Git
↓
Pipeline CI/CD
↓
Probas automáticas
↓
Creación da imaxe Docker
↓
Rexistro de contedores
↓
Kubernetes
↓
Aplicación en produción
Vantaxes do uso de CI/CD con contedores
- Automatización completa do proceso.
- Redución de erros de configuración.
- Despregamentos repetibles.
- Escalado sinxelo.
- Menor tempo entre desenvolvemento e produción.
Resumo
As metodoloxías tradicionais, como Waterfall, ofrecen unha estrutura secuencial adecuada para proxectos con requisitos estables. Pola contra, as metodoloxías áxiles permiten adaptarse rapidamente aos cambios e entregar valor de forma continua.
DevOps complementa estas metodoloxías mediante a automatización dos procesos de integración, proba e despregamento. A utilización de contedores e de pipelines CI/CD converteuse nun elemento fundamental para a entrega rápida, fiable e escalable de aplicacións modernas.