Ga8-220501096-Aa1-Ev01 Ev02 - Adso - Dagua

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 21

S.E.N.

Servicio Nacional de Aprendizaje

Centro de Comercio y Servicios- Regional Bolívar

Aprendices:

Jorge Andres Giraldo Galvis

Bryam Alexander Pineda

Fabian Enrique Quintero

Diego Ramírez

Tecnología:

ANALISIS Y DESARROLLO DE SOFTWARE

Desarrollar Software a partir de la integración de sus módulos componentes

Módulos integrados

GA8-220501096-AA1-EV01/EV02

Ficha:

2721488

Santa Rosa de Cabal

2024
CONTENIDO

1. Introducción
2. Metodología de Desarrollo de Software
3. Mapa de Navegación de la Aplicación
4. Librerías en el Desarrollo Web
5. Frameworks en el Desarrollo Web
6. Importancia del Repositorio de Control de Versiones
7. Configuraciones de Servidores y Bases de Datos
8. Desarrollo de Aplicaciones Web con Java
9. Conclusión
10. Bibliografía
1. INTRODUCCIÓN

En el ámbito del desarrollo de software, la creación de aplicaciones orientadas a la


web ha ganado una importancia significativa debido a la creciente demanda de
servicios en línea. Este tipo de aplicaciones requieren una planificación rigurosa y una
comprensión profunda de los conceptos técnicos y metodológicos involucrados. Este
documento tiene como objetivo explorar y conceptualizar los elementos clave
necesarios para desarrollar una aplicación web eficiente y escalable. Se abordarán
temas como la metodología de desarrollo de software, el mapa de navegación de la
aplicación, la importancia de las bibliotecas y frameworks, la gestión de repositorios
de control de versiones, y la configuración de servidores y bases de datos. Además,
se discutirá el desarrollo de aplicaciones utilizando Java, uno de los lenguajes de
programación más utilizados en la industria.
2. METODOLOGIA DE DESARROLLO DE SOFTWARE

En la actualidad la rapidez y el dinamismo en la industria del software han hecho


replantear los cimientos sobre los que se sustenta el desarrollo de software tradicional.
Estudios recientes y el mismo mercado actual está marcando la tendencia en la
ingeniería del software teniendo como características principales atender a las
necesidades de rapidez, flexibilidad y variantes externas que hacen de nuestro
entorno una ventaja más competitiva al aumentar la productividad y satisfacer las
necesidades del cliente en el menor tiempo posible para proporcionar mayor valor al
negocio. Ante esta situación, el grado de adaptación de las metodologías tradicionales
a estos entornos de trabajo no eran del todo eficientes y no cubrían las necesidades
del mercado actual. En la actualidad existen una gran cantidad de metodologías para
el desarrollo de software, separadas en dos grandes grupos; las metodologías
tradicionales o pesadas y las metodologías agiles. Las metodologías tradicionales se
basan en las buenas prácticas dentro de la ingeniería del software, siguiendo un marco
de disciplina estricto y un riguroso proceso de aplicación. Las metodologías agiles, en
cambio, representan una solución a los problemas que requieren una respuesta rápida
en un ambiente flexible y con cambios constantes, haciendo caso omiso de la
documentación rigurosa y los métodos formales. El objetivo de esta investigación es
presentar e introducir sobre las existentes metodologías para el desarrollo de software
y los paradigmas que marcan la diferencia entre un método estructurado y un método
ágil para así poder identificar cual se adapta de manera más eficiente a un proyecto
determinado.
3. MAPA DE NAVEGACION DE LA APLICACION ORIENTADA A LA WEB

El mapa de navegación de una aplicación web es una representación visual que


describe cómo se estructuran las diferentes páginas y componentes dentro del
sistema. Este mapa es crucial para la planificación del flujo de usuarios y la experiencia
general del usuario (UX). Al diseñar un mapa de navegación, es fundamental
considerar la usabilidad y la accesibilidad, asegurando que los usuarios puedan
navegar intuitivamente a través de la aplicación. Un mapa de navegación bien
diseñado no solo mejora la experiencia del usuario, sino que también facilita el
desarrollo del backend, al proporcionar una estructura clara sobre cómo deben
interconectarse los diferentes módulos del sistema.
4. LIBRERIAS DE DESARROLLO WEB

Las librerías en el desarrollo web son colecciones de código prescrito que los
desarrolladores pueden reutilizar para realizar tareas comunes sin necesidad de
escribir el código desde cero. Estas librerías están diseñadas para resolver
problemas específicos o proporcionar funcionalidades que son recurrentes en el
desarrollo de aplicaciones web.

Características de las Librerías en el Desarrollo Web

Modularidad:
• Las librerías están generalmente diseñadas como módulos
independientes que se pueden incluir en un proyecto según sea
necesario. Esto permite a los desarrolladores agregar funcionalidades
específicas sin sobrecargar el código con elementos innecesarios.
Reutilización:
• Al utilizar librerías, los desarrolladores pueden reutilizar código existente
que ha sido probado y optimizado, lo que reduce el tiempo de desarrollo
y minimiza la posibilidad de errores.
Optimización:
• Las librerías suelen estar optimizadas para un rendimiento eficiente, lo
que puede mejorar la velocidad y la funcionalidad de una aplicación web.
Comunidad y Soporte:
• Muchas librerías populares tienen una gran comunidad de
desarrolladores que contribuyen a su mantenimiento y mejora, así como
ofrecen soporte a otros usuarios.

Aplicación de Librerías en el Desarrollo Web

Manipulación del DOM:


• Librerías como jQuery facilitan la manipulación del Document Object
Model (DOM), permitiendo a los desarrolladores seleccionar elementos
HTML, aplicar estilos, manejar eventos, y crear animaciones con menos
código y de manera más intuitiva.
Validación de Formularios:
• Librerías como Parsley.js se utilizan para la validación de formularios en
el lado del cliente. Estas librerías ayudan a asegurar que los datos
ingresados por los usuarios cumplan con ciertos criterios antes de ser
enviados al servidor.
Gráficos y Visualización de Datos:
• D3.js es una librería poderosa para crear gráficos dinámicos y
visualizaciones de datos complejas. Permite a los desarrolladores
transformar datos en gráficos interactivos directamente en la web.
Comunicación Asíncrona:
• Librerías como Axios simplifican las solicitudes HTTP asíncronas,
permitiendo que las aplicaciones web se comuniquen con servidores
para enviar o recibir datos sin necesidad de recargar la página.
Desarrollo de Interfaces de Usuario:
• Librerías como React.js (aunque es más un framework) permiten
construir interfaces de usuario complejas mediante componentes
reutilizables, lo que facilita el desarrollo y mantenimiento de grandes
aplicaciones web.
Animaciones:
• Librerías como GreenSock (GSAP) se utilizan para crear animaciones
avanzadas en sitios web, ofreciendo control sobre la temporización, la
velocidad y la secuencia de las animaciones.
Seguridad y Cifrado:
• CryptoJS es una librería utilizada para el cifrado de datos en
aplicaciones web, proporcionando métodos para implementar
algoritmos criptográficos como AES, SHA, y HMAC.

Beneficios de Utilizar Librerías en el Desarrollo Web

• Aceleración del Desarrollo: Al reutilizar soluciones preexistentes, los


desarrolladores pueden enfocarse en la lógica única de su aplicación en lugar
de resolver problemas ya resueltos.
• Reducción de Errores:
• Dado que las librerías son utilizadas y probadas por una gran comunidad
de desarrolladores, es probable que contengan menos errores y sean
más confiables que el código personalizado.
• Mantenimiento y Escalabilidad:
• Las librerías bien diseñadas permiten que el código sea más fácil de
mantener y escalar, ya que la funcionalidad está encapsulada y
organizada en módulos.
5. FRAMEWORKS EN EL DESARROLLO WEB

¿Ǫué son los Frameworks?

Un framework en el desarrollo web es un conjunto estructurado de herramientas,


bibliotecas, y reglas que proporciona una base estándar sobre la cual los
desarrolladores pueden construir aplicaciones. Los frameworks están diseñados para
facilitar el desarrollo de software, proporcionando componentes preconstruidos y
guías que permiten a los desarrolladores enfocarse en las características específicas
de su aplicación, en lugar de reinventar la rueda cada vez.

Los frameworks suelen incluir una estructura organizada para la aplicación (como la
separación de capas de presentación, lógica de negocio, y acceso a datos), un
conjunto de herramientas para manejar tareas comunes (como enrutamiento,
autenticación, y manejo de bases de datos), y una serie de mejores prácticas que
guían el desarrollo.

Tipos de Frameworks en el Desarrollo Web

Frameworks de Frontend:
• Se centran en la parte del cliente (lo que el usuario ve y con lo que
interactúa).
• Ejemplos: React.js, Angular, Vue.js.
Frameworks de Backend:
• Se ocupan de la lógica del servidor, bases de datos, autenticación, y
otros aspectos del backend.
• Ejemplos: Express.js (Node.js), Django (Python), Ruby on Rails (Ruby),
Spring Boot (Java).
Frameworks Full-Stack:
• Incluyen tanto el frontend como el backend, proporcionando una
solución integral.
• Ejemplos: Meteor.js, Next.js.
¿Para Qué los Vamos a Necesitar?
Eficiencia en el Desarrollo:

• Los frameworks permiten a los desarrolladores comenzar rápidamente


con la creación de aplicaciones al proporcionar una estructura y
componentes predefinidos. Esto reduce el tiempo necesario para
configurar el entorno de desarrollo y escribir código básico.
Estandarización y Mejores Prácticas:
• Utilizar un framework asegura que el desarrollo siga estándares y
mejores prácticas, lo que lleva a un código más limpio, mantenible y
escalable. Por ejemplo, frameworks como Django promueven una
estructura de proyectos organizada y el uso de patrones de diseño como
el MVC (Model-View-Controller).
Seguridad:
• Los frameworks suelen incluir mecanismos de seguridad integrados,
como protección contra ataques XSS (Cross-Site Scripting), CSRF
(Cross-Site Request Forgery), y gestión de autenticación y permisos.
Esto reduce las vulnerabilidades comunes que podrían afectar una
aplicación web.
Escalabilidad:
• Frameworks como Spring Boot en Java o Express.js en Node.js están
diseñados para manejar aplicaciones de gran escala. Estos frameworks
permiten añadir nuevos módulos o funcionalidades sin afectar la
estabilidad del sistema.
Soporte Comunitario y Ecosistema:
• La mayoría de los frameworks populares tienen comunidades activas y
una amplia gama de paquetes y plugins que pueden integrarse
fácilmente, lo que facilita la resolución de problemas y la extensión de
funcionalidades.
Modularidad y Reutilización:
• Los frameworks promueven la creación de módulos reutilizables, lo que
permite a los desarrolladores mantener un código DRY (Don’t Repeat
Yourself). Por ejemplo, en React, los componentes pueden reutilizarse
en diferentes partes de la aplicación, lo que mejora la eficiencia y la
coherencia del proyecto.
Facilidad de Integración:
• Frameworks como Angular o Vue.js facilitan la integración con otras
tecnologías y herramientas, como API RESTful, bases de datos, y
sistemas de autenticación, creando un entorno de desarrollo más
cohesivo.
Rendimiento Optimizado:
• Muchos frameworks están optimizados para rendimiento, lo que significa
que las aplicaciones desarrolladas con ellos pueden manejar cargas de
trabajo intensivas con menor latencia y mayor capacidad de respuesta.
6. IMPORTANCIA DEL REPOSITORIO DEL CONTROL DE VERSIONES

Un repositorio de control de versiones, como Git, es una herramienta esencial en el


desarrollo de software moderno. Permite a los equipos de desarrollo rastrear cambios
en el código, colaborar en diferentes ramas del proyecto y revertir a versiones
anteriores si es necesario. En el contexto del desarrollo web, donde múltiples
desarrolladores pueden estar trabajando en diferentes módulos de la aplicación, el
control de versiones es crucial para mantener la integridad del código y evitar
conflictos. Además, facilita la implementación de nuevas características y la
corrección de errores, al proporcionar un historial completo de los cambios realizados
en el proyecto.
7. CONFIGURACIONES DE SERVIDORES Y BASES DE DATOS EN EL
DESARROLLO WEB

En el desarrollo web, la correcta configuración de servidores y bases de datos es


esencial para asegurar que una aplicación funcione de manera eficiente, segura, y
escalable. A continuación, se explica cómo se realizan estas configuraciones y por
qué son importantes.

Configuración de Servidores

Un servidor es una máquina (física o virtual) que almacena, procesa y entrega datos a
los clientes (navegadores web) que solicitan acceder a una aplicación web. La
configuración adecuada del servidor es crucial para garantizar la disponibilidad,
seguridad, y rendimiento de la aplicación.

Componentes Clave de la Configuración de un Servidor:

• Sistema Operativo (OS):


• La elección del sistema operativo es fundamental, ya que determina el
entorno de ejecución de la aplicación. Los sistemas operativos más
comunes para servidores web incluyen Linux (especialmente
distribuciones como Ubuntu Server o CentOS) y Windows Server.
• Servidor Web:
• El servidor web es el software que maneja las solicitudes HTTP y sirve
los archivos de la aplicación a los usuarios. Ejemplos populares incluyen
Apache, Nginx, y IIS (Internet Information Services). La configuración
de un servidor web incluye ajustar parámetros como puertos de
escucha, manejo de solicitudes simultáneas, y configuración de
certificados SSL para seguridad.
• Configuración de la Red:
• La configuración de red incluye la asignación de direcciones IP,
configuración de puertos, y manejo de firewalls. Es esencial configurar
reglas de firewall para permitir solo el tráfico necesario y proteger el
servidor de accesos no autorizados.
• Seguridad:
• Configurar medidas de seguridad es crucial para proteger la aplicación
y los datos. Esto incluye la implementación de certificados SSL/TLS
para cifrar las comunicaciones, la configuración de firewalls, el
endurecimiento del sistema operativo y del servidor web, y la instalación
de herramientas de detección de intrusos.
• Escalabilidad y Balanceo de Carga:
• Para aplicaciones que requieren alta disponibilidad, se pueden
configurar múltiples servidores con un balanceador de carga que
distribuya las solicitudes entrantes entre ellos. Esto mejora la
escalabilidad y asegura que la aplicación siga funcionando incluso si uno
de los servidores falla.
• Gestión de Archivos y Almacenamiento:
• Configurar sistemas de archivos y almacenamiento adecuados es
esencial, especialmente para aplicaciones que manejan grandes
cantidades de datos o archivos multimedia. Es común utilizar soluciones
de almacenamiento en la nube, como Amazon S3 o Google Cloud
Storage, integradas con el servidor.

Configuración de Bases de Datos

Una base de datos es donde se almacenan los datos de la aplicación, como


información de usuarios, productos, transacciones, etc. La configuración adecuada de
la base de datos es crucial para el rendimiento, la seguridad, y la integridad de los
datos.
Tipos de Bases de Datos:

• Relacionales (SQL):
• Utilizan un esquema tabular para organizar datos. Ejemplos incluyen
MySQL, PostgreSQL, y Microsoft SQL Server.
• No Relacionales (NoSQL):
• Manejan datos de manera más flexible, utilizando modelos como
documentos, gráficos o clave-valor. Ejemplos incluyen MongoDB,
Cassandra, y Redis.

Componentes Clave de la Configuración de una Base de Datos:

• Instalación y Configuración Inicial:


• La instalación del software de la base de datos debe ser seguida por la
configuración de parámetros como el puerto de conexión, la creación
de usuarios y roles, y la configuración de la replicación y los backups.
• Seguridad:
• La seguridad de la base de datos implica la configuración de usuarios
con permisos específicos, el uso de conexiones cifradas (SSL/TLS), y la
implementación de políticas de acceso que limiten el acceso a la base
de datos solo a aplicaciones y usuarios autorizados.
• Optimización del Rendimiento:
• La configuración de índices, la optimización de consultas, y la gestión de
la memoria y los recursos de CPU son fundamentales para asegurar que
la base de datos pueda manejar grandes volúmenes de tráfico y
consultas complejas de manera eficiente.
• Backup y Recuperación:
• Configurar sistemas de backup regulares es esencial para proteger los
datos contra pérdida o corrupción. Es importante establecer una
estrategia de recuperación de desastres que permita restaurar
rápidamente la base de datos en caso de falla.
• Monitoreo y Mantenimiento:
• Monitorear el rendimiento y la salud de la base de datos en tiempo real
ayuda a detectar problemas antes de que afecten a la aplicación.
Herramientas como Prometheus o Datadog pueden integrarse para
alertar sobre problemas de rendimiento, espacio en disco, o seguridad.
Importancia de la Configuración Adecuada
• Rendimiento y Escalabilidad:
• Una configuración de servidor y base de datos bien realizada permite
que la aplicación maneje un gran número de usuarios simultáneos sin
experimentar tiempos de respuesta lentos o caídas.
• Seguridad:
• Configurar correctamente los servidores y bases de datos es esencial
para proteger la aplicación contra amenazas como ataques de inyección
SQL, accesos no autorizados, y pérdida de datos.
• Disponibilidad:
• Asegurar que la configuración soporte la alta disponibilidad y la
recuperación ante desastres minimiza el tiempo de inactividad y asegura
que la aplicación esté siempre accesible para los usuarios.
• Mantenimiento Simplificado:
• Con una configuración bien estructurada, es más fácil aplicar
actualizaciones, realizar backups, y monitorizar el sistema, lo que reduce
la carga de mantenimiento y mejora la confiabilidad de la aplicación.
8. DESARROLLO DE APLICACIONES WEB CON JAVA

El desarrollo de aplicaciones web con Java es una práctica ampliamente adoptada


debido a la robustez, escalabilidad, y seguridad que ofrece este lenguaje. Java
proporciona una variedad de herramientas y frameworks que facilitan la creación de
aplicaciones web tanto en el frontend como en el backend.

Fundamentos del Desarrollo Web con Java

Java es un lenguaje de programación orientado a objetos, ampliamente utilizado en el


desarrollo de aplicaciones empresariales. Para el desarrollo web, Java sigue el modelo
cliente-servidor, donde el servidor procesa las solicitudes del cliente (navegador web)
y envía las respuestas.

Componentes Clave:

• JSP (JavaServer Pages):


• Permite la creación de páginas web dinámicas al mezclar HTML y código
Java. JSP actúa como un frontend donde se pueden generar páginas
basadas en datos dinámicos.
• Servlets:
• Son programas Java que se ejecutan en un servidor web. Actúan como
controladores en aplicaciones web, manejando solicitudes HTTP y
generando respuestas HTTP, generalmente en combinación con JSP.
• JDBC (Java Database Connectivity):
• Proporciona una API para conectar aplicaciones Java a bases de datos
relacionales, permitiendo la ejecución de consultas SQL y la gestión de
datos.
• Frameworks Populares en el Desarrollo Web con Java

Java ofrece varios frameworks que facilitan el desarrollo web, proporcionando


estructuras organizadas, mejores prácticas, y componentes reutilizables.
Frameworks de Backend:

• Spring Boot:
• Un framework basado en Spring que simplifica el desarrollo de
aplicaciones Java al proporcionar un entorno listo para usar con
configuraciones mínimas. Spring Boot es conocido por su capacidad
para crear microservicios y aplicaciones web robustas y escalables.
• JavaServer Faces (JSF):
• Un framework que facilita la creación de interfaces de usuario basadas
en componentes. JSF es parte de la plataforma Java EE (Enterprise
Edition) y es útil para aplicaciones empresariales donde se requiere una
fuerte integración con otros componentes de Java EE.
• Hibernate:
• Un framework de mapeo objeto-relacional (ORM) que facilita la
interacción con bases de datos relacionales. Hibernate convierte
automáticamente entre objetos Java y tablas de bases de datos, lo que
simplifica la persistencia de datos.

