0% encontró este documento útil (0 votos)
19 vistas15 páginas

Ing Software II. T4

El documento aborda la ingeniería de software, enfocándose en la planificación de proyectos, la gestión del factor humano, herramientas CASE y las tendencias en ambientes de desarrollo. Se destacan la importancia de la planificación y la documentación en el desarrollo de software, así como los beneficios y desafíos asociados. Además, se exploran las herramientas y metodologías que optimizan el proceso de desarrollo y la colaboración en equipos.

Cargado por

reyeshgd.usm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas15 páginas

Ing Software II. T4

El documento aborda la ingeniería de software, enfocándose en la planificación de proyectos, la gestión del factor humano, herramientas CASE y las tendencias en ambientes de desarrollo. Se destacan la importancia de la planificación y la documentación en el desarrollo de software, así como los beneficios y desafíos asociados. Además, se exploran las herramientas y metodologías que optimizan el proceso de desarrollo y la colaboración en equipos.

Cargado por

reyeshgd.usm
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

República Bolivariana de Venezuela

Universidad Santa María


Ingeniería de Software II
Ingeniería en Sistemas

CUARTO TRABAJO DE INGENIERÍA


DEL SOFTWARE II

Profesor: Alumna:
José Ramírez Génesis Reyes
CI 29.662.153

Caracas, 25 de noviembre del 2024


Introducción

La ingeniería de software es una disciplina formada por un conjunto de métodos,


herramientas y técnicas que se utilizan en el desarrollo de programas informáticos, más conocidos
como softwares.

Esta disciplina trasciende la actividad de programación, que es el pilar fundamental a la


hora de crear una aplicación. El ingeniero de software se encarga de toda la gestión del proyecto
para que éste se pueda desarrollar en un plazo determinado y con el presupuesto previsto.

La ingeniería de software, por lo tanto, incluye el análisis previo de la situación, el diseño


del proyecto, el desarrollo del software, las pruebas necesarias para confirmar su correcto
funcionamiento y la implementación del sistema.
Desarrollo
1. Planificación de un proyecto.
La planificación de un proyecto es el proceso de organizar y coordinar todas las tareas
necesarias para alcanzar un objetivo específico, dentro de un plazo determinado y con los recursos
disponibles. Es como crear un mapa detallado que guía al equipo hacia el éxito.

¿Por qué es importante la planificación?


Claridad: Define el alcance del proyecto y evita desviaciones.
Eficiencia: Optimiza el uso de recursos (tiempo, dinero, personal).
Control: Permite monitorear el progreso y tomar decisiones oportunas.
Reducción de riesgos: Anticipa posibles problemas y establece medidas preventivas.
Comunicación: Facilita la coordinación entre los miembros del equipo.

Elementos clave de la planificación


Objetivos claros y medibles: ¿Qué se quiere lograr?
Alcance del proyecto: ¿Qué incluye y qué excluye?
Tareas y actividades: ¿Qué hay que hacer para alcanzar los objetivos?
Cronograma: ¿Cuándo se realizará cada tarea?
Recursos: ¿Qué personas, materiales y presupuesto se necesitan?
Riesgos: ¿Cuáles son los posibles obstáculos y cómo se abordarán?
Comunicación: ¿Cómo se mantendrá informados a los involucrados?

Pasos para planificar un proyecto


Definir los objetivos: Establece qué se quiere lograr con el proyecto.
Identificar las partes interesadas: Determina quiénes están involucrados y sus expectativas.
Crear una estructura de desglose del trabajo (WBS): Divide el proyecto en tareas más pequeñas y
manejables.
Estimar el tiempo y los recursos: Asigna un tiempo estimado a cada tarea y determina los recursos
necesarios.
Crear un cronograma: Utiliza herramientas como diagramas de Gantt para visualizar la secuencia de
las tareas.
Asignar responsabilidades: Define quién se encargará de cada tarea.
Establecer hitos: Marca los puntos clave del proyecto para medir el progreso.
Crear un plan de comunicación: Define cómo se compartirá la información con el equipo y las
partes interesadas.
Gestionar los riesgos: Identifica los posibles riesgos y desarrolla planes de contingencia.

