Introducción a la Ingeniería de Software - Matemática, lógica y ...

77
Introducción a la Ingeniería de Software Matemática, lógica y diseño para el desarrollo de software Maximiliano Cristiá CIFASIS – UNR [email protected] Maximiliano Cristiá Introducción a la Ingeniería de Software

Transcript of Introducción a la Ingeniería de Software - Matemática, lógica y ...

Page 1: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a la Ingeniería de SoftwareMatemática, lógica y diseño para el desarrollo de software

Maximiliano Cristiá

CIFASIS – [email protected]

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 2: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Equipo docente

Maximiliano Cristiá – [email protected]

Andrés Krapf – [email protected]

Alejandro Sartorio – [email protected]

Sebastián Scandolo – [email protected]

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 3: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Recursos de la materia

Páginas web

Ingeniería de Software I: www.fceia.unr.edu.ar/asist

Ingeniería de Software II: www.fceia.unr.edu.ar/ingsoft

Apuntes, prácticas, bibliografía

Lista de correo: [email protected] con nombre y apellidoLa suscripción se hace en:http://listas.fceia.unr.edu.ar/cgi-bin/mailman/listinfo/ingsoft

Fotocopias en Alfa (?)

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 4: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Condiciones para cursar y rendir

Tener todas las materias correlativas aprobadas almomento de rendirEstar inscriptos en la mesa de examenSi no cumplen estas condiciones no pueden rendir

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 5: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Evaluaciones

Dos exámenes parciales y un recuperatorio

1er parcial evalúa Z (aprox. 29/4)2do parcial evalúa Statecharts y CSP (aprox. 27/5)Recuperatorio recupera un parcial (primera mesa dejulio-agosto)

Notas: 1-5 insuficiente, 6-7 aprobado, 8-10 promovidoPromoción dura hasta que la materia se vuelve a darExamen final

Promovidos en los dos parciales rinden TLA y Z/EVESPromovidos en un parcial rinden TLA y Z/EVES más lo queno promovieronRegulares (aprobados en los dos parciales) rinden prácticade toda la materiaLibres rinden práctica y teoría de toda la materia

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 6: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería deSoftware

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 7: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Qué es la Ingeniería de Software?

NATO – 1968Enfoque sistemático, disciplinado y cuantificable del desarrollo,operación y mantenimiento de software.

Parnas – 1978La construcción de múltiples versiones de un software llevadaa cabo por múltiples personas.

Ghezzi – 1991Construcción de software de una envergadura o complejidadtales que debe ser construido por equipos de ingenieros.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 8: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Qué es la Ingeniería de Software? (cont.)

Jackson – 1998La ingeniería tradicional es altamente especializada y se basaen colecciones de diseños estándar o normalizados. ¿Hayespecialidades en la Informática o cualquiera hace cualquiercosa? ¿Se basa la producción de software en diseñosestándar? ¿Puede?

Parnas – 1997

Reemplazar las renuncias de responsabilidad por garantías

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 9: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

En resumen...

La Ingeniería de Software es o debería ser:

Desarrollo de software de dimensión industrialDesarrollo sistemático, disciplinado y cuantificableDesarrollo de productos que tienen una vida muy largaDesarrollo en equipoEspecializaciónDiseños estándarProducir software garantizado

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 10: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Qué hace el ingeniero de software?

Máquinas de softwareNo construye el hardware, sino el comportamiento y laspropiedades que lo harán útil para algo específico.

Escribe descripcionesLa actividad central del desarrollo de software es ladescripción.Cualquier desarrollo de software requiere muchasdescripciones.

Verifica las descripciones

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 11: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Qué hace el ingeniero de software?

Máquinas de softwareNo construye el hardware, sino el comportamiento y laspropiedades que lo harán útil para algo específico.

Escribe descripcionesLa actividad central del desarrollo de software es ladescripción.Cualquier desarrollo de software requiere muchasdescripciones.

Verifica las descripciones

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 12: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Qué hace el ingeniero de software?

Máquinas de softwareNo construye el hardware, sino el comportamiento y laspropiedades que lo harán útil para algo específico.

