Introducción a La Ingeniería de Software

31
Introducción a la Ingeniería de Software Lic. María Elena Chávez

description

Introducción a La Ingeniería de Software

Transcript of Introducción a La Ingeniería de Software

Introducción a la

Ingeniería de Software Lic. María Elena Chávez

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.

El software como producto

Á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

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.

Ingeniería de Sistema

enfoque multidisciplinario

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

Contexts of Professional Ethics

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.

Libros

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