Herramientas útiles para la planificación


Diagramas de Gantt: Visualizan el cronograma del proyecto.
Software de gestión de proyectos: Herramientas como Asana, Trello, o Microsoft Project.
Hojas de cálculo: Para organizar información y realizar cálculos.
En resumen, la planificación de un proyecto es esencial para garantizar su éxito. Al seguir estos
pasos y utilizar las herramientas adecuadas, podrás aumentar las posibilidades de alcanzar tus
objetivos de manera eficiente y eficaz.

2. Planificación temporal del proyecto.


La planificación temporal de un proyecto es una parte fundamental del proceso de gestión
de proyectos. Consiste en definir el inicio y finalización de cada tarea, así como la secuencia en la
que se llevarán a cabo, con el objetivo de determinar la duración total del proyecto y los puntos
críticos que pueden afectar su cumplimiento.

¿Por qué es importante la planificación temporal?


Optimización de recursos: Permite asignar los recursos de manera eficiente, evitando cuellos de
botella.
Identificación de riesgos: Facilita la detección de actividades críticas y la planificación de medidas
para mitigar los riesgos.
Seguimiento del progreso: Permite evaluar el avance del proyecto en relación con el plan
establecido.
Comunicación efectiva: Proporciona una visión clara del cronograma a todos los miembros del
equipo y a las partes interesadas.

Elementos clave de la planificación temporal


Actividades: Desglose detallado de las tareas que componen el proyecto.
Secuencia: Orden en que se deben realizar las actividades, considerando las dependencias entre
ellas.
Duración: Estimación del tiempo necesario para completar cada actividad.
Fecha de inicio y finalización: Fechas programadas para el inicio y finalización de cada actividad y
del proyecto en su conjunto.
Hitos: Puntos de control importantes que marcan el avance del proyecto.
Camino crítico: Secuencia de actividades que determina la duración mínima del proyecto.

Técnicas de planificación temporal


Diagrama de Gantt: Representación gráfica de las actividades y su duración en un eje temporal.
Método del Camino Crítico (CPM): Identifica las actividades críticas que, si se retrasan, retrasarán
todo el proyecto.
PERT (Program Evaluation and Review Technique): Permite considerar la incertidumbre en la
duración de las actividades.

Herramientas para la planificación temporal


Software de gestión de proyectos: Microsoft Project, Asana, Trello, etc.
Hojas de cálculo: Excel
Diagramas de flujo: Visio

Pasos para crear un plan temporal


Descomponer el proyecto en actividades: Dividir el proyecto en tareas más pequeñas y manejables.
Establecer la secuencia de las actividades: Definir el orden en que se realizarán las tareas.
Estimar la duración de cada actividad: Asignar un tiempo estimado a cada tarea.
Construir el diagrama de Gantt: Representar gráficamente las actividades y su duración en un eje
temporal.
Identificar el camino crítico: Determinar la secuencia de actividades que determina la duración
mínima del proyecto.
Establecer hitos: Marcar los puntos de control importantes.
Revisar y ajustar el plan: Evaluar el plan y realizar los ajustes necesarios.

Beneficios de una buena planificación temporal


Mayor probabilidad de éxito del proyecto.
Mejor utilización de los recursos.
Reducción de costos.
Mayor satisfacción del cliente.
En resumen, la planificación temporal es una herramienta esencial para garantizar el éxito de
cualquier proyecto. Al definir un cronograma detallado y realista, se puede controlar el progreso del
proyecto, identificar posibles problemas y tomar las medidas necesarias para asegurar su
finalización a tiempo y dentro del presupuesto.

3. Aspectos humanos del proceso de desarrollo del software.


El desarrollo de software, a pesar de ser un campo altamente técnico, está profundamente
influenciado por factores humanos. La calidad, la eficiencia y el éxito de un proyecto de software
dependen en gran medida de cómo se gestionan las personas involucradas.

La Importancia del Factor Humano


