SlideShare una empresa de Scribd logo
1 de 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
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
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
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 la complejidad
Ambientes de desarrollo (CASE Systems)
Lenguajes de computación
Metodologías
Crisis del Software: Soluciones
3. Exigencia en la calidad
 Total Quality Management for software
 Mejora de procesos (CMMI,MoProSoft,etc.)
 Prueba de Software
Crisis del Software: Soluciones
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?
Modelo-V
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)
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
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
Alcances teóricos: no-decidible (Hk),
pero automatizable en algunos aspectos
semidecidibles
P
Testing
NP
no-decidibles
Alcances de la Prueba de Software
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
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 Software
 Métodos Formales
Crisis del Software: Soluciones
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/
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
• “Demasiado matemáticos” y difíciles
de aprender
• Con pocas herramientas que los
soporten
• Limitados a pocos dominios de
aplicación
Mitos y Aplicaciones
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 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
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/
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
• 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
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)
c)
g)
L3 : Pseudocódigo
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
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();
}
}
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
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 C A := B+1;
ELSE B := 5; ...
En la otra Dirección: Patrones
• 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
• 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
• 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
“…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

Más contenido relacionado

La actualidad más candente

Charla evento TestingUY 2017 - Testing exploratorio ¡Listos para zarpar!
Charla evento TestingUY 2017 - Testing exploratorio ¡Listos para zarpar!Charla evento TestingUY 2017 - Testing exploratorio ¡Listos para zarpar!
Charla evento TestingUY 2017 - Testing exploratorio ¡Listos para zarpar!TestingUy
 
Pruebas de sistema (Mapa Conceptual)
Pruebas de sistema (Mapa Conceptual)Pruebas de sistema (Mapa Conceptual)
Pruebas de sistema (Mapa Conceptual)Leiber Marquez Ragua
 
Plan evaluacion 1-2021ultimo2.docx
Plan evaluacion 1-2021ultimo2.docxPlan evaluacion 1-2021ultimo2.docx
Plan evaluacion 1-2021ultimo2.docxSol Hernández
 
Cap1 resolucionproblemasconcomputador-090407121107-phpapp01
Cap1 resolucionproblemasconcomputador-090407121107-phpapp01Cap1 resolucionproblemasconcomputador-090407121107-phpapp01
Cap1 resolucionproblemasconcomputador-090407121107-phpapp01Frank Diego Quispe Vigo
 
Ra semana 3 2
Ra semana 3 2Ra semana 3 2
Ra semana 3 2victdiazm
 
Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...
Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...
Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...TestingUy
 
Plan evaluacion 1-2021reprogramada
Plan evaluacion 1-2021reprogramadaPlan evaluacion 1-2021reprogramada
Plan evaluacion 1-2021reprogramadaSol Hernández
 
Metodologias del desarrollo de sistemas de informacion
Metodologias del desarrollo de sistemas de informacionMetodologias del desarrollo de sistemas de informacion
Metodologias del desarrollo de sistemas de informacionjulieforerorojas
 
Enunc tp350-2015-2
Enunc tp350-2015-2Enunc tp350-2015-2
Enunc tp350-2015-2Pablo Mora
 
Metodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemasMetodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemasmireya2022
 
Ra semana 3 1
Ra semana 3 1Ra semana 3 1
Ra semana 3 1victdiazm
 
Banco de reactivos (iegr)
Banco de reactivos (iegr)Banco de reactivos (iegr)
Banco de reactivos (iegr)Elizabeth Reyna
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónjusto morales
 

La actualidad más candente (19)

Charla evento TestingUY 2017 - Testing exploratorio ¡Listos para zarpar!
Charla evento TestingUY 2017 - Testing exploratorio ¡Listos para zarpar!Charla evento TestingUY 2017 - Testing exploratorio ¡Listos para zarpar!
Charla evento TestingUY 2017 - Testing exploratorio ¡Listos para zarpar!
 
Calidad del software cap2
Calidad del software   cap2Calidad del software   cap2
Calidad del software cap2
 
Pruebas de sistema (Mapa Conceptual)
Pruebas de sistema (Mapa Conceptual)Pruebas de sistema (Mapa Conceptual)
Pruebas de sistema (Mapa Conceptual)
 
Plan evaluacion 1-2021ultimo2.docx
Plan evaluacion 1-2021ultimo2.docxPlan evaluacion 1-2021ultimo2.docx
Plan evaluacion 1-2021ultimo2.docx
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Cap1 resolucionproblemasconcomputador-090407121107-phpapp01
Cap1 resolucionproblemasconcomputador-090407121107-phpapp01Cap1 resolucionproblemasconcomputador-090407121107-phpapp01
Cap1 resolucionproblemasconcomputador-090407121107-phpapp01
 
Ra semana 3 2
Ra semana 3 2Ra semana 3 2
Ra semana 3 2
 
Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...
Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...
Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...
 
Plan evaluacion 1-2021reprogramada
Plan evaluacion 1-2021reprogramadaPlan evaluacion 1-2021reprogramada
Plan evaluacion 1-2021reprogramada
 
Deber2
Deber2Deber2
Deber2
 
