Logo Studenta

s2INGENIERÍA DE SOFTWARE II - Stiven

¡Este material tiene más páginas!

Vista previa del material en texto

FACULTAD DE INGENIERÍAS
ESCUELA PROFESIONAL DE
INGENIERÍA DE COMPUTACIÓN Y SISTEMAS
CURSO
Ingeniería de Software II
TEMA
MDD y MDA, El 
modelo de 
requerimientos
SESIÓN N° 01
DOCENTE:
Mg. Enzo Castillo
Mg. Enzo Castillo
El Promedio Final de la 
asignatura se calcula de la 
siguiente forma
Mg. Enzo Castillo
EPICS
Que entiendes por Ingeniería de Software?
Mg. Enzo Castillo
TEMA DE LA SESIÓN
Introducción a la Ingeniería de Software basada en modelos
• ¿Qué es la MDD (Model-Driven Development)?
• ¿Qué es la MDA (Model-Driven Architecture)?
• Diferencias entre MDD y MDA
• Ventajas de utilizar MDD/MDA en el desarrollo de software
Modelado de requerimientos
• Conceptos básicos de requerimientos
• Tipos de Requerimientos
• Técnicas de elicitación de requerimientos
• Análisis y especificación de requerimientos
• Modelado de requerimientos en lenguaje natural y en modelos
Lenguajes de modelado
• UML (Unified Modeling Language)
• DSL (Domain-Specific Language)
EPICS
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Logro de la Sesión
Al final de la sesión, el alumno será capaz de comprender los
fundamentos de la Ingeniería de Software basada en modelos
(MDD/MDA) y el modelado de requerimientos, y aplicar esta
comprensión en el proceso de desarrollo de software. Además, el
alumno podrá identificar y utilizar adecuadamente lenguajes de
modelado y herramientas de MDD/MDA para diseñar y transformar
modelos en código fuente, y validar y verificar modelos para asegurar su
correctitud y coherencia. Con este conocimiento, el alumno podrá
analizar y evaluar la aplicación de MDD/MDA en diferentes contextos y
dominios de aplicación, y proponer soluciones basadas en modelos para
problemas específicos de ingeniería de software.
Introducción a la Ingeniería 
de Software basada en 
modelos
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
¿Qué es la MDD (Model-Driven
Development)?
Es una metodología de desarrollo de software que se basa en el uso de
modelos para especificar, diseñar y construir sistemas de software. La
idea principal de MDD es que los modelos son la representación
abstracta de un sistema y que estos modelos pueden ser transformados
en código fuente, lo que reduce el trabajo manual y aumenta la calidad
del software.
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
¿Qué es la MDD (Model-Driven
Development)?
En el proceso de MDD, se construyen modelos en un lenguaje de
modelado específico que describe el sistema de software y sus
componentes. Estos modelos pueden ser refinados y transformados en
diferentes etapas del ciclo de vida del software, para obtener modelos
más detallados y específicos hasta llegar a la implementación final del
sistema.
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
¿Qué es la MDD (Model-Driven
Development)?
En MDD, los modelos son la fuente de verdad del sistema y la
generación de código fuente es una consecuencia de los modelos. Esto
permite que los desarrolladores trabajen a un nivel más abstracto, lo
que puede resultar en un mayor nivel de abstracción y una mayor
precisión. Además, al estar basado en modelos, la metodología de MDD
puede ser más fácilmente adaptada para distintos contextos de
desarrollo y lenguajes de programación.
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
¿Qué es la MDA (Model-Driven
Architecture)?
Es una iniciativa de la organización Object Management Group (OMG)
que promueve el uso de modelos para el diseño y construcción de
sistemas de software. MDA se enfoca en la separación clara de la
funcionalidad de un sistema de software de su implementación en
código fuente, y busca estandarizar esta separación para que los
modelos sean independientes de la plataforma tecnológica subyacente.
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
¿Qué es la MDA (Model-Driven
Architecture)?
La idea fundamental detrás de MDA es que un sistema de software
puede ser diseñado y construido a partir de modelos independientes de
la tecnología subyacente. En lugar de diseñar un sistema específico para
una plataforma tecnológica en particular, los modelos en MDA
describen las características y funcionalidades del sistema en un nivel
abstracto y tecnológicamente neutral. Luego, estos modelos son
transformados en modelos específicos de la tecnología (por ejemplo,
lenguajes de programación, sistemas de bases de datos, etc.), y
finalmente en código fuente.
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
¿Qué es la MDA (Model-Driven
Architecture)?
MDA define un conjunto de estándares y especificaciones para el
modelado, transformación y validación de modelos, lo que permite que
los modelos sean intercambiables y reutilizables entre diferentes
plataformas y aplicaciones. Además, la separación clara entre los
modelos y la implementación en código fuente hace que los sistemas de
software sean más fáciles de entender, mantener y actualizar.
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Diferencias entre MDD y MDA
Aunque MDD (Model-Driven Development o Desarrollo Dirigidopor
Modelos) y MDA (Model-Driven Architecture o Arquitectura Dirigida por
Modelos) comparten el uso de modelos para el diseño y construcción
de sistemas de software, existen algunas diferencias clave entre ambas
metodologías:
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Diferencias entre MDD y MDA
Enfoque: MDD se enfoca en el desarrollo de software a través de
modelos que se transforman directamente en código fuente, mientras
que MDA se enfoca en la separación clara de la funcionalidad del
sistema de su implementación en código fuente, utilizando modelos
independientes de la tecnología subyacente.
Nivel de abstracción: MDD se enfoca en la generación de código fuente a
partir de modelos de un nivel de abstracción alto, mientras que MDA se
enfoca en la separación clara de los modelos de la tecnología
subyacente, y la generación de modelos específicos de la tecnología en
diferentes niveles de abstracción.
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Diferencias entre MDD y MDA
Estándares: MDA es una iniciativa de la organización Object
Management Group (OMG) que define estándares y especificaciones
para el modelado, transformación y validación de modelos, mientras
que MDD no se basa en un conjunto específico de estándares.
Reutilización: MDA promueve la reutilización de modelos
independientes de la tecnología subyacente en diferentes aplicaciones,
mientras que MDD puede tener un enfoque más específico en la
generación de código fuente para una aplicación particular.
Mg. Enzo Castillo
Ventajas de utilizar 
MDD/MDA en el desarrollo 
de software
Aumento de la productividad: Al utilizar modelos para el diseño y
construcción de sistemas de software, los desarrolladores pueden
trabajar a un nivel más abstracto y con mayor rapidez, lo que aumenta la
productividad.
Reducción de errores: La generación de código fuente a partir de
modelos puede reducir significativamente el número de errores en el
software, ya que los modelos proporcionan una especificación más
precisa y menos ambigua del sistema.
Algunas de las principales ventajas que podemos recoger serian
Mg. Enzo Castillo
Ventajas de utilizar 
MDD/MDA en el desarrollo 
de software
Mejora de la calidad del software: Al estar basado en modelos, la
metodología de MDD/MDA puede aumentar la calidad del software, ya
que los modelos pueden ser validados y verificados antes de ser
transformados en código fuente.
Facilidad de mantenimiento: La separación clara entre los modelos y la
implementación en código fuente hace que los sistemas de software
sean más fáciles de entender, mantener y actualizar.
Algunas de las principales ventajas que podemos recoger serian
Mg. Enzo Castillo
Ventajas de utilizar 
MDD/MDA en el desarrollo 
de software
Reutilización de modelos: La metodología de MDD/MDA promueve la
reutilización de modelos en diferentes aplicaciones, lo que puede
aumentar la eficiencia y reducir los costos de desarrollo.
Adaptabilidad a diferentes plataformas y tecnologías: Al separar la
funcionalidad del sistema de su implementación en código fuente, los
modelos en MDA pueden ser transformados en diferentes plataformas y
tecnologías, lo que aumenta la adaptabilidad del sistema a diferentes
contextos de desarrollo.
Algunas de las principales ventajas que podemos recoger serian
Modelado de 
requerimientos
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Conceptos básicos de 
requerimientos
Los requerimientos son especificaciones de lo que un sistema de
software debe hacer o ser. En la ingeniería de software, los
requerimientos son la base para el diseño, desarrollo y prueba de un
sistema de software.
Mg. Enzo Castillo
Tipos de Requerimientos
Son los requerimientos que describen las funcionalidades del sistema de
software, es decir, lo que el sistema debe hacer. Los requerimientos
funcionales describen las acciones que el sistema debe realizar en
respuesta a ciertas entradas.
Ejemplos
Registro de usuarios: El sistema debe permitir a los usuarios registrarse proporcionando su nombre,
dirección de correo electrónico y contraseña. Una vez registrados, los usuarios deben ser capaces de
iniciar sesión en el sistema con su dirección de correo electrónico y contraseña.
Reserva de vuelos: El sistema debe permitir a los usuarios buscar y reservar vuelos. Los usuarios
deben ser capaces de especificar los detalles del vuelo, incluyendo la fecha, origen y destino. El
sistema debe mostrar los resultados de la búsqueda de vuelos disponibles y permitir a los usuarios
seleccionar el vuelo deseado y completar la reserva.
Requerimientos funcionales
Mg. Enzo Castillo
Tipos de Requerimientos
Son los requerimientos que describen características no relacionadas
directamente con las funcionalidades del sistema, sino con aspectos
como la calidad, la usabilidad, el rendimiento y la seguridad del sistema.
Ejemplos
Seguridad: El sistema debe cumplir con los estándares de seguridad de la empresa, incluyendo la
encriptación de los datos, la protección contra ataques externos y la autenticación de usuarios.
Además, el sistema debe ser capaz de recuperar datos de respaldo en caso de una falla del sistema.
Rendimiento: El sistema debe ser capaz de manejar una carga de trabajo máxima de 1000 usuarios
simultáneos sin sufrir pérdida de velocidad o respuesta. El tiempo de respuesta del sistema para una
solicitud de usuario no debe exceder de 3 segundos.
Requerimientos no funcionales
Mg. Enzo Castillo
Tipos de Requerimientos
Los requerimientos explícitos son aquellos que se han especificado de
manera explícita en la documentación del sistema, mientras que los
requerimientos implícitos se infieren a partir de las necesidades y
expectativas de los usuarios.
Requerimientos explícitos e implícitos
Mg. Enzo Castillo
Tipos de Requerimientos
Ejemplo.
Requerimiento explícito: El sistema debe mostrar un mensaje de
confirmación después de que el usuario haya realizado una acción. Este
requerimiento se especifica explícitamente en la documentación del
sistema.
Requerimiento implícito: El sistema debe ser fácil de usar. Este
requerimiento no está especificado explícitamente en la documentación
del sistema, pero se infiere a partir de las necesidades y expectativas de
los usuarios.
Requerimientos explícitos e implícitos
Mg. Enzo Castillo
Tipos de Requerimientos
Ejemplo.
Requerimiento explícito: El sistema debe ser capaz de procesar un
mínimo de 1000 solicitudes de usuario por minuto. Este requerimiento
se especifica explícitamente en la documentación del sistema.
Requerimiento implícito: El sistema debe ser rápido y eficiente. Este
requerimiento no está especificado explícitamente en la documentación
del sistema, pero se infiere a partir de las necesidades y expectativas de
los usuarios.
Requerimientos explícitos e implícitos
Mg. Enzo Castillo
Tipos de Requerimientos
Los requerimientos de usuario son los que describenlas necesidades y
expectativas de los usuarios del sistema, mientras que los
requerimientos de sistema son los que describen cómo el sistema debe
satisfacer esas necesidades y expectativas.
Requerimientos de usuario y de sistema
Mg. Enzo Castillo
Tipos de Requerimientos
Ejemplo
Requerimiento de usuario: El sistema debe permitir a los usuarios crear
y guardar una lista de reproducción de música personalizada. Este
requerimiento es una necesidad de los usuarios del sistema.
Requerimiento de sistema: El sistema debe ser capaz de almacenar y
recuperar la información de la lista de reproducción del usuario de
manera segura y eficiente. Este requerimiento es una especificación del
sistema para satisfacer las necesidades de los usuarios.
Requerimientos de usuario y de sistema
Mg. Enzo Castillo
Tipos de Requerimientos
Ejemplo
Requerimiento de usuario: El sistema debe permitir a los usuarios
agregar productos al carrito de compras y realizar pagos en línea. Este
requerimiento es una necesidad de los usuarios del sistema.
Requerimiento de sistema: El sistema debe ser capaz de procesar pagos
en línea de manera segura y confiable, utilizando una pasarela de pago
de terceros. Este requerimiento es una especificación del sistema para
satisfacer las necesidades de los usuarios.
Requerimientos de usuario y de sistema
Mg. Enzo Castillo
Tipos de Requerimientos
Los requerimientos de negocio son los que describen los objetivos y
necesidades de la organización o empresa que solicita el sistema,
mientras que los requerimientos de software son los que describen
cómo el sistema debe satisfacer esos objetivos y necesidades.
Requerimientos de negocio y de software
Mg. Enzo Castillo
Tipos de Requerimientos
Ejemplo
Requerimiento de negocio: La empresa necesita aumentar las ventas en
línea en un 20% durante el próximo trimestre. Este requerimiento es
una necesidad del negocio.
Requerimiento de software: El sistema debe incluir un sistema de
recomendación de productos personalizado para aumentar la tasa de
conversión de ventas en línea. Este requerimiento es una especificación
del software para satisfacer la necesidad de negocio de aumentar las
ventas en línea.
Requerimientos de negocio y de software
Mg. Enzo Castillo
Tipos de Requerimientos
Ejemplo
Requerimiento de negocio: La empresa necesita reducir los costos de
atención al cliente en un 30% durante el próximo año. Este
requerimiento es una necesidad del negocio.
Requerimiento de software: El sistema debe incluir una sección de
preguntas frecuentes (FAQ) y un sistema de chatbot para brindar
soporte al cliente automatizado. Este requerimiento es una
especificación del software para satisfacer la necesidad de negocio de
reducir los costos de atención al cliente.
Requerimientos de negocio y de software
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Técnicas de elicitación de 
requerimientos
Las técnicas de elicitación de requerimientos son métodos utilizados por
los ingenieros de software para recolectar información de los
stakeholders (partes interesadas) y usuarios finales de un sistema de
software, con el fin de identificar y comprender las necesidades,
expectativas y requerimientos del sistema.
Mg. Enzo Castillo
Técnicas de elicitación de 
requerimientos
Entrevistas
Mg. Enzo Castillo
Técnicas de elicitación de 
requerimientos
Los grupos de enfoque son una técnica de elicitación de requerimientos
que involucra reuniones con un grupo de stakeholders y usuarios finales
del sistema para discutir sus necesidades y requerimientos. Esta técnica
permite la discusión y el debate entre los participantes.
Grupos de enfoque (focus groups)
Mg. Enzo Castillo
Técnicas de elicitación de 
requerimientos
Los cuestionarios son una técnica de elicitación de requerimientos que
involucra la entrega de preguntas escritas a los stakeholders y usuarios
finales del sistema para que las respondan. Los cuestionarios pueden ser
enviados por correo electrónico o en línea.
Cuestionarios
Mg. Enzo Castillo
Técnicas de elicitación de 
requerimientos
La observación es una técnica de elicitación de requerimientos que
involucra la observación de los stakeholders y usuarios finales del
sistema mientras interactúan con el sistema o realizan sus tareas diarias.
Esta técnica puede ayudar a identificar las necesidades y requerimientos
del sistema que pueden no ser identificados mediante otros métodos.
Observación
Mg. Enzo Castillo
Técnicas de elicitación de 
requerimientos
El prototipado es una técnica de elicitación de requerimientos que
involucra la construcción de un modelo o prototipo del sistema para que
los stakeholders y usuarios finales puedan interactuar con él y
proporcionar comentarios y sugerencias.
Prototipado
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Análisis y especificación de 
requerimientos
El análisis y especificación de requerimientos es un proceso crítico en la
ingeniería de software que implica:
1. Identificación de los requerimientos del sistema
2. Análisis de los requerimientos del sistema
3. Documentación de los requerimientos del sistema
4. Validación de los requerimientos del sistema
Este proceso es esencial para garantizar que el sistema de software
cumpla con las necesidades y expectativas de los usuarios y
stakeholders, y para que los desarrolladores puedan diseñar, construir y
probar el sistema de software de manera efectiva.
Mg. Enzo Castillo
Análisis y especificación de 
requerimientos
El proceso de análisis y especificación de requerimientos generalmente
comienza con la identificación y el entendimiento de las necesidades y
requerimientos de los stakeholders del sistema, incluyendo a los
usuarios finales, la organización y otros interesados. Luego, se realizan
diversas técnicas de elicitación de requerimientos, como entrevistas,
cuestionarios, grupos de enfoque, observación y prototipado, para
recopilar información y requerimientos adicionales.
Identificación de los requerimientos del sistema
Mg. Enzo Castillo
Análisis y especificación de 
requerimientos
Una vez recopilados los requerimientos, se procede al análisis y
documentación detallada de cada requerimiento. Esto incluye identificar
los requerimientos funcionales y no funcionales, los requerimientos
explícitos e implícitos, y las relaciones y dependencias entre los
diferentes requerimientos. Es importante que los requerimientos sean
coherentes, completos, comprensibles y verificables.
Análisis de los requerimientos del sistema
Mg. Enzo Castillo
Análisis y especificación de 
requerimientos
La documentación es una parte crítica del proceso de análisis y
especificación de requerimientos. Una vez que se han identificado,
analizado y validado los requerimientos del sistema, es necesario
documentarlos de manera clara y completa para que los desarrolladores
puedan entenderlos y trabajar con ellos.
Existen diferentes formatos de documentación para los requerimientos,
que pueden incluir especificaciones detalladas de requerimientos, casos
de uso, diagramas de flujo, tablas de decisiones, entre otros. La elección
del formato de documentación dependerá de la complejidad del sistema
y de las necesidades específicas del proyecto.
Documentación de los requerimientos del sistema
Mg. Enzo CastilloAnálisis y especificación de 
requerimientos
Finalmente, los requerimientos deben ser validados para garantizar que
se cumplan las expectativas de los usuarios y los stakeholders del
sistema. Esto puede involucrar la revisión y aprobación de los
requerimientos por parte de los stakeholders y usuarios, así como la
realización de pruebas y verificaciones de los requerimientos para
asegurar que se hayan implementado de manera efectiva.
Validación de los requerimientos del sistema
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Modelado de requerimientos en 
lenguaje natural y en modelos
El modelado de requerimientos es un proceso importante en la
ingeniería de software que implica la creación de representaciones
formales de los requerimientos del sistema, para ayudar a los
desarrolladores a comprenderlos y trabajar con ellos de manera
efectiva.
Mg. Enzo Castillo
Modelado de requerimientos en 
lenguaje natural y en modelos
El modelado en lenguaje natural es una técnica de modelado de
requerimientos que implica la descripción detallada de los
requerimientos en un lenguaje natural. Esta técnica se basa en la
creación de documentos que describen los requerimientos de manera
clara y detallada.
Modelado en lenguaje natural
Mg. Enzo Castillo
Modelado de requerimientos en 
lenguaje natural y en modelos
Los documentos de requerimientos pueden incluir descripciones
narrativas de los requerimientos, listas de requerimientos y tablas de
especificaciones de requerimientos. Esta técnica es útil para describir
requerimientos de forma detallada y expresar el propósito y la lógica
detrás de los requerimientos de manera comprensible.
Modelado en lenguaje natural
Mg. Enzo Castillo
Modelado de requerimientos en 
lenguaje natural y en modelos
El modelado en modelos es una técnica de modelado de requerimientos
que implica la creación de representaciones formales de los
requerimientos utilizando modelos y diagramas. Esta técnica se basa en
el uso de herramientas de modelado de requerimientos, que permiten
la creación de modelos de requerimientos que son más precisos y
comprensibles.
Modelado en modelos
Mg. Enzo Castillo
Modelado de requerimientos en 
lenguaje natural y en modelos
Los modelos pueden incluir diagramas de casos de uso, diagramas de
flujo de datos, diagramas de actividad, diagramas de clases, entre otros.
Estos modelos permiten la visualización clara de los requerimientos y
sus relaciones, y proporcionan una representación más precisa y
detallada de los requerimientos que el modelado en lenguaje natural.
Modelado en modelos
Lenguajes de modelado
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
UML (Unified Modeling
Language)
Unified Modeling Language (UML) es un lenguaje de modelado visual
utilizado en la ingeniería de software para describir, visualizar,
especificar y documentar sistemas de software orientados a objetos.
UML es un lenguaje estandarizado y ampliamente utilizado, que se basa
en un conjunto de elementos gráficos para representar diferentes
aspectos del sistema. Es un lenguaje de modelado visual utilizado en la
ingeniería de software para describir, visualizar, especificar y
documentar sistemas de software orientados a objetos.
Mg. Enzo Castillo
UML (Unified Modeling
Language)
1. Diagrama de casos de uso: Representa los diferentes casos de uso del sistema y las interacciones
entre los usuarios y el sistema.
2. Diagrama de clases: Representa las clases y objetos del sistema, junto con sus atributos y
métodos.
3. Diagrama de objetos: Representa los objetos del sistema y sus relaciones, junto con los valores de
sus atributos.
4. Diagrama de secuencia: Representa las interacciones entre los objetos y los mensajes que se
intercambian.
5. Diagrama de actividades: Representa los procesos y flujos de trabajo del sistema, incluyendo las
tareas y las decisiones.
6. Diagrama de componentes: Representa los componentes del sistema y las dependencias entre
ellos.
7. Diagrama de despliegue: Representa la arquitectura del sistema y cómo se despliega en diferentes
entornos.
Tipos de diagramas UML
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
DSL (Domain-Specific
Language)
Domain-Specific Language (DSL) es un lenguaje de programación creado
para resolver problemas específicos dentro de un dominio o área de
aplicación particular. A diferencia de los lenguajes de programación
generales como C++, Java o Python, que están diseñados para
aplicaciones generales, los DSLs están diseñados para resolver
problemas en un dominio específico y pueden ser utilizados para definir
modelos, especificaciones y reglas específicas de un dominio en
particular.
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
Mg. Enzo Castillo
DSL (Domain-Specific
Language)
Un DSL está diseñado para proporcionar una representación concisa y
de fácil comprensión de un problema particular en un dominio
específico. Estos lenguajes pueden ser utilizados por expertos en el
dominio, así como por programadores, para expresar soluciones a
problemas complejos en un lenguaje más cercano al dominio en lugar
de tener que escribir código en un lenguaje de programación general.
Mg. Enzo Castillo
DSL (Domain-Specific
Language)
DSLs internos
Son lenguajes de programación integrados en un lenguaje de
programación de alto nivel
DSLs externos
Son lenguajes de programación independientes y específicos para un
dominio particular.
Tipos de DSL
Mg. Enzo Castillo
DSL (Domain-Specific
Language)
Los DSLs pueden ser utilizados en diferentes áreas de aplicación, como
por ejemplo:
1. Modelado de dominios complejos
2. Análisis de datos
3. Simulación y modelado de sistemas
4. Procesamiento de lenguaje natural
5. Desarrollo de videojuegos
áreas de aplicación
Mg. Enzo Castillo
Trabajo en Equipo
Identifica los diferentes tipos de requerimientos presentes en este
conjunto de requisitos presentes en el caso 1.
Resolver el caso 1
Mg. Enzo Castillo
Trabajo en Grupo
Resolver el caso 1
	Diapositiva 1
	Diapositiva 2: El Promedio Final de la asignatura se calcula de la siguiente forma
	Diapositiva 3: Que entiendes por Ingeniería de Software?
	Diapositiva 4
	Diapositiva 5: Logro de la Sesión
	Diapositiva 6: Introducción a la Ingeniería de Software basada en modelos 
	Diapositiva 7: ¿Qué es la MDD (Model-Driven Development)? 
	Diapositiva 8: ¿Qué es la MDD (Model-Driven Development)? 
	Diapositiva 9: ¿Qué es la MDD (Model-Driven Development)? 
	Diapositiva 10: ¿Qué es la MDA (Model-Driven Architecture)?
	Diapositiva 11: ¿Qué es la MDA (Model-DrivenArchitecture)?
	Diapositiva 12: ¿Qué es la MDA (Model-Driven Architecture)?
	Diapositiva 13: Diferencias entre MDD y MDA
	Diapositiva 14: Diferencias entre MDD y MDA
	Diapositiva 15: Diferencias entre MDD y MDA
	Diapositiva 16: Ventajas de utilizar MDD/MDA en el desarrollo de software
	Diapositiva 17: Ventajas de utilizar MDD/MDA en el desarrollo de software
	Diapositiva 18: Ventajas de utilizar MDD/MDA en el desarrollo de software
	Diapositiva 19: Modelado de requerimientos
	Diapositiva 20: Conceptos básicos de requerimientos 
	Diapositiva 21: Tipos de Requerimientos 
	Diapositiva 22: Tipos de Requerimientos 
	Diapositiva 23: Tipos de Requerimientos 
	Diapositiva 24: Tipos de Requerimientos 
	Diapositiva 25: Tipos de Requerimientos 
	Diapositiva 26: Tipos de Requerimientos 
	Diapositiva 27: Tipos de Requerimientos 
	Diapositiva 28: Tipos de Requerimientos 
	Diapositiva 29: Tipos de Requerimientos 
	Diapositiva 30: Tipos de Requerimientos 
	Diapositiva 31: Tipos de Requerimientos 
	Diapositiva 32: Técnicas de elicitación de requerimientos 
	Diapositiva 33: Técnicas de elicitación de requerimientos 
	Diapositiva 34: Técnicas de elicitación de requerimientos 
	Diapositiva 35: Técnicas de elicitación de requerimientos 
	Diapositiva 36: Técnicas de elicitación de requerimientos 
	Diapositiva 37: Técnicas de elicitación de requerimientos 
	Diapositiva 38: Análisis y especificación de requerimientos 
	Diapositiva 39: Análisis y especificación de requerimientos 
	Diapositiva 40: Análisis y especificación de requerimientos 
	Diapositiva 41: Análisis y especificación de requerimientos 
	Diapositiva 42: Análisis y especificación de requerimientos 
	Diapositiva 43: Modelado de requerimientos en lenguaje natural y en modelos 
	Diapositiva 44: Modelado de requerimientos en lenguaje natural y en modelos 
	Diapositiva 45: Modelado de requerimientos en lenguaje natural y en modelos 
	Diapositiva 46: Modelado de requerimientos en lenguaje natural y en modelos 
	Diapositiva 47: Modelado de requerimientos en lenguaje natural y en modelos 
	Diapositiva 48: Lenguajes de modelado
	Diapositiva 49: UML (Unified Modeling Language) 
	Diapositiva 50: UML (Unified Modeling Language) 
	Diapositiva 51: DSL (Domain-Specific Language) 
	Diapositiva 52: DSL (Domain-Specific Language) 
	Diapositiva 53: DSL (Domain-Specific Language) 
	Diapositiva 54: DSL (Domain-Specific Language) 
	Diapositiva 55: Trabajo en Equipo
	Diapositiva 56: Trabajo en Grupo Resolver el caso 1
	Diapositiva 57

Continuar navegando

Materiales relacionados

830 pag.
40-Compendio-de-Investigacion

ITESM

User badge image

Todo para Aprender

352 pag.
35-Compendio-de-Investigacion

ITESM

User badge image

Todo para Aprender