Metodologías de desarrollo de software

De MediaWiki
Ir a la navegación Ir a la búsqueda

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.

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

  1. Análise de requisitos
    1. Identificación das necesidades do cliente.
    2. Definición funcional do sistema.
  2. Deseño
    1. Arquitectura da aplicación.
    2. Deseño de bases de datos.
    3. Deseño de interfaces.
  3. Implementación
    1. Desenvolvemento do código fonte.
  4. Probas
    1. Verificación do funcionamento.
    2. Corrección de erros.
  5. Despregamento
    1. Instalación do sistema en produción.
  6. Mantemento
    1. Corrección de incidencias.
    2. 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

Exemplo de 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

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:

  1. Planificación.
  2. Desenvolvemento.
  3. Integración.
  4. Probas.
  5. Despregamento.
  6. Operación.
  7. 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

  1. Desenvolvedor realiza cambios.
  2. Envía o código ao repositorio Git.
  3. O servidor CI executa:
    1. Compilación.
    2. Análise de código.
    3. Probas automáticas.
  4. 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

Ferramentas habituais no ecosistema DevOps
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

  1. Desenvolvemento da aplicación.
  2. Creación do Dockerfile.
  3. Xeración da imaxe.
  4. Almacenamento nun rexistro.
  5. Execución do contedor.
  6. Monitorización e actualización.

Integración continua aplicada aos contedores

Nun proceso CI moderno:

  1. O desenvolvedor realiza cambios no código.
  2. Git detecta o cambio.
  3. O sistema CI executa probas.
  4. Créase automaticamente unha imaxe Docker.
  5. Publícase no rexistro corporativo.

Pipeline CI/CD para contedores

Etapas dun pipeline CI/CD
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.