Metodologías de desarrollo de software
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.