PDF de programación - Especificación de módulos con ejemplos y casos de prueba

Imágen de pdf Especificación de módulos con ejemplos y casos de prueba

Especificación de módulos con ejemplos y casos de pruebagráfica de visualizaciones

Publicado el 28 de Abril del 2017
1.807 visualizaciones desde el 28 de Abril del 2017
446,4 KB
11 paginas
Creado hace 13a (30/01/2011)
Especificación de módulos con
[email protected]

ejemplos y casos de prueba

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

Agenda

• Reutilización
• Especificación
• Implementación
• Extracción de los ejemplos de uso
• Receta
 Conclusiones



UCR

Epecificación de módulos con ejemplos y casos de prueba

[email protected]

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

Reutilización

Reutilizar significa no inventar de nuevo la rueda, sino aprovechar

lo que otros hicieron para construir nuevas soluciones

¿¿¿ CÓMO ???

• Reducir la distancia cognoscitiva a la implementación
• Es más rápido reutilizar que hacerlo nuevo
• Uso de la especificación de qué hace cada módulo
• Mecanismo para encontrar los módulos reutilizables
• http://google.com/search?as_qdr=all&num=100&as_q=c%2B%2B+map+iter
UCR



Especificación de módulos con ejemplos y casos de prueba

[email protected]

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

Especificación

Contrato en el que están definidos todos los

servicios del módulo implementado

¿¿¿ CÓMO ???

• Encabezado, firma o prototipo
• Descripción corta de la funcionalidad
• Descripción detallada
• Ejemplo de uso



UCR

{ 1 } template <class T>

void list<T>::insert( list<T>::iterator p, const value_type & v );

{ 2 } Agrega una copia del valor "v" al contenedor.
{ 3 }

● El valor agregado queda antes de la posición "p" en el contenedor.
● Si p==this->end() el valor queda al final de la lista.



Precondición: <<< no tiene >>>
Complejidad: O ( this->size() )

{ 4 } {{ // test::insert()

list<long> L = makeList_long( "(3)" );
L.push_front( 2 ); assertTrue( L == makeList_long( "(2 3)" ) );
L.push_front( 1 ); assertTrue( L == makeList_long( "(1 2 3)" ) );
L.push_back( 4 ); assertTrue( L == makeList_long( "(1 2 3 4)" ) );
L.push_back( 5 ); assertTrue( L == makeList_long( "(1 2 3 4 5)" ) );
L.insert( L.begin() , 0 );
L.insert( L.end() , 6 );
assertTrue( L == makeList_long( "(0 1 2 3 4 5 6)" ) );
typename list<long>::iterator it = L.begin();
while ( it != L.end() && (*it != 4) ) { ++it; }
L.insert(it,4);
assertTrue( L == makeList_long( "(0 1 2 3 4 4 5 6)" ) );
}}



Especificación de módulos con ejemplos y casos de prueba

[email protected]

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

Implementación

Instrucciones imperativas a ser ejecutadas por el

computador
¿¿¿ CÓMO ???

• En la especificación se define QUÉ hace el programa.
• En la implementación queda escrito CÓMO se hace.
• Existen muchas posibles implementaciones diferentes que
cumplen con la misma especificación.



UCR

[email protected]
[email protected]

Universidad de Costa Rica
Universidad de Costa Rica

Especificación de módulos con ejemplos y casos de prueba
Especificación de módulos con ejemplos y casos de prueba

Escuela de Ciencias de la Computación e Informática
Escuela de Ciencias de la Computación e Informática
¿Por qué los programadores no

escriben especificaciones?

• Los cantantes ... ¡cantan!
• Las bailarinas … ¡bailan!
• Los poetas … ¡escriben!

• Los programadores no somos poetas ...
• Los programadores … ¡programamos!
• Zapatero: ¡a tus zapatos!



UCR

Especificación de módulos con ejemplos y casos de prueba

[email protected]

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

Extracción de los ejemplos de uso

Una herramienta de extracción y generación de documentación produce la
especificación de cada módulo, organizada apropiadamente, con base a las

anotaciones y comentarios del código fuente en donde se define la funcionalidad

y forma de uso de cada parte de la implementación

¿¿¿ CÓMO ???

• Use [ http://Doxygen.org ]
• Marque el principio del ejemplo
• Marque el final del ejemplo



UCR

/// Datos de prueba para \c insert() \c push_front() y \c push_back().
template <class T>
void test_list<T>::test_insert() {
{{ // test::insert()
list<long> L = makeList_long( "(3)" );
L.push_front( 2 ); assertTrue( L == makeList_long( "(2 3)" ) );
L.push_front( 1 ); assertTrue( L == makeList_long( "(1 2 3)" ) );
L.push_back( 4 ); assertTrue( L == makeList_long( "(1 2 3 4)" ) );
L.push_back( 5 ); assertTrue( L == makeList_long( "(1 2 3 4 5)" ) );
L.insert( L.begin() , 0 );
L.insert( L.end() , 6 );
assertTrue( L == makeList_long( "(0 1 2 3 4 5 6)" ) );
typename list<long>::iterator it = L.begin();
while ( it != L.end() && (*it != 4) ) { ++it; }
L.insert(it,4);
assertTrue( L == makeList_long( "(0 1 2 3 4 4 5 6)" ) );
}}
{ // Resto de las pruebas
list<long> X = makeList_long( "(0 1)" );
typename list<long>::iterator it; int i = 4;
it = X.begin();
X.insert(it, i);
assertTrue( X.size() == 3 && ! X.empty() );
i = 6;
X.insert(it++, i);
assertTrue( *it != 6 );
assertTrue( X.size() == 4 );
}
}



http://www.di-mare.com/adolfo/p/str2list/es/

/** \fn template <class T> inline void
list<T>::insert( iterator p, const value_type &v )
\brief Agrega el valor \c "v" al contenedor.
- El valor agregado queda antes de la posición \c "p"
en el contenedor.
- Si <code>p==this->end()</code> el valor queda al
final de la lista.
\pre <<< no tiene >>>
\par Complejidad
- O ( \c 1 )
\dontinclude test_list.cpp
\skipline test::insert()
\until }}
\see test_list::test_insert()
*/

http://www.di-mare.com/adolfo/p/BUnit.htm



Especificación de módulos con ejemplos y casos de prueba

[email protected]

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

Receta

{ 1 } Encabezado, firma o prototipo.
{ 2 } Descripción corta de la funcionalidad.
{ 4 } Ejemplo de uso "{{" "}}".



UCR

Especificación de módulos con ejemplos y casos de prueba

[email protected]

Universidad de Costa Rica

Escuela de Ciencias de la Computación e Informática

Conclusiones

• Use datos de prueba para completar cada especificación
• Use datos de prueba como ejemplos
• Enseñe a los jóvenes para que aprendan los viejos
• Use herramientas para generar documentación
• Use herramientas para indexación de documentos

[ http://www.di-mare.com/adolfo/p/BUnitXP.htm ]
[ http://www.di-mare.com/adolfo/p/BUnit.htm ]

¡¡¡ Muchas gracias !!!

http://www.viajesyfotos.net/fotos/costa_rica.htm



UCR
  • Links de descarga
http://lwp-l.com/pdf3254

Comentarios de: Especificación de módulos con ejemplos y casos de prueba (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad