SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
“…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 formales3. Métodos formales
• Planteamiento general
4. Lenguajes de Computación propietarios
• Clases, Tipos, Enfoque
5. Preguntas clave para desarrollarlos
• Cuestionamientos importantes iniciales
1. Incremento en la demanda
Legacy systems; embedded software
Cada vez más áreas de aplicación
1.La “Crisis del Software”
Herramientas y capacitación para
técnicos y no-técnicos
Re-Uso de software
2. Incremento en la complejidad
Sistemas de software+firmware+
hardware
Tamaño
Crisis del Software
Tamaño
Ambientes de desarrollo (CASE Systems)
Lenguajes de computación
Metodologías
3. Exigencia en la calidad
Critical systems
Globalización y educación de los clientes
Crisis del Software
Total Quality Management for software
Mejora de procesos (CMMI,MoProSoft,etc.)
Prueba de Software
Inicialmente confundida con debugging y
conceptualizada para ganar confianza.
Myers: el objetivo es detectar errores.
Una definición:
2.Qué es la Prueba de Software?
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.
e1
e2
e3
isóceles
equilátero
escaleno
Un Ejemplo clásico
no es triángulo
Cuántos Casos de Prueba?
Cuántos recursos para probar?
Automatizar?
(105 ) 3 = 1015
4,000*25*400=4*107
Alcances prácticos:
Cantidad de posibilidades inmanejable
[“Principio Heurístico sobre Algorítmico”].
Una técnica de prueba (pesticida) no es
suficiente para detectar todos los defectos
(bugs) [“Principio del Pesticida”].
Alcances de la Prueba de Software
(bugs) [“Principio del Pesticida”].
La organización que desarrolla no debe
probar [“Principio de la Independencia”].
La complejidad del software (y por lo tanto
la de los errores) crece hasta los límites de
nuestra habilidad para manipular esa
complejidad [“Principio de la complejidad”].
Alcances teóricos: no-decidible (Hk),
pero automatizable en algunos aspectos
semidecidibles
no-decidibles
Alcances de la Prueba de Software
semidecidibles
P
Testing
NP
Detectar, con recursos limitados,
la mayor cantidad de defectos,
Objetivo de la Prueba de Software
lo más nocivo posible,
lo antes posible…
aplicando técnicas ingenieriles (Hks).
1.Establecer alcances,
criterios de éxito y
entregables
2.Estimar del Esfuerzo del
Prueba
3.Planear el Proyecto
Proceso de Prueba (Nivel 1)
4.Reproducir el contexto
del SUT
5.Diseñar y aplicar las
Pruebas
6. Obtener métricas y dar
resultados
7. Administrar Anomalías
8.Cerrar
3. Exigencia en la calidad
Critical systems
Globalización y educación de los clientes
Crisis del Software
Total Quality Management for software
Mejora de procesos (CMMI,MoProSoft,etc.)
Prueba de Software
Métodos formales
Requerimientos
formales
Diseño
LLLLxxxx
3.Métodos formales: Planteamiento
Diseño
formal
Código
fuente
LLLLyyyy
LLLLzzzz
N → β
N → t | t1 N1LLLL3333
LLLL2222
LR
LL
Type Name Rules Examples .
Regular
Context
free
ai bj ck dm i,j,k,m
independent
ak bk2 cn dn-1
an bn ∪ an b2n
Regular
Expressions
Syntax
Graphs
LLLLffff
Finite an bn , K1≤ n≤ K2
ak bn cn d k
an bn, 0≤ n
(det)
Computer Lgs
Jerar
quía
de
β1 N β2 → β1 α β2LLLL1111
LLLLeeee
LLLL0000
LLLLgggg
Context
sensitive
Decidable/
Recursive
Phrase
structure/
General
α → β
α → β, |α| ≤ |β|
an bn cn
Graphs
None (it’s impossible)
ak bn ck dn
a
1st Order Pre-
dicate Calculus
{〈M〉 | LLLL(M)∈ LLLLe }
L={}, L∈LLLL3,2
n2
?
Recursively
enumerable
Natural Lgs
de
Chom
sky
Constitución de un Compilador
Analizador léxico
(scanner)
Analizador sintáctico
(parser)
Analizador
semántico
Brincar
caracteres
Verificar orden de las
cadenas en L1
Validar significado
de las cadenas
Manejador
de Errores
Generador
de Código
caracteres
irrelevantes
Identificar
cadenas
relevantes
Detectar, informar y
saltar errores
Generar código en
otro lenguaje L2
preservando el
significado
token
lexema
Generación automática
de Parsers a partir de
Ejemplo de un Método Formal
de Parsers a partir de
Grafos de Sintaxis
Desarrollo de
Compiladores para
4. Lenguajes propietarios
Compiladores para
proprietary special Purpose
Languages
LIT número
LOD variable
STO dirección
Un Conjunto de Instrucciones
STO dirección
JMP dirección
JMC dirección
OPN +|-|*|/|=|≥|…
LOD A
LOD B
LIT 3
OPN /
OPN +
JMZ L1
LOD B
LIT 1
OPN +
STO A
En la otra Dirección: Patrones
OPN +
LIT 10
OPN ≥≥≥≥
JMP L2
LIT 5
STO B
…
A+B/3≥10
(≈ 〈C〉)
L1:
L2:
IF 〈C〉 A := B+1;
ELSE B := 5; ...
• 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…
Antiguos comentarios
• La generación de código incrementaba
significativamente la productividad.
• La programación en el lenguaje de alto
nivel era menos propensa a errores, lo cual
incrementaba la calidad.
Pero…
• De Especificación
• De Arquitectura
• De Documentación
• De Definición de
Procesos
Lenguajes de Computación
Procesos
• De Programación
La Torre de Babel
de la Computación?
☺
– 4GL
Lexical
Analizer
Syntactic Analizer Interme-
diate Code
OptimizerBuffer
Device
Device
Chars
CodeinL3
SourceCodeinL1
System…
dependent
independent
but “concrete”
(cuasi-) independent
& abstract
(semi-)
dependent
dependent
Back-end
Codeoptimized
CodeinL2
Front-End
Lexeme
Constitución de un Compilador (2)
Identifier Table
Target
Code
Generator
InputDevice
OutputDevice
Chars
TargetCode
BlockofcharswithSource
Semantic
Analizer
Error
Recovery
Mechanism
Intermediate
Code
Generator
IntermediateCode
IntermediateCode
Token&Lexeme
• Elementos independientes del Dominio de
Aplicación: Mecanismos/Constructos propios
de todo procesamiento: secuenciación,
alternación y repetición de tareas.
Partes de un Lenguaje de Programación
• Elementos dependientes del Dominio de
Aplicación: Mecanismos/Constructos
especiales para facilitar procesos propios del
área (strings, matrices, tablas de empleados,
conjuntos, etc.)
Abstracciones de Control
Básicas
Abstracción de pa-
trones comunes de
programación:
- goto’s|
- asignaciones
- llamadas a subru-
Estructuradas
Instrucciones “single-entry,
single-exit”:
- alternación: (guarded) if’s,
switch’es
- repetición:
(guarded) do’s, for’s
De Unidad
Agrupamiento físico
de:
- Abstract Data
Types
- Módulos con ope-
raciones relacio-- llamadas a subru-
tinas
- return’s
(guarded) do’s, for’s
- abstracciones de instrucciones
(bloques, procedimientos,
funciones)
- manejo de excepciones
raciones relacio-
nadas (“librerías”).
Abstracciones de Datos
Básicas
Abstracción de
representaciones
internas de tipos de
datos comunes, i.e.
tipos de datos
básicos (predefini-
Estructuradas
Tipos de datos compuestos
definidos utilizando cons-
tructores de tipos como:
- secuencia (<s1, s2, …, sn >,
v.gr. arreglos y strings)
- registro (×)
De Unidad
Agrupamiento
físico de datos
relacionados:
- Abstract Data
Types
- Módulos con tiposbásicos (predefini-
dos):
- ordinal: caracter,
entero, booleano,
enumerado
- continuo: real, con
distintas precisiones
- rangos
- registro (×)
- registro variable (∪)
- función (ƒ:T→U)
- conjunto (℘)
- apuntador
- tipos recursivos (listas; árboles)
- archivos
- “tipo nulo” (void)
- Módulos con tipos
relacinados
(“librerías”).
• Han sistematizado o formalizado (partes
de) su proceso de desarrollo?
• Se han especializado en un Dominio de
Aplicación?
•Hacen reuso de software sistemática-
5. Preguntas clave para desarrollarlos
•Hacen reuso de software sistemática-
mente pero la parametrización es
complicada, llena de detalles y propensa
a errores??
• Han detectado patrones con los que
pudiera desarrollarse un Lenguaje de
Programación propietario?
• Compilers: Aho, Sethi, Ullman;
Addison-Wesley
• Artículo “Software’s chronic Crisis”:
http://www.di.ufpe.br/~java/graduacao/refere
ncias/SciAmSept1994.html
Un poco de Bibliografía
• 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
“…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

Unidad 2 programación estructurada
Unidad 2 programación estructuradaUnidad 2 programación estructurada
Unidad 2 programación estructuradaRoberth Camana
 
2.3 instrucciones básicas de programación
2.3 instrucciones básicas de programación2.3 instrucciones básicas de programación
2.3 instrucciones básicas de programaciónEmir Méndez Alarcón
 
Estandares de Codigo (Emanuel)
Estandares de Codigo (Emanuel)Estandares de Codigo (Emanuel)
Estandares de Codigo (Emanuel)PiXeL16
 
Clase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppClase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppInfomania pro
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
UTPL-PROGRAMACIÓN DE ALGORITMOS-I-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN DE ALGORITMOS-I-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN DE ALGORITMOS-I-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN DE ALGORITMOS-I-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)Videoconferencias UTPL
 