Escribe descripcionesLa actividad central del desarrollo de software es ladescripción.Cualquier desarrollo de software requiere muchasdescripciones.

Verifica las descripciones

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 13: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

Las cuatro descripciones fundamentales

Requerimientos delusuario (R)

Única descripcióninformal

Diseño de la estructura delprograma (D)Especificación funcionaldel programa (S)Programa (P)

R

D S

Pve

rifica

r verifica r

documentardocumentar

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 14: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Por qué cuatro descripciones fundamentales?

25 líneas de

requerimientosdel usuario

250 líneas de especificación formal

2.500 líneas de diseño

25.000 líneas de código fuente

250.000 líneas de código máquina

2.500.000 de transistores

Situación actual Situación profesional

R

S

D

P

Porque con menos la tarea del desarrollador es muy riesgosa

Porque con menos aumentan los costos de producción

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 15: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Por qué cuatro descripciones fundamentales?

25 líneas de

requerimientosdel usuario

250 líneas de especificación formal

2.500 líneas de diseño

25.000 líneas de código fuente

250.000 líneas de código máquina

2.500.000 de transistores

Situación actual Situación profesional

R

S

D

P

Porque con menos la tarea del desarrollador es muy riesgosa

Porque con menos aumentan los costos de producción

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 16: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Por qué cuatro descripciones fundamentales?

25 líneas de

requerimientosdel usuario

250 líneas de especificación formal

2.500 líneas de diseño

25.000 líneas de código fuente

250.000 líneas de código máquina

2.500.000 de transistores

Situación actual Situación profesional

R

S

D

P

Porque con menos la tarea del desarrollador es muy riesgosa

Porque con menos aumentan los costos de producción

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 17: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Qué debe saber un ingeniero de software?

Dominar a fondo las técnicas de descripción

Esencialmente debe dominar los lenguajes formales

Etender qué hace que una descripción particular sirva ono para un propósito determinadoMoverse en distintos niveles de abstracciónDescribir modelos mediante lenguajes formalesVerificar propiedades de los modelos

Escribir modelos formales y abstractos del programa

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 18: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Qué debe saber un ingeniero de software?

Dominar a fondo las técnicas de descripción

Esencialmente debe dominar los lenguajes formales

Etender qué hace que una descripción particular sirva ono para un propósito determinadoMoverse en distintos niveles de abstracciónDescribir modelos mediante lenguajes formalesVerificar propiedades de los modelos

Escribir modelos formales y abstractos del programa

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 19: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Qué debe saber un ingeniero de software? (cont.)

Documentar y validar los requerimientos del usuario

Escribir un modelo abstracto semiformal del diseño

Escribir una especificación funcional abstracta y formal

Verificar que el programa satisface el diseño yla especificación funcional

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 20: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Qué debe saber un ingeniero de software? (cont.)

Documentar y validar los requerimientos del usuario

Escribir un modelo abstracto semiformal del diseño

Escribir una especificación funcional abstracta y formal

Verificar que el programa satisface el diseño yla especificación funcional

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 21: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Qué debe saber un ingeniero de software? (cont.)

Documentar y validar los requerimientos del usuario

Escribir un modelo abstracto semiformal del diseño

Escribir una especificación funcional abstracta y formal

Verificar que el programa satisface el diseño yla especificación funcional

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 22: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Qué debe saber un ingeniero de software? (cont.)

Documentar y validar los requerimientos del usuario

Escribir un modelo abstracto semiformal del diseño

Escribir una especificación funcional abstracta y formal

Verificar que el programa satisface el diseño yla especificación funcional

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 23: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

La Ingeniería de Software, ¿es ingeniería?

Sin garantía

Casi ningún programa se entrega con garantía. ¿Podemosdecir que el software es el resultado de una ingeniería cuandotodos los productos de otras ingenierías tienen garantía?

Sin diseños estándarExcepto en pocas excepciones, los desarrolladores desoftware tienden a inventar todo en cada proyecto. ¿Podemosdecir que el software es el resultado de una ingeniería cuandocasi todo se hace de cero casi siempre?

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 24: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

