Conceptos básicos de Ingeniería de Software - Cinvestav

Anuncio
Conceptos básicos de Ingeniería de Software
Dr. Eduardo A. R ODRÍGUEZ T ELLO
C INVESTAV-Tamaulipas
5 de septiembre del 2012
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
1 / 23
Objetivos
Objetivos
Definir la Ingeniería de Software y explicar su importancia
Discutir los conceptos de producto de software y proceso de
software
Introducir la noción de responsabilidad profesional
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
2 / 23
Ingeniería de Software
Ingeniería de Software
La economía de todos los países desarrollados es dependiente
del software
Actualmente cada vez mas sistemas son controlados por software
La Ingeniería de Software concierne a teorías, métodos y
herramientas para el desarrollo profesional de software
El gasto en la Ingeniería de Software, representa un alto
porcentaje del PIB de los países desarrollados
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
3 / 23
Conceptos básicos
Conceptos básicos
¿Qué es software?
¿Qué es la Ingeniería de Software?
¿Cuál es la diferencia entre Ingeniería de Software y Ciencias
Computacionales?
¿Cuál es la diferencia entre Ingeniería de Software e Ingeniería
de Sistemas?
¿Qué es un proceso de software?
¿Qué es un modelo de proceso de software?
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
4 / 23
Conceptos básicos
Conceptos básicos...
¿Cuáles son los costos de la Ingeniería de Software?
¿Qué son los métodos de Ingeniería de Software?
¿Qué es CASE?
¿Cuáles son los atributos del software de calidad?
¿Cuáles son los retos de la Ingeniería de Software?
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
5 / 23
Conceptos básicos
Software
¿Qué es 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
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
6 / 23
Conceptos básicos
Ing. de Software
¿Qué es la Ingeniería de Software?
Una disciplina de la Ingeniería que concierne a todos los aspectos
de la producción de software
Los Ingenieros de Software deben:
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
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
7 / 23
Conceptos básicos
Ing. de Software y Ciencias Computacionales
¿Cuál es la 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
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
8 / 23
Conceptos básicos
Ing. de Software e Ing. de Sistemas
¿Cuál es la 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.
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
9 / 23
Conceptos básicos
Proceso de software
¿Qué es un proceso de software?
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
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
10 / 23
Conceptos básicos
Modelo de proceso de software
¿Qué es un modelo de 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
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
11 / 23
Conceptos básicos
Modelo de proceso de software
¿Qué es un modelo de proceso de software?...
Modelo de Cascada
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
12 / 23
Conceptos básicos
Modelo de proceso de software
¿Qué es un modelo de proceso de software?...
Modelo de Desarrollo Iterativo
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
13 / 23
Conceptos básicos
Costos de la Ing. de Software
¿Cuáles son los costos de la Ingeniería de Software?
El costo total de un software esta dividido aproximadamente de la
siguiente forma:
60 % costos de desarrollo
40 % costos de pruebas
En el software a la medida los costos de evolución a menudo
exceden los costos de desarrollo
Los costos dependen del tipo de sistema que se desarrolla y de
los requerimientos del mismo tales como desempeño y
confiabilidad
La distribución de los costos depende del modelo de desarrollo
empleado
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
14 / 23
Conceptos básicos
Costos de la Ing. de Software
¿Cuáles son los costos de la Ingeniería de
Software?...
Distribución de costos por actividad
?
Imagen tomada de [Sommerville, 2006]
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
15 / 23
Conceptos básicos
Costos de la Ing. de Software
¿Cuáles son los costos de la Ingeniería de
Software?...
Costos de desarrollo
?
Imagen tomada de [Sommerville, 2006]
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
16 / 23
Conceptos básicos
Métodos de Ing. de Software
¿Qué son los métodos de Ingeniería de Software?
Enfoques estructurados para el desarrollo de software que
incluye:
Descripciones del modelo, descripciones de modelos gráficos que
deben ser producidos
Reglas, restricciones aplicadas a los modelos de sistemas
Recomendaciones, para realizar un diseño efectivo
Administración del proceso, que actividades deben realizarse y en
qué orden
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
17 / 23
Conceptos básicos
CASE
¿Qué es CASE?
CASE es 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
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
18 / 23
Conceptos básicos
Atributos del software
¿Cuáles son los atributos del 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
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
19 / 23
Conceptos básicos
Retos de la Ing. de Software
¿Cuáles son los 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
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
20 / 23
Responsabilidad ética y social
Responsabilidad ética y social
La Ingeniería de Software comprende responsabilidades que van
más allá de la simple aplicación de habilidades técnicas
Los ingenieros de Software deben actuar de manera honesta y
ética si desean ser respetados como profesionales
Una conducta ética es más que sólo respetar la ley
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
21 / 23
Responsabilidad ética y social
Responsabilidad profesional
Responsabilidad ética y social...
Responsabilidad profesional
Confidencialidad
Competencia
Derechos de propiedad intelectual
Mal uso de la computadora
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
22 / 23
Tarea
Para discusión en la próxima clase
Investigar y analizar el código de ética profesional de los
ingenieros de software desarrollado por ACM/IEEE (Software
Engineering Code of Ethics and Professional Practice)
Dr. Eduardo R ODRÍGUEZ T. (C INVESTAV)
Conceptos básicos
5 de septiembre del 2012
23 / 23
Descargar