Temario por etapas para la estatal
Temario por etapas para la estatalTemario por etapas para la estatal
Temario por etapas para la estatalANgel Xipootle
 
ALP Unidad 1: Introducción a los fundamentos de la programación estructurada
ALP Unidad 1: Introducción a los fundamentos de la programación estructuradaALP Unidad 1: Introducción a los fundamentos de la programación estructurada
ALP Unidad 1: Introducción a los fundamentos de la programación estructuradaFranklin Parrales Bravo
 
Tipos de Datos y Operadores
Tipos de Datos y OperadoresTipos de Datos y Operadores
Tipos de Datos y OperadoresOswaldo Basurto
 
Clase8 3 ejemplo analisis lexico-sintactico miniugb
Clase8 3 ejemplo analisis lexico-sintactico miniugbClase8 3 ejemplo analisis lexico-sintactico miniugb
Clase8 3 ejemplo analisis lexico-sintactico miniugbInfomania pro
 
3. Elementos basicos de un programa
3.  Elementos basicos de un programa3.  Elementos basicos de un programa
3. Elementos basicos de un programamartell024
 

La actualidad más candente (20)

Unidad 2 programación estructurada
Unidad 2 programación estructuradaUnidad 2 programación estructurada
Unidad 2 programación estructurada
 
