Proceso de Desarrollo de Softw
Cheatsheet Content
### Introducción al Proceso de Desarrollo de Software El proceso de desarrollo de software (PDS) es una estructura impuesta en el desarrollo de un producto de software. Contiene una serie de etapas que se siguen para diseñar, desarrollar y mantener un software. Las etapas principales son: - Especificación de los requerimientos del software - Diseño del sistema - Implementación - Pruebas - Mantenimiento ### Especificación de los Requerimientos del Software Se indica lo que el sistema va a hacer y sus limitaciones. - Describe lo que el programa hace y sus restricciones. - Debe mencionar cuál es la entrada y la salida del sistema (reportes, consultas, etc.). **Ejemplo en un sistema de nómina:** "Las entradas incluyen los rangos o escalas de nómina de cada empleado, los datos de periodos de tiempo trabajados en la empresa, así como información de los archivos de personal, de modo que se puedan calcular correctamente los impuestos: las salida serán los cheques o transferencias bancarias así como informes de deducciones de cuotas de seguridad social..." ### Diseño del Sistema En esta etapa se indica cómo se hará el sistema. - Se descompone el problema en partes. - Se especifica qué entra, qué sale, qué calcula, qué modifica en la base de datos para cada módulo del sistema. - Se debe realizar un diagrama de los módulos (o páginas) que se usarán, mostrando la navegación entre ellos (de qué página a qué página se puede ir). ### Diseño de las Tablas Se deben especificar las tablas que serán usadas para la solución del sistema. - Incluir los campos llave. - Incluir sus tipos de datos. **Ejemplo: Tabla EMPLEADOS** | Atributo | Tipo de dato | Llave | |-----------------|-----------------|-------| | NUM_IMSS | Caracteres[20] | Sí | | Apellidos | Caracteres[25] | | | Nombre | Caracteres[25] | | | Sueldo x Hora | Flotante | | | NUM_CTA_BANCO | Caracteres[20] | | | ... | ... | | ### Diseño de los Módulos Para cada módulo, se debe definir su entrada, salida y lo que hace. - Puede ser necesario especificar un algoritmo para situaciones complejas. - Si se lee o modifica una tabla, se debe especificar la operación (LECTURA, ESCRITURA, etc.). **Ejemplo de un módulo:** Módulo para hacer un listado de empleados por nombre, salario o puesto. **Ejemplo de especificación de un módulo:** | Campo | Descripción | |-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **Nombre** | Consultas de empleados | | **Entrada** | Opción de mostrar por nombre, salario, o por puesto | | **Salida** | Listado de los empleados según la opción de entrada. | | **Desc.** | El módulo recibe si el listado será por nombre, salario o por puesto, los datos que se necesitan están en la tabla EMPLEADOS, la operación que se hace sobre la tabla es solamente de LECTURA. | ### Implementación y Pruebas #### Implementación - Es la traducción de los algoritmos del diseño en código, utilizando un lenguaje de programación. #### Pruebas - Se realizan pruebas al sistema para asegurar que cumple con los requerimientos especificados. - Los errores encontrados deben ser corregidos. - Se deben probar los módulos por separado y, posteriormente, realizar pruebas al sistema completo. Según E. Dijkstra: "Las pruebas solamente muestran la presencia de errores, nunca pueden mostrar su ausencia". Una prueba exitosa solo significa que no se han descubierto errores en circunstancias específicas. - Las pruebas sirven para eliminar la mayor cantidad posible de errores de lógica. - Se debe probar el programa con datos de entrada válidos para verificar que llega a una solución conocida. - También se deben incluir datos no válidos para comprobar la capacidad de detección de errores del sistema. ### Mantenimiento del Sistema El mantenimiento del software (sw) es la modificación de un producto de software después de su entrega. - **Objetivo:** Corregir defectos, mejorar el rendimiento o adaptarse a cambios del entorno. - **Costo:** Es la parte más costosa del ciclo de vida del software (60-90% del costo total, y creciente). - **Impacto del tiempo:** El costo relativo de reparar un defecto aumenta significativamente en las últimas etapas del ciclo de vida (de 1 a 100). #### Tipos de Mantenimiento - **Correctivo:** Corrección de defectos. - **Adaptativo:** Modificaciones para que el software siga siendo funcional en entornos cambiantes. - **Perfectivo:** - Mantenimiento de ampliación (añadir nuevas funcionalidades). - Mantenimiento de eficiencia (optimizar el rendimiento). - **Preventivo:** - Mantenimiento para la reutilización (refactorización, mejora de la estructura para futuras modificaciones). **Distribución de Coste de Mantenimiento (Ejemplo):** - **Correctivo:** 17% - **Adaptativo:** 18% - **Preventivo:** 5% - **Perfectivo:** 60%