Colaboración y Comunicación: La interacción entre desarrolladores, diseñadores, testers y
stakeholders es crucial para garantizar que el producto final cumpla con las expectativas del cliente.
Motivación y Satisfacción: Un equipo motivado y satisfecho es más productivo y creativo.
Gestión de Conflictos: Los conflictos son inevitables en cualquier equipo. Saber gestionarlos de
manera efectiva es esencial.
Adaptabilidad al Cambio: Los requisitos de los proyectos a menudo cambian a lo largo del
desarrollo. La capacidad de adaptarse a estos cambios depende de la flexibilidad y la capacidad de
aprendizaje del equipo.
Cultura Organizacional: El ambiente de trabajo, los valores de la empresa y las políticas influyen
directamente en la productividad y el bienestar de los empleados.

Desafíos Comunes
Gestión de equipos distribuidos: La coordinación de equipos en diferentes ubicaciones geográficas
puede ser compleja.
Comunicación intercultural: Las diferencias culturales pueden generar malentendidos y dificultar la
colaboración.
Burnout: El exceso de trabajo y la presión pueden llevar al agotamiento de los desarrolladores.
Resistencia al cambio: Los equipos pueden resistirse a adoptar nuevas tecnologías o metodologías.
Estrategias para Optimizar el Factor Humano
Construcción de equipos fuertes: Fomentar la confianza, el respeto y la colaboración entre los
miembros del equipo.
Comunicación efectiva: Establecer canales de comunicación claros y frecuentes, tanto formales
como informales.
Desarrollo profesional: Ofrecer oportunidades de formación y crecimiento profesional.
Reconocimiento y recompensa: Valorar el trabajo bien hecho y celebrar los logros del equipo.
Flexibilidad y equilibrio trabajo-vida: Permitir a los empleados conciliar su vida personal y
profesional.
Liderazgo efectivo: Los líderes deben ser capaces de inspirar, motivar y guiar a sus equipos.
Herramientas y Metodologías
Métodos ágiles: Promueven la colaboración, la adaptación al cambio y la entrega frecuente de valor.
Psicología positiva en el trabajo: Fomenta un ambiente de trabajo positivo y saludable.
Herramientas de colaboración: Facilitan la comunicación y la gestión de proyectos en equipos
distribuidos.

4. Sistemas basados en computadoras CASE. Tipos. Características.


Las herramientas CASE (Computer-Aided Software Engineering, o Ingeniería de Software
Asistida por Computadora) son un conjunto de aplicaciones software que automatizan algunas de
las tareas del ciclo de vida del desarrollo de software. Estas herramientas proporcionan un entorno
integrado para ayudar a los desarrolladores a analizar, diseñar, codificar y probar sistemas de
software.

Tipos de Herramientas CASE


Las herramientas CASE se pueden clasificar de diversas maneras, pero una clasificación
común las divide en dos categorías principales:
Upper CASE: Se enfocan en las primeras fases del ciclo de vida del desarrollo de software, como el
análisis y el diseño. Estas herramientas ayudan a crear modelos conceptuales del sistema, diagramas
de flujo, diagramas de entidad-relación y otros artefactos de diseño.
Lower CASE: Se centran en las últimas fases del ciclo de vida, como la codificación, la generación
de código y las pruebas. Estas herramientas automatizan muchas de las tareas repetitivas de
programación, como la generación de código a partir de diagramas de diseño.

Características de las Herramientas CASE


Las herramientas CASE ofrecen una amplia gama de características, que pueden variar
según el proveedor y el tipo de herramienta. Algunas de las características más comunes incluyen:
Modelado: Permiten crear modelos gráficos de sistemas de software, utilizando una variedad de
notaciones como UML (Unified Modeling Language).
Generación de código: Automatizan la generación de código a partir de modelos de diseño, lo que
reduce significativamente el tiempo de desarrollo.
Gestión de bases de datos: Ayudan a gestionar las bases de datos utilizadas en el sistema.
Gestión de configuración: Controlan los cambios en el software a lo largo del tiempo.
Integración: Se integran con otras herramientas de desarrollo, como editores de código y debuggers.
Documentación automática: Generan automáticamente la documentación del sistema.
Reingeniería: Permiten analizar y modificar sistemas de software existentes.

