You are on page 1of 20

Actividad 3 Unidad 3: Evidencia de aprendizaje: PSP1.1..

Nombre del Facilitador: Prof. Lucero Urbina Casas. Nombre del alumno: Paulo C. Casillas Martnez. Se desarrolla un programa aplicando PSP 1.1

Universidad Abierta y a Distancia de Mxico Carrera: Ingeniera en Desarrollo de Software. 7mo.Cuatrimestre Materia: Mtricas de Desarrollo de Software.

Grupo: DS-DMDS-1303-001
29/12/2013

ndice.
Instrucciones. ............................................................................................................................ 2 EVIDENCIA DE APRENDIZAJE: PSP1.1 ............................................................................................ 5 Parte 1 ....................................................................................................................................... 5 Cdigo desarrollado. ................................................................................................................. 5 Clase Main. ............................................................................................................................ 5 Clase Calculos ........................................................................................................................ 6 Clase Lista. ........................................................................................................................... 10 Clase Nodo. ......................................................................................................................... 14 Comprobacin de resultados. ................................................................................................. 15 Valores primera columna. ................................................................................................... 15 Valores segunda columna. .................................................................................................. 15 Descripcin de procesos para obtener promedio, varianza y desviacin estndar. .......... 16 Cdigo que calcular la varianza y la muestra. ..................................................................... 17 Parte II. .................................................................................................................................... 18 Bibliografa .............................................................................................................................. 19

Instrucciones.
Propsito: Desarrollar un programa aplicando el procedimiento del PSP 1.1 PARTE I 1. Desarrolla un programa en lenguaje Java que permita mostrar el promedio, la varianza y la desviacin estndar de un conjunto de N nmeros reales. Los valores debern ser ledos desde un archivo de texto. Debers utilizar una lista enlazada para almacenar los N nmeros con los cuales realizars los clculos. 2. Descomprime la lnea base que contiene cdigo que podrs re-utilizar para completar los requerimientos del programa. DesvEstandar.zip 3. Desarrolla el cdigo necesario para mostrar la varianza. 4. Realiza pruebas suficientes a tu programa. Al menos dos casos de prueba debern ser utilizados con los valores mostrados en las siguientes columnas. Los resultados esperados son mostrados a continuacin. Valores Col.1 Col.2 160 15.0 591 69.9 114 6.5 229 22.4 230 28.4 270 65.9 128 19.4 1657 198.7 624 38.8 1503 138.2

Resultados columna 1 Promedio = 550.6 Varianza = 327214.71 Desviacin estndar = 542.03

Resultados columna 2 Promedio = 60.32 Varianza = 3876 Desviacin estndar = 62.26 Si tienes dudas de cmo calcular la varianza puedes consultar la siguiente pgina: http://www.spssfree.com/spss/analisis2.html

PARTE II Instrucciones: observa la siguiente tabla, imagina que son los tiempos que planeaste con PROBE. Ahora le ests dando seguimiento y hasta la actividad nmero 5, Cul ser el Valor ganado proyectado con los valores que se han obtenido hasta ese momento? (Completar columna de Valor ganado proyectado) PLAN. Id Actividades Horas Horas Da Valor (A) acumuladas planeado (B) (100*A)/totB (C) 1 Planificacin 1 1 1 5.00 2 Diseo 1 2 2 5.00 3 Codificar 3 5 3 15.00 lectura de archivo de texto. 4 Codificar 5 10 4 25.00 lista enlazada. 5 Codificar 1 11 5 5.00 clculo de promedio. 6 Codificar 2 13 6 10.00 clculo de varianza. 7 Codificar 3 16 7 15.00 clculo de desviacin estndar 8 Compilacin 1 17 8 5.00 9 Pruebas 2 19 9 10.00 10 PostMortem 1 20 10 5.00

Valor planeado acumulado (C+C1) 5.00 10.00 25.00

Da de Valor Valor trmino ganado ganado proyectado. 1 2 3 5.00 10.00 25.00

50.00

50.00

55.00

65.00

80.00

85.00 95.00 100.00

Ya que resolviste la parte I y II de la evidencia, integra en un solo documento de texto, el cdigo resultante de la parte I describiendo lo realizado y los resultados de la parte II. 1.- Guarda la actividad con el nombre DMDS_U3_EA_XXYZ. Sustituye las XX por las dos primeras letras del primer nombre, la Y por la inicial del apellido paterno y la Z por la inicial del apellido materno. 2.- Enva el archivo al facilitador(a) para recibir retroalimentacin. No olvides consultar los criterios de evaluacin de la actividad. Cierre: Llevar a la prctica un proceso PSP completamente, te va disciplinando en la generacin de datos y uso de los mismos para proyectar la tendencia de actividades futuras en caso de continuar con el mismo ritmo de desempeo. Es por ello que es importante no tan solo hacer

planes precisos, si no tambin monitorear su ejecucin y cuidar las proyecciones para no desviar las fechas compromiso

EVIDENCIA DE APRENDIZAJE: PSP1.1


Parte 1
Cdigo desarrollado.

Clase Main.
package dmds_u3_ea_pacm; public class DMDS_U3_EA_PACM { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Calculos cal = new Calculos(); cal.leerNumeros("cantidades.txt"); cal.calculaMedia(); cal.mostrarMedia(); cal.calculaDesviacion(); cal.mostrarDesviacionEst(); } }

Clase Calculos
package dmds_u3_ea_pacm; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Calculos { private Lista numeros; private double media, desviacion, varianza, sumatoriaM, sumatoriaD; //Declaracin del constructor public Calculos() { numeros = new Lista(); media = 0; desviacion = 0; varianza = 0; sumatoriaM = 0; sumatoriaD = 0; } //Declaracin del mtodo para leer los nmeros del archivo de txt public void leerNumeros(String archivo) { try { String aux = ""; File x = new File(archivo); Scanner sc = new Scanner(x); while (sc.hasNextLine()) { aux = sc.nextLine(); numeros.agregarNodo(Double.parseDouble(aux)); }

} catch (Exception e) { System.out.println("No se reconoce el nmero"); } } //Declaracin del mtodo para calcular la media public void calculaMedia() { sumatoriaMedia(numeros.raiz); media = sumatoriaM / numeros.length(numeros.raiz); } //Declaracin del mtodo para mostrar la media. public void mostrarMedia() { System.out.println("La media aritmtica es: " + redondear(media)); } //Declaracin del mtodo para que se vayan sumando los nmeros y obtener la media private void sumatoriaMedia(Nodo n) { if (n != null) { if (n.getSiguiente() == null) { sumatoriaM += n.getValor(); } else { sumatoriaM += n.getValor(); sumatoriaMedia(n.getSiguiente()); } } }

//Declaracin del mtodo para calcular la varianza y la desviacin public void calculaDesviacion() { sumatoriaDesviacion(numeros.raiz); varianza = sumatoriaD / (numeros.length(numeros.raiz) - 1); desviacion = Math.sqrt(sumatoriaD / (numeros.length(numeros.raiz) - 1)); } //Declaracin del mtodo para mostrar la varianza y la desviacin public void mostrarDesviacionEst() { System.out.println("La varianza es: " + redondear(varianza)); System.out.println("La desviacin estndar es: " + redondear(desviacion));

} //Declaracin del mtodo para que se vayan sumando los nmeros y obtener la desviacin private void sumatoriaDesviacion(Nodo n) { if (n != null) { if (n.getSiguiente() == null) { sumatoriaD += Math.pow(n.getValor() - media, 2); } else { sumatoriaD += Math.pow(n.getValor() - media, 2); sumatoriaDesviacion(n.getSiguiente()); } } }

//Declaracin del mtodo para redondear los valores private double redondear(double n) { n = n * 100; n = Math.round(n); return n / 100; } }

Clase Lista.
package dmds_u3_ea_pacm; class Lista { //Declaracin de variables Nodo raiz; int tamao;

//Declaracin de constructor public Lista() { raiz = null; this.tamao = 0; }

//Declaracin de mtodos /** * Mtodo para saber si la lista est vaca * * @return true si est vaca y falsa si tiene elementos. */ public boolean vacia() { if (raiz == null) { return (true); } else { return (false); } }

10

/** * Mtodo para insertar elementos al inicio de la lista * * @param dato al inicio de la lista */ public void agregarNodo(double dato) { //Creacin de variable temporal para almacenar Nodo temporal = new Nodo(dato); //Corro el puntero al siguiente nodo temporal.siguiente = raiz; //Coloco al nuevo elemento como primero raiz = temporal; this.tamao++;

} /** * Mtodo para eliminar el primer elemento de la lista */ public void borrarPrimero() { //Corro el puntero al siguiente nodo para borrar el primer elemento. raiz = raiz.siguiente; this.tamao--; }

11

/** * Mtodo para borrar el ltimo elemento */ public void borrarUltimo() { //Creo variables que me ayuden a identificar el nodo anterior y el actual Nodo anterior = raiz; Nodo actual = raiz; //Itero mientras el nodo siguiente no apunte a nulo while (actual.siguiente != null) { anterior = actual; actual = actual.siguiente; } anterior.siguiente = null; this.tamao--; } /** * Mtodo para borrar elemento en "n" posicin */ public void borrarPosicion(int pos) { //Creo variables para identificar la posicin del elemento Nodo anterior = raiz; Nodo actual = raiz; //Creo un ndice para saber la posicin int k = 0; if (pos > 0) { while (k != pos && actual.siguiente != null) { anterior = actual;

12

actual = actual.siguiente; k++; System.out.println(" k " + k); } anterior.siguiente = actual.siguiente; this.tamao--; } }

//Mtodo para listar los elementos de la lista public String listar() { //Creo una variable auxiliar para almacenar los datos a listar String dato = ""; //Creo variable para almacenar los valores de los nodos Nodo aux = raiz; //itero mientras auxiliar no apunte a null while (aux != null) { dato += " {" + aux.info + "}"; aux = aux.siguiente; } return (dato); } //Mtodo para obtener el tamao de la lista. public int length(Nodo raiz) { return (tamao); } }

13

Clase Nodo.
package dmds_u3_ea_pacm; class Nodo { //Declaracin de variables double info; public Nodo siguiente;

//Declaracin del constructor public Nodo(double datos) { info = datos; } //Declaracin de metodos //Mtodo para acceder al valor del nodo public void verNodo() { System.out.println("{ " + info + "}"); } //Metodo para saber los datos del nodo public double getValor() { return (info); } public Nodo getSiguiente() { return (siguiente); } }

14

Comprobacin de resultados.
Valores primera columna.

Valores segunda columna.

15

Descripcin de procesos para obtener promedio, varianza y desviacin estndar.


Promedio. El programa recupera datos del archivo llamado cantidades.txt y los lee mediante el mtodo leerNumeros que es donde se va formando la lista enlazada. Conforme los nodos se van generando, empieza a correr el mtodo sumatoriaMedia, en donde en la variable sumatoriaM se van almacenando los valores de los nodos y de manera recursiva del propio mtodo sumatoriaMedia, se va realizando la sumatoria de todos los valores obteniendo de los nodos. Una vez que se tienen los valores de la sumatoria de los nodos, empieza a correr el mtodo calculaMedia, en la cual, en la variable media se determina el resultado a partir de los valores que tiene la variable sumatoriaM dividido entre el total de nodos de la lista. Para mostrar el valor, se utiliza el mtodo mostrarMedia, en la cual, se llama al mtodo redondear. Varianza. El programa recupera datos del archivo llamado cantidades.txt y los lee mediante el mtodo leerNumeros que es donde se va formando la lista enlazada. Conforme los nodos se van generando, empieza a correr el mtodo sumatoriaDesviacion, en donde en la variable sumatoriaD se van almacenando los valores de la varianza de cada uno de los nodos y de manera recursiva del propio mtodo sumatoriaDesviacion, se va realizando la sumatoria de todos los valores obteniendo de los nodos. Para obtener el valor de sumatoriaD, al valor del nodo se le resta la media y el resultado se eleva al cuadrado. Una vez que se tienen los valores de la sumatoria de los nodos, empieza a correr el mtodo calculaDesviacion, en la cual, en la variable varianza se determina su resultado a partir de los valores que tiene la variable sumatoriaD dividido entre el total de nodos de la lista menos 1. Para mostrar el valor, se utiliza el mtodo mostrarDesviacionEst, en la cual, se llama al mtodo redondear.

Desviacin estndar. El programa recupera datos del archivo llamado cantidades.txt y los lee mediante el mtodo leerNumeros que es donde se va formando la lista enlazada. Conforme los nodos se van generando, empieza a correr el mtodo sumatoriaDesviacion, en donde en la variable sumatoriaD se van almacenando los valores de la varianza de cada uno de los nodos y de manera recursiva del propio mtodo sumatoriaDesviacion, se va realizando la sumatoria de todos los valores obteniendo de los nodos. Para obtener el valor de sumatoriaD, al valor del nodo se le resta la media y el resultado se eleva al cuadrado. Una vez que se tienen los valores de la sumatoria de los nodos, empieza a correr el mtodo calculaDesviacion, en la cual, en la variable desviacion se determina el resultado sacando la raz cuadrada de la variable sumatoriaD entre el tamao de la lista menos 1. Para mostrar el valor, se utiliza el mtodo mostrarDesviacionEst, en la cual, se llama al mtodo redondear.

16

Cdigo que calcular la varianza y la muestra.


public void calculaDesviacion(){ sumatoriaDesviacion(numeros.raiz); varianza = sumatoriaD / (numeros.length(numeros.raiz) - 1); desviacion = Math.sqrt(sumatoriaD / (numeros.length(numeros.raiz) - 1)); } public void mostrarDesviacionEst(){ System.out.println("La varianza es: " + redondear(varianza)); System.out.println("La desviacin estndar es: " + redondear(desviacion)); } private void sumatoriaDesviacion(Nodo n){ if (n != null) { if (n.getSiguiente() == null) { sumatoriaD += Math.pow(n.getValor() - media, 2); } else { sumatoriaD += Math.pow(n.getValor() - media, 2); sumatoriaDesviacion(n.getSiguiente()); } } } private double redondear(double n){ n = n * 100; n = Math.round ( n ) ; return n / 100; }

public static void main(String[] args) { Calculos cal = new Calculos(); cal.leerNumeros("cantidades.txt"); cal.calculaMedia(); cal.mostrarMedia(); cal.calculaDesviacion(); cal.mostrarDesviacionEst(); }

17

Parte II.

PLAN. Id Actividades Horas Horas Da Valor (A) acumuladas planeado (B) (100*A)/totB (C) 1 Planificacin 1 1 1 5.00 2 Diseo 1 2 2 5.00 3 Codificar 3 5 3 15.00 lectura de archivo de texto. 4 Codificar 5 10 4 25.00 lista enlazada. 5 Codificar 1 11 5 5.00 clculo de promedio. 6 Codificar 2 13 6 10.00 clculo de varianza. 7 Codificar 3 16 7 15.00 clculo de desviacin estndar 8 Compilacin 1 17 8 5.00 9 Pruebas 2 19 9 10.00 10 PostMortem 1 20 10 5.00

Valor planeado acumulado (C+C1) 5.00 10.00 25.00

Da de Valor Valor trmino ganado ganado proyectado. 1 2 3 5.00 10.00 25.00 5.00 10.00 25.00

50.00

50.00

50.00

55.00

?50.00

50.00

65.00

60.00

80.00

70.00

85.00 95.00 100.00

80.00 90.00 100.00

Cul ser el Valor ganado proyectado con los valores que se han obtenido hasta ese momento? 50.00

18

Bibliografa
Casas, L. U. (22 de 12 de 2013). Blog UNADMEXICO. Obtenido de Blog UNADMEXICO: http://207.249.20.100/DS20133/blog/index.php?userid=33563&courseid=56 Universidad Abierta y a Distancia de Mxico. (2013). Mtricas de desarrollo de software. Unidad 3. En U. A. Mxico, Mtricas de desarrollo de software. Unidad 3 (pgs. 3-21). Mxico, D.F.: Secretara de Educacin Pblica.

19

You might also like