-Irina
-Irina-Irina
-Irina
 
INF-102
INF-102INF-102
INF-102
 
Metodologias del desarrollo de sistemas de informacion
Metodologias del desarrollo de sistemas de informacionMetodologias del desarrollo de sistemas de informacion
Metodologias del desarrollo de sistemas de informacion
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Enunc tp350-2015-2
Enunc tp350-2015-2Enunc tp350-2015-2
Enunc tp350-2015-2
 
Metodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemasMetodologías para el desarrollo de sistemas
Metodologías para el desarrollo de sistemas
 
Ra semana 3 1
Ra semana 3 1Ra semana 3 1
Ra semana 3 1
 
Banco de reactivos (iegr)
Banco de reactivos (iegr)Banco de reactivos (iegr)
Banco de reactivos (iegr)
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 

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

La prueba del software y los special purpose languages
La prueba del software y los special purpose languagesLa prueba del software y los special purpose languages
La prueba del software y los special purpose languagesSoftware Guru
 
Curso de Algoritmos - Presentación 1
Curso de Algoritmos - Presentación 1Curso de Algoritmos - Presentación 1
Curso de Algoritmos - Presentación 1Joemmanuel Ponce
 
Lenguajes de programación parte i.3
Lenguajes de programación parte i.3Lenguajes de programación parte i.3
Lenguajes de programación parte i.3Marquina, Santiago
 
16 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 200916 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 2009Pepe
 
4p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea024p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea02guest063eec
 
4p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea024p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea02guest063eec
 
4p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea024p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea02guest063eec
 
4p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea024p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea02guest063eec
 
Examen Parcial 1 Introduccion Programacion
Examen Parcial 1 Introduccion ProgramacionExamen Parcial 1 Introduccion Programacion
Examen Parcial 1 Introduccion ProgramacionEinstein Briceño
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programarCelestino Duran
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programarCelestino Duran
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmasSergio Naspiran
 
Introducción a la Programación
Introducción a la ProgramaciónIntroducción a la Programación
Introducción a la ProgramaciónPablo Parola
 
Introducción A La Programación
Introducción A La ProgramaciónIntroducción A La Programación
Introducción A La ProgramaciónPablo Parola
 

Similar a La prueba de software, los métodos formales y los computer languages (20)

La prueba del software y los special purpose languages
La prueba del software y los special purpose languagesLa prueba del software y los special purpose languages
La prueba del software y los special purpose languages
 
Curso de Algoritmos - Presentación 1
Curso de Algoritmos - Presentación 1Curso de Algoritmos - Presentación 1
Curso de Algoritmos - Presentación 1
 
Lenguajes de programación parte i.3
Lenguajes de programación parte i.3Lenguajes de programación parte i.3
Lenguajes de programación parte i.3
 
Unidad 5
Unidad 5Unidad 5
Unidad 5
 
16 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 200916 Cast Software Solo Pruebas 2009
16 Cast Software Solo Pruebas 2009
 
4p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea024p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea02
 
4p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea024p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea02
 
4p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea024p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea02
 
4p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea024p 10cjm Deisyrosero Programacion Tarea02
4p 10cjm Deisyrosero Programacion Tarea02
 
Examen Parcial 1 Introduccion Programacion
Examen Parcial 1 Introduccion ProgramacionExamen Parcial 1 Introduccion Programacion
Examen Parcial 1 Introduccion Programacion
 
Clase de programacion
Clase  de  programacionClase  de  programacion
Clase de programacion
 
Qa sc
Qa scQa sc
Qa sc
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programar
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programar
 
Principios de paradigmas
Principios de paradigmasPrincipios de paradigmas
Principios de paradigmas
 
Introducción a la Programación
Introducción a la ProgramaciónIntroducción a la Programación
Introducción a la Programación
 
Introducción A La Programación
Introducción A La ProgramaciónIntroducción A La Programación
Introducción A La Programación
 
Presentacion c
Presentacion cPresentacion c
Presentacion c
 
Algoritmos - Curso UNE
Algoritmos - Curso UNEAlgoritmos - Curso UNE
Algoritmos - Curso UNE
 
Presentacion c
Presentacion cPresentacion c
Presentacion c
 

Más de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

Más de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

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

  • 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. 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. 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. 3. Exigencia en la calidad Critical systems Globalización y educación de los clientes Crisis del Software: Problemática
  • 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. 3. Exigencia en la calidad  Total Quality Management for software  Mejora de procesos (CMMI,MoProSoft,etc.)  Prueba de Software Crisis del Software: Soluciones
  • 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?
  • 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. 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. 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. Alcances teóricos: no-decidible (Hk), pero automatizable en algunos aspectos semidecidibles P Testing NP no-decidibles Alcances de la Prueba de Software
  • 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
  • 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
  • 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. • “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. Generación automática de Parsers a partir de Grafos de Sintaxis Un Ejemplo
  • 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
  • 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. • 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
  • 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. 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. 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. 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. LIT número LOD variable STO dirección JMP dirección JMC dirección OPN +|-|*|/|=||… El Conjunto de Instrucciones
  • 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. • 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. • 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. • 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. “…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