La Ingeniería de Software, ¿es ingeniería?

Sin garantía

Casi ningún programa se entrega con garantía. ¿Podemosdecir que el software es el resultado de una ingeniería cuandotodos los productos de otras ingenierías tienen garantía?

Sin diseños estándarExcepto en pocas excepciones, los desarrolladores desoftware tienden a inventar todo en cada proyecto. ¿Podemosdecir que el software es el resultado de una ingeniería cuandocasi todo se hace de cero casi siempre?

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 25: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es ingeniería? (I)

Aeropuerto de Denver en 1993 (EE.UU.)10 veces el tamaño de Heathrow (aeropuerto de Londres)Sistema subterráneo de traslado de equipaje: 4.000telecarros independientesSoftware para el control del sistema de carros (21 meses)La inauguración se debió postergar 3 vecesEl presupuesto era de USD 193MBAE Automated Systems reconoció que no podía predecirel momento en que lograría estabilizarloEn 2005 United decidió abandonar el sistema y ahorrarseUSD 1M por mes en mantenimiento

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 26: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es ingeniería? (II)

Satélite Clementine: proyecto conjunto entreDepartamento de Defensa (EE.UU.) y NASAParte del programa de defensa denominado Guerra de lasGalaxiasSatélite para selección de blancosPor un error en el software de control, en lugar de situar ala Luna en la mira, el sistema encendió los motoresdurante 11 minutos y agotó el combustible.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 27: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es ingeniería? (III)

Encuesta de IBM sobre sistemas distribuidos (aprox. 1994)55 % costó más de lo calculado68 % no cumplió los plazos88 % tuvo que re-diseñarse casi desde cero

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 28: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es ingeniería? (IV)

Ariane-5Hito en el proyecto espacial europeo; terminó en desastredebido a una falla en el software que controlaba el movimientovertical.

Therac-25 (radioterapia)Dispositivo médico de radioterapia para el tratamiento delcáncer. Se reemplazaron ciertos controles de hardware porsoftware. El software falló y causó la muerte de variaspersonas por sobredosis.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 29: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es ingeniería? (IV)

Ariane-5Hito en el proyecto espacial europeo; terminó en desastredebido a una falla en el software que controlaba el movimientovertical.

Therac-25 (radioterapia)Dispositivo médico de radioterapia para el tratamiento delcáncer. Se reemplazaron ciertos controles de hardware porsoftware. El software falló y causó la muerte de variaspersonas por sobredosis.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 30: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es ingeniería? (V)

FBIGastó 170 millones de dólares en el Virtual Case File paraluego abandonarlo completamente.

Administración Federal de Aviación (EE.UU.)Canceló un proyecto para actualizar los sistemas de controlaéreo cuando ya se habían gastado 2.600 millones de dólares.

FoxMayer Drug Co. (EE.UU.)

Se fundió luego de que su ERP que costó USD 40M mostrarainnumerables fallas.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 31: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es ingeniería? (V)

FBIGastó 170 millones de dólares en el Virtual Case File paraluego abandonarlo completamente.

Administración Federal de Aviación (EE.UU.)Canceló un proyecto para actualizar los sistemas de controlaéreo cuando ya se habían gastado 2.600 millones de dólares.

FoxMayer Drug Co. (EE.UU.)

Se fundió luego de que su ERP que costó USD 40M mostrarainnumerables fallas.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 32: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es ingeniería? (V)

FBIGastó 170 millones de dólares en el Virtual Case File paraluego abandonarlo completamente.

Administración Federal de Aviación (EE.UU.)Canceló un proyecto para actualizar los sistemas de controlaéreo cuando ya se habían gastado 2.600 millones de dólares.

FoxMayer Drug Co. (EE.UU.)

Se fundió luego de que su ERP que costó USD 40M mostrarainnumerables fallas.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 33: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es ingeniería? (VI)

