Descarga la aplicación para disfrutar aún más
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
Compartir