la prueba de software, los métodos formales y los computer languages
DESCRIPTION
A lo largo de la relativamente corta historia de la ingeniería de software se han desarrollado varios enfoques para elevar la calidad de productos de software. En esta sesión se abordarán dos de ellos, la prueba de software y los métodos formales: se mostrarán los alcances algorítmicos de la prueba de software y las estrategias heurísticas creadas para superarlos; se mostrará un ejemplo de un método formal, sus aplicaciones y alcances. Al comparar y vincular ambos enfoques confluiremos en el concepto de computer language, una de las formas con mayor valor agregado de empaquetar conocimiento y experiencia que puede ser útil para muchas organizaciones desarrolladoras de software. Pero como veremos, los computer languages son también un mecanismo que nos permite elevar la productividad y efectividad de la prueba de software. Semblanza del conferencista: Luis Vinicio León es Director General de e-Quallity, corporativo especializado en prueba de software. Luis Vinicio fue profesor-investigador en la universidad jesuita ITESO durante 15 años, que incluyeron una estancia doctoral en Alemania dedicada a la investigación de prueba de software. Es autor de varias publicaciones nacionales e internacionales, e invitado frecuente en eventos relacionados con la prueba de software. Desde e-Quallity, Luis Vinicio ha dirigido proyectos de mejora de procesos de prueba que han conducido a la certificación internacional de varias organizaciones, así como proyectos de investigación aplicada que han incrementado significativamente la competitividad de algunas empresas de prueba.TRANSCRIPT
![Page 1: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/1.jpg)
“…A testing company with comparable assessment results is hard to find in the world. Only companies in high-risk industries, e.g. pharmaceutics, defense and aviation, achieve higher scores”.
Martin PolPolteq, 2008
![Page 2: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/2.jpg)
Agenda 1. “Crisis del Software”
• Problemática y Soluciones planteadas
2. Prueba de Software • Definición y Alcances
3. Métodos formales • Planteamiento general y Ejemplo
4. Lenguajes de Computación • Clases y Tipos
5. La Utilidad de esto para tu empresa • Cuestionamientos
![Page 3: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/3.jpg)
1. Incremento en la demandaLegacy systems; embedded softwareCada vez más áreas de aplicación
2. Incremento en la complejidadSistemas de software+firmware+ hardware Tamaño
1.Crisis del Software: Problemática
![Page 4: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/4.jpg)
3. Exigencia en la calidadCritical systemsGlobalización y educación de los clientes
Crisis del Software: Problemática
![Page 5: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/5.jpg)
1. Incremento en la demandaHerramientas y capacitación para técnicos y no-técnicosRe-Uso de software
2. Incremento en la complejidadAmbientes de desarrollo (CASE Systems)Lenguajes de computaciónMetodologías
Crisis del Software: Soluciones
![Page 6: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/6.jpg)
3. Exigencia en la calidad Total Quality Management for software Mejora de procesos (CMMI,MoProSoft,etc.) Prueba de Software
Crisis del Software: Soluciones
![Page 7: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/7.jpg)
Inicialmente confundida con debugging y conceptualizada para ganar confianza.
Myers: el objetivo es detectar errores.
Una definición:
Proceso paralelo al de desarrollo para determinar si el producto alcanza el nivel de calidad acordado.
Con apoyo de herramientas (CAST) se ejercita el sistema a probar (SUT) aplicándole estímulos (TCs) diseñados con métodos ingenieriles para detectar insatisfacción de requerimientos.
2.Qué es la Prueba de Software?
![Page 8: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/8.jpg)
Modelo-V
![Page 9: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/9.jpg)
1.Establecer alcances, criterios de éxito y
entregables
2.Estimar del Esfuerzo del Prueba
3.Planear el Proyecto
4.Reproducir el contexto del SUT
5.Realizar las Pruebas 6. Obtener métricas y dar resultados 7. Administrar Anomalías
8.Cerrar
Proceso de Prueba (Nivel 1)
![Page 10: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/10.jpg)
e1
e2
e3
isóceles
equilátero
escaleno
no es triángulo
Cuántos Casos de Prueba? Cuántos recursos para probar?
Automatizados?
Un Ejemplo clásico
![Page 11: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/11.jpg)
Alcances prácticos:
Cantidad de posibilidades inmanejable [Trg]
La organización que desarrolla no debe probar
Barrera de la complejidad: la complejidad del software (y por lo tanto la de los errores) crece hasta los límites de nuestra habilidad para manipular esa complejidad
Alcances de la Prueba de Software
![Page 12: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/12.jpg)
Alcances teóricos: no-decidible (Hk), pero automatizable en algunos aspectos
semidecidibles
P
Testing NP
no-decidibles
Alcances de la Prueba de Software
![Page 13: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/13.jpg)
Con recursos y tiempo limitados,
detectar la mayor cantidad de defectos,
lo más nocivo posible,
lo antes posible
Objetivo de la Prueba de Software
![Page 14: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/14.jpg)
Calidad de Sw,
ISO 25000
y Medi-ción
Grande? Objetiva? Coexistencia?
![Page 15: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/15.jpg)
3. Exigencia en la calidad Total Quality Management for software Mejora de procesos (CMMI,MoProSoft,etc.) Prueba de Software Métodos Formales
Crisis del Software: Soluciones
![Page 16: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/16.jpg)
Requisitos formales
Diseño formal
Código fuente
verificacióntransformaciónverificacióntransformación
Lx
Ly
Lz
3.Métodos formales: Planteamiento
![Page 17: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/17.jpg)
N
N t | t1 N1
1 N 2 1 2
L3
L2
L1
Le
L0
Lg
LR
LL
Type Name Rules Examples .
Regular
Context sensitive
Decidable/ RecursivePhrase structure/
General
Context free
ai bj ck dm i,j,k,m independent
, || ||
ak bk2 cn dn-1
an bn cn
an bn an b2n
Regular Expressions
Syntax Graphs
None (it’s impossible)
LfFinite an bn , K1 n K2
ak bn cn d k
an bn, 0 n
(det)
ak bn ck dn
a
1st Order Pre-dicate Calculus
{M | L(M) Le }
L={}, LL3,2
n2
?
Recursively enumerable
Computer Lgs
Natural Lgs
Jerar-quía de Chomsky
![Page 18: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/18.jpg)
• “Demasiado matemáticos” y difíciles de aprender
• Con pocas herramientas que los soporten
• Limitados a pocos dominios de aplicación
Mitos y Aplicaciones
![Page 19: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/19.jpg)
Generación automática
de Parsers a partir de
Grafos de Sintaxis
Un Ejemplo
![Page 20: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/20.jpg)
Constitución de un Compilador
Analizador léxico(scanner)
Analizador sintáctico(parser)
Analizador semántico
Manejador de Errores
Generador de Código
Brincar caracteres
irrelevantes
Identificar cadenas
relevantes
Verificar orden correcto de cadenas
Validar significado
Ignorar errores
Generar código
token
lexema
![Page 21: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/21.jpg)
Diseño formal
Código fuente
verificacióntransformación
L2 = Grafos
de Sintaxis
L3 = Pseudo código
En este caso…
![Page 22: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/22.jpg)
N
N t | t1 N1
1 N 2 1 2
L3
L2
L1
Le
L0
Lg
LR
LL
Type Name Rules Examples .
Regular
Context sensitive
Decidable/ RecursivePhrase structure/
General
Context free
ai bj ck dm i,j,k,m independent
, || ||
ak bk2 cn dn-1
an bn cn
an bn an b2n
Regular Expressions
Syntax Graphs
None (it’s impossible)
LfFinite an bn , K1 n K2
ak bn cn d k
an bn, 0 n
(det)
ak bn ck dn
a
1st Order Pre-dicate Calculus
{M | L(M) Le }
L={}, LL3,2
n2
?
Recursively enumerable
Computer Lgs
Natural Lgs
LLJerar-quía de Chomsky
![Page 23: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/23.jpg)
• De Especificación• De Diseño• De Documentación• De Definición de Procesos • De Programación
La Torre de Babel de la
Computación?
4. Lenguajes de Computación
![Page 24: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/24.jpg)
t
NN
G1 Gn...
G1
Gn
G1
G2
... ...
a)
e)
d)
b)
c)
f)
G1
Nameg)
L2 : Grafos de Sintaxis
![Page 25: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/25.jpg)
Ejercicio
![Page 26: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/26.jpg)
t
NN
C ( ) =
) =
) =
C (
C (
;
if (token == t)
token = scan();
else
err_msg();
N();
G1C (Name
) = Name() {
C(G1)
};a)
b)
c)
g)
L3 : Pseudocódigo
![Page 27: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/27.jpg)
G1 Gn...C ( ) = { C(G1)
C ( ) = C(G1)
d)
f)
... C(Gn) }
C ( ) = G1
Gn
... ...
e)
...
default: err_msg();}
switch(token){
in first(Gn): C(Gn)
in first(G1): C(G1)
while(token in first(G2)){ C(G2)
C(G1) }
G1
G2
L3 : Pseudocódigo
![Page 28: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/28.jpg)
XPN () { SUM(); while tok in first({‘+’}) { if tok == ‘+’
tok = scan(); else err_msg(); SUM(); }}
El Programa generado
SUM() { FAC(); while tok in first(‘*’}) { if tok == ‘*’
tok = scan(); else err_msg(); FAC(); }}
![Page 29: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/29.jpg)
FACT () { suitch (tok) in first(Id): if tok == Id tok=scan();
else err_msg(); in first(Nr): if tok == Nr tok=scan();
else err_msg(); in first(‘(‘):{ if tok == ‘(’ tok=scan();
else err_msg(); XPN(); if tok == ‘)’ tok=scan();
else err_msg(); } default: err_msg();}
El Programa generado
![Page 30: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/30.jpg)
LIT número LOD variableSTO dirección JMP direcciónJMC direcciónOPN +|-|*|/|=||…
El Conjunto de Instrucciones
![Page 31: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/31.jpg)
LOD ALOD BLIT 3OPN /OPN +LIT 10OPN
JMZ L1LOD BLIT 1OPN +STO AJMP L2LIT 5STO B…A+B/310
( C)
L1:
L2:IF C A := B+1; ELSE B := 5; ...
En la otra Dirección: Patrones
![Page 32: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/32.jpg)
• Se decía que con FORTRAN se hacía “programación automática” • Se argüía que los programas en FORTRAN eran muy ineficientes
Al inicio…
• La generación de código era masiva, lo cual incrementaba significativamente la productividad • La generación de código era libre de errores, lo cual decrementaba la cantidad de defectos
Pero…
Antiguos detractores
![Page 33: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/33.jpg)
• Tienen sistematizado o formalizado (partes de) su proceso de desarrollo?
• Cuáles son sus patrones?
• Podríamos utilizarlos para ayudarles a generar código?
Preguntas clave
![Page 34: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/34.jpg)
• Compilers: Aho, Sethi, Ullman; Addison-Wesley
• Artículo “Software’s chronic Crisis”: http://www.di.ufpe.br/~java/graduacao/referencias/SciAmSept1994.html
• Formal Methods: hay una gran cantidad de información en el web; algunos links útiles son
http://www.fmeurope.org/
http://en.wikipedia.org/wiki/Formal_methods #Formal_methods_and_notations
Un poco de Bibliografía
![Page 35: La prueba de software, los métodos formales y los computer languages](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554fafcdb4c905ad218b51a8/html5/thumbnails/35.jpg)
“…A testing company with comparable assessment results is hard to find in the world. Only companies in high-risk industries, e.g. pharmaceutics, defense and aviation, achieve higher scores”.
Martin PolPolteq, 2008