Bank of AmericaEn la década del 80 perdió USD 80M y todo su negocio detrusts a raíz de la imposibilidad de terminar el sistema paraadministrarlos, conocido como MasterNet. Hasta ese momentoera considerado una de las empresas líderes en la adopción denuevas tecnologías.

Fracasos en proyectos grandes

Se calcula que entre el 15 % y el 20 % de los proyectos de másde USD 10M se cancelan antes de ser si quiera terminados.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 34: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es ingeniería? (VI)

Bank of AmericaEn la década del 80 perdió USD 80M y todo su negocio detrusts a raíz de la imposibilidad de terminar el sistema paraadministrarlos, conocido como MasterNet. Hasta ese momentoera considerado una de las empresas líderes en la adopción denuevas tecnologías.

Fracasos en proyectos grandes

Se calcula que entre el 15 % y el 20 % de los proyectos de másde USD 10M se cancelan antes de ser si quiera terminados.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 35: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (I)

Praxis (GB) utiliza notación Z y programa en SPARK:

CDIS: sistema de información de tráfico aéreoAutoridad de Certificación aprobada con ITSEC E6

Tokeneer ID StationLíneas de SPARK: 9.939 — Líneas de Z: 2.057Esfuerzo total: 260 díasProductividad (LOC por día): 38Productividad (LOC por día, implementación): 203Defectos encontrados desde la entrega: 2

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 36: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (I)

Praxis (GB) utiliza notación Z y programa en SPARK:

CDIS: sistema de información de tráfico aéreoAutoridad de Certificación aprobada con ITSEC E6

Tokeneer ID StationLíneas de SPARK: 9.939 — Líneas de Z: 2.057Esfuerzo total: 260 díasProductividad (LOC por día): 38Productividad (LOC por día, implementación): 203Defectos encontrados desde la entrega: 2

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 37: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (II)

Operaciones matemáticas del AMD-K7Demostración formal de la corrección funcional de lasoperaciones de multiplicación, división y raíz de punto flotantedel micro AMD-K7. Especificación formal en ACL2 y pruebaformal mediante el demostrador de ACL2.

MIL-STD 188-220Especificación formal en Estelle del protocolo de comunicación188-220 de las fuerzas armadas de EE.UU. Se generaroncasos de prueba automáticamente a partir de la especificaciónque incrementaron en un 200 % la cobertura.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 38: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (II)

Operaciones matemáticas del AMD-K7Demostración formal de la corrección funcional de lasoperaciones de multiplicación, división y raíz de punto flotantedel micro AMD-K7. Especificación formal en ACL2 y pruebaformal mediante el demostrador de ACL2.

MIL-STD 188-220Especificación formal en Estelle del protocolo de comunicación188-220 de las fuerzas armadas de EE.UU. Se generaroncasos de prueba automáticamente a partir de la especificaciónque incrementaron en un 200 % la cobertura.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 39: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (III)

Proyecto CICS de IBM:

Proyecto entre IBM GB y el Laboratorio de Computaciónde la Universidad de Oxford.El 30 % del sistema se especificó en Z y luego deimplementó normalmente.El 70 % restante se desarrolló normalmente.Por cada error en el 30 % especificado en Z seencontraron 10 en la otra parte.Ambas partes se terminaron proporcionalmente en elmismo tiempo.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 40: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (IV)

Línea 14 Meteor, sin conductor, del subterráneo de París:Software de control desarrollado por Alstom (Francia).Más de 110.000 líneas de código B.86.000 líneas de código Ada.

No se detectaron errores en las etapas posteriores a lademostración formal

No se han detectado errores desde que la línea entró enfuncionamiento en 1998

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 41: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (IV)

Línea 14 Meteor, sin conductor, del subterráneo de París:Software de control desarrollado por Alstom (Francia).Más de 110.000 líneas de código B.86.000 líneas de código Ada.

No se detectaron errores en las etapas posteriores a lademostración formal

No se han detectado errores desde que la línea entró enfuncionamiento en 1998

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 42: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (IV)

Línea 14 Meteor, sin conductor, del subterráneo de París:Software de control desarrollado por Alstom (Francia).Más de 110.000 líneas de código B.86.000 líneas de código Ada.

