Facultad de Ingeniería

Programa de Ingeniería de Sistemas
Algoritmos
2014

CASO DE ESTUDIO: ESTADÍSTICAS
POBLACIÓN APTA PARA VOTAR EN
COLOMBIA (PARTE I)
EC3: Simular procesos mediante el uso de un lenguaje de programación de alto nivel,
teniendo una visión global de buenas prácticas a utilizar en las etapas para resolver
problemas de ingeniería.

Semana Saber Hacer Ser

12 ● Concepto de ● Analiza caso 8b de estudio ● Proactivo al analizar el
reuso de código. propuesto. caso
● Conceptos de ● Aplica pruebas unitarias para Creativo al realizar la
pruebas. verificar el cumplimiento de abstracción para la
● Tipos de errores. los requerimientos. selección de los tipos
● Casos de prueba. ● Reduce el número de fallos de datos correctos.
● Licencias de uso. del algoritmo. ● Disciplinado para
● Elabora código fuente legible revisar y analizar
y comprensible. pruebas de
● Hace que el software se integración.
comporte de manera ● Creativo a la hora de
predecible. solucionar errores de
● Resuelve el caso utilizando integración.
estructuras de datos,
instrucciones de control,
manejando técnicas de
reuso de código y
especificando la licencia
para su uso.

CE12: Identifica el tipo de licencia para usar, modificar o distribuir bloques de código.

● Los señores de la Registraduría Nacional desean conocer las estadísticas en cualquier momento sin aún haber culminado o cerrado el proceso de escrutinio. ● Se debe elaborar un menú para gestionar la información.3): Contexto del caso: . ● Suponga que en el país sólo hay 100 personas aptas para votar. ● Los datos de las personas se deben manejar con vectores. ● El número total de personas que no pueden votar. 2 si es femenino) Se desea saber: ● El número de hombres que pueden votar. ● El número total de personas que pueden votar. Tenga en cuenta los siguientes lineamientos: ● Solo pueden votar los que tengan 18 años cumplidos ó más. El programa de computador debe permitir leer los siguientes datos para un número desconocido de personas: ● Documento de identidad de la persona ● Apellidos de la persona ● Nombres de la persona ● Edad de la persona ● Sexo (1 si es masculino. Facultad de Ingeniería Programa de Ingeniería de Sistemas Algoritmos 2014 1. _____________________________________ Escoja opción (1 . ● El número de mujeres que pueden votar. _____________________________________ GESTIÓN INFORMACIÓN PERSONAS APTAS PARA VOTAR EN COLOMBIA _____________________________________ 1) Capturar datos de una persona 2) Generar informe estadístico 3) Terminar y salir del programa. ENUNCIADO La Registraduría Nacional Colombiana nos ha contratado para que le elaboremos un producto software con los factores mínimos de calidad que la Ingeniería de Software recomienda se deben en tener en cuenta durante el desarrollo de programas.

por doble cedulación y por falsa identidad. Con la información recolectada y generada por este producto software. 2. La Registraduría Nacional del Estado Civil detectó que hubo bajas en el último censo utilizado para el proceso de elecciones que se celebraron en el año 2014. la Registraduría pretende designar los jurados de votación y publicar las listas de los ciudadanos seleccionados para trabajar en esa labor. región andina. la Registraduría Nacional está interesada en realizar un censo electoral para actualizar la información de las personas aptas para votar en Antioquia. también busca apoyar una estrategia que estimule la iniciativa de los ciudadanos para se tenga más votos y se minimice el porcentaje de abstencionismo electoral. así mismo. Las variables simples utilizadas son: Nombre de la variable Descripción de la función Tipo de dato numero_total_personas Variable contador que se inicializa Entero (int) en cero y se utiliza para determina cuántos personas se han registrado en el sistema en un momento dado (aptas más no aptas para votar) personas_aptas_para_votar Variable contador que se inicializa Entero (int) en cero y se utiliza para determinar el número total de personas que pueden votar personas_no_aptas_para_vota Variable contador que se inicializa Entero (int) r en cero y se utiliza para determinar el número total de personas que no pueden votar . Las bajas en las personas se presentaron por pérdida o suspensión de los derechos políticos. Amazonía. Orinoquía y las costas Caribe y Pacífica. Por lo anterior. documentos cancelados de ciudadanos fallecidos. Facultad de Ingeniería Programa de Ingeniería de Sistemas Algoritmos 2014 Las próximas elecciones regionales en Colombia se realizan en octubre de 2015. ESTRUCTURA DE DATOS Este programa requiere de variables simples y estructuradas (arreglos unidimensionales o vectores). entre otros. eje cafetero.

