¿Qué es la ingeniería de 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.
Retos de la ingeniería de software
Heterogeneidad
Desarrollar técnicas para construir software que pueda hacer frente a plataformas y ambientes de ejecución heterogéneos (diferentes tipos de Hw y Sw).
Tiempos de entrega
Desarrollar técnicas que permitan reducir los tiempos de entrega del software sin comprometer la calidad.
Confianza
Desarrollar técnicas que permitan que los usuarios confíen plenamente en el software.
Referencias:
Wikipedia
Cinestav
Descargar Documento:
[sociallocker]
[/sociallocker]
[…] ingeniería de software requiere llevar a cabo numerosas tareas agrupadas en etapas, al conjunto de estas etapas se le […]
[…] https://zimbronapps.com/educacion/sistemas-computacionales/ingenieria-de-software/conceptos-basicos/… […]