Asignatura fundamental tanto en Desarrollo de Aplicaciones Multiplataforma como en Desarrollo de Aplicaciones Web.
Objetivo principal
Dominar herramientas y metodologías modernas para desarrollo profesional de software.
Relevancia profesional
Conocimientos aplicables directamente en proyectos reales y altamente valorados en el mercado laboral.
Metodologías de desarrollo de software
Ciclo de vida del software
Comparativa entre metodologías tradicionales y ágiles para diferentes tipos de proyectos.
Metodologías ágiles
Implementación de Scrum, Kanban y programación modular en entornos reales.
Ventajas de la modularidad
Mejora de mantenibilidad, escalabilidad y reutilización del código en proyectos complejos.
Instalación y configuración de entornos de desarrollo
Uso práctico de Eclipse
1
Creación de proyectos
Configuración inicial de proyectos Java con diferentes arquitecturas y dependencias.
2
Herramientas de productividad
Uso eficiente del autocompletado y asistentes para generar código rápidamente.
3
Control de versiones
Integración con Git mediante plugins nativos para gestionar el ciclo de desarrollo.
Uso práctico de NetBeans
Desarrollo web avanzado
Soporte integral para tecnologías HTML5, CSS3, JavaScript y frameworks modernos.
Interfaces gráficas
Diseño visual de interfaces con Swing y JavaFX mediante editores WYSIWYG.
Extensibilidad
Ampliación de funcionalidades mediante un ecosistema de plugins especializados.
Uso práctico de IntelliJ IDEA
Desarrollo Java premium
Herramientas avanzadas de análisis y optimización específicas para Java.
Refactorización inteligente
Sugerencias automáticas para mejorar la calidad y legibilidad del código.
Ecosistema completo
Integración nativa con Git, Docker, bases de datos y frameworks modernos.
Productividad aumentada
Atajos de teclado personalizables y asistentes de código inteligentes.
Uso práctico de Visual Studio Code
Editor ligero y versátil
Rendimiento optimizado incluso en equipos con recursos limitados.
Extensiones ilimitadas
Marketplace con miles de extensiones para cualquier lenguaje o framework.
Terminal integrada
Ejecución de comandos sin salir del entorno de desarrollo.
Control de versiones nativo
Integración con Git sin necesidad de plugins adicionales.
Depuración de programas
Técnicas avanzadas
Monitorización de condiciones y excepciones en tiempo real.
Puntos de ruptura
Estrategias para pausar la ejecución en momentos críticos.
Seguimiento de variables
Observación y modificación de valores durante la ejecución del programa.
La depuración eficiente es una habilidad fundamental que diferencia a los desarrolladores profesionales.
Diseño y realización de pruebas
Pruebas unitarias
Verificación de componentes individuales con JUnit y TestNG.
Pruebas de integración
Validación de la interacción correcta entre diferentes módulos.
Pruebas funcionales
Comprobación del cumplimiento de requisitos desde la perspectiva del usuario.
Test-Driven Development
Metodología de diseño donde las pruebas preceden a la implementación.
Refactorización del código
Principios SOLID
Fundamentos para un diseño orientado a objetos mantenible y extensible.
Detección de "code smell"
Identificación de patrones problemáticos que deterioran la calidad del código.
Herramientas automáticas
Utilización de analizadores estáticos y asistentes de refactorización.
La refactorización continua es esencial para mantener la salud de proyectos a largo plazo.
Generación de documentación
Javadoc
Sistema estándar para documentar código Java mediante comentarios especiales.
Documentación de clases y métodos
Inclusión de ejemplos de uso
Generación automática de HTML
Estándares técnicos
Prácticas recomendadas para mantener documentación coherente en equipos.
Estructuras predefinidas
Normas de estilo unificadas
Sistemas de revisión
Publicación online
Compartir y mantener documentación técnica en plataformas colaborativas.
GitHub Pages
ReadTheDocs
Wikis corporativas
Control de versiones con Git y GitHub
Control distribuido
Fundamentos de Git: commits, branches, merges y resolución de conflictos.
Plataformas colaborativas
Uso de GitHub para facilitar la coordinación en equipos de desarrollo.
Flujos de trabajo
Implementación de GitFlow y otras metodologías para gestionar cambios.
Integración continua
Automatización de pruebas y despliegues mediante GitHub Actions.
Introducción a UML y diagramas de clase
Lenguaje Unificado de Modelado, estándar para visualizar la estructura y comportamiento de sistemas orientados a objetos.
Se usan diagramas de clase en UML para representar las relaciones y jerarquías entre las clases de un sistema.
Estos diagramas permiten una visualización clara de la estructura del sistema y su comportamiento a través de atributos y métodos. Además, son una herramienta crucial en el diseño y modelado de sistemas orientados a objetos.
Elementos básicos de los diagramas de clase
Clases con atributos y métodos
Relaciones: asociación, herencia, composición
Multiplicidad y navegabilidad
Herramientas
Draw.io (gratuito, online)
Lucidchart (freemium)
Visual Paradigm (versión académica)
Diagramas de comportamiento: casos de uso
Elementos fundamentales
Actores, casos de uso, relaciones y límites del sistema definen la interacción usuario-sistema.
Aplicación práctica
Los casos de uso capturan requisitos funcionales desde la perspectiva del usuario final.
Diseño colaborativo
La creación conjunta de diagramas facilita la comunicación entre desarrolladores y stakeholders.