Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Puede solicitar gratuitamente las soluciones a todas las actividades y al examen final en el email [email protected] Capacidades que se adquieren con este Manual: Crear componentes software con tecnologías de desarrollo orientadas a objetos: Gestionar componentes software en el entorno del servidor mediante herramientas de desarrollo y lenguajes de programación contando con documentación de diseño detallado. Crear objetos, clases y métodos adecuados a la funcionalidad del componente software a desarrollar utilizando lenguajes de programación orientados a objetos. Formular estructuras de datos y flujo de control mediante lenguajes de programación orientados a objetos según la funcionalidad del componente software a desarrollar. Documentar el componente software desarrollado. Construir componentes de software mediante herramientas de desarrollo y lenguajes de programación orientados a objetos a partir de documentación de diseño detallado.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 168
Veröffentlichungsjahr: 2025
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Desarrollo de aplicaciones web en el entorno servidor. UF1844.
Autora: Beatriz Coronado García.
© EDITORIAL TUTOR FORMACIÓN
C/ San Millán, 7, bajo 10
26004 Logroño (La Rioja)
Tlf. 610687276
Email: [email protected]
Web: https://tutorformacion.es o https://editorial.tutorformacion.es
Edición: septiembre 2024
ISBN: 978-84-19189-89-9
Depósito legal: LR 1122-2024
Reservados todos los derechos de publicación en cualquier idioma.
Según el código penal vigente ninguna parte de este o cualquier otro libro puede ser reproducida, grabada en alguno de los sistemas de almacenamiento existentes o transmitida por cualquier procedimiento, ya sea electrónico, mecánico, reprográfico, magnético o cualquier otro, sin autorización previa y por escrito de D. Miguel Ángel Ladrón Jiménez; su contenido está protegido por la ley vigente que establece penas de prisión y/o multas a quienes intencionadamente reprodujeren o plagiaren, en todo o en parte, una obra literaria, artística o científica.
Foto de portada diseñada por FreePik.
Contenido
Introducción
El proceso del desarrollo de software
1.Modelos del ciclo de vida del software.
1.1.En cascada (waterfall).
1.2.Iterativo.
1.3.Incremental.
1.4.En V.
1.5.Basado en componentes (CBSE).
1.6.Desarrollo rápido (RAD).
1.7.Ventajas e inconvenientes. Pautas para la selección de la metodología más adecuada.
2.Análisis y especificación de requisitos.
2.1.Tipos de requisitos.
2.2.Modelos para el análisis de requisitos.
2.3.Documentación de requisitos.
2.4.Validación de requisitos.
2.5.Gestión de requisitos.
3.Diseño.
3.1.Modelos para el diseño de sistemas.
3.2.Diagramas de diseño. El estándar UML
3.3.Documentación
4.Implementación.
4.1.Conceptos generales de desarrollo de software.
4.2.Principios básicos del desarrollo de software.
4.3.Técnicas de desarrollo de software.
5.Validación y verificación de sistemas.
5.1.Planificación.
5.2.Métodos formales de verificación.
5.3.Métodos automatizados de análisis.
6.Pruebas de software.
6.1.Tipos.
6.2.Pruebas funcionales (BBT).
6.3.Pruebas estructurales (WBT).
6.4.Comparativa. Pautas de utilización.
6.5.Diseño de pruebas.
6.6.Ámbitos de aplicación.
6.7.Pruebas de Sistemas.
6.8.Pruebas de componentes.
6.9.Automatización de pruebas. Herramientas.
6.10.Estándares sobre pruebas de software.
7.Calidad del software.
7.1.Principios de calidad del software.
7.2.Métricas y calidad del software.
7.3.Concepto de métrica y su importancia en la medición de la calidad.
7.4.Principales métricas en las fases del ciclo de vida software.
7.5.Estándares para la descripción de los factores de Calidad. ISO-9126 y otros estándares. Comparativa.
8.Herramientas de uso común para el desarrollo de software.
8.1.Editores orientados a lenguajes de programación.
8.2.Compiladores y enlazadores.
8.3.Generadores de programas
8.4.Depuradores.
8.5.Herramientas de prueba y validación de software.
8.6.Optimizadores de código.
8.7.Empaquetadores.
8.8.Generadores de documentación de software.
8.9.Gestores y repositorios de paquetes. Versionado y control de dependencias.
8.10.Distribución de software.
8.11.Gestores de actualización de software.
8.12.Control de versiones.
8.13.Entornos integrados de desarrollo (IDE) de uso común.
9.Gestión de proyectos de desarrollo de software.
9.1.Planificación de proyectos.
9.2.Control de proyectos.
9.3.Ejecución de proyectos.
9.4.Herramientas de uso común para la gestión de proyectos.
10.Prueba de autoevaluación.
La orientación a objetos
1.Principios de la orientación a objetos.
1.1.Comparación con la programación estructurada.
1.2.Ocultación de información (information hiding).
1.3.El tipo abstracto de datos (ADT). Encapsulado de datos.
1.4.Paso de mensajes.
2.Clases de objetos.
2.1.Atributos, variables de estado y variables de clase.
2.2.Métodos. Requisitos e invariantes.
2.3.Gestión de excepciones.
2.4.Agregación de clases.
3.Objetos.
3.1.Creación y destrucción de objetos.
3.2.Llamada a métodos de un objeto.
3.3.Visibilidad y uso de las variables de estado.
3.4.Referencias a objetos.
3.5.Persistencia de objetos.
3.6.Optimización de memoria y recolección de basura (garbage collection).
4.Herencia.
4.1.Concepto de herencia. Superclases y subclases.
4.2.Herencia múltiple.
4.3.Clases abstractas.
4.4.Tipos de herencia.
4.5.Polimorfismo y enlace dinámico (dynamic binding).
4.6.Directrices para el uso correcto de la herencia.
5.Modularidad.
5.1.Librerías de clases. Ámbito de utilización de nombres.
5.2.Ventajas de la utilización de módulos o paquetes.
6.Generalización y sobrecarga.
6.1.Concepto de generalización.
6.2.Generalización y sobrecarga.
6.3.Concepto de herencia generalizada y módulos.
7.Desarrollo orientado a objetos.
7.1.Lenguajes de desarrollo orientado a objetos de uso común.
7.2.Herramientas de desarrollo.
8.Lenguajes de modelización en el desarrollo orientado a objetos.
8.1.Uso del lenguaje unificado de modelado (UML) en el desarrollo orientado a objetos.
8.2.Diagramas para la modelización de sistemas orientados a objetos.
9.Prueba de autoevaluación.
Arquitecturas web
1.Concepto de arquitectura web.
2.El modelo de capas.
3.Plataformas para el desarrollo en las capas servidor.
4.Herramientas de desarrollo orientadas a servidor de aplicaciones web.
4.1.Tipos de herramientas.
4.2.Extensibilidad. Instalación de módulos.
4.3.Técnicas de configuración de los entornos de desarrollo, preproducción y producción.
4.4.Funcionalidades de depuración.
5.Prueba de autoevaluación.
Lenguajes de programación de aplicaciones web en el lado servidor
1.Características de los lenguajes de programación web en servidor.
2.Tipos y características de los lenguajes de uso común.
2.1.Interpretados orientados a servidor.
2.2.Lenguajes de cliente interpretados en servidor.
2.3.Lenguajes compilados.
3.Criterios en la elección de un lenguaje de programación web en servidor. Ventajas e inconvenientes.
4.Características generales.
4.1.Tipos de datos.
4.2.Clases.
4.3.Operadores básicos. Manipulación de cadenas de caracteres.
4.4.Estructuras de control. Bucles y condicionales.
4.5.Módulos o paquetes.
4.6.Herencia.
4.7.Gestión de bibliotecas (libraries).
5.Gestión de la configuración.
5.1.Configuración de descriptores.
5.2.Configuración de ficheros.
6.Gestión de la seguridad
6.1.Conceptos de identificación, autenticación y autorización.
6.2.Técnicas para la gestión de sesiones.
7.Gestión de errores.
7.1.Técnicas de recuperación de errores.
7.2.Programación de excepciones.
8.Transacciones y persistencia.
8.1.Acceso a bases de datos. Conectores.
8.2.Estándares para el acceso a bases de datos.
8.3.Gestión de la configuración de acceso a bases de datos.
8.4.Acceso a directorios y otras fuentes de datos.
8.5.Programación de transacciones.
9.Componentes en servidor. Ventajas e inconvenientes en el uso de contenedores de componentes.
10.Modelos de desarrollo. El modelo vista controlador.
10.1.Modelo: programación de acceso a datos.
10.2.Vista: desarrollo de aplicaciones en cliente. Eventos e interfaz de usuario.
10.3.Programación del controlador.
10.4.Documentación del software. Inclusión en código fuente. Generadores de documentación
11.Prueba de autoevaluación.
Resumen
Prueba de evaluación final
Este manual está diseñado para proporcionar una comprensión profunda y detallada del desarrollo de aplicaciones web en el entorno servidor. A lo largo de sus páginas, se explorarán tanto los fundamentos como los aspectos más avanzados que permiten a los lectores diseñar, implementar y gestionar aplicaciones web robustas, escalables y eficientes, abarcando todas las etapas del ciclo de vida del software.
Se inicia con una introducción al proceso de desarrollo de software, donde se definen los principales modelos del ciclo de vida, desde el enfoque en cascada hasta los métodos ágiles, y se examinan las ventajas y desafíos asociados con cada uno de ellos. Posteriormente, se profundiza en el análisis y especificación de requisitos, el diseño de sistemas, la implementación, y la validación y verificación, proporcionando una visión completa de cómo se gestiona un proyecto de desarrollo de software, desde su concepción hasta su entrega final.
El manual también abarca los principios de la programación orientada a objetos, un paradigma clave en el desarrollo de software moderno. Se exploran los conceptos fundamentales como la encapsulación, la herencia y el polimorfismo, y se discute cómo estos principios se aplican para crear software modular, reutilizable y fácil de mantener. Además, se presentan herramientas y lenguajes comunes en el desarrollo orientado a objetos, así como las mejores prácticas para su implementación.
En la siguiente sección, se introduce el concepto de arquitecturas web, esenciales para la estructura y funcionamiento de las aplicaciones web. Se examina el modelo de capas, que organiza la aplicación en componentes manejables, y se analizan las plataformas y herramientas utilizadas para el desarrollo en el lado servidor. Este apartado proporciona al lector las bases necesarias para comprender y diseñar arquitecturas web eficientes y escalables.
Por último, el manual se centra en los lenguajes de programación para aplicaciones web en el lado servidor, explorando sus características, tipos y aplicaciones. Se ofrece una comparativa de los principales lenguajes utilizados en el desarrollo web, y se presentan criterios para la selección del lenguaje más adecuado según las necesidades del proyecto. Además, se profundiza en temas clave como la gestión de la configuración, seguridad, manejo de errores y persistencia de datos, asegurando que los lectores adquieran un conocimiento integral para desarrollar aplicaciones web sólidas y seguras.
Este documento servirá como una guía integral para aquellas personas interesadas en desarrollar competencias en el desarrollo de aplicaciones web en el entorno servidor, proporcionando el conocimiento necesario para enfrentar los desafíos actuales en el diseño y desarrollo de software. Al finalizar, el lector estará capacitado para crear aplicaciones web robustas, escalables y bien estructuradas, listas para su implementación en entornos de producción.
A continuación, se presenta un glosario de términos relacionados con el desarrollo de aplicaciones web en el entorno servidor:
►AJAX (Asynchronous JavaScript and XML): Técnica de desarrollo web que permite la actualización de partes de una página web sin necesidad de recargarla por completo.
►API (Application Programming Interface): Conjunto de reglas y protocolos que permite que dos aplicaciones se comuniquen entre sí.
►API Gateway: Servicio que actúa como único punto de entrada para múltiples servicios de una aplicación, gestionando peticiones, enrutamiento y autenticación.
►Autenticación de Dos Factores (2FA): Método de seguridad que requiere dos formas diferentes de verificación antes de permitir el acceso a un sistema.
►Back-end: Parte de una aplicación web que gestiona la lógica de negocio, acceso a bases de datos y el funcionamiento del servidor.
►Balanceador de Carga: Dispositivo o software que distribuye la carga de trabajo entre varios servidores para optimizar el rendimiento y evitar la sobrecarga.
►Base de Datos Relacional: Sistema de almacenamiento de datos estructurado en tablas que están interrelacionadas mediante claves primarias y foráneas.
►Bash: Intérprete de comandos para sistemas Unix y Linux, utilizado para escribir scripts de automatización.
►BLOB (Binary Large Object): Tipo de dato que se utiliza para almacenar grandes cantidades de datos binarios, como imágenes o archivos multimedia, en una base de datos.
►CDN (Content Delivery Network): Red de servidores distribuidos geográficamente que almacenan en caché contenido estático para acelerar la entrega a usuarios finales.
►CI/CD (Continuous Integration/Continuous Deployment): Prácticas de desarrollo de software que permiten la integración continua de código y la entrega automática de cambios a producción.
►Ciclo de Vida del Software: Conjunto de fases que abarca desde la concepción del software hasta su retiro, incluyendo planificación, desarrollo, pruebas y mantenimiento.
►Content Security Policy (CSP): Mecanismo de seguridad que ayuda a prevenir ataques de cross-site scripting (XSS) al controlar los recursos que puede cargar una página web.
►Control de Versiones: Sistema que registra los cambios en el código fuente de un proyecto, permitiendo la gestión de diferentes versiones y colaboraciones.
►Cookie: Pequeño archivo de datos almacenado en el navegador del usuario que guarda información sobre su interacción con un sitio web.
►CORS (Cross-Origin Resource Sharing): Mecanismo que permite a las páginas web solicitar recursos de un dominio diferente al que las sirvió, respetando restricciones de seguridad.
►Cross-Origin Resource Sharing (CORS): Mecanismo de seguridad que permite que los recursos restringidos en una página web sean solicitados desde otro dominio distinto al que originó el recurso.
►Cross-Site Scripting (XSS): Vulnerabilidad de seguridad que permite a los atacantes inyectar scripts maliciosos en páginas web vistas por otros usuarios.
►CRUD (Create, Read, Update, Delete): Operaciones básicas de almacenamiento persistente de datos.
►CSRF (Cross-Site Request Forgery): Vulnerabilidad de seguridad que permite a un atacante realizar acciones no autorizadas en un sitio web en nombre de un usuario autenticado.
►Daemon: Programa que se ejecuta en segundo plano en un sistema operativo, realizando tareas específicas como servir solicitudes de red o gestionar procesos.
►Data Binding: Técnica de programación que conecta la interfaz de usuario con los datos subyacentes, permitiendo actualizaciones automáticas en ambas direcciones.
►Data Mining: Proceso de analizar grandes conjuntos de datos para descubrir patrones y relaciones útiles.
►Desarrollo Ágil: Metodología de desarrollo de software que promueve la entrega continua, colaboración estrecha con el cliente, y capacidad de respuesta ante el cambio.
►DNS Spoofing: Técnica de ataque en la que un actor malicioso altera el sistema DNS para redirigir el tráfico de un dominio legítimo a un sitio falso.
►Docker: Plataforma que permite crear, desplegar y gestionar aplicaciones dentro de contenedores, proporcionando un entorno de ejecución aislado y portátil.
►Domain Name System (DNS): Sistema que traduce nombres de dominio legibles para humanos en direcciones IP comprensibles para las computadoras.
►ECMAScript: Especificación estándar de scripting en la que se basan lenguajes como JavaScript.
►Elastic Scaling: Capacidad de un sistema para aumentar o disminuir recursos automáticamente en respuesta a la demanda.
►Encapsulación: Principio de programación orientada a objetos que consiste en ocultar los detalles internos de un objeto y exponer solo lo necesario.
►End-to-End Testing: Tipo de prueba que verifica el funcionamiento completo de una aplicación desde el principio hasta el final, incluyendo la interacción con sistemas externos.
►Event-Driven Architecture: Modelo de arquitectura de software donde los flujos de trabajo se determinan por la ocurrencia de eventos.
►FIFO (First In, First Out): Estrategia de manejo de datos donde el primer elemento en ser ingresado es el primero en ser procesado o eliminado.
►Firewall: Sistema de seguridad que controla y filtra el tráfico de red entrante y saliente basado en reglas de seguridad predeterminadas.
►Framework: Conjunto de herramientas y bibliotecas que proporciona una estructura predefinida para el desarrollo de software.
►Full-Stack Developer: Desarrollador que tiene habilidades tanto en el desarrollo de front-end como de back-end, capaz de construir aplicaciones web completas.
►GraphQL: Lenguaje de consulta de datos para APIs que permite a los clientes solicitar exactamente los datos que necesitan, mejorando la eficiencia de las comunicaciones.
►Hashing: Proceso de transformar una cadena de datos en una secuencia de caracteres de longitud fija, utilizada comúnmente para almacenar contraseñas de manera segura.
►Headless CMS: Sistema de gestión de contenido que proporciona una interfaz para la administración de contenido sin estar vinculado a una presentación específica (frontend).
►Herencia: Mecanismo en la programación orientada a objetos donde una clase puede heredar atributos y métodos de otra clase.
►Horizontal Scaling: Proceso de añadir más servidores para manejar una carga de trabajo creciente, en lugar de mejorar las capacidades de un solo servidor.
►HTTPS (HyperText Transfer Protocol Secure): Versión segura de HTTP que utiliza SSL/TLS para encriptar las comunicaciones entre el navegador y el servidor.
►IAM (Identity and Access Management): Marco de políticas y tecnologías para garantizar que las personas adecuadas tengan acceso a los recursos de la tecnología de la información adecuados.
►IDE (Integrated Development Environment): Software que proporciona herramientas integradas como editor de código, depurador, y compilador, facilitando el desarrollo de software.
►Inyección de Dependencias: Patrón de diseño que permite desacoplar componentes del software mediante la provisión de dependencias externas.
►JavaScript: Lenguaje de programación interpretado que se utiliza principalmente en el desarrollo web para crear contenido dinámico en el lado del cliente y, con Node.js, también en el servidor.
►JSON (JavaScript Object Notation): Formato ligero de intercambio de datos, fácil de leer y escribir para humanos y máquinas.
►JWT (JSON Web Token): Estándar para la creación de tokens de acceso seguros que se utilizan comúnmente en la autenticación y autorización en aplicaciones web.
►Load Balancer: Dispositivo o software que distribuye la carga de trabajo en varios servidores, evitando que cualquiera de ellos se sobrecargue.
►Load Testing: Prueba de rendimiento que evalúa cómo un sistema maneja una cantidad específica de tráfico simultáneo.
►Microservicios: Arquitectura de software en la que una aplicación se compone de pequeños servicios independientes que se comunican entre sí.
►Middleware: Software que actúa como intermediario en las interacciones entre aplicaciones, gestionando tareas como la autenticación, el enrutamiento, y la conexión con bases de datos.
►MVC (Modelo-Vista-Controlador): Patrón de arquitectura de software que separa la lógica de negocio (Modelo), la interfaz de usuario (Vista), y el flujo de control (Controlador).
►OAuth: Protocolo abierto para la autorización que permite a los usuarios conceder acceso a su información en una aplicación sin compartir sus credenciales.
►OAuth2: Protocolo de autorización que permite a los usuarios acceder a los recursos de un servidor en nombre de un cliente, usando tokens en lugar de compartir contraseñas.
►ORM (Object-Relational Mapping): Técnica de programación que permite convertir datos entre sistemas de tipo objeto y bases de datos relacionales.
►Patrón de Diseño: Solución reusable a un problema común en el diseño de software.
►Phishing: Técnica de ciberdelincuencia que intenta obtener información sensible, como contraseñas o datos de tarjetas de crédito, haciéndose pasar por una entidad confiable.
►Pipeline: Conjunto de procesos automatizados por los que pasa el código desde su desarrollo hasta su despliegue en producción.
►Polimorfismo: Concepto en la programación orientada a objetos que permite que un objeto se comporte de diferentes maneras según el contexto.
►Proxy Server: Servidor que actúa como intermediario entre un cliente y un servidor, ocultando la identidad del cliente y controlando su acceso a recursos.
►Rate Limiting: Técnica para controlar la cantidad de solicitudes que un usuario puede hacer a un servicio en un período de tiempo determinado.
►Recolección de Basura (Garbage Collection): Mecanismo automatizado para la gestión de memoria que elimina objetos no utilizados para liberar espacio.
►REST (Representational State Transfer): Estilo de arquitectura para diseñar servicios web ligeros, basados en operaciones HTTP estándar.
►Reverse Proxy: Servidor que recibe solicitudes de clientes en nombre de otros servidores y luego las reenvía, utilizado comúnmente para mejorar la seguridad y el rendimiento.
►Scalability: Capacidad de un sistema para manejar un crecimiento en la carga de trabajo agregando recursos como servidores adicionales.
►Seguridad Web: Conjunto de prácticas y técnicas para proteger aplicaciones web de amenazas y vulnerabilidades como inyecciones SQL, cross-site scripting (XSS), y ataques de denegación de servicio (DoS).
►Serverless Computing: Modelo de ejecución en la nube donde el proveedor administra la infraestructura y los recursos necesarios para ejecutar código, permitiendo al desarrollador enfocarse solo en la lógica de la aplicación.
►Server-Side Rendering (SSR): Técnica en la que las páginas web se renderizan en el servidor en lugar del cliente, mejorando el tiempo de carga inicial.
►Servidor Web: Software que sirve contenido web a los usuarios, respondiendo a sus peticiones HTTP con los recursos solicitados.
►Session Hijacking: Tipo de ataque en el que un atacante roba una sesión de usuario para hacerse pasar por ese usuario en un sistema.
►Sharding: Técnica de particionamiento de bases de datos que divide grandes bases de datos en partes más pequeñas y manejables, o “shards”.
►Single Sign-On (SSO): Sistema de autenticación que permite a los usuarios acceder a múltiples aplicaciones con una sola credencial de inicio de sesión.
►SOAP (Simple Object Access Protocol): Protocolo basado en XML para intercambiar información estructurada en la implementación de servicios web.
►SQL (Structured Query Language): Lenguaje de programación utilizado para gestionar y manipular bases de datos relacionales.
►SSL/TLS (Secure Sockets Layer/Transport Layer Security): Protocolos criptográficos diseñados para proporcionar comunicaciones seguras sobre una red.
►Static Site Generator (SSG): Herramienta que convierte archivos de texto en sitios web completos y estáticos.
►Test Unitario: Prueba que verifica el funcionamiento de una pequeña parte de la aplicación, como una función o un método individual.
►