Facultad de Ingeniería Programa de Ingeniería de Sistemas Algoritmos 2014 Nombre de la variable Descripción de la función Tipo de dato numero_hombres_aptos Variable contador que se inicializa Entero (int) en cero y se utiliza para determinar el número de hombres que pueden votar numero_mujeres_aptas Variable contador que se inicializa Entero (int) en cero y se utiliza para determinar el número de mujeres que pueden votar posicion_ultimo Apunta a la posición del vector Entero (int) donde se debe guardar los datos capturados de la última persona registrada en el sistema opcion Utiliza para capturar la opción Entero (int) seleccionada en el menú sw Variable de control que se utiliza Cadena para corroborar que el usuario no dio la orden de salir del programa en forma accidental Los vectores utilizados son: Nombre del vector Descripción del contenido Tipo de dato documento_identidad Documento de identidad de la Cadena: Está compuesto de persona números pero no se va realizar ninguna operación aritmética con ellos apellidos Apellidos de la persona Cadena nombre Nombres de la persona Cadena edad Edad de la persona en años Entero (int) sexo Sexo (1 si es masculino. 2 si Cadena: Está compuesto de es femenino) números pero no se va realizar ninguna operación aritmética con ellos .

REQUERIMIENTOS FUNCIONALES RF1: El programa deberá procesar todos los datos de entrada y generar el siguiente informe estadístico. numero_mujeres_aptas print "El número total de personas que pueden votar: ". etc) ● Aunque el tamaño (número de elementos) de los vectores puede ser dinámico. Los datos de salida: print "Informe de Personas Aptas para Votar en Colombia:" print "El número de hombres que pueden votar: ". en este caso se podrán manejará máximo hasta 100 elementos (personas). entero. 2 si es femenino): ”)) INTERFACE DE USUARIO: . 3. personas_aptas_para_votar print "El número total de personas que no pueden votar: ". numero_hombres_aptos print "El número de mujeres que pueden votar: ". Facultad de Ingeniería Programa de Ingeniería de Sistemas Algoritmos 2014 Ver siguiente tabla de ejemplo. Tenga en cuenta lo siguiente: ● En la misma posición de cada vector se registra información de la misma persona ● Cada vector manejará un solo tipo de dato (cadena. personas_no_aptas_para_votar RF2: El programa debe permitir al usuario capturar desde el teclado los siguientes datos de cada persona: documento_identidad[posicion] = int(input("Documento de identidad de la persona: ")) apellidos[posicion_ultimo] = int(input("Apellidos de la persona: ”)) nombre[posicion_ultimo] = int(input("Nombres de la persona: ”)) edad[posicion_ultimo] = int(input("Edad (en años) de la persona: ”)) sexo[posicion_ultimo] = int(input("Sexo (1 si es masculino. ● El número exacto de elementos en el vector se determina con la variable numero_total_personas.

sin embargo. sí la persona tiene una edad inferior a 18 años. Desde el punto de vista de gestión. el programa debe: Ayudar a comprender la solución del problema. Facultad de Ingeniería Programa de Ingeniería de Sistemas Algoritmos 2014 RF3: El programa se comunicará con el usuario por medio de una interfaz compuesta por un menú de 3 opciones. Y desde el punto de vista de los ingenieros de Software. el programa mostrará el mensaje en pantalla y regresará nuevamente al menú: print "Persona no apta para votar. el programa mostrará el mensaje de error "Opción seleccionada no existe…” y regresará nuevamente al menú. El menú se verá en pantalla de la siguiente manera: _____________________________________ GESTIÓN INFORMACIÓN PERSONAS APTAS PARA VOTAR EN COLOMBIA _____________________________________ 1) Capturar datos de una persona 2) Generar informe estadístico 3) Terminar y salir del programa. _____________________________________ Escoja opción (1 . Permitir la reutilización. Edad inferior a 18 años…” RF5: El programa debe garantizar el nivel de calidad del producto final requerido por el cliente o usuario final. ANÁLISIS . A.3): Desde el menú se deben implementar los siguientes controles: ● El usuario solo podrá terminar la ejecución del programa seleccionando la opción 3. Facilitar el mantenimiento del producto final. print "Opción seleccionada no existe…” RF4: En el momento en que el usuario seleccione la opción 1 (Capturar datos de una persona). 2 o 3. ● En caso que el usuario seleccione una opción diferente a la 1. REQUERIMIENTOS INSTRUCCIONALES A continuación damos solución al problema teniendo en cuenta las etapas necesarias para el Ciclo de vida de Software. 4. sus datos se deben registrar en los vectores porque el informe general también debe proporcionar estas estadísticas. el programa debe facilitar la evaluación de resultados y cumplimiento de objetivos.

Interoperabilidad. ● La documentación del código fuente de un programa estará provista de todas las definiciones. Se utilizarán nombres descriptivos y explicación de cada variable. Para la elaboración del producto (programa = sentencias + datos) se implementarán los Factores de calidad de McCall y Cavano para poder evaluar las métricas de calidad establecidas por la Registraduría Nacional. así como el mantenimiento y soporte del sistema en el futuro. como son: Fácil y cómodo de manejar. B. y reusabilidad y mantenimiento del producto final. y se entrega el producto a satisfacción del cliente. comentarios y explicaciones necesarias para acompañar una excelente detección y corrección de errores. Para dar solución al problema presentado en este caso de estudio. La solución final requerida por la Registraduría aplicando los siguientes principios del CVDS: ● Diseño modular y estructurado para facilitar la identificación y corrección de errores. El programa utilizará funciones. Flexibilidad. se realiza la prueba definitiva y se procede a la aprobación por parte del cliente. se hará especial énfasis en las etapas de implementación y soporte del CVDS (Ciclo de Vida de Desarrollo de Sistemas). componentes y otros elementos del programa. En general. se debe especificar las estrategias para dar una solución eficiente. datos. El programa desarrollado se someterá a pruebas exhaustivas antes de ser puestos en producción. . Al realizar la síntesis de las estructuras de dato y los requerimientos funcionales se está obteniendo la información necesaria y suficiente para afrontar su respectiva solución. comprobando el dominio o contexto en el cual se encuentra dicho problema. Facilidad de mantenimiento. para facilitar la comprensión de la solución y se podrá aplicar el concepto de reusabilidad. de tal forma determinar con antelación si el sistema/producto funcionará cumpliendo con lo esperado. Facultad de Ingeniería Programa de Ingeniería de Sistemas Algoritmos 2014 En esta etapa se debe comprender de forma detallada cual es la problemática a resolver. Facilidad de prueba. Después de realizadas todas las pruebas requeridas y corregidos todos los errores. Reusabilidad. módulos. se continúa con la puesta en marcha del proyecto. DISEÑO Después de obtener la información necesaria para solucionar la problemática a resolver.

3. Básicamente el programa se divide en tres (3) grandes módulos. La función generar_informe_estadistico(): se utiliza para procesar los datos de las personas capturados en los vectores. pero es opcional. Uso de menús y de mensajes de errores y otros que guían la adecuada utilización del software. IMPLEMENTACIÓN En esta etapa se procede a desarrollar la solución mediante un programa utilizando la herramienta computacional determinada. Usando funciones en Python """ Programa: votaciones. descriptiva y de fácil manejo. generar el informe solicitado. Se podría utilizar una función. a saber: 1. En este bloque de instrucciones se controla el menú principal y se invocan las dos funciones del programa. C. Facultad de Ingeniería Programa de Ingeniería de Sistemas Algoritmos 2014 ● Diseño de una interfaz de usuario limpia. e imprimirlo. El siguiente programa (código fuente) ha sido elaborado teniendo en cuenta la estrategia de diseño especificada en la etapa de diseño.py Autor: Programa Ingeniería de Sistemas UTB Fecha de creación: 2P14 Descripción del programa: Programa de varias líneas""" # Declaración de los arreglos documento_identidad = [ 0 for i in range(100)] apellidos = [ 0 for i in range(100)] nombre = [ 0 for i in range(100)] edad = [ 0 for i in range(100)] sexo = [ 0 for i in range(100)] # Inicialización de la variable contador # Para determinar cuántos personas se registran en el sistema . El cuerpo principal del programa. 2. ● Aplicación de las métricas de calidad con los factores establecidos en el modelo de calidad de McCall y Cavano. La función capturar_datos_persona(): para capturar los datos de cada persona y guardarlos en los respectivos vectores.

1 capturar_datos_persona() else: print("Vectores en su máximo número de elementos 100. seleccione una opción: ")) if opcion == 1: # seleccionó la opción “1) Capturar los datos de una persona” if numero_total_personas < 100: # los vectores pueden contener máximo 100 elemntos numero_total_personas += 1 posicion_ultimo = numero_total_personas . como lo considere necesario.") CualquierTecla = input("presione cualquier tecla para continuar… ") opción = 0 elif opcion == 2: # seleccionó la opción “2) Generar informe estadístico” generar_informe_estadistico() elif opcion == 3: # seleccionó la opción “3) Terminar y salir del programa” sw = input("Esta seguro que desea salir del programa (S/N): ") if sw == “n” or sw == “N”: opción = 0 else: print("Opcion seleccionada no existe…") CualquierTecla = input("presione cualquier tecla para continuar… ") # Fin cuerpo principal del programa # Función capturar_datos_persona(): # Para capturar los datos de cada persona y guardarlos en los respectivos vectores.") print("Aumente el tamaño de vectores. def capturar_datos_persona() print "Captura de Datos de la Persona” documento_identidad[posicion] = int(input("Documento de identidad persona: ")) apellidos[posicion_ultimo] = int(input("Apellidos de la persona: ”)) nombre[posicion_ultimo] = int(input("Nombres de la persona: ”)) edad[posicion_ultimo] = int(input("Edad (en años) de la persona: ”)) . Facultad de Ingeniería Programa de Ingeniería de Sistemas Algoritmos 2014 numero_total_personas = 0 posicion_ultimo = 0 # posición del último elemento (datos de la persona) capturado CualquierTecla = " " # Inicio cuerpo principal del programa opcion = 0 while (opcion!=3): # menú # Limpiar pantalla os.system("clear") print(" GESTION INFORMACION PERSONAS APTAS") print(" PARA VOTAR EN COLOMBIA") print("REGISTRADURIA NACIONAL DEL ESTADO CIVIL") print( “1) Capturar los datos de una persona”) print( “2) Generar informe estadístico”) print( “3) Terminar y salir del programa”) opcion = int(input("Por favor.

