“…A testing company with comparable assessment results is hard to
find in the world. Only companies in high-risk industrie...
Agenda
1. “Crisis del Software”
• Problemática y Soluciones planteadas
2. Prueba de Software
• Definición y Alcances
3. Mé...
1. Incremento en la demanda
Legacy systems; embedded software
Cada vez más áreas de aplicación
2. Incremento en la compl...
3. Exigencia en la calidad
Critical systems
Globalización y educación de los clientes
Crisis del Software: Problemática
1. Incremento en la demanda
Herramientas y capacitación para
técnicos y no-técnicos
Re-Uso de software
2. Incremento en ...
3. Exigencia en la calidad
 Total Quality Management for software
 Mejora de procesos (CMMI,MoProSoft,etc.)
 Prueba de ...
Inicialmente confundida con debugging y
conceptualizada para ganar confianza.
Myers: el objetivo es detectar errores.
Una ...
Modelo-V
1.Establecer alcances,
criterios de éxito y
entregables
2.Estimar del Esfuerzo del
Prueba
3.Planear el Proyecto
4.Reproduc...
e1
e2
e3
isóceles
equilátero
escaleno
no es triángulo
Cuántos Casos de Prueba?
Cuántos recursos para probar?
Automatizados...
Alcances prácticos:
 Cantidad de posibilidades inmanejable [Trg]
 La organización que desarrolla no debe
probar
 Barrer...
Alcances teóricos: no-decidible (Hk),
pero automatizable en algunos aspectos
semidecidibles
P
Testing
NP
no-decidibles
Alc...
Con recursos y tiempo limitados,
detectar
la mayor cantidad de defectos,
lo más nocivo posible,
lo antes posible
Objetivo ...
Calidad
de Sw,
ISO
25000
y
Medi-
ción
Grande? Objetiva? Coexistencia?
3. Exigencia en la calidad
 Total Quality Management for software
 Mejora de procesos (CMMI,MoProSoft,etc.)
 Prueba de ...
