UNIVERSIDAD ESTATAL A DISTANCIA ESCUELA DE CIENCIAS EXACTAS Y NATURALES LICENCIATURAS EN INGENIERÍA INFORMÁTICA ADMINISTRACIÓN DE PROYECTOS TIC TAREA N° 1 Resumen I y II, diagrama de contexto y clasificación de requerimientos Curso: Ingeniería de Requerimientos Avanzada Grupo N°: 01 Tutor: Marvin Solano Campos Mairena Solórzano, Manuel José San José 24 de septiembre del 2018 III Cuatrimestre 2018 Contenido 1. INTRODUCCIÓN ................................................................................................................................ 3 2. RESUMEN COMPRENSIÓN DE REQUERIMIENTOS ........................................................................... 3 3. RESUMEN PRINCIPIOS DE DISEÑO ................................................................................................... 6 4. CASO SISTEMA DE COMERCIO ELECTRÓNICO .................................................................................. 9 5. 6. 4.1 Diagrama de contexto ............................................................................................................ 10 4.2 Clasificación de requerimientos ............................................................................................. 12 4.2.1 Requerimientos funcionales........................................................................................... 12 4.2.2 Requerimientos no funcionales ..................................................................................... 13 CONCLUSIONES Y RECOMENDACIONES ......................................................................................... 15 5.1 Conclusiones........................................................................................................................... 15 5.2 Recomendaciones .................................................................................................................. 16 BIBLIOGRAFÍA ................................................................................................................................. 17 1 Tablas Tabla 1 Modelo de diseño – Modelo de requerimientos …………………………… 8 Figuras Figura 1 Diagrama de contexto ………………………………………………………11 2 1. INTRODUCCIÓN El desarrollo de un proyecto de software es un proceso que consta de varias etapas o fases. Una vez que se toma la decisión de llevarlo a cabo, lo primero que se debe determinar es lo que debe hacer el software (requerimientos funcionales) y sus restricciones o características de funcionamiento (requerimientos no funcionales). Uno de los factores de éxito del proyecto es el grado de comprensión de los requerimientos de los usuarios y de los clientes por parte del equipo de desarrollo. La ingeniería de requerimientos es una disciplina que permite definir los requisitos del software que se va a desarrollar o modificar. En este trabajo se presenta el resumen del capítulo 5, Comprensión de los requerimientos, y del capítulo 8, Principios de Diseño, del libro Ingeniería de Software de Roger Pressman. Por esta razón, las definiciones y los conceptos a los que se hace referencia en este documento corresponden al autor mencionado. La sección cuatro de este trabajo contiene la solución del caso Sistema de Comercio Electrónico, para el cual se elabora a) el diagrama de contexto, en el que se identifican las entidades externas y los flujos principales de entrada y salida; y b) se clasifican los requerimientos funcionales y no funcionales de ese sistema. 2. RESUMEN COMPRENSIÓN DE REQUERIMIENTOS La ingeniería de requerimientos es el conjunto de tareas y técnicas que utilizan los analistas de sistemas, en conjunto con otros participantes (gerentes, clientes y 3 usuarios), para comprender y establecer los requerimientos de un proyecto de software. Para establecer los requerimientos del proyecto es necesario entender lo que desea el cliente, analizar las necesidades, evaluar la factibilidad, negociar una solución razonable, especificar la solución sin ambigüedades, validar la especificación y administrar los requerimientos a medida que se transforman en un sistema funcional. La ingeniería de requerimientos se realiza a través de las siguientes tareas: concepción, indagación, elaboración, negociación, especificación, validación y administración, las cuales se describen a continuación. Concepción En esta fase se establece el entendimiento básico del problema, y se identifican las personas afectadas (clientes, usuarios, etc.), la naturaleza de la solución que se desea, así como la eficacia de la comunicación y colaboración preliminares entre los interesados y el equipo de software. Indagación Se consulta al cliente, a los usuarios y a otras personas cuáles son los objetivos del sistema o del producto, cuáles son los beneficios esperados, cómo se ajusta el sistema o el producto a las necesidades del negocio y, cómo va a usarse en las operaciones cotidianas. Para obtener esta información, se deben considerar los siguientes problemas: Problemas de alcance (delimitación del problema), problemas de entendimiento y problemas de volatilidad de los requerimientos. Elaboración 4 Se refina la información obtenida en las fases anteriores. Se desarrolla un modelo refinado de los requerimientos para identificar distintos aspectos de la función del software, su comportamiento e información. Se describen los requerimientos por medio de técnicas tales como casos de uso, escenarios o historias de usuario, especificando la interacción entre los usuarios (primarios y secundarios) y el sistema, los datos y conjuntos de datos (clases) que forman parte del dominio del sistema y las funciones que este debe realizar (generación de informes, consultas, captura y procesamiento de datos). Negociación Se llega a un acuerdo con los usuarios y otros participantes sobre el alcance del producto, considerando las restricciones de tiempo y los recursos materiales y humanos disponibles. En esta fase los usuarios definen sus prioridades y se analizan y resuelven los conflictos entre los requerimientos y las necesidades de las áreas involucradas. Especificación La especificación consiste en elaborar un documento que contenga la descripción de los requerimientos identificados y acordados en las fases anteriores. Este documento puede incluir la especificación formal de los requerimientos (se puede usar una plantilla, por ejemplo, de casos de uso), diagramas o gráficos, un modelo matemático formal, un prototipo o cualquier combinación de las técnicas mencionadas. Este enfoque se utiliza, comúnmente, en sistemas grandes. 5 Si el sistema es pequeño, la especificación puede consistir en un conjunto de escenarios de uso. Validación En esta fase se realiza una revisión técnica de la especificación del sistema o producto, con el fin de comprobar aspectos tales como la completitud, correctitud, claridad y consistencia de los requerimientos, así como la aplicación de los estándares establecidos. El equipo de revisión está conformado por ingenieros de software, usuarios y otros participantes Administración La administración de los requerimientos es el conjunto de actividades que ayudan al equipo del proyecto a identificar, controlar y dar seguimiento a los requerimientos y, especialmente, a los cambios que se introducen durante el desarrollo del proyecto. 3. RESUMEN PRINCIPIOS DE DISEÑO El diseño de software es la etapa del desarrollo de software que se realiza al finalizar la etapa de análisis y modelado de los requerimientos, y precede a la etapa de construcción de la solución (construcción y prueba de código). El diseño es crucial para la calidad del software y para facilitar su implementación (codificación) y prueba. Cuando el diseño no se realiza o cuando este no es de buena calidad, se corre el riesgo de producir un software con errores importantes, difícil de probar y difícil de mantener. 6 El diseño del software se basa en el modelo de requerimientos, como se muestra a continuación: Tabla 1. Modelo de diseño – Modelo de requerimientos Modelo de diseño Modelo de requerimientos Diseño de datos o clases Elementos basados en clases Diseño de la arquitectura Elementos basados en clases Elementos orientados al flujo Diseño de la interfaz Elementos basados en el escenario Elementos orientados al flujo Elementos del comportamiento Diseño en el nivel de componentes Elementos basados en clases Elementos orientados al flujo Elementos del comportamiento Atributos de la calidad Cuando se realiza el diseño de un software se deben considerar los siguientes atributos para asegurar su calidad: • Funcionalidad: Conjunto de características y capacidades del programa. • Usabilidad: Facilidad de uso por parte de los usuarios. Incluye la estética de las interfaces con el usuario, la documentación y la consistencia. 7 • Confiabilidad: Es una medida de la frecuencia y gravedad de las fallas y la exactitud de los resultados. • Rendimiento: Se refiere al tiempo de respuesta y el uso de los recursos (eficiencia). • Mantenibilidad: Es la facilidad del software para realizar cambios y adaptaciones a nuevos requerimientos. Principos de diseño El diseño de software es un proceso iterativo que parte del modelo de requerimientos para construir el modelo de diseño, como se indica en la tabla número uno. Para elaborar un buen diseño, los ingenieros de software deben comprender y aplicar los siguientes principios, para lograr los objetivos del diseño. • Abstracción. Consiste en destacar los aspectos relevantes de un objeto o procedimiento y ocultar los detalles, por ejemplo, concentrarse en los aspectos funcionales de un componente en vez de su implementación. • Arquitectura: Consiste en la organización de los componentes de un programa o los módulos de un sistema, la forma en que interactúan y los datos que utilizan. • Patrones: Los patrones de diseño describen una estructura que resuelve un problema típico y que puede reutilizarse en la solución de un problema similar. • División de problemas: Consiste en dividir un problemas en partes (problemas más pequeños) con el fin de reducir el tiempo y esfuerzo requerido para su implementación. 8 • Modularidad: Es la producto de la división de problemas. Permite descomponer el software en varios componentes cuya interacción permite satisfacer uno o más requerimientos. • Ocultamiento de información: La información contenida en un módulo se oculta para hacerla inaccesible a otros módulos que interactúan con él. Es una manera de proteger el código y los datos manejados por cada módulo. • Independencia funcional: Permite diseñar módulos que resuelven una parte del problema y que proporcionan una interfaz para realizar sus operaciones, de tal manera que la modificación de un módulo no afecte el funcionamiento de los módulos que interactúan con él. • Refinamiento: Es un proceso que consiste en ir de lo general (alto nivel) a lo particular (bajo nivel), de forma gradual, en el proceso de diseño. • Rediseño: Es una técnica que consiste en simplificar el diseño de un componente sin cambiar su función o comportamiento. Se utiliza, por lo general, para mejorar la eficiencia, eliminar elementos innecesarios y construcciones inapropiadas, y reducir la duplicidad. 4. CASO SISTEMA DE COMERCIO ELECTRÓNICO En esta sección se presenta el diagrama de contexto del Sistema de Comercio Electrónico y la clasificación de sus requisitos en requerimientos funcionales y no funcionales. 9 4.1 Diagrama de contexto En el sistema de Comercio electrónico se identifican los siguientes elementos para la elaboración del diagrama de contexto: Entidades externas • Fabricantes y vendedores. • Clientes. • Las empresas que realizan los envíos de los productos adquiridos a los clientes. • Los emisores de tarjetas y otros medios de pago. • Servicio de correo electrónico. Flujos de datos • Información de fabricantes y vendedores. • Lista de artículos, existencias y precios. • Información de clientes. • Órdenes de compra (pedidos de los clientes). • Factura de compra. • Información de la compra: Nombre del cliente, dirección de envío, artículos adquiridos, fecha límite de entrega. • Ubicación de los productos enviados. • Confirmación de entrega al cliente. • Datos del pago. • Confirmación del pago. El diagrama de contexto se muestra en la siguiente página. 10 Figura 1. Diagrama de contexto Emisor tarjeta y medios de pago Confirmación del pago Datos del pago Datos cliente Pedido Fabricante y vendedores Clientes Lista productos Sistema Comercio Electrónico Orden de compra Ubicación de productos Confirmación entrega Factura de compra Ubicación de productos Información compra Correo Ubicación de productos Confirmación entrega Proveedor correo electrónico 11 Empresa envío 4.2 Clasificación de requerimientos En esta sección se presenta la clasificación de los requerimientos en funcionales y no funcionales del caso Sistema de comercio electrónico. 4.2.1 Requerimientos funcionales Los requerimientos funcionales del sistema de Comercio Electrónico son los siguientes: Catálogos Administración de vendedores o fabricantes. Administración de artículos. Administración de familias de artículos. Administración de clientes. Administración de medios de pago. Administración de emisores de tarjetas y medios de pago. Administración del inventario. Administración de usuarios. Página principal Productos seleccionados según rango de búsqueda. Lista de productos complementarios. Lista de productos suplementarios. Lista de productos más vendidos. Lista de productos en oferta. 12 Ventas Buscar artículos. Seleccionar artículos y carrito de compras. Pagar artículos. Control de entrega Consultar ruta de traslado y ubicación de artículos de un cliente. Consultar ruta de traslado y ubicación de artículos por orden de compra (pedido) Acceso a la aplicación Autenticación de usuarios y control de acceso. Control de accesos inválidos e inactivación de usuario. Recuperación de contraseña. 4.2.2 Requerimientos no funcionales Los requerimientos no funcionales del sistema de Comercio Electrónico son los siguientes: Características generales El sistema debe permitir el manejo de múltiples idiomas. El sistema debe permitir la visualización de ayuda en línea que facilite la operación y el uso en cada una de las ventanas. El sistema debe ser auditable. 13 El sistema deberá almacenar en todos sus procesos las pistas de auditoría pertinentes para determinar quién solicita, quién compra, quién vende, así como la trazabilidad de la ruta hasta la recepción del artículo por parte del cliente. Características técnicas El sistema debe ser estandarizado. El sistema debe presentar una interfaz gráfica y amigable. El sistema debe utilizar una base de datos relacional y debe estar centralizada. El sistema debe tener características de accesibilidad (Ej: para personas no videntes o personas mayores). El sistema se debe poder utilizar en computadoras personales y dispositivos móviles (teléfono, tabletas), y se debe poder utilizar, al menos, en los navegadores IE 11, Chrome y Mozilla). El sistema debe ser capaz de trabajar con más de cien mil artículos y trabajar con fabricantes, vendedores y clientes de cualquier país, a través de la red Internet. Características de seguridad El sistema debe incorporar las mejores prácticas con respecto a la seguridad e integridad de la información. Uso de captcha para la comprobación de un usuario humano. 14 El sistema debe contar con un mecanismo adicional de seguridad, configurable por el usuario, tal como reconocimiento facial, huella digital o tarjeta virtual. 5. CONCLUSIONES Y RECOMENDACIONES 5.1 Conclusiones La ingeniería de requerimientos es un proceso crítico para el desarrollo, adquisición o mantenimiento de software. Una vez que la organización da el visto bueno y obtiene los recursos para iniciar un proyecto de software, lo primero que se debe hacer es definir el alcance, identificar, analizar y validar los requisitos. Es decir, hay que definir lo que los clientes y usuarios necesitan para atender el problema identificado en la etapa inicial. Si se omiten los pasos para la definición y validación de los requisitos se corre el riesgo de no lograr los objetivos propuestos (el proyecto fracasa) y provocar pérdidas financieras, de imagen, de mercado, de incumplimiento, entre otras, para la organización. La administración de los requerimientos es esencial en todas las empresas, para controlar los cambios que se producen durante el desarrollo de software. Un proyecto que no controla los cambios adecuadamente incrementará sus costos, el tiempo de entrega y puede afectar la calidad del producto final. 15 El diseño del software es un proceso importante para lograr que el producto que se desarrolla tenga la calidad requerida por la organización, para satisfacer tanto los requerimientos funcionales y los no funcionales (eficiencia, seguridad, confiabilidad, usabilidad y mantenibilidad). El buen diseño es un factor importante para la reducción de costos de desarrollo y de mantenimiento del software. La aplicación de los principios de diseño, tales como modularidad, independencia funcional, división del problemas, entre otros, reducen la complejidad y facilitan la implementación y las pruebas. 5.2 Recomendaciones Las organizaciones, especialmente, las empresas que desarrollan software deben poner atención a las labores de análisis y diseño de sistemas, con el fin de reducir los costos de desarrollo, en particular el retrabajo causado por una pobre definición de requerimientos, la ausencia de diseño, o prácticas inadecuadas de diseño de software. Al planificar el desarrollo de software, se debe asignar el tiempo y los recursos apropiados a las etapas de análisis de requerimientos y diseño, para evitar errores y omisiones que impidan alcanzar los objetivos del proyecto o la calidad esperada del producto. Las organizaciones que desarrollan internamente o contratan el desarrollo de software deben asignar los recursos adecuados (usuarios con conocimiento del problema y tomadores de decisiones) al proyecto para garantiza la mejor definición posible de los requerimientos, con el fin de asegurar el éxito del proyecto. 16 Las actividades de ingeniería de requerimientos y diseño del sistema deben ser realizadas por analistas y arquitectos de software con experiencia. Sin embargo, la participación de analistas y arquitectos sin experiencia también se recomienda bajo la dirección y supervisión de analistas e ingenieros experimentados, para transferir el conocimiento. 6. BIBLIOGRAFÍA Pressman, R. (2010). Ingeniería del software. Un enfoque práctico (7ª ed.). México: McGraw Hill Educación. 17