e imprimirlo. Los siguientes casos de pruebas se han elaborado para garantizar el correcto funcionamiento del programa. def generar_informe_estadistico() # aquí el algoritmo personas_aptas_para_votar = 0 numero_hombres_aptos = 0 numero_mujeres_aptas = 0 for i in range(numero_total_personas): if edad[i] >= 18: # Persona apta para votar personas_aptas_para_votar = personas_aptas_para_votar + 1 if sexo[i] == 1: # Hombre numero_hombres_aptos = numero_hombres_aptos + 1 else: # Mujer numero_mujeres_aptas = numero_mujeres_aptas + 1 personas_no_aptas_para_votar = numero_total_personas - personas_aptas_para_votar print "Informe de Personas Aptas para Votar en Colombia:" print "El número de hombres que pueden votar: ". 2 femenino): ”)) if edad[posicion_ultimo] < 18: print ("persona no apta para votar porque la edad es inferior a 18 años”) CualquierTecla = input("presione cualquier tecla para continuar… ") # Función generar_informe_estadistico(): # Se utiliza para procesar los datos de las personas capturados en los vectores # Generar el informe solicitado. es necesario realizar la debidas pruebas que garanticen el correcto funcionamiento del programa construido bajo un conjunto de situaciones posibles a las que se pueda enfrentar. El programador crea los casos de prueba teniendo en cuenta los siguientes aspectos: ● El banco de pruebas lleva un formato que resulta cómodo de leer y escribir. ● Se ejecutarán los casos de prueba anteriormente diseñados de forma manual. Facultad de Ingeniería Programa de Ingeniería de Sistemas Algoritmos 2014 sexo[posicion_ultimo] = int(input("Sexo(1 masculino. numero_hombres_aptos print "El número de mujeres que pueden votar: ". ● Determina las pruebas que tengan la mayor probabilidad de encontrar defectos ● Verifica que se hayan integrado adecuadamente todos los elementos del sistema y que realizan las funciones apropiadas. PRUEBAS Después de codificar las actividades y/o procesos en la la herramienta computacional seleccionada. numero_mujeres_aptas print "Número total de personas que pueden votar: ". . personas_aptas_para_votar print "Número personas que no pueden votar: ". personas_no_aptas_para_votar CualquierTecla = input("presione cualquier tecla para continuar… ") D.

Código fuente con sus respectivos comentarios # . el informe general que le debe generar el programa en pantalla es el siguiente: Informe de Personas Aptas para Votar en Colombia: El número de hombres que pueden votar: 2 El número de mujeres que pueden votar: 2 El número total de personas que pueden votar: 4 El número total de personas que no pueden votar: 1 Presione cualquier tecla para continuar… 5. ENTREGABLES 1. Facultad de Ingeniería Programa de Ingeniería de Sistemas Algoritmos 2014 TABLA DE DATOS DE PRUEBAS El usuario debe probar el programa con los datos de la tabla anterior.