Beneficios del Uso de Herramientas CASE


Aumento de la productividad: Automatizan muchas tareas repetitivas, lo que permite a los
desarrolladores centrarse en tareas de mayor valor.
Mejora de la calidad del software: Ayudan a detectar errores en las primeras etapas del desarrollo y
a garantizar la consistencia del sistema.
Reducción de costos: Reducen los costos de desarrollo al aumentar la productividad y reducir los
errores.
Facilitación de la comunicación: Proporcionan un lenguaje común para que los desarrolladores,
analistas y usuarios se comuniquen.

Ejemplos de Herramientas CASE


Rational Rose: Una de las herramientas CASE más populares, utilizada para modelar sistemas
orientados a objetos.
Microsoft Visio: Una herramienta versátil que se puede utilizar para crear una variedad de
diagramas, incluyendo diagramas UML.
Enterprise Architect: Una herramienta completa para modelar, diseñar y documentar sistemas de
software.

Desafíos en la Adopción de Herramientas CASE


Costo: Las herramientas CASE pueden ser costosas de adquirir e implementar.
Complejidad: Algunas herramientas CASE pueden ser muy complejas de aprender y utilizar.
Resistencia al cambio: Los desarrolladores pueden resistirse a cambiar sus métodos de trabajo.

5. Perspectivas Ambientes de desarrollo de software.


Los ambientes de desarrollo de software han evolucionado significativamente en las últimas
décadas, impulsados por avances tecnológicos y cambios en las metodologías de desarrollo. Estas
herramientas han pasado de ser simples editores de texto a complejos entornos integrados que
ofrecen una amplia gama de funcionalidades para facilitar el proceso de creación de software.
Tendencias Actuales y Futuras
Low-code y No-code:
Democratización del desarrollo: Permite a personas sin conocimientos profundos en programación
crear aplicaciones.
Agilización de procesos: Reduce el tiempo de desarrollo y puesta en marcha de aplicaciones.
Mayor enfoque en la lógica de negocio: Permite a los desarrolladores centrarse en la solución del
problema en lugar de en la sintaxis del lenguaje de programación.

Inteligencia Artificial (IA) y Machine Learning:


Completación de código inteligente: Sugiere el código siguiente en función del contexto, acelerando
el desarrollo.
Detección de errores: Identifica errores potenciales en el código de forma temprana.
Generación automática de código: Crea partes del código de forma autónoma, basadas en patrones y
ejemplos.

Cloud Computing:
Desarrollo en la nube: Permite a los desarrolladores trabajar desde cualquier lugar con acceso a
internet.
Escalabilidad: Facilita la adaptación de los recursos computacionales a las necesidades del
proyecto.
Colaboración en tiempo real: Permite a equipos distribuidos trabajar de forma conjunta en el mismo
proyecto.

DevOps y CI/CD:
Integración continua y despliegue continuo: Automatiza el proceso de construcción, prueba y
despliegue de software.
Mayor frecuencia de lanzamientos: Permite a las empresas responder más rápidamente a los
cambios en el mercado.

Realidad Virtual y Aumentada:


Visualización inmersiva del código: Permite a los desarrolladores visualizar el código de una
manera más intuitiva.
Colaboración remota: Facilita la colaboración entre equipos distribuidos en entornos virtuales.
Desafíos y Oportunidades
Seguridad: La creciente complejidad de los ambientes de desarrollo plantea nuevos desafíos en
términos de seguridad.
Privacidad: La gestión de datos sensibles en estos entornos requiere de medidas de seguridad
robustas.
Adaptación: Los desarrolladores deben estar dispuestos a aprender nuevas herramientas y
tecnologías.
Dependencia de proveedores: La dependencia de plataformas en la nube puede generar riesgos de
bloqueo.
Los ambientes de desarrollo de software del futuro serán cada vez más inteligentes, personalizados
y colaborativos. La integración de IA, machine learning y cloud computing transformará la forma
en que se crea el software, permitiendo a los desarrolladores ser más productivos y creativos.