Requisitos
formales
Diseño
formal
Código
fuente
Lx
Ly
Lz
3.Métodos formales: Planteamiento
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...
• “Demasiado matemáticos” y difíciles
de aprender
• Con pocas herramientas que los
soporten
• Limitados a pocos dominios d...
Generación automática
de Parsers a partir de
Grafos de Sintaxis
Un Ejemplo
Constitución de un Compilador
Analizador léxico
(scanner)
Analizador sintáctico
(parser)
Analizador
semántico
Manejador
de...
Diseño
formal
Código
fuente
L2 =
Grafos
de
Sintaxis
L3 =
Pseudo
código
En este caso…
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...
• De Especificación
• De Diseño
• De Documentación
• De Definición de
Procesos
• De Programación
La Torre de
Babel de la
C...
t
NN
G1 Gn
...
G1
Gn
G1
G2
... ...
a)
e)
d)
b)
c)
f)
G1
Name
g)
L2 : Grafos de Sintaxis
Ejercicio
t
NN
C ( ) =
) =
) =
C (
C (
;
if (token == t)
token = scan();
else
err_msg();
N();
G1C (
Name
) = Name() {
C(G1)
};
a)
b)...
G1 Gn
...C ( ) = { C(G1)
C ( ) = C(G1)
d)
f)
...
C(Gn) }
C ( ) =G1
Gn
... ...
e)
...
default: err_msg();}
switch(token){
i...
XPN () {
SUM();
while tok in first({‘+’}) {
if tok == ‘+’
tok = scan();
else err_msg();
SUM();
}
}
El Programa generado
SU...
FACT () {
suitch (tok)
in first(Id): if tok == Id tok=scan();
else err_msg();
in first(Nr): if tok == Nr tok=scan();
else ...
LIT número
LOD variable
STO dirección
JMP dirección
JMC dirección
OPN +|-|*|/|=||…
El Conjunto de Instrucciones
LOD A
LOD B
LIT 3
OPN /
OPN +
LIT 10
OPN 
JMZ L1
LOD B
LIT 1
OPN +
STO A
JMP L2
LIT 5
STO B
…A+B/310
( C)
L1:
L2:
IF ...
• Se decía que con FORTRAN se hacía
“programación automática”
• Se argüía que los programas en FORTRAN
eran muy ineficient...
• Tienen sistematizado o formalizado
(partes de) su proceso de desarrollo?
• Cuáles son sus patrones?
• Podríamos utilizar...
• Compilers: Aho, Sethi, Ullman;
Addison-Wesley
• Artículo “Software’s chronic Crisis”:
http://www.di.ufpe.br/~java/gradua...
“…A testing company with comparable assessment results is hard to
find in the world. Only companies in high-risk industrie...
Upcoming SlideShare
Loading in...5
×

La prueba de software, los métodos formales y los computer languages

201

Published on

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.

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
201
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

La prueba de software, los métodos formales y los computer languages

  1. 1. “…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 Pol Polteq, 2008
  2. 2. 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
  3. 3. 1. Incremento en la demanda Legacy systems; embedded software Cada vez más áreas de aplicación 2. Incremento en la complejidad Sistemas de software+firmware+ hardware Tamaño 1.Crisis del Software: Problemática
  4. 4. 3. Exigencia en la calidad Critical systems Globalización y educación de los clientes Crisis del Software: Problemática
  5. 5. 1. Incremento en la demanda Herramientas y capacitación para técnicos y no-técnicos Re-Uso de software 2. Incremento en la complejidad Ambientes de desarrollo (CASE Systems) Lenguajes de computación Metodologías Crisis del Software: Soluciones
  6. 6. 3. Exigencia en la calidad  Total Quality Management for software  Mejora de procesos (CMMI,MoProSoft,etc.)  Prueba de Software Crisis del Software: Soluciones
  7. 7. 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?
  8. 8. Modelo-V
  9. 9. 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)
  10. 10. 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
  11. 11. 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
  12. 12. Alcances teóricos: no-decidible (Hk), pero automatizable en algunos aspectos semidecidibles P Testing NP no-decidibles Alcances de la Prueba de Software
  13. 13. 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
  14. 14. Calidad de Sw, ISO 25000 y Medi- ción Grande? Objetiva? Coexistencia?
  15. 15. 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
  16. 16. Requisitos formales Diseño formal Código fuente Lx Ly Lz 3.Métodos formales: Planteamiento
  17. 17. 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/ Recursive Phrase 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) Lf Finite 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={}, LL3,2 n2 ? Recursively enumerable Computer Lgs Natural Lgs Jerar- quía de Chom sky
  18. 18. • “Demasiado matemáticos” y difíciles de aprender • Con pocas herramientas que los soporten • Limitados a pocos dominios de aplicación Mitos y Aplicaciones
  19. 19. Generación automática de Parsers a partir de Grafos de Sintaxis Un Ejemplo
  20. 20. 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
  21. 21. Diseño formal Código fuente L2 = Grafos de Sintaxis L3 = Pseudo código En este caso…
  22. 22. 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/ Recursive Phrase 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) Lf Finite 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={}, LL3,2 n2 ? Recursively enumerable Computer Lgs Natural Lgs LL Jerar- quía de Chom sky
  23. 23. • 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
  24. 24. t NN G1 Gn ... G1 Gn G1 G2 ... ... a) e) d) b) c) f) G1 Name g) L2 : Grafos de Sintaxis
  25. 25. Ejercicio
  26. 26. 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
  27. 27. 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
  28. 28. 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(); } }
  29. 29. 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
  30. 30. LIT número LOD variable STO dirección JMP dirección JMC dirección OPN +|-|*|/|=||… El Conjunto de Instrucciones
  31. 31. LOD A LOD B LIT 3 OPN / OPN + LIT 10 OPN  JMZ L1 LOD B LIT 1 OPN + STO A JMP L2 LIT 5 STO B …A+B/310 ( C) L1: L2: IF C A := B+1; ELSE B := 5; ... En la otra Dirección: Patrones
  32. 32. • 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
  33. 33. • 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
  34. 34. • Compilers: Aho, Sethi, Ullman; Addison-Wesley • Artículo “Software’s chronic Crisis”: http://www.di.ufpe.br/~java/graduacao/refere ncias/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_method s #Formal_methods_and_notations Un poco de Bibliografía
  35. 35. “…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 Pol Polteq, 2008
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×