DMDS_U3_EA_PACM

Share Embed Donate


Short Description

Download DMDS_U3_EA_PACM...

Description

Actividad 3 Unidad 3: “Evidencia de aprendizaje: PSP1.1.”. Nombre del Facilitador: Prof. Lucero Urbina Casas. Nombre del alumno: Paulo C. Casillas Martí nez. Se desarrolla un programa aplicando PSP 1.1

Universidad Abierta y a Distancia de México Carrera: Ingeniería en Desarrollo de Software. 7mo.Cuatrimestre Materia: Métricas de Desarrollo de Software.

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

Índice. Instrucciones. ............................................................................................................................ ............................................................................................................................ 2 EVIDENCIA DE APRENDIZAJE: PSP1.1 ............................................................................................ ............................................................................................ 5 Parte 1 ....................................................................................................................................... ....................................................................................................................................... 5 Código desarrollado. ................................................................................................................. ................................................................................................................. 5 Clase Main. ............................................................................................................................ ............................................................................................................................ 5 Clase Calculos ........................................................................................................................ ........................................................................................................................ 6 Clase Lista. .................................................................................................................. ........................................................................................................................... ......... 10 Clase Nodo. .................................................................... ......................................................................................................................... ..................................................... 14 Comprobación de resultados. ................................................................................................. ................................................................................................. 15 Valores primera columna. .......................................................................................... ................................................................................................... ......... 15 Valores segunda columna. .................................................................................................. .................................................................................................. 15 Descripción de procesos para obtener promedio, varianza y desviación estándar. .......... 16 Código que calcular la varianza y la muestra. ..................................................................... ..................................................................... 17 Parte II. .................................................................................................................................... .................................................................................................................................... 18 Bibliografía ............................................................. .............................................................................................................................. ................................................................. 19

1

Instrucciones. Propósito: 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 desviación estándar de un conjunto de N números reales. Los valores deberán ser leídos desde un archivo de texto. Deberás utilizar una lista enlazada para almacenar los N números con los cuales realizarás los cálculos. 2. Descomprime la línea base que contiene código que podrás re-utilizar para completar los requerimientos del programa. DesvEstandar.zip 3. Desarrolla el código necesario para mostrar la varianza. 4. Realiza pruebas suficientes a tu programa. Al menos dos casos de prueba deberán ser utilizados con los valores mostrados en las siguientes columnas. Los resultados esperados son mostrados a continuación.

Valores Col.1 160 591 114 229 230 270 128 1657 624 1503

Col.2 15.0 69.9 6.5 22.4 28.4 65.9 19.4 198.7 38.8 138.2

Resultados columna 1 Promedio = 550.6 Varianza = 327214.71 Desviación estándar = 542.03 Resultados columna 2 Promedio = 60.32 Varianza = 3876 Desviación estándar = 62.26 Si tienes dudas de cómo calcular la varianza puedes consultar la siguiente página: http://www.spssfree.com/spss/analisis2.html

2

PARTE II Instrucciones: observa la siguiente tabla, imagina que son los tiempos que planeaste con PROBE. Ahora le estás dando seguimiento y hasta la actividad número 5, ¿Cuál 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 (A)

Horas acumuladas (B)

Día

Valor planeado (100*A)/totB (C)

Valor planeado acumulado (C+C1)

Día de término

Valor ganado

1

Planificación

1

1

1

5.00

5.00

1

5.00

2

Diseño

1

2

2

5.00

10.00

2

10.00

3

Codificar lectura de archivo de texto.

3

5

3

15.00

25.00

3

25.00

4

Codificar lista enlazada.

5

10

4

25.00

50.00

4

50.00

5

Codificar cálculo de promedio.

1

11

5

5.00

55.00

6

6

Codificar cálculo de varianza.

2

13

6

10.00

65.00

7

7

Codificar cálculo de desviación estándar

3

16

7

15.00

80.00

8

8

Compilación

1

17

8

5.00

85.00

9

Pruebas

2

19

9

10.00

95.00

10

PostMortem

1

20

10

5.00

100.00

Valor ganado proyectado.

?

Ya que resolviste la parte I y II de la evidencia, integra en un solo documento de texto, el código resultante de la parte I describiendo lo realizado y los resultados de l a 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.- Envía el archivo al facilitador(a) para recibir retroalimentación. No olvides consultar los criterios de evaluación de la actividad.

Cierre: Llevar a la práctica un proceso PSP completamente, te va disciplinando en la generación de datos y uso de los mismos para proyectar la tendencia de actividades futuras en caso de continuar con el mismo ritmo de desempeño. Es por ello que es importante no tan solo hacer

3

planes precisos, si no también monitorear su ejecución y cuidar las proyecciones para no desviar las fechas compromiso

4

EVIDENCIA DE APRENDIZAJE: PSP1.1 Parte 1 Código 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(); } }

5

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; //Declaración del constructor public Calculos() { numeros = new Lista(); media = 0; desviacion = 0; varianza = 0; sumatoriaM = 0; sumatoriaD = 0; } //Declaración del método para leer los números 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)); }

