Introducción a La Ingeniería de Software
description
Transcript of Introducción a La Ingeniería de Software
Agenda
El software como producto
Evolución del software
La crisis del software
Fundamentos de la Ingeniería de Software
Capas de la Ingeniería de Software
Disciplinas relacionadas con la Ingeniería de
Software
Retos que enfrenta la Ingeniería de Software
Comportamiento ético del profesional en
Ingeniería de Software.
El software como producto
El producto software consiste en :
• programas desarrollados;
• la documentación asociada: estructura del sistema (requisitos, modelos, diseño, etc.) y manuales de usuario, y;
• archivos de configuración que se utilizan para ejecutar estos programas.
El producto software puede ser a medida o genéricos. Para un cliente en particular o para un mercado en general.
El software puede crearse mediante el desarrollo de nuevos programas, configurando software genérico o de reutilizando software existente.
Áreas de aplicación
Software de sistemas
Software de tiempo real
Software de gestión
Software de ingeniería y científicos
Software empotrado
Software de computadoras personales (PC)
Software basado en Web
Software de inteligencia artificial (IA)
Evolución del software
Etapa : 1950 – 1965
Esfuerzo en el desarrollo de Hardware
Carencia de métodos de desarrollo
Software a la medida con baja distribución
Etapa : 1965 – 1976
Masificación del software en empresas
Software de gran extensión
Inicio de las casas de software
Problemas de mantenimiento CRISIS DEL SOFTWARE
Etapa 3: 1976 – 1989
Hardware a bajo costo.
Popularización de los computadores personales.
Grandes inversiones en desarrollo de software.
Etapa 4: 1989 - …
Incremento de la demanda de software.
Se agudiza la crisis del software: mantenimiento.
Crisis del software
En 1968, en la primera conferencia sobre desarrollo de software patrocinada por el Comité de Ciencia de la OTAN celebrada en Alemania, se discute la denominada “crisis del software”. Enfoque INFORMAL.
Tiempo y presupuesto excedido.
El software no satisface los requisitos deseados.
Baja calidad del software.
Confiabilidad cuestionable.
Proyectos inmanejables, código difícil de mantener.
Altos requerimientos de personal para el desarrollo y mantenimiento.
Causas de la crisis
Experiencias
Fuente: Extreme Chaos. The Standish Group International. Inc. 2004 Research Reports.
Este gráfico muestra el resultado de 30,000 proyectos de desarrollo de aplicaciones en
empresas de todo tamaño en Estados Unidos medido por The Standish Group.
Caso de Estudio
Caso de Estudio: F-18 (1986)
En abril de 1986 un avión de combate F-18 se estrelló por culpa de un
giro descontrolado, atribuido a una expresión “if-then”, para la cual no
había una expresión “else”, por considerarse innecesaria, lo que originó
una excepción fuera de control del programa. Por suerte el piloto pudo
salir del avión a tiempo.
Caso de Estudio
Caso de estudio: Therac-25
Diseñado para tratamiento de pacientes por medio de rayos X. Entre
1985-1987 ocasionó la muerte de varios pacientes en hospitales de USA,
por culpa de radiaciones de alto poder aplicadas de manera incontrolada.
La probable causa era que para ciertas secuencias de comandos, los
controles de la computadora llevaban la máquina a un estado interno
erróneo y muy peligroso generando una sobredosis masiva de radiación
al paciente. No se hacían revisiones sobre prácticas de desarrollo de
software, ni control de calidad del software en dispositivos médicos.
¿Qué es la Ingeniería de software?
Ingeniería del 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.
(Fritz Bauer, 1968).
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 (IEEE, 1993).
¿Qué es la Ingeniería de software?
• La Ingeniería de Software es una disciplina de
la ingeniería que comprende todos los aspectos
de la producción de software de calidad.
• Involucra actividades como gestión de
proyectos de software, procesos técnicos de
desarrollo de software, métodos, herramientas
de apoyo.
• Los ingenieros de software deben adoptar un enfoque
sistemático, organizado y más efectivo para su trabajo y
utilizar las herramientas y técnicas adecuadas en función del
problema a resolver, limitaciones del desarrollo y recursos
disponibles.
Capas de la Ingeniería de Software
Un enfoque de calidad
Procesos
Métodos
Herramientas
Equipo de trabajo
Procesos de software
El proceso de software consiste de actividades involucradas en el desarrollo y mantenimiento de los productos software.
Las actividades básicas en todos los procesos software son:
• Especificación del software - ¿Qué debe hacer el sistema y las restricciones sobre su operación.
• Desarrollo – se diseña y programa.
• Validación – se verifica si el software reúne lo que quiere el cliente
• Evolución – se modifica para adaptarlo a cambios requeridos por el cliente y el mercado.
Métodos de ingeniería de software
Un método es un enfoque estructurado para el desarrollo de software cuyo propósito es facilitar la producción de software de alta calidad de una forma costeable.
COMPONENTES DEL MÉTODO:
• Descripciones del modelo del sistema
• Modelos de objetos, de flujo de datos, etc.
• Reglas
• Restricciones aplicadas a los modelos de sistemas;
• Recomendaciones
• Asesoramiento sobre buenas prácticas de diseño;
• Guías en el proceso
Ejemplos:
• Análisis Estructurado (70’s)
• Método Orientado a Objetos (90’s)
• Método Orientado a Aspectos
• Método Orientado a Modelos
Métodos de ingeniería de software
Modelo de proceso de software
Descripción simplificada de un proceso de software que
presenta una visión de ese proceso.
Ejemplos de modelos:
• Modelo de flujo de trabajo - secuencia de
actividades;
• Modelo de flujo de datos - flujo de información;
• Modelo rol / acción - quién hace qué.
Modelos genéricos de proceso de software:
• Enfoque en cascada;
• Desarrollo iterativo;
• Ingeniería de software basada en componentes.
Herramientas CASE (Computer-Aided Software Engineering)
Las herramientas CASE son sistemas de software que
están diseñados como soporte a las actividades de rutina
en el proceso del software, tales como análisis de
requisitos, modelado de sistemas, depuración y pruebas
de programa.
Proporcionar soporte automatizado a las actividades de
proceso de software. Se utilizan para apoyar al método.
Upper-CASE
• Herramientas para apoyar las actividades del proceso de
requisitos y diseño;
Lower-CASE
• Herramientas para apoyar las actividades de programación,
depuración y pruebas.
Disciplinas relacionadas con
Ingeniería de Software
Ciencia de la
computación
Ingeniería de
software
Ingeniería de
sistemas
Teorías,
fundamentos y
métodos de
computación.
Teorías y métodos
referentes a todos
los aspectos
prácticos de la
producción de
software de
calidad.
Los IS requieren
conocimientos de
ciencia de la
computación.
Comprende el
desarrollo de
hardware, políticas
y procesos de
diseño y
distribución de
sistemas, así como
la ingeniería de
software.
Código de ética
Organizaciones tales como ACM, IEEE y British Computer Society publican un código de conducta profesional y ética (1999).
Cuando se unen a estas organizaciones, los miembros deben firmar el código de buenas prácticas.
Contiene ocho principios: ▪ Sociedad ▪ Gestión
▪ Cliente y empleador ▪ Profesión
▪ Producto ▪ Colegas
▪ Juicio ▪ Personal
Comportamiento ético
del profesional en Ingeniería de Software
Deben aceptar que su trabajo comprende
responsabilidades más amplias que simplemente
la aplicación de habilidades técnicas.
Deben comportarse de manera honesta y
éticamente responsable, si van a ser respetados
como profesionales.
El comportamiento ético es más que simplemente
mantener la ley.
Responsabilidad profesional
Confidencialidad • Respetar la confidencialidad de sus empleadores o
clientes independientemente de que se haya firmado un acuerdo formal.
Competencia • No debe aceptar trabajos que estén fuera de su
competencia.
Propiedad intelectual • Consciente de las leyes locales (patentes, copyright)
y asegurar que esté protegida la propiedad intelectual de los empleadores y clientes.
Uso inapropiado de las computadoras • Juegos y difusión de virus.
Retos de la ingeniería de software
Heterogeneidad
• Desarrollo de técnicas para construir software
confiable que puede hacer frente a las plataformas
heterogéneas y entornos de ejecución;
Entrega
• Desarrollo de técnicas que dan lugar a una
entrega más rápida del software sin comprometer
la calidad del sistema;
Confianza
• Desarrollo de técnicas que demuestren que los
usuarios pueden confiar en el software.
Personajes
Dr. Ian Sommerville
Professor of Computer Science
St. Andrews University,
Scotland
Dr. Ivar Jacobsom
Creador del UML y el SEMAT
(Software Engineering Method
and Theory).
Dr. Watts Hamphrey
Padre de la Calidad del Software
Trabajó en SEI y ACM
Dr. Barry Boehm
Professor of Software
Engineering en California
Dr. Pressman specializes
in helping companies
establish effective
software engineering
practices.
Organizaciones
http://www.acm.org/
http://www.computer.org/portal/
web/guest/home Software Engineering at
ISO Software Systems
Organizaciones
http://www.sei.cmu.edu/
http://www.cmu.edu/index.shtml
http://www.semat.org/bin/view