Frameworks de Frontend:

• Thymeleaf:
• Un motor de plantillas que permite la integración del código HTML con
las funcionalidades de backend de Java. Thymeleaf es frecuentemente
utilizado con Spring Boot para generar vistas dinámicas.
• Vaadin:
• Un framework de Java para construir aplicaciones web modernas con
una experiencia de usuario rica. Vaadin permite escribir el frontend
completamente en Java, eliminando la necesidad de JavaScript, HTML
o CSS para muchas aplicaciones.
9. CONCLUSIONES

El análisis de los requerimientos del sistema para aplicaciones orientadas a la web es


un componente crítico en el desarrollo de software, ya que establece las bases sobre
las cuales se construyen las soluciones tecnológicas. A medida que el entorno digital
evoluciona, la comprensión y gestión de estos requerimientos se vuelve cada vez más
compleja, demandando un enfoque más estratégico y colaborativo.

Los requerimientos del sistema se dividen típicamente en dos categorías: funcionales


y no funcionales. Los requerimientos funcionales describen lo que el sistema debe
hacer, incluyendo características y comportamientos específicos que son vitales para
satisfacer las necesidades del usuario. Por otro lado, los requerimientos no funcionales
abarcan aspectos como el rendimiento, la seguridad, la usabilidad y la escalabilidad.
Este enfoque dual no solo ayuda a definir el alcance del proyecto, sino que también
proporciona un marco para evaluar el éxito de la aplicación una vez desplegada.

Reflexionando sobre la importancia de los requerimientos, es evidente que un enfoque


inadecuado en esta fase puede llevar a problemas significativos en etapas posteriores
del desarrollo, como sobrecostos, retrasos en los plazos de entrega y una
insatisfacción general del usuario. La falta de claridad en los requerimientos puede
resultar en un producto que no cumple con las expectativas, lo que enfatiza la
necesidad de técnicas eficaces de recopilación y análisis, como entrevistas, talleres y
prototipos.

Además, la agilidad de las metodologías modernas de desarrollo ha transformado la


forma en que se gestionan los requerimientos. En entornos ágiles, se promueve la
adaptación continua y la colaboración entre equipos, lo que permite una mayor
flexibilidad para responder a cambios en las necesidades del negocio y del usuario.
Sin embargo, este enfoque requiere un compromiso constante para mantener una
comunicación abierta y efectiva entre todas las partes interesadas, lo cual puede ser
un desafío en proyectos grandes y complejos.
A medida que las tecnologías y las expectativas del usuario continúan evolucionando,
la habilidad para identificar, documentar y gestionar requerimientos del sistema se
convierte en una competencia fundamental para los equipos de desarrollo. La
integración de herramientas de gestión de requerimientos y el uso de metodologías
de desarrollo centradas en el usuario se presentan como prácticas esenciales para
garantizar que las aplicaciones web no solo cumplan con las especificaciones
técnicas, sino que también ofrezcan una experiencia de usuario satisfactoria y
relevante.
10. BIBLIOGRAFIA

✓ Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W.,
Fowler, M., ... & Thomas, D. (2001). Manifesto for Agile Software
Development. Agile Alliance.
✓ Sommerville, I. (2011). Software Engineering (9th ed.). Addison-
Wesley. Pressman, R. S. (2014). Software Engineering: A
Practitioner's Approach (8th ed.). McGraw-Hill Education.
✓ Richardson, L., & Ruby, S. (2007). RESTful Web Services. O'Reilly
Media. Holmes, J. (2014). Java Programming for
Beginners. CreateSpace Independent Publishing Platform.
✓ Hunt, A., & Thomas, D. (1999). The Pragmatic Programmer:
From Journeyman to Master. Addison-Wesley.

También podría gustarte