2.3 instrucciones básicas de programación
2.3 instrucciones básicas de programación2.3 instrucciones básicas de programación
2.3 instrucciones básicas de programación
 
Estandares de Codigo (Emanuel)
Estandares de Codigo (Emanuel)Estandares de Codigo (Emanuel)
Estandares de Codigo (Emanuel)
 
Lógica de programación
Lógica de programaciónLógica de programación
Lógica de programación
 
Blog
BlogBlog
Blog
 
Clase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppClase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cpp
 
Tutorial warp r4
Tutorial warp r4Tutorial warp r4
Tutorial warp r4
 
Conceptos de algoritmos
Conceptos de algoritmosConceptos de algoritmos
Conceptos de algoritmos
 
Turbo pascal
Turbo pascalTurbo pascal
Turbo pascal
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
UTPL-PROGRAMACIÓN DE ALGORITMOS-I-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN DE ALGORITMOS-I-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN DE ALGORITMOS-I-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN DE ALGORITMOS-I-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
Cuestionario consultado
Cuestionario consultadoCuestionario consultado
Cuestionario consultado
 
Temario por etapas para la estatal
Temario por etapas para la estatalTemario por etapas para la estatal
Temario por etapas para la estatal
 
ALP Unidad 1: Introducción a los fundamentos de la programación estructurada
ALP Unidad 1: Introducción a los fundamentos de la programación estructuradaALP Unidad 1: Introducción a los fundamentos de la programación estructurada
ALP Unidad 1: Introducción a los fundamentos de la programación estructurada
 
Qué es un algoritmo
Qué es un algoritmoQué es un algoritmo
Qué es un algoritmo
 
Tipos de Datos y Operadores
Tipos de Datos y OperadoresTipos de Datos y Operadores
Tipos de Datos y Operadores
 
Taller 2 conceptualizacion
Taller 2 conceptualizacionTaller 2 conceptualizacion
Taller 2 conceptualizacion
 
Clase8 3 ejemplo analisis lexico-sintactico miniugb
Clase8 3 ejemplo analisis lexico-sintactico miniugbClase8 3 ejemplo analisis lexico-sintactico miniugb
Clase8 3 ejemplo analisis lexico-sintactico miniugb
 
3. Elementos basicos de un programa
3.  Elementos basicos de un programa3.  Elementos basicos de un programa
3. Elementos basicos de un programa
 
Programacion kmi
Programacion kmiProgramacion kmi
Programacion kmi
 

Similar a La prueba del software y los special purpose languages

La prueba de software, los métodos formales y los computer languages
La prueba de software, los métodos formales y los computer languagesLa prueba de software, los métodos formales y los computer languages
La prueba de software, los métodos formales y los computer languagesSoftware Guru
 
Fp sesion 1 ppt
Fp sesion 1 pptFp sesion 1 ppt
Fp sesion 1 pptThejacob18
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionBoris Salleg
 
Sesión1 Algoritmia Básica.ppt
Sesión1 Algoritmia Básica.pptSesión1 Algoritmia Básica.ppt
Sesión1 Algoritmia Básica.pptsamirvidal1
 
16 UNIDAD: 4. INTRODUCCION A LAS ARQUITECTURASWEB 4.3 N-capas 4.4 Pruebas Un...
16 UNIDAD: 4. INTRODUCCION A LAS ARQUITECTURASWEB  4.3 N-capas 4.4 Pruebas Un...16 UNIDAD: 4. INTRODUCCION A LAS ARQUITECTURASWEB  4.3 N-capas 4.4 Pruebas Un...
16 UNIDAD: 4. INTRODUCCION A LAS ARQUITECTURASWEB 4.3 N-capas 4.4 Pruebas Un...Luis Fernando Aguas Bucheli
 
Aprende programar-6330-completo
Aprende programar-6330-completoAprende programar-6330-completo
Aprende programar-6330-completojackie_18
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONDIEGO BAROJA
 
Portafolio de evidencias actividades
Portafolio de evidencias actividadesPortafolio de evidencias actividades
Portafolio de evidencias actividadesJames Logan
 
Aprende programar-6330
Aprende programar-6330Aprende programar-6330
Aprende programar-6330ANDRAM1224
 
lenguaje de programación 1
lenguaje de programación 1lenguaje de programación 1
lenguaje de programación 1agustin rojas
 
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
 

Similar a La prueba del software y los special purpose languages (20)

La prueba de software, los métodos formales y los computer languages
La prueba de software, los métodos formales y los computer languagesLa prueba de software, los métodos formales y los computer languages
La prueba de software, los métodos formales y los computer languages
 
Fp sesion 1 ppt
Fp sesion 1 pptFp sesion 1 ppt
Fp sesion 1 ppt
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacion
 
Semana 1
Semana 1Semana 1
Semana 1
 
Sesión1 Algoritmia Básica.ppt
Sesión1 Algoritmia Básica.pptSesión1 Algoritmia Básica.ppt
Sesión1 Algoritmia Básica.ppt
 
1 eda teo
1 eda teo1 eda teo
1 eda teo
 
16 UNIDAD: 4. INTRODUCCION A LAS ARQUITECTURASWEB 4.3 N-capas 4.4 Pruebas Un...
16 UNIDAD: 4. INTRODUCCION A LAS ARQUITECTURASWEB  4.3 N-capas 4.4 Pruebas Un...16 UNIDAD: 4. INTRODUCCION A LAS ARQUITECTURASWEB  4.3 N-capas 4.4 Pruebas Un...
16 UNIDAD: 4. INTRODUCCION A LAS ARQUITECTURASWEB 4.3 N-capas 4.4 Pruebas Un...
 
Introduccion a los algoritmos
Introduccion a los algoritmosIntroduccion a los algoritmos
Introduccion a los algoritmos
 
Aprende programar-6330-completo
Aprende programar-6330-completoAprende programar-6330-completo
Aprende programar-6330-completo
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACION
 
Portafolio de evidencias actividades
Portafolio de evidencias actividadesPortafolio de evidencias actividades
Portafolio de evidencias actividades
 
Aprende programar-6330
Aprende programar-6330Aprende programar-6330
Aprende programar-6330
 
Aprende programar-6330
Aprende programar-6330Aprende programar-6330
Aprende programar-6330
 
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
 
Presentacion
PresentacionPresentacion
Presentacion
 
TEMA Nº 1
TEMA Nº 1TEMA Nº 1
TEMA Nº 1
 
lenguaje de programación 1
lenguaje de programación 1lenguaje de programación 1
lenguaje de programación 1
 
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
 

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 del software y los special purpose 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 formales3. Métodos formales • Planteamiento general 4. Lenguajes de Computación propietarios • Clases, Tipos, Enfoque 5. Preguntas clave para desarrollarlos • Cuestionamientos importantes iniciales
  • 3. 1. Incremento en la demanda Legacy systems; embedded software Cada vez más áreas de aplicación 1.La “Crisis del Software” Herramientas y capacitación para técnicos y no-técnicos Re-Uso de software
  • 4. 2. Incremento en la complejidad Sistemas de software+firmware+ hardware Tamaño Crisis del Software Tamaño Ambientes de desarrollo (CASE Systems) Lenguajes de computación Metodologías
  • 5. 3. Exigencia en la calidad Critical systems Globalización y educación de los clientes Crisis del Software Total Quality Management for software Mejora de procesos (CMMI,MoProSoft,etc.) Prueba de Software
  • 6. Inicialmente confundida con debugging y conceptualizada para ganar confianza. Myers: el objetivo es detectar errores. Una definición: 2.Qué es la Prueba de Software? 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.
  • 7. e1 e2 e3 isóceles equilátero escaleno Un Ejemplo clásico no es triángulo Cuántos Casos de Prueba? Cuántos recursos para probar? Automatizar? (105 ) 3 = 1015 4,000*25*400=4*107
  • 8. Alcances prácticos: Cantidad de posibilidades inmanejable [“Principio Heurístico sobre Algorítmico”]. Una técnica de prueba (pesticida) no es suficiente para detectar todos los defectos (bugs) [“Principio del Pesticida”]. Alcances de la Prueba de Software (bugs) [“Principio del Pesticida”]. La organización que desarrolla no debe probar [“Principio de la Independencia”]. La complejidad del software (y por lo tanto la de los errores) crece hasta los límites de nuestra habilidad para manipular esa complejidad [“Principio de la complejidad”].
  • 9. Alcances teóricos: no-decidible (Hk), pero automatizable en algunos aspectos semidecidibles no-decidibles Alcances de la Prueba de Software semidecidibles P Testing NP
  • 10. Detectar, con recursos limitados, la mayor cantidad de defectos, Objetivo de la Prueba de Software lo más nocivo posible, lo antes posible… aplicando técnicas ingenieriles (Hks).
  • 11. 1.Establecer alcances, criterios de éxito y entregables 2.Estimar del Esfuerzo del Prueba 3.Planear el Proyecto Proceso de Prueba (Nivel 1) 4.Reproducir el contexto del SUT 5.Diseñar y aplicar las Pruebas 6. Obtener métricas y dar resultados 7. Administrar Anomalías 8.Cerrar
  • 12. 3. Exigencia en la calidad Critical systems Globalización y educación de los clientes Crisis del Software Total Quality Management for software Mejora de procesos (CMMI,MoProSoft,etc.) Prueba de Software Métodos formales
  • 14. N → β N → t | t1 N1LLLL3333 LLLL2222 LR LL Type Name Rules Examples . Regular Context free ai bj ck dm i,j,k,m independent ak bk2 cn dn-1 an bn ∪ an b2n Regular Expressions Syntax Graphs LLLLffff Finite an bn , K1≤ n≤ K2 ak bn cn d k an bn, 0≤ n (det) Computer Lgs Jerar quía de β1 N β2 → β1 α β2LLLL1111 LLLLeeee LLLL0000 LLLLgggg Context sensitive Decidable/ Recursive Phrase structure/ General α → β α → β, |α| ≤ |β| an bn cn Graphs None (it’s impossible) ak bn ck dn a 1st Order Pre- dicate Calculus {〈M〉 | LLLL(M)∈ LLLLe } L={}, L∈LLLL3,2 n2 ? Recursively enumerable Natural Lgs de Chom sky
  • 15. Constitución de un Compilador Analizador léxico (scanner) Analizador sintáctico (parser) Analizador semántico Brincar caracteres Verificar orden de las cadenas en L1 Validar significado de las cadenas Manejador de Errores Generador de Código caracteres irrelevantes Identificar cadenas relevantes Detectar, informar y saltar errores Generar código en otro lenguaje L2 preservando el significado token lexema
  • 16. Generación automática de Parsers a partir de Ejemplo de un Método Formal de Parsers a partir de Grafos de Sintaxis
  • 17. Desarrollo de Compiladores para 4. Lenguajes propietarios Compiladores para proprietary special Purpose Languages
  • 18. LIT número LOD variable STO dirección Un Conjunto de Instrucciones STO dirección JMP dirección JMC dirección OPN +|-|*|/|=|≥|…
  • 19. LOD A LOD B LIT 3 OPN / OPN + JMZ L1 LOD B LIT 1 OPN + STO A En la otra Dirección: Patrones OPN + LIT 10 OPN ≥≥≥≥ JMP L2 LIT 5 STO B … A+B/3≥10 (≈ 〈C〉) L1: L2: IF 〈C〉 A := B+1; ELSE B := 5; ...
  • 20. • 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… Antiguos comentarios • La generación de código incrementaba significativamente la productividad. • La programación en el lenguaje de alto nivel era menos propensa a errores, lo cual incrementaba la calidad. Pero…
  • 21. • De Especificación • De Arquitectura • De Documentación • De Definición de Procesos Lenguajes de Computación Procesos • De Programación La Torre de Babel de la Computación? ☺ – 4GL
  • 22. Lexical Analizer Syntactic Analizer Interme- diate Code OptimizerBuffer Device Device Chars CodeinL3 SourceCodeinL1 System… dependent independent but “concrete” (cuasi-) independent & abstract (semi-) dependent dependent Back-end Codeoptimized CodeinL2 Front-End Lexeme Constitución de un Compilador (2) Identifier Table Target Code Generator InputDevice OutputDevice Chars TargetCode BlockofcharswithSource Semantic Analizer Error Recovery Mechanism Intermediate Code Generator IntermediateCode IntermediateCode Token&Lexeme
  • 23. • Elementos independientes del Dominio de Aplicación: Mecanismos/Constructos propios de todo procesamiento: secuenciación, alternación y repetición de tareas. Partes de un Lenguaje de Programación • Elementos dependientes del Dominio de Aplicación: Mecanismos/Constructos especiales para facilitar procesos propios del área (strings, matrices, tablas de empleados, conjuntos, etc.)
  • 24. Abstracciones de Control Básicas Abstracción de pa- trones comunes de programación: - goto’s| - asignaciones - llamadas a subru- Estructuradas Instrucciones “single-entry, single-exit”: - alternación: (guarded) if’s, switch’es - repetición: (guarded) do’s, for’s De Unidad Agrupamiento físico de: - Abstract Data Types - Módulos con ope- raciones relacio-- llamadas a subru- tinas - return’s (guarded) do’s, for’s - abstracciones de instrucciones (bloques, procedimientos, funciones) - manejo de excepciones raciones relacio- nadas (“librerías”).
  • 25. Abstracciones de Datos Básicas Abstracción de representaciones internas de tipos de datos comunes, i.e. tipos de datos básicos (predefini- Estructuradas Tipos de datos compuestos definidos utilizando cons- tructores de tipos como: - secuencia (<s1, s2, …, sn >, v.gr. arreglos y strings) - registro (×) De Unidad Agrupamiento físico de datos relacionados: - Abstract Data Types - Módulos con tiposbásicos (predefini- dos): - ordinal: caracter, entero, booleano, enumerado - continuo: real, con distintas precisiones - rangos - registro (×) - registro variable (∪) - función (ƒ:T→U) - conjunto (℘) - apuntador - tipos recursivos (listas; árboles) - archivos - “tipo nulo” (void) - Módulos con tipos relacinados (“librerías”).
  • 26. • Han sistematizado o formalizado (partes de) su proceso de desarrollo? • Se han especializado en un Dominio de Aplicación? •Hacen reuso de software sistemática- 5. Preguntas clave para desarrollarlos •Hacen reuso de software sistemática- mente pero la parametrización es complicada, llena de detalles y propensa a errores?? • Han detectado patrones con los que pudiera desarrollarse un Lenguaje de Programación propietario?
  • 27. • Compilers: Aho, Sethi, Ullman; Addison-Wesley • Artículo “Software’s chronic Crisis”: http://www.di.ufpe.br/~java/graduacao/refere ncias/SciAmSept1994.html Un poco de Bibliografía • 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
  • 28. “…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