Tecnológico Nacional de México Instituto Tecnológico de Cerro Azul Fundamentos De Ingeniería De Software Carrera Ing. Sistemas Computacionales Semestre 6to UNIDAD 1 Cd. Cerro Azul, Ver. 2022 Glosario Los conceptos básicos de la ingeniería del software La ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, y el estudio de estos enfoques, es decir, el estudio de las aplicaciones de la ingeniería al software. Integra matemáticas, ciencias de la computación y prácticas cuyos orígenes se encuentran en la ingeniería. Se citan las definiciones más reconocidas, formuladas por prestigiosos autores: Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978). Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976). La ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972). La ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación, y mantenimiento del software. Notaciones UML o LUM (Lenguaje Unificado de Modelado) Es un lenguaje de modelado muy reconocido y utilizado actualmente que se utiliza para describir o especificar métodos. También es aplicable en el desarrollo de software. Las siglas UML significan lenguaje unificado de modelado esto quiere decir que no pretende definir un modelo estándar de desarrollo, sino únicamente un lenguaje de modelado. Un lenguaje de modelado consta de vistas, elementos de modelo y un conjunto de reglas sintácticas, semánticas y pragmáticas que indican cómo utilizar los elementos. En esta materia nos encontramos con varios diagramas que se pueden usar tales como: casos de uso, de clases, componentes, despliegue, etc. BPMN (notación para el modelado de procesos de negocios) El objetivo de la notación para el modelado de procesos de negocios es proporcionar de una manera fácil de definir y analizar los procesos de negocios públicos y privados simulando un diagrama de flujo. La notación ha sido diseñada específicamente para coordinar la secuencia de los procesos y los mensajes que fluyen entre los participantes del mismo, con un conjunto de actividades relacionadas. Características básicas de los elementos de BPMN Objetos de flujo: eventos, actividades, rombos de control de flujo (gateways). Objetos de conexión: flujo de secuencia, flujo de mensaje, asociación. Swimlanes (carriles de piscina): pool, lane. Artefactos: objetos de datos, grupo, anotación. Diagrama de flujo de Datos (DFD) Un diagrama de flujo de datos permite representar el movimiento de datos a través de un sistema por medio de modelos que describen los flujos de datos, los procesos que transforman o cambian los datos, los destinos de datos y los almacenamientos de datos a la cual tiene acceso el sistema. Su inventor fue Larry Constantine, basado en el modelo de computación de Martin y Estrin: flujo gráfico de datos. Con los diagramas de flujo de datos determina la manera en que cualquier sistema puede desarrollarse, ayuda en la identificación de los datos de la transacción en el modelo de datos y proporciona al usuario una idea física de cómo resultarán los datos a última instancia. Conceptos Básicos Software: Programas de cómputo y su documentación asociada: requerimientos, modelos de diseño y manuales de usuario El software puede ser desarrollado para un cliente en particular o para un mercado general El software puede ser: Genérico: desarrollado para venderse a múltiples clientes (Excel, Word, etc.) A la medida: desarrollado bajo demanda del cliente a un desarrollador específico El software nuevo puede ser creado desarrollando nuevos programas, configurando sistemas de software genérico o reutilizando software existente Diferencia entre Ingeniería de Software y Ciencias Computacionales Las Ciencias Computacionales conciernen a la teoría y fundamentos de cualquier sistema de cómputo (hardware o software). La Ingeniería de software concierne los aspectos prácticos del desarrollo y puesta en marcha de productos útiles de software. La Ingeniería de Software aún está lejos de ser considerada una ciencia como los son la química o la física. Diferencia entre Ingeniería de Software e Ingeniería de Sistemas La Ingeniería de Sistemas concierne a todos los aspectos del desarrollo de sistemas basados en cómputo incluyendo hardware, software y la ingeniería de procesos. La Ingeniería de Software es una parte de este proceso que comprende el desarrollo de software, control, aplicaciones y bases de datos del sistema. Los ingenieros de software son los encargados de la especificación del sistema, del diseño de la arquitectura, la integración y la puesta en marcha. Proceso: Un conjunto estructurado de actividades cuya meta es el desarrollo o evolución de un software. Algunas actividades genéricas en todos los procesos de software son: Especificación, qué debe hacer el software y cuáles son sus especificaciones de desarrollo. Desarrollo, producción del sistema de software Validación, verificar que el software cumple con lo solicitado por el cliente. Evolución, cambiar/adaptar el software a las nuevas demandas. Estas actividades varían dependiendo de la organización y del tipo de sistema a desarrollarse Proceso de software: Representación formal y simplificada de un proceso de software, presentada desde una perspectiva específica. Ejemplos de perspectivas del proceso de software: Flujo de trabajo, secuencia de actividades. Flujo de datos, flujo de la información. Rol/acción, quién realiza qué. Modelos Genéricos: Cascada, separar en distintas fases de especificación y desarrollo. Desarrollo Iterativo, la especificación, desarrollo y validación están interrelacionados. Prototipado, un modelo sirve de prototipo para la construcción del sistema final. Basado en componentes, asume que partes del sistema ya existen y se enfoca a su integración. Proceso de software: Un conjunto estructurado de actividades cuya meta es el desarrollo o evolución de un software. Modelos de Software: Representación formal y simplificada de un proceso de software, presentada desde una perspectiva específica. Ejemplos de perspectivas del proceso de software: Flujo de trabajo, secuencia de actividades. Flujo de datos, flujo de la información. Rol/acción, quién realiza qué. CASE (Computer-Aided Software Engineering) Programas que son usados para dar soporte automatizado a las actividades del proceso de software: Análisis de requerimientos, modelado del sistema, pruebas y depuración (debugging) Las herramientas CASE son comúnmente usadas para dar soporte a los métodos de software Editores para la notación del método. Módulos de análisis que verifican que las reglas del método se cumplan. Generadores de reportes que facilitan la creación de la documentación del sistema. Generadores de código a partir del modelo del sistema Atributos de Software de Calidad El software debe proveer la funcionalidad y desempeño requeridos por el usuario y debe ser mantenible, confiable y aceptable. Mantenible, el software debe poder evolucionar para continuar cumpliendo con las especificaciones. Confiable, el software no debe causar daños físicos o económicos en el caso de que falle. Eficiente, el software no debe desperdiciar los recursos del sistema. Aceptable, el software debe ser aceptado por los usuarios para los que fue diseñado. Debe ser entendible, utilizable y compatible con otros sistemas. TERMINO CONCEPTO Ingeniería Arte y técnica de aplicar los conocimientos científicos a la invención, diseño, perfeccionamiento y manejo de nuevos procedimientos en la industria y otros campos de aplicación científicos. software Programas de cómputo y su documentación asociada: requerimientos, modelos de diseño y manuales de usuario El software puede ser desarrollado para un cliente en particular o para un mercado general Ingenieros de Software Adoptar un enfoque sistemático para llevar a cabo su trabajo Utilizar las herramientas y técnicas apropiadas para resolver el problema planteado, de acuerdo a las restricciones de desarrollo y a los recursos disponibles Enfoque sistemático Representa la secuencia lineal de acontecimientos. En el camino pueden aparecer “ramas”, pero siempre es una secuencia de pasos que necesitamos realizar. mantenimiento del software Es una actividad muy amplia que incluye la corrección de errores, mejoras de las capacidades, eliminación de funciones obsoletas y optimización. Debido a que el cambio es inevitable, se debe desarrollar mecanismos para la evaluación, controlar y hacer modificaciones. Lenguaje unificado de modelado esto quiere decir que no pretende definir un modelo estándar de desarrollo, sino únicamente un lenguaje de modelado. UML o LUM Proceso de software Representación formal y simplificada de un proceso de software, presentada desde una perspectiva específica. CASE Programas que son usados para dar soporte automatizado a las actividades del proceso de software: Ciencias Computacionales conciernen a la teoría y fundamentos de cualquier sistema de cómputo (hardware o software). Ingeniería de software Concierne los aspectos prácticos del desarrollo y puesta en marcha de productos útiles de software.