6. Documentación.
La documentación de software es un conjunto de registros escritos que describen el diseño,
la implementación, el uso y el mantenimiento de un sistema de software. Es un elemento esencial en
el ciclo de vida del desarrollo de software, ya que facilita la comprensión, el mantenimiento y la
evolución del producto.

¿Por qué es importante la documentación?


Comunicación: Sirve como puente entre los distintos equipos involucrados en el proyecto
(desarrollo, pruebas, operaciones, etc.), asegurando que todos tengan una visión común del sistema.
Mantenimiento: Facilita la tarea de realizar cambios y correcciones en el software, ya que
proporciona una descripción detallada de su funcionamiento.
Transferencia de conocimiento: Permite que nuevos miembros del equipo se integren rápidamente
al proyecto.
Cumplimiento de normas: En muchos casos, la documentación es requerida por normas y
estándares de calidad.
Legado: Sirve como registro histórico del proyecto, documentando las decisiones tomadas y los
motivos detrás de ellas.

Tipos de Documentación
Requerimientos: Describen las funcionalidades y características que el software debe tener.
Diseño: Detallan la arquitectura del software, los diagramas de flujo, las estructuras de datos y las
interfaces.
Código: Comentarios dentro del código que explican su funcionamiento.
Manuales de usuario: Guías para que los usuarios finales utilicen el software.
Manuales de instalación: Instrucciones para instalar y configurar el software.
Documentación técnica: Información detallada para desarrolladores y administradores del sistema.

Beneficios de una Buena Documentación


Mayor calidad del software: Al identificar y corregir errores en las primeras etapas del desarrollo.
Reducción de costos: Al facilitar el mantenimiento y evitar la duplicación de esfuerzos.
Aumento de la productividad: Al permitir que los desarrolladores se concentren en nuevas
funcionalidades.
Mejor colaboración: Al facilitar la comunicación entre los miembros del equipo.

Desafíos en la Documentación
Falta de tiempo: La documentación a menudo se considera una tarea secundaria y se pospone.
Dificultad para mantenerla actualizada: Los cambios en el software pueden no reflejarse en la
documentación.
Falta de interés: Algunos desarrolladores no ven la importancia de documentar su trabajo.

Consejos para una Buena Documentación


Ser claro y conciso: Utilizar un lenguaje sencillo y evitar tecnicismos innecesarios.
Ser preciso: La información debe ser exacta y completa.
Ser consistente: Utilizar una misma terminología y formato en toda la documentación.
Ser actualizado: Mantener la documentación al día con los cambios en el software.
Utilizar herramientas adecuadas: Existen herramientas que facilitan la creación y gestión de la
documentación.
En resumen, la documentación es una inversión a largo plazo que beneficia tanto a los
desarrolladores como a los usuarios finales. Al dedicar tiempo y esfuerzo a documentar el software,
se garantiza su calidad, mantenibilidad y longevidad.
7. Aseguramiento de la calidad.
El aseguramiento de la calidad del software (SQA) es un conjunto de actividades y procesos
que se implementan a lo largo del ciclo de vida del desarrollo de software con el objetivo de
garantizar que el producto final cumpla con los requisitos establecidos y los estándares de calidad.

¿Por qué es importante el Aseguramiento de la Calidad?


Satisfacción del cliente: Un software de alta calidad cumple con las expectativas del usuario, lo que
aumenta la satisfacción y fidelidad del cliente.
Reducción de costos: La detección temprana de errores evita costosas correcciones posteriores al
lanzamiento.
Mejora de la reputación: Un software de calidad sólida refuerza la reputación de la empresa.
Cumplimiento de normativas: En muchos sectores, existen regulaciones específicas que exigen el
cumplimiento de ciertos estándares de calidad.

Actividades clave del SQA


Planificación de la calidad: Definición de los objetivos de calidad, métricas y procesos a seguir.
Revisiones y auditorías: Evaluación de los productos y procesos para verificar el cumplimiento de
los estándares.
Pruebas de software: Verificación del funcionamiento del software y detección de errores.
Análisis de métricas: Recopilación y análisis de datos para evaluar la calidad del software y los
procesos.
Gestión de defectos: Seguimiento y resolución de los defectos detectados.

