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 DesvEstandar. Deberás utilizar una lista enlazada para almacenar los N números con los cuales realizarás los cálculos. Al menos dos casos de prueba deberán ser utilizados con los valores mostrados en las siguientes columnas.1 Col.03 Resultados columna 2 Promedio = 60.71 Desviación estándar = 542.4 1657 198.5 229 22. Descomprime la línea base que contiene código que podrás re-utilizar para completar los requerimientos del programa.spssfree.html 2 .9 114 6. Desarrolla un programa en lenguaje Java que permita mostrar el promedio.9 128 19.26 Si tienes dudas de cómo calcular la varianza puedes consultar la siguiente página: http://www.7 624 38.4 230 28. Los valores deberán ser leídos desde un archivo de texto.4 270 65.32 Varianza = 3876 Desviación estándar = 62. Valores Col. Desarrolla el código necesario para mostrar la varianza.6 Varianza = 327214. Los resultados esperados son mostrados a continuación.com/spss/analisis2.2 160 15. Propósito: Desarrollar un programa aplicando el procedimiento del PSP 1. 2.1 PARTE I 1.8 1503 138.2 Resultados columna 1 Promedio = 550.0 591 69. la varianza y la desviación estándar de un conjunto de N números reales.Instrucciones. 4. Realiza pruebas suficientes a tu programa.zip 3. 00 2 Diseño 1 2 2 5.00 lista enlazada.00 Valor planeado acumulado (C+C1) 5.00 95. el código resultante de la parte I describiendo lo realizado y los resultados de la parte II. 1. integra en un solo documento de texto.00 cálculo de promedio. Sustituye las XX por las dos primeras letras del primer nombre.00 3 Codificar 3 5 3 15. 2. Ahora le estás dando seguimiento y hasta la actividad número 5. la Y por la inicial del apellido paterno y la Z por la inicial del apellido materno.00 7 80.00 4 50.00 55..00 10.00 cálculo de desviación estándar 8 Compilación 1 17 8 5.00 cálculo de varianza.00 lectura de archivo de texto. imagina que son los tiempos que planeaste con PROBE. 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. Cierre: Llevar a la práctica un proceso PSP completamente. 5 Codificar 1 11 5 5. Es por ello que es importante no tan solo hacer 3 ..00 10 PostMortem 1 20 10 5.Guarda la actividad con el nombre DMDS_U3_EA_XXYZ.00 Día de Valor Valor término ganado ganado proyectado. 6 Codificar 2 13 6 10. ¿Cuál será el Valor ganado proyectado con los valores que se han obtenido hasta ese momento? (Completar columna de Valor ganado proyectado) PLAN. No olvides consultar los criterios de evaluación de la actividad.PARTE II Instrucciones: observa la siguiente tabla. 4 Codificar 5 10 4 25. 1 2 3 5.00 50.00 25.00 100. Id Actividades Horas Horas Día Valor (A) acumuladas planeado (B) (100*A)/totB (C) 1 Planificación 1 1 1 5.00 9 Pruebas 2 19 9 10.00 10.Envía el archivo al facilitador(a) para recibir retroalimentación.00 6 ? 65. 7 Codificar 3 16 7 15.00 Ya que resolviste la parte I y II de la evidencia.00 25.00 8 85. si no también monitorear su ejecución y cuidar las proyecciones para no desviar las fechas compromiso 4 .planes precisos. mostrarDesviacionEst().leerNumeros("cantidades. cal. cal. 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. } } 5 . cal.EVIDENCIA DE APRENDIZAJE: PSP1.mostrarMedia(). package dmds_u3_ea_pacm.1 Parte 1 Código desarrollado. cal.calculaDesviacion().calculaMedia().txt"). Clase Main. Clase Calculos package dmds_u3_ea_pacm.io. //Declaración del constructor public Calculos() { numeros = new Lista(). private double media. sumatoriaM. desviacion = 0.Scanner. sumatoriaD. import java.util. media = 0. import java. } 6 .hasNextLine()) { aux = sc. while (sc. varianza = 0. import java.io. } //Declaración del método para leer los números del archivo de txt public void leerNumeros(String archivo) { try { String aux = "".nextLine().parseDouble(aux)). numeros. desviacion.agregarNodo(Double. File x = new File(archivo). sumatoriaM = 0. sumatoriaD = 0.FileNotFoundException. Scanner sc = new Scanner(x). varianza.File. public class Calculos { private Lista numeros. } catch (Exception e) { System.getSiguiente() == null) { sumatoriaM += n.getSiguiente()).out.raiz). public void mostrarMedia() { System. } //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.out.raiz). media = sumatoriaM / numeros.println("La media aritmética es: " + redondear(media)). sumatoriaMedia(n. } } //Declaración del método para calcular la media public void calculaMedia() { sumatoriaMedia(numeros.getValor().println("No se reconoce el número"). } else { sumatoriaM += n. } } } 7 . } //Declaración del método para mostrar la media.length(numeros.getValor(). getValor() . System. } } } 8 .pow(n.out. } //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.sqrt(sumatoriaD / (numeros.raiz) .length(numeros. 2). varianza = sumatoriaD / (numeros. desviacion = Math.media.out.media.println("La desviación estándar es: " + redondear(desviacion)). } else { sumatoriaD += Math. sumatoriaDesviacion(n. } //Declaración del método para mostrar la varianza y la desviación public void mostrarDesviacionEst() { System.println("La varianza es: " + redondear(varianza)).getSiguiente() == null) { sumatoriaD += Math.raiz) .//Declaración del método para calcular la varianza y la desviación public void calculaDesviacion() { sumatoriaDesviacion(numeros.getValor() .1)).getSiguiente()). 2).length(numeros.1).raiz).pow(n. return n / 100. n = Math.round(n). } } 9 .//Declaración del método para redondear los valores private double redondear(double n) { n = n * 100. } } 10 . } else { return (false). this. class Lista { //Declaración de variables Nodo raiz.tamaño = 0. int tamaño. */ public boolean vacia() { if (raiz == null) { return (true). } //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.Clase Lista. package dmds_u3_ea_pacm. //Declaración de constructor public Lista() { raiz = null. siguiente. } 11 .tamaño++. //Coloco al nuevo elemento como primero raiz = temporal. this. this. raiz = raiz. } /** * Método para eliminar el primer elemento de la lista */ public void borrarPrimero() { //Corro el puntero al siguiente nodo para borrar el primer elemento./** * 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).siguiente = raiz. //Corro el puntero al siguiente nodo temporal.tamaño--. Nodo actual = raiz. Nodo actual = raiz. 12 .siguiente != null) { anterior = actual.siguiente != null) { anterior = actual. if (pos > 0) { while (k != pos && actual./** * 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. //Itero mientras el nodo siguiente no apunte a nulo while (actual. } anterior. actual = actual.siguiente = null. this.tamaño--. //Creo un índice para saber la posición int k = 0. } /** * Método para borrar elemento en "n" posición */ public void borrarPosicion(int pos) { //Creo variables para identificar la posición del elemento Nodo anterior = raiz.siguiente. } anterior. //Creo variable para almacenar los valores de los nodos Nodo aux = raiz. } return (dato).tamaño--. } } 13 .siguiente.info + "}". System.actual = actual. k++.out. } //Método para obtener el tamaño de la lista.siguiente. this. aux = aux. public int length(Nodo raiz) { return (tamaño).siguiente = actual. //itero mientras auxiliar no apunte a null while (aux != null) { dato += " {" + aux. } } //Método para listar los elementos de la lista public String listar() { //Creo una variable auxiliar para almacenar los datos a listar String dato = "".siguiente.println(" k " + k). } //Declaración de metodos //Método para acceder al valor del nodo public void verNodo() { System.println("{ " + info + "}").Clase Nodo. class Nodo { //Declaración de variables double info. } //Metodo para saber los datos del nodo public double getValor() { return (info).out. public Nodo siguiente. } } 14 . package dmds_u3_ea_pacm. } public Nodo getSiguiente() { return (siguiente). //Declaración del constructor public Nodo(double datos) { info = datos. Valores primera columna. 15 .Comprobación de resultados. Valores segunda columna. Conforme los nodos se van generando. 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. Varianza. empieza a correr el método calculaDesviacion. 16 . se llama al método redondear. se utiliza el método mostrarDesviacionEst. 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. en la cual. Promedio. 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. se va realizando la sumatoria de todos los valores obteniendo de los nodos. Para mostrar el valor. en la cual. El programa recupera datos del archivo llamado “cantidades. Para mostrar el valor. Para obtener el valor de sumatoriaD. 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. se llama al método redondear. 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. al valor del nodo se le resta la media y el resultado se eleva al cuadrado. en la cual. se va realizando la sumatoria de todos los valores obteniendo de los nodos. El programa recupera datos del archivo llamado “cantidades. Una vez que se tienen los valores de la sumatoria de los nodos. se utiliza el método mostrarMedia.txt” y los lee mediante el método leerNumeros que es donde se va formando la lista enlazada. Conforme los nodos se van generando. Conforme los nodos se van generando. se va realizando la sumatoria de todos los valores obteniendo de los nodos. en donde en la variable sumatoriaM se van almacenando los valores de los nodos y de manera recursiva del propio método sumatoriaMedia. Una vez que se tienen los valores de la sumatoria de los nodos. al valor del nodo se le resta la media y el resultado se eleva al cuadrado. empieza a correr el método sumatoriaDesviacion. Desviación estándar. en la cual. Una vez que se tienen los valores de la sumatoria de los nodos. empieza a correr el método calculaMedia. se llama al método redondear. en la cual. se utiliza el método mostrarDesviacionEst. empieza a correr el método calculaDesviacion.txt” y los lee mediante el método leerNumeros que es donde se va formando la lista enlazada. 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. empieza a correr el método sumatoriaDesviacion. Para obtener el valor de sumatoriaD.Descripción de procesos para obtener promedio. varianza y desviación estándar. empieza a correr el método sumatoriaMedia. 1)).length(numeros. public void calculaDesviacion(){ sumatoriaDesviacion(numeros. System.1).getSiguiente()).getSiguiente() == null) { sumatoriaD += Math. } else { sumatoriaD += Math.calculaDesviacion(). sumatoriaDesviacion(n.pow(n.length(numeros. 2). cal.getValor() .raiz). } private void sumatoriaDesviacion(Nodo n){ if (n != null) { if (n. cal.mostrarDesviacionEst(). n = Math. varianza = sumatoriaD / (numeros.sqrt(sumatoriaD / (numeros.txt"). desviacion = Math. } public static void main(String[] args) { Calculos cal = new Calculos().round ( n ) . cal.pow(n.out. cal.println("La desviación estándar es: " + redondear(desviacion)). } 17 .leerNumeros("cantidades.getValor() .println("La varianza es: " + redondear(varianza)). } } } private double redondear(double n){ n = n * 100.media.out.raiz) . } public void mostrarDesviacionEst(){ System.raiz) .media. 2). cal.Código que calcular la varianza y la muestra. return n / 100.mostrarMedia().calculaMedia(). 00 4 50.00 Día de Valor Valor término ganado ganado proyectado.00 cálculo de varianza.00 10.00 Valor planeado acumulado (C+C1) 5.00 18 .00 ¿Cuál será el Valor ganado proyectado con los valores que se han obtenido hasta ese momento? 50.00 cálculo de promedio. 6 Codificar 2 13 6 10.00 25.00 5.00 50.00 10 PostMortem 1 20 10 5.00 95.00 85.00 6 ?50.00 9 Pruebas 2 19 9 10.Parte II.00 lista enlazada.00 80.00 cálculo de desviación estándar 8 Compilación 1 17 8 5. Id Actividades Horas Horas Día Valor (A) acumuladas planeado (B) (100*A)/totB (C) 1 Planificación 1 1 1 5.00 10.00 25.00 55.00 80.00 25.00 100.00 2 Diseño 1 2 2 5. 1 2 3 5. 7 Codificar 3 16 7 15.00 65.00 50. PLAN.00 3 Codificar 3 5 3 15.00 100.00 70.00 50.00 lectura de archivo de texto.00 10.00 60. 4 Codificar 5 10 4 25.00 90. 5 Codificar 1 11 5 5. 3-21). México.100/DS20133/blog/index.php?userid=33563&courseid=56 Universidad Abierta y a Distancia de México. Unidad 3 (págs. Blog UNADMEXICO. U. (2013). L. D. Métricas de desarrollo de software.20. Obtenido de Blog UNADMEXICO: http://207. En U. 19 . México. Unidad 3. Métricas de desarrollo de software.: Secretaría de Educación Pública.249. A.F.Bibliografía Casas. (22 de 12 de 2013).