6

} catch (Exception e) { System.out.println("No se reconoce el número"); } } //Declaración del método para calcular la media public void calculaMedia() { sumatoriaMedia(numeros.raiz); media = sumatoriaM / numeros.length(numeros.raiz); } //Declaración del método para mostrar la media. public void mostrarMedia() { System.out.println("La media aritmética es: " + redondear(media)); } //Declaración del método para que se vayan sumando los números 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()); } } }

7

//Declaración del método para calcular la varianza y la desviación public void calculaDesviacion() { sumatoriaDesviacion(numeros.raiz); varianza = sumatoriaD / (numeros.length(numeros.raiz) - 1); desviacion = Math.sqrt(sumatoriaD / (numeros.length(numeros.raiz) - 1)); } //Declaración del método para mostrar la varianza y la desviación public void mostrarDesviacionEst() { System.out.println("La varianza es: " + redondear(varianza)); System.out.println("La desviación estándar es: " + redondear(desviacion));

} //Declaración del método para que se vayan sumando los números y obtener la desviación 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()); } } }

8

//Declaración del método para redondear los valores private double redondear(double n) { n = n * 100; n = Math.round(n); return n / 100; } }

9

Clase Lista. package dmds_u3_ea_pacm; class Lista { //Declaración de variables Nodo raiz; int tamaño;

//Declaración de constructor public Lista() { raiz = null; this.tamaño = 0; }

//Declaración de métodos /** * Método para saber si la lista está vacía * * @return true si está vacía y falsa si tiene elementos. */ public boolean vacia() { if (raiz == null) { return (true); } else { return (false); } }

10

/** * Método para insertar elementos al inicio de la lista * * @param dato al inicio de la lista */ public void agregarNodo(double dato) { //Creación 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.tamaño++;

} /** * Método 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.tamaño--; }

11

/** * Método 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.tamaño--; } /** * Método para borrar elemento en "n" po sición */ public void borrarPosicion(int pos) { //Creo variables para identificar la posición del elemento Nodo anterior = raiz; Nodo actual = raiz; //Creo un índice para saber la posición 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.tamaño--; } }

//Método 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); } //Método para obtener el tamaño de la lista. public int length(Nodo raiz) { return (tamaño); } }

13

Clase Nodo. package dmds_u3_ea_pacm; class Nodo { //Declaración de variables double info; public Nodo siguiente;

//Declaración del constructor public Nodo(double datos) { info = datos; } //Declaración de metodos //Método 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

Comprobación de resultados. Valores primera columna.

Valores segunda columna.

15

Descripción de procesos para obtener promedio, varianza y desviación estándar.

Promedio. El programa recupera datos del archivo llamado “cantidades.txt” y los lee mediante el método leerNumeros que es donde se va formando la lista enlazada. Conforme los nodos se van generando, empieza a correr el método sumatoriaMedia, en donde en la variable sumatoriaM se van almacenando los valores de los nodos y de manera recursiva del propio método 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 método 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 método mostrarMedia, en la cual, se llama al método redondear.

Varianza. El programa recupera datos del archivo llamado “cantidades.txt” y los lee mediante el método leerNumeros que es donde se va formando la lista enlazada. Conforme los nodos se van generando, empieza a correr el método 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 método 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 método 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 método mostrarDesviacionEst, en la cual, se llama al método redondear.

Desviación estándar. El programa recupera datos del archivo llamado “cantidades.txt” y los lee mediante el método leerNumeros que es donde se va formando la lista enlazada. Conforme los nodos se van generando, empieza a correr el método 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 método 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 método calculaDesviacion, en la cual, en la variable desviacion se determina el resultado sacando la raíz cuadrada de la variable sumatoriaD entre el tamaño de la lista menos 1. Para mostrar el valor, se utiliza el método mostrarDesviacionEst, en la cual, se llama al método redondear.

16

Código 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 desviación estándar 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 (A)

Horas acumuladas (B)

Día

Valor planeado (100*A)/totB (C)

Valor planeado acumulado (C+C1)

Día de término

Valor ganado

Valor ganado proyectado.

1

Planificación

1

1

1

5.00

5.00

1

5.00

5.00

2

Diseño

1

2

2

5.00

10.00

2

10.00

10.00

3

Codificar lectura de archivo de texto.

3

5

3

15.00

25.00

3

25.00

25.00

4

Codificar lista enlazada.

5

10

4

25.00

50.00

4

50.00

50.00

5

Codificar cálculo de promedio.

1

11

5

5.00

55.00

6

?50.00

50.00

6

Codificar cálculo de varianza.

2

13

6

10.00

65.00

60.00

7

Codificar cálculo de desviación estándar

3

16

7

15.00

80.00

70.00

8

Compilación

1

17

8

5.00

85.00

80.00

9

Pruebas

2

19

9

10.00

95.00

90.00

10

PostMortem

1

20

10

5.00

100.00

100.00

¿Cuál será el Valor ganado proyectado con los valores que se han obtenido hasta ese momento? 50.00

18

Bibliografía 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 México. (2013). Métricas de desarrollo de software. Unidad 3. En U. A. México, Métricas de desarrollo de software. Unidad 3 (págs. 3-21). México, D.F.: Secretaría de Educación Pública.

19

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF