Actividad Final: Aprendizaje Obtenido en el Curso de Testing
Alumna: Ruiz, Myriam Noem del Valle Lugar: NAC Ente Cultural (San Miguel de Tucumn)
Temario
1. Metodologas para el desarrollo de Software 1.1. Etapas de un Ciclo de Desarrollo 1.2. Cascada 1.3. Iterativo 1.4. Incremental 1.5. Iterativo Incremental 1.6. gil 2. Programa 2.1. Concepto 2.2. Interfaz de Programa 2.3. Algoritmo 3. Variables 3.1. Concepto 3.2. Alcances 4. Conceptos de Programacin (en Macros VBA) 4.1. Mostrar por pantalla (msgbox) 4.2. Ingreso de datos 4.3. Funcin para convertir a maysculas (UCase) y minsculas (LCase) 4.4. Condicional if/si, ElseIf 4.5. Estructura de decisin Select 5. Comandos Linux/Huayra 5.1. Qu es Linux/Qu es Huayra 5.2. Comandos 6. Lenguajes Estticos y Dinmicos 7. Fuertemente y dbilmente tipado 8. Programacin en Groovy 8.1. Qu es Groovy 8.2. Declaracin de variables y Operaciones 8.3. Sentencias para ingresar y mostrar datos 8.4. Condicionales 8.5. Estructuras Repetitiva (While) 8.6. Funciones 9. Programacin Orientada a Objetos 9.1. Concepto de Objeto 9.2. Propiedades 9.3. Mtodos 9.4. Eventos 9.5. Listas 9.6. Creacin de clases 10. Testeo 10.1. Qu es el testing 10.2. Qu hace un Tester 10.3. Que se evala 10.4. Tipos de testeo
1. Metodologas para el desarrollo de Software 1.1. Etapas de un ciclo de desarrollo 1. Anlisis de requerimientos (Delimitacin y objetivos): Se extraen los requisitos del producto de software. En esta etapa la habilidad y experiencia en la ingeniera del software es crtica para reconocer requisitos incompletos, ambiguos o contradictorios. El contenido de comunicacin en esta etapa es muy intenso ya que el objetivo es eliminar la ambigedad en la medida de lo posible y poner un lmite a cul es nuestra obligacin al hacer desarrollo. Entrevistar al personal sobre cmo lo quiere al soft, por ejemplo como ser interfaz. 2. Anlisis: Determinar la posibilidad de realizar lo que se estableci en los puntos anteriores. 3. Diseo: Determinar cmo funcionar de forma general sin entrar en detalles incorporando consideraciones de la implementacin tecnolgica, como el hardware, la red, etc. Consiste en el diseo de los componentes del sistema que dan respuesta a las funcionalidades descritas en la segunda etapa tambin conocidas como las entidades de negocio. 4. Implementacin: Se traduce el diseo a cdigo. Es la parte ms obvia del trabajo de ingeniera de software y la primera en que se obtienen resultados tangibles.. 5. Verificacin: Consiste en comprobar que el software responda/realice correctamente las tareas indicadas en la especificacin. Es una buena praxis realizar pruebas a distintos niveles (por ejemplo primero a nivel unitario y despus de forma integrada de cada componente) y por equipos diferenciados del de desarrollo (pruebas cruzadas entre los programadores o realizadas por un rea de test independiente). 6. Mantenimiento: En esta etapa se realizan un mantenimiento correctivo (resolver errores) y un mantenimiento evolutivo (mejorar la funcionalidades y/o dar respuesta a nuevos requisitos).
Qu etapa ser la que consume ms tiempo? Y la ms corta?
Las etapas que ms tiempo consumen son Implementacin y Verificacin, pudiendo tomar el 70% del tiempo de desarrollo. Por otro lado, la etapa de Mantenimiento tambin podra considerarse como l arga, debido a que dura mientras el software se use.
La etapa ms corta, a mi entender, es la de Requerimientos, ya que estimo que no toma mucho tiempo entrevistar a los clientes e indagar que caractersticas requiere el sistema que quieren que se desarrolle.
1.2. Cascada Comenz a disearse en 1966 y se termin alrededor de 1970. Se define como una secuencia de fases en la que al final de cada una de ellas se rene la documentacin para garantizar que cumple las especificaciones y los requisitos antes de pasar a la fase siguiente.
Myriam Ruiz Pg 3 / 25
Ventajas:
Es un modelo sencillo y disciplinado Es fcil aprender a utilizarlo y comprender su funcionamiento Est dirigido por los tipos de documentos y resultados que deben obtenerse al final de cada etapa Ha sido muy usado y, por tanto, est ampliamente contrastado Ayuda a detectar errores en las primeras etapas a bajo costo Ayuda a minimizar los gastos de planificacin, pues se realiza sin problemas
Desventajas:
Los proyectos raramente siguen el proceso lineal tal como se defina originalmente el ciclo de vida Es difcil que el cliente exponga explcitamente todos los requisitos al principio El cliente debe tener paciencia pues obtendr el producto al final del ciclo de vida No refleja exactamente cmo se programa realmente el sistema, en el que suele haber un gran componente iterativo Puede resultar complicado regresar a etapas anteriores (ya acabadas) para realizar correcciones El producto final obtenido puede que no refleje todos los requisitos del usuario
1.3. Iterativo
El proyecto se divide en iteraciones, cuyo entregable es una versin del sistema Todo est sujeto a ser modificado en la siguiente iteracin
Myriam Ruiz Pg 4 / 25 Se intenta aprovechar el aprendizaje durante el desarrollo Es ideal para cuando los requerimientos no estn del todo claros en un comienzo o pueden sufrir modificaciones
Ventajas: Ms realista Se adapta mejor a los cambios Permite administrar mejor los riesgos Mayor visibilidad para el cliente Mejor retroalimentacin para el equipo de desarrollo
Desventajas Falta de experiencia Reaccin al cambio de enfoque Requieren distintos modelos de contrato
1. Proceso Iterativo segn Jeff Patton
1.4. Incremental Caractersticas:
Se evitan proyectos largos y se entrega "algo de valor" a los usuarios con cierta frecuencia. El usuario se involucra ms. Dificil de evaluar el costo total. Dificil de aplicar a los sistemas transaccionales que tienden a ser integrados y a operar como un todo. Requiere gestores experimentados. Los errores en los requisitos se detectan tarde. El resultado puede ser positivo.
Myriam Ruiz Pg 5 / 25 Ventajas:
Con un paradigma incremental se reduce el tiempo de desarrollo inicial, ya que se implementa la funcionalidad parcial. Tambin provee un impacto ventajoso frente al cliente, que es la entrega temprana de partes operativas del software. El modelo proporciona todas las ventajas del modelo en Cascada realimentado, reduciendo sus desventajas slo al mbito de cada incremento. Resulta ms sencillo acomodar cambios al acotar el tamao de los incrementos.
Desventajas:
El modelo incremental no es recomendable para casos de sistemas de tiempo real, de alto nivel de seguridad, de procesamiento distribuido y/o de alto ndice de riesgos. Requiere de mucha planeacin, tanto administrativa como tcnica. Requiere de metas claras para conocer el estado del proyecto.
2. Proceso Incremental segn Jeff Patton
1.5. Iterativo Incremental
Incremental: Desarrollar por partes el producto software, para despus integrarlas a medida que se completan. Consiste en agregar cada vez ms funcionalidad al sistema. Iterativo: En cada ciclo, iteracin, se revisa y mejora el producto. En cada ciclo mejora ms la calidad del producto. De la unin del ciclo de vida iterativo y el incremental al final de cada iteracin se consigue una versin ms estable del software, de ms calidad, y aadiendo adems nuevas funcionalidades respecto a versiones anteriores.
Myriam Ruiz Pg 6 / 25
3. Esquema Iterativo Incremental
4. Proceso Iterativo e Incremental segn Steven Thomas
1.6. gil Bsicamente sera un ciclo de vida iterativo e incremental, con iteraciones cortas (semanas) y sin que dentro de cada iteracin tenga porque haber fases lineales (tipo cascada). Quiz el caso ms popular es el de Scrum (Creado por Ken Schwaber 1985).
En 2001 se deca que las Metodologas tradicionales era excesivamente pesadas y rgidas por su carcter normativo y fuerte dependencia de planificaciones detalladas previas al desarrollo. En respuesta a esto, se renen 17 crticos de las Metodologas de desarrollo y redactan el Manifiesto gil, donde se indica:
Con este trabajo hemos llegado a valorar: 1. A los individuos y su interaccin, por encima de los procesos y las herramientas. 2. El software que funciona, por encima de la documentacin exhaustiva. 3. La colaboracin con el cliente, por encima de la negociacin contractual. 4. La respuesta al cambio, por encima del seguimiento de un plan.
Aunque hay valor en los elementos de la derecha, valoramos ms los de la izquierda.
Myriam Ruiz Pg 7 / 25 Ejemplo: Metodologa Scrum
Product Backlog: conjunto de objetivos a alcanzar a largo plazo Sprint Backlog: Objetivo de la iteracin actual, cuanto se pretende lograr durante el Spring. Spring: Dura 2-4 Semanas, es el tiempo en el que se trabaja para lograr el objetivo, con reuniones diarias (de 15 mins). Es una retroalimentacin corta Resultado: Incremento de Producto potencialmente entregable
Volver
2. Programa 2.1. Concepto: Ejecucin secuencial de sentencias o instrucciones secuenciadas: Porque la ubicacin de cada instruccin determina el momento de su ejecucin.
Segn Wikipedia, un programa es: un conjunto de instrucciones que una vez ejecutadas realizarn una o varias tareas en una computadora. Sin programas, estas mquinas no pueden funcionar.
2.2. Interfaz de Programa: Se considera as al conjunto de elementos que provee el programa, para facilitar la interaccin.
Interaccin: el grado de respuesta que ofrece el programa ante las necesidades del usuario. Ej: Salir o cerrar, debe estar como opcin, porque el usuario no tiene por qu saber que para salir debe presionar la X de la ventana.
2.3. Algoritmo: Se introdujo de soslayo el concepto de Algoritmo, a travs de los ejercicios que pedan explicar que pasos seguiramos por ejemplo para poder preparar una leche chocolatada. Pero, se podra dar una definicin ms formal:
Un algoritmo (del griego y latn, dixit algorithmus y este a su vez del matemtico persa Al-Juarismi) es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.
Myriam Ruiz Pg 8 / 25 Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin. En los algoritmos no se utiliza ningn lenguaje de mquina, sino lenguaje humano comn.
Ejemplo: Escribir un algoritmo para obtener el rea de un tringulo, tomando en cuenta que el rea es: (base * altura)/2.
ALGORITMO: 1- inicio 2- pedir la base y la altura (B,H) 3- multiplicar la base y la altura y dividirlas entre 2 (A=B*H/2) 4- mostrar resultados (A) 5- fin
Volver
3. Variables (en VBA) 3.1. Concepto: Espacio de Memoria (RAM) que se reserva, llevando asociado un nombre. Hay lenguajes que requieren la declaracin de tipo de las variables (fuertemente tipados) y otros que no.
Ejemplo de declaracin de variable local en VBA
Sub Prueba () Dim num as String
End Sub Ejemplo de declaracin de variable en Groovy
Sin tipo de dato def num = 5
Con tipo de dato Integer num = 5
3.2. Alcances Las variables son visibles (utilizables) de diferentes formas, segn donde se hayan declarado. Pueden ser:
Local: Se declara dentro un Sub especfico, vindose solo dentro de l General: Se declara fuera de todo Sub y es visible en todo el formulario donde se encuentre, pero no en el resto. Pblica: Son las declaradas en los Mdulos (VBA), y pueden ser vistas por todo el proyecto
Volver
4. Conceptos de Programacin (en Macros VBA) 4.1. Mostrar por pantalla (msgbox) Permite mostrarle un mensaje al usuario. Se usa as: Msgbox Mensaje
Myriam Ruiz Pg 9 / 25 4.2. Ingreso de datos Permite ingresar datos por teclado y almacenarlo en una varaiable. Variable = Inputbox (Mensaje)
Ejemplo:
Edad = InputBox("Ingrese su edad")
4.3. Funcin para convertir a maysculas (UCase) y minsculas (LCase) A veces es necesario convertir los datos a maysculas o minsculas, por ejemplo para hacer una comparacin de lo ingresado por teclado. Para ello se usa las instrucciones: Dato = InputBox(Ingrese un nombre) Suponga ingresado Myriam Dato = Ucase (Dato) La variable quedara con MYRIAM Dato = LCase (Dato) La variable quedara con myriam
4.4. Condicional if/si, ElseIf
If Then End If: permite controlar si una condicin es verdadera o falsa.
Ejemplo: Si la luz del semforo es roja freno, sino sigo Analicemos esto:
Referencia: Lo que miro -> la luz del semforo Condicin: Que est roja Accin verdadera: Que pasa si es verdad? > Freno Accin Falsa: Cuando la condicin es falsa -> Seguir
Sintaxis
If condicin Then Accin verdadera Else Accion Falsa End If
Ejemplo: Ingresar el nombre de un usuario, si es igual a Myriam, responder Bienvenida Myriam, sino Bienvenido Usuario
Dim Usuario as String Sub Saludar_Click() Usuario = InputBox("ingrese apellido") If usuario = Myriam then Msgbox (Bienvenida Myriam) Else Msgbox (Bienvenido Usuario) End If End Sub
Myriam Ruiz Pg 10 / 25 Si tengo ms opciones puede usar la instruccin ElseIf:
Dim Edad As Integer Private Sub CommandButton1_Click() MsgBox ("Bienvenidos al curso Tester NAC") Usuario = InputBox("ingrese Nombre") If UCase(Usuario) = MYRIAM" Then MsgBox ("Bienvenido " & Usuario) ElseIf Usuario = "Pedro" Then MsgBox ("Bienvenido" & Usuario) Else MsgBox ("Error de usuario") End If End Sub
4.5. Estructura de decisin Select Se utiliza cuando tenemos muchas respuestas
Sintaxis: Select Case expresin_prueba [Case lista_expresion-n [instrucciones-n]] ... [Case Else [instrucciones_else]] End Select
Ejemplo
Usuario = InputBox("ingrese Nombre") Select Case UCase(Usuario) Case MYRIAM MsgBox ("Bienvenida Myriam) Case "PEDRO" MsgBox ("Bienvenido Pedro) Case "FABIN" MsgBox ("Bienvenido Fabin) Case Else MsgBox ("Error de usuario") End Select
Volver
5. Comandos Linux/Huayra 5.1. Qu es Linux GNU/Linux es uno de los trminos empleados para referirse a la combinacin del ncleo o kernel libre similar a Unix denominado Linux con el sistema GNU. Todo su cdigo fuente puede ser utilizado, modificado y redistribuido libremente por
Myriam Ruiz Pg 11 / 25 cualquiera bajo los trminos de la GPL (Licencia Pblica General de GNU, en ingls: General Public License) y otra serie de licencias libres.
El proyecto GNU, que se inici en 1983 por Richard Stallman; tiene como objetivo el desarrollo de un sistema operativo Unix completo y compuesto enteramente de software libre. La historia del ncleo Linux est fuertemente vinculada a la del proyecto GNU. En 1991 Linus Torvalds empez a trabajar en un reemplazo no comercial para MINIX10 que ms adelante acabara siendo Linux.
Cuando Torvalds liber la primera versin de Linux, el proyecto GNU ya haba producido varias de las herramientas fundamentales para el manejo del sistema operativo, incluyendo un intrprete de comandos, una biblioteca C y un compilador, pero como el proyecto contaba con una infraestructura para crear su propio ncleo (o kernel), el llamado Hurd, y este an no era lo suficiente maduro para usarse, comenzaron a usar a Linux a modo de continuar desarrollando el proyecto GNU, siguiendo la tradicional filosofa de mantener cooperatividad entre desarrolladores. Entonces, el ncleo creado por Linus Torvalds, quien se encontraba por entonces estudiando la carrera de Ingeniera Informtica en la Universidad de Helsinki, llen el "espacio" final que haba en el sistema operativo de GNU.
Qu es Huayra
Huayra GNU/Linux es un sistema operativo desarrollado por el Programa Conectar Igualdad de Argentina. Huayra est basado en GNU/Linux, es una metadistribucin de Debian. Liberado con la Licencia GNU/GPL, Huayra es software libre. Huayra toma su nombre del vocablo Quechua que significa Viento.
Su desarrollo est a cargo del Centro Nacional de Investigacin y Desarrollo de Tecnologas Libres (CENITAL) de Argentina, dependiente de la ANSES y toma en consideracin las necesidades tanto de estudiantes como de docentes y otros actores involucrados en el programa Conectar Igualdad.
Pgina de descarga: http://huayra.conectarigualdad.gob.ar/bajar
5.2. Comandos Bsicos (Actividades)
# 1. Abrir una consola. Puedo abrir dos consolas simultneamente? # > Si se puede, primero una luego la otra, desde Aplicaciones > Accesorios > Terminal, o con Ctrl + Alt + T
# 2. Utilizar el comando man para conseguir ayuda sobre los comandos nombrados (man, rmdir, mkdir, ls, rm, cd, etc)
Myriam Ruiz Pg 12 / 25
Comando man: El comando man, que es la abreviatura de manual, proporciona informacin sobre el comando solicitado o permite a los usuarios buscar comandos relacionados con un determinada palabra clave.
Sintaxis: man nombre_comando [opciones]
opciones:
-a Muestra un mensaje de ayuda de una lnea y sale -k Busca las palabra claves en todos los manuales disponibles.
Ejemplo: man mkdir
Comando mkdir: Sirve para crear una carpeta
Sintaxis mkdir [opciones] directorio...
Opciones
-m modo, --mode=modo Establece los permisos de los directorios creados a modo, que puede ser simblico como en chmod y entonces emplea el modo predeterminado como el punto de partida.
-p, --parents Crea los directorios padre que falten para cada argumento directorio. Los permisos para los directorios padre se ponen a la umask modificada por u+rwx. No hace caso de argumentos que correspondan a directorios existentes. (As, si existe un directorio /a, entonces mkdir /a es un error, pero mkdir -p /a no lo es.)
Ejemplo: Para crear varios directorios a la vez usaremos: mkdir -p /dir1/dir2/dir3/... donde dir1, dir2, dir3 son los nombres de los respectivos directorios.
--verbose Muestra un mensaje para cada directorio creado. Esto es ms til con --parents.
rmdir --ignore-fail-on-non-empty directorio --> Borra el directorio aunque no est vacio rmdir -p a/b/c --> Borra el directorio c, as como sus directorios padre indicados (a y b)
Ejemplo rmdir prueba
Comando ls Lista el contenido de un directorio
Sintaxis ls [opciones] [directorio]
Opciones
ls sin argumentos muestra el listado del directorio actual
ls archivo1 archivo2 archivo3 ... subdir1 subdir2 subdir3 ... : muestra un listado de los archivos y subdirectorios especificados en la lnea de rdenes.
-l muestra un listado en el formato largo, con informacin de permisos, nmero de enlaces asociados al archivo, usuario, grupo, tamao y fecha de ltima modificacin adems del nombre.
-h con -l imprime el tamao de los archivos de forma entendible para los humanos (ej. 1K 234M 2G).
-d muestra solamente el nombre del subdirectorio, sin entrar en l ni dar un listado del contenido.
-t muestra ordenado por la fecha de ltima modificacin.
-c muestra ordenado por la fecha de ltima modificacin del estado del archivo.
-r cuando el listado se hace por orden temporal, los archivos ms recientes van al principio. Si se indica la -r se invierte el orden, mostrando los ms recientes al final.
-L en los enlaces simblicos, muestra los datos del archivo referido en vez de los del link.
-1 muestra el listado en una sola columna. Sin la opcin -1 el listado se muestra en varias columnas, tantas como permita el ancho de la terminal (generalmente controlado con la variable de entorno $COLUMNS).
-i muestra el nmero del i-nodo antes del nombre de archivo. -m muestra los archivos en una lnea y separados por comas.
Myriam Ruiz Pg 14 / 25 -R hace un listado recursivo. Lista primero los archivos del directorio en curso, luego los de los subdirectorios de ste, luego los de los subdirectorios contenidos en ellos (nietos) y as sucesivamente.
-s muestra delante del nombre del fichero el tamao en kilobytes del mismo.
--color muestra cada tipo de archivo de un color distinto: un color para los directorios, otro para los archivos regulares, otro para los enlaces simblicos, otro para los sockets, otro para las tuberas FIFO, etc. Este parmetro no se acepta en todas las versiones de ls y, por supuesto, requiere que la terminal sea capaz de mostrar distintos colores o intensidades.
- a muestra los archivos ocultos.
Ejemplo
Mostrar archivos ocultos, con estilo largo
$ ls -la total 1444 drwxr-xr-x 3 user1 grp1 4096 May 13 22:34 . drwxrwxrwt 56 root root 8192 May 13 22:35 .. -rw-r--r-- 1 user1 grp1 176 May 13 22:29 .data -rw-r--r-- 1 mail bin 40661 May 13 22:27 Manual.txt.gz -rw-r--r-- 1 nobody nogroup 0 May 13 22:26 archivo1.txt -rw-r--r-- 1 root root 825 May 13 22:26 hosts lrwxrwxrwx 1 user1 grp1 5 May 13 22:31 servidores -> hosts -rw-r----- 1 sys sys 1405600 May 13 22:27 syslog.0
Comando rm Permite eliminar un archivo o un directorio
Sintaxis rm [opciones] archivo
Opciones rm archivo Borra el fichero archivo (no puede borrar directorios) rm -f archivo --> No pide confirmacin e ignora los archivos inexistentes. rm -i archivo --> Pide confirmacin al borrar cada fichero rm -r directorio --> Borra el directorio y todo su contenido rm -d directorio --> Borra el directorio con unlink en vez de con rmdir (utilizar preferiblemente rm -r)
Comando cd Cambiar de directorio (entrar o salir)
Myriam Ruiz Pg 15 / 25 Sintaxis cd [opciones] [directorio]
Opciones cd .. -> con espacio y .. regresa a su directorio padre cd / -> Con barra va hacia el directorio raz cd -> Sin opciones ni nombres vuelve al home del usuario cd nombre -> entra al directorio nombre
# 3. Crear una carpeta, visualizar que la carpeta fue creada utilizando el comando ls eliminar la carpeta y utilizar nuevamente ls para asegurarse que fue eliminada. mkdir prueba ls rmdir prueba ls
# 4. Crear una carpeta utilizando la interfaz grfica y utilizar ls para comprobar que la carpeta fue creada. ls carpeta2
# 5. En Linux al igual que en Windows existen archivos y directorios ocultos. Algunos archivos suelen estar ocultos porque no suele ser necesario verlos todo el tiempo. Investigar en internet como utilizar el comando ls para ver los archivos ocultos del Home del usuario (recordamos que el home es el directorio en que estamos cuando se abre una terminal) Pista: una posible bsqueda en google podra ser: mostrar archivos ocultos en linux ls -a # los archivos ocultos aparecen con un punto a la izquierda
# 6. Si utilizamos el comando pwd en el home, vemos que estamos en el directorio /home/alumno. Utilizar cd .. para ir al directorio /home y ver su contenido con ls. Ir al directorio "/" (llamado directorio raz[) y ver su contenido. Usar cd para volver al home. pwd # Present Working Directory cd .. ls cd / cd # sin parmetros vuelve al home
# 7. Utilizar la interfaz grfica para crear un archivo de texto y escribir en l nuestro nombre completo. Para esto utilizar algn algun editor como Pluma, Gedit, SublimeText
# 8. Abrir una terminal y utilizar ls para ver que efectivamente se cre el archivo del punto 7. cd Documentos ls
# 9. Utilizar el comando cat para ver el contenido del archivo del punto 7 cat Ejemplo # lo cre sin extensin y lo mismo lo lee, si tuviera tendra que escribirla tambin
# 10. Utilizar el comando less para ver el contenido del archivo del punto 7
Myriam Ruiz Pg 16 / 25 less Ejemplo # presionar q para salir
# 11. Borrar el archivo creado en el punto 7 desde la lnea de comandos. rm Ejemplo # Los comandos son sensibles a mayscula y minsculas, no sera lo mismo querer borrar Ejemplo que ejemplo
Volver
6. Lenguajes Estticos y Dinmicos
Lenguajes Estticos: En estos, antes de poder ejecutar nuestro programa, se requiere pasar antes por una transformacin del cdigo en un archivo ejecutable, esto se llama Compilacin y Linkeo. En estos lenguajes, si tuviramos algn tipo de error, por ejemplo de sintaxis, nos avisara durante el momento de compilacin.
Lenguajes Dinmicos: No requieren realizar un paso previo de compilacin, ya que esto se realiza automticamente cuando lo vamos a ejecutar. Si tenemos algn error de sintaxis, no podramos saberlo hasta el momento que el programa se est ejecutando.
Volver 7. Fuertemente y dbilmente tipado
Lenguajes Fuertemente Tipados: Requieren que el programador defina siempre que tipo de dato tiene la variable que estn utilizando. Esta caracterstica hace que sea ms fcil testear cuando haya error de tipo de dato. Por ejemplo, esperar ciertos resultados pensando que estamos trabajando con nmeros con decimales, cuando en realidad trabajamos con enteros.
Lenguajes Dbilmente Tipados: No requieren que el programador informe los tipos de datos de las variables, y estos se ajustan automticamente segn reglas propias del lenguaje. Esto brinda una mayor flexibilidad a la hora de programar, pero tambin facilita la posibilidad de errores. Ejemplos de esto son Python y PHP.
Volver
8. Programacin en Groovy 8.1. Qu es Groovy Es un lenguaje de programacin dinmico, orientado a objetos, basado en la mquina virtual Java, que permite mezclar entre un modelo fuertemente tipado y otro dinmicamente tipado.
Pgina de descarga: http://groovy.codehaus.org/Download
Tipearemos nuestro cdigo en la groovyConsole
Myriam Ruiz Pg 17 / 25
Los programas creados en este lenguaje se guardan con extensin .groovy
8.2. Declaracin de variables y Operaciones
Sin tipo de Dato especfico: def num = 0
Con tipo de dato: Integer num = 0
Tipos de datos que se puede utilizar: BigDecimal, Integer, String, Double, BigInteger, etc.
8.3. Sentencias para ingresar y mostrar datos
Ingresar y convertir a entero: variable = System.console().readLine("Mensaje").toInteger()
Mostrar: Se puede mostrar un texto y concatenar con una variable si se quiere: println "Mensaje de salida " + variable
Ejemplo: println "Respuesta: "+ cm1 + "cm son " + pul + " pulgadas"
8.4. Condicionales
If:
if (condicin) { Acciones_cuando_es_verdadera } else { Acciones_cuando_es_falsa }
Myriam Ruiz Pg 18 / 25
Ejemplo: Si la hora es menor a 12 es de maana, sino es de tarde
def hora_actual = new Date().Hours if (hora_actual < 12) { println "es de maana" } else { println "es de tarde" }
Ejemplo: Realizar una funcin llamada Minimo que acepte tres nmeros como parmetros y retorne el ms pequeo de los tres.
if (num1<num2) { if (num1<num3){ return (num1) } else if (num2<num3){ return(num2) } else{ return(num3) } } else if (num1<num3){ return (num3) } else if (num2<num3){ return (num2) } else { return(num3) }
Myriam Ruiz Pg 19 / 25 8.5. Estructuras Repetitiva (While) Se usa cuando el programa tiene que repetir un bloque de instrucciones mientras sea cierta una condicin. Sintaxis: while (condicin) { bloque_a_repetir }
Ejemplo: Hacer un programa que le pida nmeros al usuario hasta que ingrese el nmero cero. Luego debe informar el valor promedio de los nmeros ingresados (sin contar el cero)
def cont=0 def sum=0 def prom=0 def num= System.console().readLine("Ingrese un numero (cero fin) - Ejerc. 2) Promedio sin el cero: ").toInteger() while (num!=0) { sum = sum + num cont = cont+1 num=System.console().readLine("Ingrese un numero (cero fin): ").toInteger() }
8.6. Funciones Una funcin, matemticamente, es una especificacin, una REGLA o CRITERIO, para obtener cierto resultado a partir de datos existentes. En informtica es una idea similar, y la podemos imaginar como una caja negra en la que metemos datos, dentro de esa caja pasa algo, y entonces, de la caja sale un resultado, un producto.
En groovy una funcin se declara de la siguiente manera:
NombreFuncion: es el nombre por el cual de identifica de manera univoca a la funcin Argumento1, argumento 2, etc: Son los parmetros o argumentos de la funcin, o sea los datos que necesita para resolver un problema. cdigo_de_la_funcin: son las instrucciones que resolvern el problema return: Sirve para devolver el resultado al que lleg la funcin
Ejemplo: Hacer una funcin que transforme una distancia de centmetros a pulgadas.
// FUNCION def cm_a_pulgadas (cm){ return (cm*2.4) } // Invoco la funcin, o sea, como la uso println "CONVERSION DE CENTIMETROS A PULGADAS\n" def conti=1 while (conti!=0) { def cm1= System.console().readLine("Ingrese centmetros (solo nmeros con punto decimal): ").toDouble() def pul = cm_a_pulgadas(cm1) println "Respuesta: "+ cm1 + "cm son " + pul + " pulgadas" conti = System.console().readLine("Desea hacer otra comparacion? (0.NO, 1.Si): ").toInteger() } Volver
9. Programacin Orientada a Objetos 9.1. Concepto de Objeto La orientacin a Objetos (OO) es una forma de pensar la resolucin de los problemas en la cual se intenta modelar los elementos y conceptos de la vida real que forman parte del problema, en estructuras de cdigo que interactan entre s. Supongamos que queremos modelar el objeto Auto, que cosas guardaramos de l?
9.2. Propiedades Son las caractersticas propias de los objetos, en el ejemplo del auto, pueden ser el color, la cantidad de puertas, el modelo, el dominio, velocidad etc. Todos los autos pertenecen a la misma Clase, y se dice que cada uno es una Instancia de la clase, es decir que una instancia consiste en un objeto de la clase Auto que tom ciertos valores particulares en sus propiedades.
9.3. Mtodos Son las acciones que puede realizar el objeto. Por ejemplo, el auto puede frenar, acelerar, girar hacia la derecha, etc.
9.4. Eventos Son situaciones que le suceden a los objetos. Por ejemplo: Pasa un peatn, un auto viene en contra mano, el semforo se puso en rojo, etc.
Myriam Ruiz Pg 21 / 25 9.5. Listas
Es una clase de objeto en la que podemos guardar una lista de cosas: de nmeros, de palabras, de otras listas, de objetos, etc.
Caractersticas:
Tiene un nmero finito de elementos Tienen un cierto orden, aunque se refiere al orden de los valores, sino un orden para de creacin, que tambin sirve para poder listarlas. Tiene decena de mtodos y atributos
Ejemplo:
def lista_numeros = [] def num_ingresado = System.console().readLine("Ingrese numero (cero para termiar): ").toInteger() while (num_ingresado!=0){ lista_numeros.add(num_ingresado) num_ingresado = System.console().readLine("Ingrese numero (cero para termiar): ").toInteger() } println "La lista tiene " + lista_numeros.size() + " elementos" println "La lista original es " + lista_numeros
lista_numeros.sort() println "La lista ordenada es " + lista_numeros System.in.read()
Destaco algunos mtodos:
Se crea una lista facia def lista_numeros = []
Se podra crear tambin listas con tems de entrada def Trimestre1 =*Enero,Febrero,Marzo+
Se agrega un tem a la lista lista_numeros.add(tem)
Saber el tamao de la lista lista_numeros.size()
Ordenar una lista lista_numeros.sort()
Mostrar un tem en particular: println Trimestre[1] // Mostrara Febrero, pues empieza de cero
Myriam Ruiz Pg 22 / 25 9.6. Creacin de Objetos
Declarar una clase
class Nombre { Propiedades Metodos }
Extender una clase, o sea, utilizar las propiedades y mtodos de una clase, para definir una nueva clase. La nueva clase Hereda lo de la anterior, y puede sobreescribir (Polimorfismo) algn mtodo o agregar nuevas propiedades o mtodos (Especializacin).
class OtroNombre extends Nombre { Propiedades Metodos }
Ejemplo:
class Persona { def nombre def apellido def Saludar() { "Hola, soy ${nombre}" } }
class Alumno extends Persona { def curso def Saludar(){ "Hola profe, soy ${nombre}" } }
def Per = new Persona(nombre:"Myriam") def Al = new Alumno(nombre:"Juana") println Per.Saludar() println Al.Saludar()
System.in.read()
Como resultado muestra:
Hola, soy Myriam Hola profe, soy Juana
Volver
Myriam Ruiz Pg 23 / 25 10. Testeo 10.1. Qu es el testing El testing consiste en verificar que el programa se ejecuta sin problemas en la mayor cantidad de casos posibles, y si se detecta algn caso en que no funcione como es esperado, dejarlo anotado para que sea solucionado. Se dice que en la mayor cantidad de casos, porque en realidad no existen programas libres de errores.
10.2. Qu hace un Tester Persona encargada de Probar un programa o sistema de acuerdo a parmetros de evaluacin que ya estn predefinidos.
Se suele pensar que el tester solo trabaja en la etapa de Verificacin del desarrollo del software, sin embargo, las tareas de testeo se pueden realizar durante todo el proceso, interactuando el tester con el QA (departamento de Quality Assurance / Aseguramiento de la calidad) e incluso con el cliente.
Se puede decir que el Tester es el intermediario entre el programador y el usuario final, sufriendo un constante tironeo entre los intereses contrapuestos de programadores, rea ventas y de s mismo. Un buen tester llega a dejar en evidencia los errores de otros.
10.3. Que se evala El testeo consiste en evaluar:
Eficacia: Verificar si cumple con el objetivo buscado, Si devuelve o hace lo esperado. Eficiencia: Probar si consume la menor cantidad de recursos posibles. Agilidad: Probar si es fcil de usar, sin son intuitivos. Niveles de Interaccin: Evaluar cmo responde el programa antes las necesidades del usuario. 10.4. Tipos de testeo 10.4.1. Testeo Manual
Un Test Manual consiste en gran parte, en ejecutar la aplicacin y usarla, para verificar el resultado con diferentes tipos de entradas. Cuando estamos codificando solemos hacer algunas pruebas, intentando verificar si el programa hace lo que se pide, pero no probamos que pasa en los casos extremos, o si se usa mal. En cambio cuando estamos testeando realmente el programa ya desarrollado, lo que se intenta es forzar la ruptura, el error. Un ejemplo trivial en casi todas las aplicaciones que hicimos es, testear. Es comn que el que program pruebe inconscientemente solo aquellos casos que sabe funcionarn bien, por lo que se recomienda siempre pedirle a otra persona que lo pruebe por nosotros, si fuimos quienes lo programamos.
10.4.2. Informe
No existe una forma nica de informar los errores, cada empresa puede tener su propio formato de error, o sus propias herramientas de comunicacin para estas tareas. Si hay dilogo constante y directo con el o los desarrolladores, lo ms fcil es mostrarle en vivo y en directo el problema. Pero esto no siempre es posible.
Myriam Ruiz Pg 24 / 25 La idea del informe es proveer al programador con la mayor cantidad de informacin posible para reproducir el problema. Si el programador no puede, por el motivo que sea, ver el mismo problema que el tester, le ser muy difcil poder solucionarlo. Entonces en general un buen reporte de error debe incluir la siguiente informacin Un ttulo, un nombre corto que describa el error lo mejor posible. Un paso a paso, lo ms detallado posible, de cada accin que se debe realizar para que siempre que se siga ese proceso se produzca el error. El detalle de cul fue el resultado incorrecto que se produjo El detalle de cul era el resultado que se esperaba Se puede incluir una sugerencia de cmo podra resolverse el problema
Un ejemplo de esto puede ser el siguiente fragmento de Informe:
#4 Nombre: Ingreso imprevisto de letras cuando se espera nmeros Tipo: Tiempo de Ejecucin Pgina: 27 (se refiere a los ejemplos del apunte del curso) Se produce cuando: Al introducir letras, smbolos o presionar Enter sin haber introducido nada Resultado Errneo: La ejecucin del programa se interrumpe Resultado Esperado: Mostrar el resultado de la suma de los valores ingresados Sugerencia: Validar, estableciendo una condicin para averiguar si lo ingresado es nmero o no, de modo que si no lo es pida que se repita el ingreso.
Estos informes, se pueden hacer con el apoyo de ciertas herramientas, que nos servirn para hacer el seguimiento de los errores. Estas herramientas se suele denominar issue tracking. Algunas de las herramientas ms famosas son Trac, Jira (de pago), Bugzilla, Redmine.
Ej: Uso de GitHub (https://github.com/). Primero Ir al botn Nuevo nmero Escribir Title (Ttulo) y en describir el error en Leave a comment (dejar un comentario)