No se detectaron errores en las etapas posteriores a lademostración formal

No se han detectado errores desde que la línea entró enfuncionamiento en 1998

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 43: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (IV – cont.)

Software crítico para la industria ferroviariaEn la actualidad Alstom y Siemens (80 % del mercado desubterráneos) desarrollan sus software críticos con B.

Aeropuerto Charles de GaulleClearSy (Francia) ha utilizado B para desarrollar para Siemensel software de control del tren automático del AeropuertoCharles de Gaulle (150.000 líneas de código).

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 44: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (IV – cont.)

Software crítico para la industria ferroviariaEn la actualidad Alstom y Siemens (80 % del mercado desubterráneos) desarrollan sus software críticos con B.

Aeropuerto Charles de GaulleClearSy (Francia) ha utilizado B para desarrollar para Siemensel software de control del tren automático del AeropuertoCharles de Gaulle (150.000 líneas de código).

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 45: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (V)

Microsoft’s Protocol Documentation Program:

222 protocolos/documentos técnicos testeados.36.875 requerimientos testeables convertidos enespecificaciones de test.

69 % testeados mediante métodos formales.31 % testeado usando testing tradicional.

66.962 días-hombre (más de 250 años).Spec Explorer (gratis con Visual Studio Gallery).

Mejora del 42 % en la eficiencia de testing

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 46: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Es artesanía? (V)

Microsoft’s Protocol Documentation Program:

222 protocolos/documentos técnicos testeados.36.875 requerimientos testeables convertidos enespecificaciones de test.

69 % testeados mediante métodos formales.31 % testeado usando testing tradicional.

66.962 días-hombre (más de 250 años).Spec Explorer (gratis con Visual Studio Gallery).

Mejora del 42 % en la eficiencia de testing

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 47: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

Es más artesanía que ingeniería

HoySin embargo, a pesar de la aparente paridad entre casos deéxito y fracaso, globalmente en la actualidad, la producción desoftware es esencialmente una actividad artesanal.

El futuroEn la academia desde hace muchos años se conocenvarias técnicas que podrían transformar la producción desoftware en una ingeniería.Por diferentes razones la industria no las acepta.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 48: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

Es más artesanía que ingeniería

HoySin embargo, a pesar de la aparente paridad entre casos deéxito y fracaso, globalmente en la actualidad, la producción desoftware es esencialmente una actividad artesanal.

El futuroEn la academia desde hace muchos años se conocenvarias técnicas que podrían transformar la producción desoftware en una ingeniería.Por diferentes razones la industria no las acepta.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 49: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

¿Por qué la producción de software es así?

Posibles causas:1 No se atacan las dificultades esenciales de la producción

de software.2 Es una disciplina inmadura debido a su corta historia.3 Es esencialmente diferente a las otras ingenierías.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 50: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

Dificultades esenciales de la producción de software

¿Dónde están las dificultades?La parte difícil de construir software es especificarlo,diseñarlo y verificarlo, no la tarea de representarlo.Es decir, lo difícil es saber qué hay que hacer y cómodividirlo en pequeñas partes, no implementar esas partes.

La predicción de Brooks – 1986No existe un único desarrollo tecnológico, que por sí sólopueda prometer, dentro de una década, un avance si quiera deun orden de magnitud en productividad, confiabilidad osimplicidad.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 51: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

Dificultades esenciales de la producción de software

¿Dónde están las dificultades?La parte difícil de construir software es especificarlo,diseñarlo y verificarlo, no la tarea de representarlo.Es decir, lo difícil es saber qué hay que hacer y cómodividirlo en pequeñas partes, no implementar esas partes.

La predicción de Brooks – 1986No existe un único desarrollo tecnológico, que por sí sólopueda prometer, dentro de una década, un avance si quiera deun orden de magnitud en productividad, confiabilidad osimplicidad.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 52: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

Se viene atacando lo secundario

¡Basta de cambiar de lenguaje de programación!

Los lenguajes deprogramación o los IDEno atacan la esencia.

Se cumple lapredicción de Brooks:Java o .NET noprodujeron un avancede un orden demagnitud en diez años.

Costo de extracción de errores en función del tiempo de desarrollo

cost

o e x

trac

ció n

err

ores

tiempo de desarrollo

entregaR, D, S

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 53: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

Es inmadura... ¿debería serlo?

¿Electrónica? ¿Biotecnología? ¿Industria aeroespacial?

Falta de especialización.En la mayoría de los casos carece de diseñosnormalizados.Se habla siempre de construir sistemas y no de construirdispositivos.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 54: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Aspectos epistemológicos de la Ingeniería de Software

Es esencialmente diferente a las otras ingenierías

La ciencia (formal) que subyace a la Ingeniería deSoftware es la lógica formal.La ciencia (fáctica) que subyace a las ingenieríastradicionales es la física.Esto es una diferencia cualitativa esencial.En la mayoría de las otras ingenierías el ingeniero seconcentra en definir la solución.Los ingenieros de software deben concentrarse tambiénen definir el problema.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 55: Introducción a la Ingeniería de Software - Matemática, lógica y ...

El proceso de desarrollo del software

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 56: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Proceso de desarrollo del software

Proceso de desarrollo

DefiniciónEl proceso que se sigue para construir, entregar y hacerevolucionar el software, desde la concepción de una idea hastala entrega y el retiro del sistema.

Sinónimos:

Ciclo de vida del desarrollo de softwareCiclo de vida del softwareProceso de software

Propiedades: confiable, predecible y eficienteISO 12207Proceso de desarrollo vs. modelo de proceso de desarrollo

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 57: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Proceso de desarrollo del software

Ordenar el proceso de desarrollo

Dividir y ordenarDividir una tarea compleja en etapas manejablesDeterminar el orden de las etapasCriterio de transición para pasar a la siguiente etapa

Criterio para determinar la finalización de cada etapaCriterio para comenzar y elegir la siguiente

¿Qué debemos hacer a continuación?

¿Por cuánto tiempo debemos hacerlo?

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 58: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Proceso de desarrollo del software

Algunos modelos de desarrollo

Existen varios modelos de desarrolloCada uno tiene sus ventajas y desventajasCada equipo debe seleccionar el que más le sirvaCombinarlos puede ser una buena opciónLos más comunes son:

Modelo de cascadaModelo de espiralDesarrollo iterativo e incrementalDesarrollo ágilModelo de transformaciones formales

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 59: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Proceso de desarrollo del software

Modelo de cascada

Primera versión

Flujo secuencial entre las etapas

Cada etapa tiene una entrada yuna salida

Para comenzar con una etapadeben haber finalizado lasanteriores

Versión actual

Es posible volver a las etapasanteriores

No es necesario haberterminado con las anteriores

La verificación no se hace soloal final

Estudio de factibilidad

Estudio de factibilidad

Ingeniería derequerimientos (R)

Ingeniería derequerimientos (R)

Implementación(P)

Implementación(P)

Entrega ymantenimiento

Entrega ymantenimiento

VerificaciónVerificación

PrototipaciónPrototipación

Modelo Funcional(S)

Modelo Funcional(S)

Modelo Estructural(D)

Modelo Estructural(D)

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 60: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Proceso de desarrollo del software

Modelo de transformaciones formales

S se transforma progresivamente enun modelo menos abstracto

– abstracto = + concreto = + refinado

Cada refi es una transformaciónformal que devuelve un modelo másconcreto

P ⇒ Sn−1 ⇒ · · · ⇒ S1 ⇒ S

La transformación final devuelve P

De esta forma P es correcto porconstrucción

RR

DDSS

S1 = ref

1(S)S

1 = ref

1(S)

P = refn(S

n-1)

Sn-1

= refn-1

(Sn-2

)Sn-1

= refn-1

(Sn-2

)

······

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 61: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Proceso de desarrollo del software

Desarrollo ágil

Se basa en desarrollo iterativo e incrementalDescompone las tareas en pequeños incrementos conmínima planificaciónLas iteraciones duran entre 2 y 4 semanasEn cada iteración un equipo realiza R, D, P y verificaciónpara implementar un incrementoEl sistema resultante se muestra al clienteComunicación cara a cara más que documentos técnicosEl equipo incluye a un representante del clienteSoftware que funciona es la medida de progresoTécnicas que se usan: xUnit, pair programming, test drivendevelopment, patrones de diseño, etc.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 62: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 63: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Métodos formales

Lenguajes, técnicas y herramientas basadas enmatemática y/o lógica para describir y verificar sistemasde softwareComprenden:

Lenguajes de especificación formalVerificación de modelos (model checking)Prueba de teoremasTesting basado en modelosCálculo de refinamiento

Varios estándares internacionales exigen el uso demétodos formales: RTCA DO-178B, IEC SCAISRS, ESASES, etc.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 64: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Lenguajes de especificación formal

Una sintaxis formal y estandarizadaUna semántica formal descripta en términos operativos,denotacionales o lógicosUn aparato deductivo, también formal, que permitemanipular los elementos del lenguaje según su sintaxispara demostrar teoremas.

Especificación funcional (S)Los lenguajes de especificación formal se usan casi siemprepara escribir la especificación funcional de un programa.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 65: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Lenguajes de especificación formal

Una sintaxis formal y estandarizadaUna semántica formal descripta en términos operativos,denotacionales o lógicosUn aparato deductivo, también formal, que permitemanipular los elementos del lenguaje según su sintaxispara demostrar teoremas.

Especificación funcional (S)Los lenguajes de especificación formal se usan casi siemprepara escribir la especificación funcional de un programa.

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 66: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Ejemplo 1: Z – lógica y teoría de conjuntos

[NCTA] SALDO == N

Bancocajas : NCTA 7→ SALDO

DepositarOk∆Banconum? : NCTAmonto? : Z

num? ∈ dom cajasmonto? > 0cajas′ = cajas ⊕ {num? 7→ cajas num? + monto?}

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 67: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Ejemplo 2: Statecharts – máquinas de estado

S1

< tdE

XSens.1/Peligro

D

F

timeout

ZSens.1 /Peligro G

ZSens.1 /Peligro

YSens.1

S

C [in 1,3] / Pasar

[in 2,4,5]

C[in 1,3] /Pasar

[in 2,4,5]

< tyH S

timeout

S2

< td2

XSens.2/Peligro

1

3

timeout

ZSens.2 /Peligro 4

ZSens.2 /Peligro

YSens.2

S

C [in D,F] / Pasar

[in E,G,H]

C[in D,F] /Pasar

[in E,G,H]

< ty5 S

timeout

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 68: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Ejemplo 2: CSP – álgebra de procesos

BUFFER = long?n + 1→ B(n + 1, 〈〉)

B(m + 1, 〈〉) = left?n : N→ B(m, 〈n〉)

B(m + 1,s a 〈y〉) =

left?n : N→ B(m, 〈n〉a s a 〈y〉)| right !y → B(m + 2, s)

B(0, s a 〈y〉) = right !y → B(1, s)

SYSTEM = PRODUCER ‖ BUFFER ‖ CONSUMER

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 69: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Especificación funcional (S)

¿Qué tiene que hacer el programa?S es abstracta, no se puede ejecutarS es un modelo del programaDe una u otra forma S es una fórmula de lógicaS es independiente del lenguaje de programaciónLos programadores tienen que leer S para escribir PMás o menos: P ⇒ S

P también, de una u otra forma, es una fórmula de lógica

S es el criterio de corrección para P

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 70: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Especificación funcional (S)

¿Qué tiene que hacer el programa?S es abstracta, no se puede ejecutarS es un modelo del programaDe una u otra forma S es una fórmula de lógicaS es independiente del lenguaje de programaciónLos programadores tienen que leer S para escribir PMás o menos: P ⇒ S

P también, de una u otra forma, es una fórmula de lógica

S es el criterio de corrección para P

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 71: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Aprenda a escribir S

Trate de NO pensar como un programador

S no es un programa: no hay asignaciones, no hay bucles,no hay referencias, no hay métodosHay igualdades, eventos, estados, variables, conjuntos,funciones matemáticas

Trate de NO pensar computacionalmente

S no se hace para una computadoraS es como una ecuación de física:

F = m ∗ a

No se asigna m ∗ a a F ; m no es un int ni un float.

Describa sólo los fenómenos esenciales de la interfazentre el entorno y el sistema

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 72: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Aprenda a escribir S

Trate de NO pensar como un programador

S no es un programa: no hay asignaciones, no hay bucles,no hay referencias, no hay métodosHay igualdades, eventos, estados, variables, conjuntos,funciones matemáticas

Trate de NO pensar computacionalmente

S no se hace para una computadoraS es como una ecuación de física:

F = m ∗ a

No se asigna m ∗ a a F ; m no es un int ni un float.

Describa sólo los fenómenos esenciales de la interfazentre el entorno y el sistema

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 73: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Introducción a los métodos formales

Aprenda a escribir S

Trate de NO pensar como un programador

S no es un programa: no hay asignaciones, no hay bucles,no hay referencias, no hay métodosHay igualdades, eventos, estados, variables, conjuntos,funciones matemáticas

Trate de NO pensar computacionalmente

S no se hace para una computadoraS es como una ecuación de física:

F = m ∗ a

No se asigna m ∗ a a F ; m no es un int ni un float.

Describa sólo los fenómenos esenciales de la interfazentre el entorno y el sistema

Maximiliano Cristiá Introducción a la Ingeniería de Software

Page 74: Introducción a la Ingeniería de Software - Matemática, lógica y ...

High-quality software is not expensive. High-qualitysoftware is faster and cheaper to build and maintainthan low-quality software, from initial development allthe way through total cost of ownership.

Capers Jones

El software de alta calidad no es costoso. El software de alta calidad es másrápido y más barato de construir y mantener que el software de mala calidad,incluso teniendo en cuenta el desarrollo inicial y el costo total de propiedad.

Page 75: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Bibliografía

J.-R. Abrial.The B-book: Assigning Programs to Meanings.Cambridge University Press, New York, NY, USA, 1996.

Brian Berenbach, Daniel Paulish, Juergen Kazmeier, and Arnold Rudorfer.Software & Systems Requirements Engineering: In Practice.McGraw-Hill, Inc., New York, NY, USA, 2009.

Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, andMichael Stad.Pattern-Oriented Software Architecture — A System of Patterns.John Wiley Press, 1996.

Paul Clements, David Garlan, Len Bass, Judith Stafford, Robert Nord,James Ivers, and Reed Little.Documenting Software Architectures: Views and Beyond.Pearson Education, 2002.

Page 76: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Bibliografía (cont.)

Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides.Patrones de diseño.Addison Wesley, 2003.

Carlo Ghezzi, Mehdi Jazayeri, and Dino Mandrioli.Fundamentals of software engineering (2. ed.).Prentice Hall, 2003.

David Harel.Statecharts: A visual formalism for complex systems.Sci. Comput. Program., 8:231–274, June 1987.

Michael Huth and Mark Ryan.Logic in Computer Science: Modelling and Reasoning about Systems.Cambridge University Press, New York, NY, USA, 2004.

Page 77: Introducción a la Ingeniería de Software - Matemática, lógica y ...

Bibliografía (cont.)

Michael Jackson.Software requirements & specifications: a lexicon of practice, principles andprejudices.ACM Press/Addison-Wesley Publishing Co., New York, NY, USA, 1995.

D. L. Parnas.On the criteria to be used in decomposing systems into modules.Commun. ACM, 15:1053–1058, December 1972.

B. Potter, D. Till, and J. Sinclair.An introduction to formal specification and Z.Prentice Hall PTR Upper Saddle River, NJ, USA, 1996.

A. W. Roscoe.The Theory and Practice of Concurrency.Prentice Hall PTR, Upper Saddle River, NJ, USA, 1997.