Técnicas y Herramientas
Pruebas unitarias: Verificación de la funcionalidad de unidades individuales de código.
Pruebas de integración: Verificación de la interacción entre diferentes componentes del software.
Pruebas de sistema: Evaluación del sistema completo para asegurar que cumple con los requisitos.
Pruebas de aceptación: Verificación de que el software cumple con las expectativas del usuario.
Herramientas de gestión de defectos: Para rastrear y gestionar los errores encontrados.
Herramientas de automatización de pruebas: Para ejecutar pruebas de forma repetitiva y rápida.
Modelos de Calidad
Existen diversos modelos de calidad del software, como el modelo de madurez de la capacidad de
ingeniería de software (CMMI) y los estándares ISO 9126. Estos modelos proporcionan un marco
de referencia para evaluar la calidad del software y establecer objetivos de mejora.

El Rol de los Equipos de Desarrollo


Desarrolladores: Responsables de escribir código de alta calidad y realizar pruebas unitarias.
Testers: Dedicados a diseñar y ejecutar pruebas para identificar defectos.
Analistas de calidad: Encargados de definir los estándares de calidad, diseñar planes de prueba y
analizar los resultados.
Desafíos en el Aseguramiento de la Calidad
Presión por el lanzamiento: La necesidad de entregar el software a tiempo puede llevar a descuidar
la calidad.
Complejidad del software: A medida que los sistemas se vuelven más complejos, es más difícil
garantizar su calidad.
Cambios constantes en los requisitos: Los cambios frecuentes pueden afectar la calidad del software
si no se gestionan adecuadamente.
Tendencias Actuales
Automatización: La creciente automatización de las pruebas y otras actividades de aseguramiento
de la calidad.
Desplazamiento a la izquierda: La incorporación de actividades de aseguramiento de la calidad
desde las primeras etapas del desarrollo.
Test-driven development (TDD): El desarrollo guiado por pruebas, donde las pruebas se escriben
antes del código.
Conclusión
La Ingeniería de Software es vital en la actualidad, ya que nos permite aprovechar al
máximo la tecnología y crear soluciones innovadoras. En un mundo cada vez más digitalizado, los
softwares desempeñan un papel fundamental en nuestro día a día. ¿Te imaginas cómo sería la vida
sin aplicaciones móviles, sistemas operativos o redes sociales? Sería casi imposible funcionar sin
ellos. Es por eso que la Ingeniería de Software es esencial, ya que nos brinda las herramientas
necesarias para construir y mejorar estas tecnologías, y así, elevar nuestra calidad de vida.

Además, la Ingeniería de Software es vital para garantizar la seguridad y estabilidad de los


sistemas. Los ingenieros de software diseñan y prueban cuidadosamente los programas para evitar
errores y vulnerabilidades que podrían comprometer la integridad de los datos o perjudicar el
funcionamiento de los sistemas.
Bibliografía

https://www.docunecta.com/blog/que-es-la-gestion-de-proyectos#:~:text=La%20gesti%C3%B3n
%20de%20proyectos%20se,la%20evoluci%C3%B3n%20de%20un%20proyecto.
https://www.valtx.pe/blog/metricas-para-el-desarrollo-de-software-conoce-cuales-son-las-
masrelevantes#:~:text=Las%20m%C3%A9tricas%20de%20rendimiento%20del,a%20una
%20solicitud%20del%20usuario.
https://www.arteco-consulting.com/articulos/medicion-software-definicion-metodos/#:~:text=La
%20medici%C3%B3n%20de%20software%20se,su%20desarrollo%2C%20gesti%C3%B3n%20y
%20mantenimiento.
https://www.javiergarzas.com/2012/08/mitos-calidad-software.html
https://asana.com/es/resources/estimation-methods
https://www.angelfire.com/my/jimena/ingsoft/guia4.html#:~:text=Un%20modelo%20emp
%C3%ADrico%20de%20estimaci%C3%B3n,una%20muestra%20de%20proyectos%20limitada.

También podría gustarte