Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5 Eog00
5 Eog00
49
Los costes de coordinacin suben tanto que la productividad media del personal baja, estando correlacionada de forma inversa al tamao del proyecto. Las visiones actuales de desarrollo de software se aproximan cada vez ms al desarrollo incremental. Y ste consiste en implementar subsistemas hasta alcanzar el sistema completo. Dado que un proyecto de gran tamao debera seccionarse para su implementacin. Lo lgico es que sea la direccin estratgica de la empresa la que identifique los subsistemas ms crticos, y primeros candidatos a ser desarrollados, y no que sean los desarrolladores de software los que toman esta decisin.
Por lo visto, podemos suponer que el proyecto se refiere a un solo producto, as pues veremos como primer paso una descomposicin del proyecto en fases (procesos) y en un paso posterior refinaremos esta descomposicin identificando las tareas. Una vez conocidas las tareas a realizar se deber programar (planificar), el proceso de desarrollo y asignarse los recursos, fundamentalmente humanos. La programacin de proyectos la llevaremos a cabo utilizando las tcnicas matemticas de la investigacin operativa conocidas como PERT o CPM que veremos ms adelante en este libro.
50
4.0. Codificacin
5.0. Pruebas
Hay dos formas de representar un WBS. La primera es mediante una representacin grfica, en forma de rbol, como se muestra en la figura 1. La segunda consiste en una lista indentada de tareas, como muestra la figura 2. En ambos casos se muestra la misma descomposicin del trabajo. Los nmeros se usan para etiquetar los nodos, de forma que dado un componente resulte fcil localizarlo en la estructura. Dado un nodo de la estructura decimos que contiene a todos sus descendentes, y esta contenido en su antecesor. As la el nodo 2.0. Analizar la contabilidad esta contenida en el 0. Proyecto Contabilidad, y contiene a Estudiar Procesos y 2.2. Estudiar Datos. Para crear un WBS empezaremos por clarificar la utilidad que se desea de esta estructuracin. Nombramos un primer nodo con el nombre del proyecto. Identificamos componentes de este nodo, tenemos que intentar crear una estructura en la que cada nodo tenga del orden de 72 componentes. Numeramos los nodos por niveles. Las tareas son los nodos del nivel ms bajo, las que no se descomponen ms. De modo que los nodos que se descomponen no indicaran que hay una tarea, sino el conjunto de tareas de las que se compone. En los proyectos informticos es importante generar una ficha para cada 51
tarea identificada, en la que de momento anotaremos su nmero, nombre, una breve descripcin y el esfuerzo estimado.
0. Proyecto Contabilidad. 1. Especificar necesidades. 1.1. Estudiar Sistema Actual. 1.2. Aadir Nuevas Caractersticas. 2. Analizar Contabilidad. 2.1. Estudiar Procesos. 2.2. Estudiar Datos. 3. Disear Aplicacin. 3.1. Diseo B.D. 3.2. Diseo Programas. 4. Codificacin. 4.1. Construccin del esquema. 4.2. Codificacin de los Programas 5. Pruebas 5.1. Prueba de Unidades 5.2. Prueba del Sistema
Especificacin de tarea Nmero: 3.1. Nombre: Diseo B.D. Descripcin: Se diseara la base de datos, partiendo del modelo entidad-relacin propuesto en el anlisis y con el objetivo de tener un sistema funcionando sobre DB2. Esfuerzo Estimado: 2 semanas/hombre Entregables: Estructura de implementacin de la B.D. :
52
53
2.1. ENTREGABLES MS USUALES DE UN PROYECTO. Dado que como hemos visto los entregables juegan un papel central en el desarrollo de un subsistema informtico, vamos a listar los ms importantes. Basndonos en el capitulo 4 de King tenemos: Estudio de viabilidad: Descripcin breve caractersticas. del sistema propuesto y sus
Descripcin breve de las necesidades del negocio en el sistema propuesto. Propuesta de organizacin del equipo de desarrollo y definicin de responsabilidades. Estudio de los costes, que contendrn estimaciones groseras de la planificacin y fechas, tentativas, de entrega de los productos. Estudio de los beneficios que producir el sistema. Anlisis: Captura de requisitos: Anlisis del sistema actual (si existe). Requisitos nuevos de los usuarios. Descripcin del sistema propuesto. Especificacin del sistema: Descripcin del sistema (DFDs, etc.). 54
Requisitos de datos. Requisitos de telecomunicaciones. Requisitos de hardware. Plan de pruebas de integracin. Diseo: Descripcin detallada del sistema, contendr: Programas, mdulos reutilizables y objetos. Ficheros y bases de datos. Transacciones Diccionario de datos Procedimientos Carga del sistema y tiempos de respuesta Interfaces, tanto humanos como de mquinas. Descripcin de los controles del sistema propuestos. Diseos alternativos recomendados. Estndares de programacin y diseo de programas, recomendados. Tcnicas de implementacin recomendadas: codificacin propia, compra de paquetes, contratacin externa, etc. Plan de pruebas de programas. 55
Codificacin: Documentos del diseo final del sistema y de cada programa. Diagramas definitivos del sistema y de los programas. Descripcin detallada de la lgica de cada programa. Descripcin de las Entradas y Salidas (ficheros, pantallas, listados, etc.). Listado de los programas, conteniendo comentarios. Cadenas de ejecucin si es necesario (JCL, scripts, etc.). Resultado de las pruebas de cada unidad. Resultado de las pruebas de cada programa. Resultado de las pruebas de la integracin. Gua para los operadores del sistema. Programa de entrenamiento de los operadores. Manual de usuario del sistema. Pruebas: Plan de pruebas del sistema (actualizado). Informe de los resultados de las pruebas. Descripcin de las pruebas, el resultado esperado, resultado 56
obtenido y acciones a tomar para corregir las desviaciones. Resultados de las pruebas a la documentacin. Instalacin: Planes detallados de contingencias de explotacin, cadas del sistema y recuperacin. Plan de revisin post-instalacin. Informe de la instalacin. Carta de aceptacin del sistema. Mantenimiento: Listado de fallos detectados en el sistema. Listado de mejoras solicitadas por los usuarios (si no dan lugar a nuevos proyectos). Traza detallada de los cambios realizados en el sistema. Actas de las revisiones regulares del sistema y aceptacin de los niveles de soporte. A todos estos documentos hay que aadir en todas las fases documentos con la estimacin y planificacin de la prxima fase y del resto del proyecto. Tambin habr que ir actualizando el ndice de todo el material relacionado.
a una actividad concreta, de modo que dado un proyecto concreto podemos estimar la cantidad de esfuerzo que se dedicara a esa actividad. En sta se ha de tener en cuenta el tipo de proyecto, el lenguaje de desarrollo y la maduracin de la organizacin. Martyn A. Ould, desde una perspectiva histrica, ofrece en las siguientes grficas estos datos comparativos.
10
20
30
40
50
10
20
30
58
10
20
30
Estos datos muestran la evolucin de la empresa, pero tambin el cambio de lenguajes y entornos de trabajo. En el siguiente grfico, se muestran los resultados parciales que un jefe de proyecto en HP ofrece sobre los proyectos en que ha trabajado. Este grfico tiene mayor nivel de detalle y muestra las caractersticas propias de una empresa que vende software, as por ejemplo, a los Manuales se dedica el 7%. Tambin aade tareas que aunque significan un componente importante del esfuerzo suelen ser olvidadas, como: Supervisin y Soporte Administrativo. Reparto del Esfuerzo, Medias de HP
Investigacin 20 2 19 19 % 8 7 9 5 0 5 10 15 20 11 Analisis y Diseo Codificacin Depuracin Integracin Asegurar la Calidad Manuales Supervisin Soporte Administrativo
Las empresas debern identificar las fases (tems del ciclo de vida) o actividades importantes de desarrollo de sus aplicaciones y almacenar el 59
consumo de recursos (esfuerzo) aplicado en cada uno de stas. Es aconsejable el identificar aquellas componentes del desarrollo que supongan un consumo substancial de recursos. En la revista Computer de Mayo del 96, Caper Jones hace una propuesta muy interesante en la que relaciona en una tabla 25 actividades, las que suelen tenerse en cuenta en su empresa ante un proyecto nuevo, el tamao mnimo de proyecto a partir del que consideran la actividad, los costes asociados en esfuerzo, salarios y coste econmico de la actividad por punto de funcin. Aunque no lo indica explcitamente, esto da lugar a una justificacin sencilla dando a del porqu los proyectos grandes tienen un mayor coste por punto de funcin.
60
4.1. EL ENFOQUE DE EQUIPO EN LA IDENTIFICACIN DE TAREAS, POR ACTIVIDADES. La descomposicin del proyecto con mayor nivel de refinamiento no puede basarse en datos recogidos de forma analtica, sino que hace falta una aportacin personal de los miembros del equipo de trabajo, tanto para identificar tareas como para asignarles esfuerzos. Se suele aconsejar el trabajo en grupo donde todos puedan aportar sus conocimientos y experiencias previas. Hay que tener en cuenta que si identificamos las tareas y se las imponemos a los desarrolladores, stos funcionarn en una situacin de sumisin lo que puede tener efectos perniciosos tanto para los plazos de entrega como para la calidad del software. Por otra parte el dejar que sean los propios desarrolladores los que identifiquen tareas y recursos, dentro de un marco razonable (puntos de funcin) les llevar a una situacin de compromiso personal, pasando a interiorizar los objetivos y como consecuencia obtendremos mejores resultados. 4.2. FORMAS USUALES DE IDENTIFICAR TAREAS ASOCIADAS A UN ENTREGABLE. Hay que tener en cuenta que la tarea fundamental de los desarrolladores es escuchar a los clientes o usuarios y traducir sus requisitos a un lenguaje comprensible por la maquina, de modo que el subsistema informtico se adapte a las necesidades expresadas. As para cualquier tarea podremos encontrar las siguientes subtareas: Documentarse, Buscar o Investigar, Organizar, Escribir Documentos, Verificar, Comprobar, Revisar, Actualizar Documentos, Entregar, Finalizar
Adems de lo anterior hay que tener en cuenta que al ir desarrollando el sistema obtenemos informacin que nos ser til a la hora de identificar nuevas tareas. As el anlisis estructurado nos provee de una 61
descomposicin del proyecto por productos: transacciones, archivos, entradas, salidas, etc. El Diseo de programas nos descompone el sistema por mdulos, el Diseo de BD descompone por tablas, archivos, etc., y los diseos de interfaz de pantallas, listados, mensajes, etc. As por ejemplo una entrada puede ser que requiera de una reunin con el usuario, un estudio de sta y la posterior presentacin y aprobacin de la propuesta a desarrollar. 4.3. TAREAS USUALES DE UN PROYECTO INFORMTICO. Siguiendo la estructura de los entregables enunciados anteriormente y basado en King identificamos las siguientes tareas: Estudio de viabilidad: Analizar el sistema propuesto y escribir una descripcin. Definir y documentar posibles tipos de sistemas. Hacer un anlisis de coste de sistemas similares. Hacer una estimacin del tamao del sistema, la planificacin y los costes. (tener en cuenta los entregables ms importantes). Definir cualitativa y cuantitativamente los beneficios del sistema propuesto. Realizar una planificacin inicial del plazo de recuperacin de la inversin. Realizacin de una estimacin detallada de costes, planificacin, recursos, etc., de la siguiente fase (Anlisis). Asignar director del proyecto. Composicin del documento de estudio de viabilidad. Presentacin del documento de viabilidad a la direccin para su aprobacin. Anlisis: Captura de requisitos: Definir el mbito del sistema propuesto Funciones Dimensiones Usuarios 62
Restricciones Entrevista a todos los usuarios propuestos y actuales: Determinar: Utilizacin del sistema actual Deficiencias del sistema actual Requisitos nuevos del sistema Documentar: Descripcin del sistema actual Deficiencias del sistema actual Producir el documento de requisitos del nuevo sistema Incluir: Requisitos del usuario priorizados Resoluciones sobre las deficiencias del sistema actual Producir una lista de los beneficios tangibles e intangibles (un refinamiento de la lista del estudio de viabilidad) Realizacin de una estimacin detallada de costes, planificacin, recursos, etc., de la siguiente fase (Especificacin del sistema). Producir una estimacin revisada de costes, planificacin, recursos, etc., para el resto del proyecto. Producir el documento de definicin de requisitos; Esta tarea incluye la construccin de un prototipo. Realizar una revisin final del documento de requisitos. Tomar la decisin de continuar o no con el proyecto. Definir las responsabilidades en la prxima fase para el director, miembros del equipo de desarrollo y otros.
Especificacin del sistema: Definir el tipo de sistema propuesto: Transformar las restricciones fsicas, ambientales y operacionales a caractersticas del sistema; Por ejemplo Sistema basado en transacciones? Distribuido o centralizado? Estaciones de trabajo o terminales? Esquematizar el sistema propuesto: transformar los requerimientos del usuario de la fase anterior en unas 63
especificaciones funcionales (DFD, Organigramas, etc.) Construir el diccionario de datos: Describir todos los elementos del DFD incluyendo funciones y datos; asegurarse de que todas las relaciones inter-funcionales y entre datos sean documentadas. Si existe DD de la empresa, hacerlo compatible. Revisar y expandir el anlisis de coste beneficio: Actualizar con la informacin nueva; Verificar que los beneficios esperados se mantienen y que el plazo de recuperacin de la inversin sigue siendo aceptable. Realizacin de una estimacin detallada de costes, planificacin, recursos, etc., de la siguiente fase (Diseo del sistema). Producir una estimacin revisada de costes, planificacin, recursos, etc., para el resto del proyecto. Producir el documento de especificacin del sistema. Realizar una revisin final del documento de especificacin del sistema. Tomar la decisin de continuar o no con el proyecto. Definir las responsabilidades en la prxima fase para el director, miembros del equipo de desarrollo y otros. Diseo: Producir el diseo global del sistema, contendr: Definir los programas y sus principales funciones. Definir los principales flujos de datos entre programas y funciones. Disear el esquema de datos lgico y fsico. Definir las fronteras con paquetes software, si existen. Definir los entornos de hardware y software, proponiendo alternativas. Documentar los diagramas de diseo alternativos. Localizacin de paquetes software: Buscar paquetes software apropiados que puedan implementar parte, o toda la funcionalidad requerida del sistema de forma rentable y que, si se implementa, ofrezca un entorno compatible con los objetivos de la organizacin. 64
(Puede realizarse antes del diseo, o de forma simultnea a la tarea anterior). Desarrollar un diseo detallado del sistema, para cada alternativa de diseo planteada: Crear una descripcin narrativa detallada del diseo para todo el sistema y cada una de sus partes (programas, funciones y datos). Actualizar el diccionario de datos. Definir los componentes hardware especficos (Capturadores de datos, sistemas de comunicacin, etc.) y sus funciones. Validar el diseo con las especificaciones del sistema. Documentar el entorno hardware y software necesarios para esta alternativa. Revisar y expandir el anlisis de coste beneficio para cada alternativa: Actualizar con la informacin nueva. Verificar que los beneficios esperados se mantienen y que el plazo de recuperacin de la inversin sigue siendo aceptable. Evaluar las alternativas de diseo, para cada alternativa, documentar: Requerimientos de usuario que se alcanzan con esta alternativa. Nivel de aceptacin esperado de los usuarios. Realizacin de una estimacin detallada de costes, planificacin, recursos, etc., de la siguiente fase (Codificacin) con esta alternativa. Producir una estimacin revisada de costes, planificacin, recursos, etc., para el resto del proyecto. Alternativa recomendada. Desarrollo de un plan de test del sistema: Crear datos de entrada del test. Producir el listado de los resultados esperados. Producir el listado de los criterios de test. Desarrollar la planificacin de test del sistema. 65
Desarrollar un plan de test diferenciado para cada alternativa. Identificar las necesidades de entrenamiento y documentacin de los usuarios; Definir las guas de: Documentacin completa de usuario. Manuales de operador. Documentos y planificacin de formacin para usuarios y operadores. Producir el documento de diseo del sistema. Realizar una revisin final del documento de diseo del sistema. Tomar la decisin de continuar o no con el proyecto. Recomendar una alternativa. Hacer recomendaciones sobre el nivel de compromiso, si los hay, de programadores subcontratados y otros. Definir las responsabilidades en la prxima fase para el director, miembros de los equipos de programacin y test, as como de otros implicados. Codificacin: Producir un plan de trabajo: Creacin de la lista detallada de tareas necesarias para realizar la codificacin y test de todos los componentes del sistema. Producir una planificacin para las tareas anteriores con las fechas ms tempranas y ms tardas, as como la asignacin de responsabilidades. Instaurar los procedimientos para recoger los progresos y estados del proyecto. Instaurar los procedimientos para recoger tiempos, si resulta apropiado. Obtener la aprobacin del plan de trabajo por parte de la direccin. Realizacin del diseo detallado de cada programa: Disear detalladamente los diagramas: De estructura de los programas y jcl De estructura de los ficheros Pantallas, informes, y otras composiciones 66
Esquemas de la base de datos Composicin de las tablas y sus diseos Pseudocdigo de la lgica del programa. (Depender de los mtodos de diseo utilizados). Codificar, documentar y pasar los test en cada programa: Codificar el programa y los procedimientos de control (jcl) Realizar las pruebas de unidad, hasta que los programas se adapten a las especificaciones descritas en las etapas anteriores Actualizar todo lo necesario en el sistema y en el DD de la organizacin Realizar el test de integracin Poner todos los programas probados en la librera de pruebas de integracin Realizar el test de integracin de cada programa. Documentar todos los resultados del test de integracin Terminar los manuales de operador y usuario, as como los de formacin. Realizacin de una estimacin detallada de costes, planificacin, recursos, etc., de la siguiente fase (Prueba del sistema). Producir una estimacin revisada de costes, planificacin, recursos, etc., para el resto del proyecto. Confeccionar el documento de diseo de programas y codificacin. Realizar revisiones del documento de diseo de programas y codificacin. Obtener los resultados finales de la integracin completa del sistema y de las pruebas de integracin. Definir las responsabilidades en la prxima fase para el director, miembros del equipo de test, as como de otros implicados.
Pruebas: Realizar el test del sistema Hacer el test de sistema de acuerdo al documento de test del sistema. Verificar la operatividad de los manuales de usuario y operador, utilizndolas en los cursos de formacin de los 67
68
usuarios y operadores que realicen el test del sistema. Verificar los documentos de entrenamiento de usuarios y operadores, utilizndolos en los cursos de formacin de los usuarios y operadores que realicen el test del sistema. Documentar completamente los resultados del test del sistema. Revisar la planificacin de instalacin: Disponibilidad de los recursos. Revisin de los factores de contingencia que puedan afectar a la instalacin. Procesos especiales de final de mes y fin de ao. Vacaciones y fiestas. Disponibilidad de soporte por parte de terceros vendedores. Revisin final del calendario de instalacin. Esbozar el plan ante cadas: Criterios para las cadas. Identificacin de recursos para contingencias. Horario para recuperaciones o abandonos. Desarrollar un acuerdo de nivel de servicio: Criterios de rendimiento de usuario, precisin y volumen. Criterios de apoyo de los vendedores. Tiempo medio entre fallos. Tiempo medio de reparacin. Criterios de calidad del sistema. Frecuencia de medicin. Producir los documentos de test en la entrega. Revisin y aprobacin de los documentos de entrega. Aprobacin de la documentacin del sistema Documentacin de programas. Manuales de operador. Manuales de usuario. Manuales de formacin. Documentacin de ayuda. Aprobacin del plan de instalacin. Aprobacin de los planes de contingencia, recuperacin y cadas
Finalizacin del sistema completamente probado. Acuerdo de finalizacin del desarrollo del sistema. Acuerdo de finalizacin de los usuarios. Acuerdo de finalizacin del CPD. Acuerdo de finalizacin de garanta de calidad. Acuerdo de finalizacin de finanzas. Instalacin: Instalacin del hardware y software nuevo. Formar a los primeros usuarios y operadores. Desarrollar los planes de contingencia, recuperacin y cada. Desarrollar los procedimientos de mantenimiento y versiones. Establecer procedimientos para: Versiones regulares Versiones de emergencia Versin por configuracin (hardware o estaciones de trabajo) Llevar a cabo cualquier conversin de datos necesaria. Llevar a cabo la instalacin del sistema nuevo a produccin. Instalacin completa desde cero. Instalacin en paralelo. Instalacin por fases. Comenzar el uso de los acuerdos de nivel de servicio. Planificar y programar las revisiones post-instalacin: Establecer los criterios de: Rendimiento del sistema. Calidad del sistema. Satisfaccin del usuario. Calidad y facilidad de manejo de: Manuales de usuario y operador. Formacin de usuarios y operadores. Informacin y datos producidos. Fluidez de la instalacin. Costes de desarrollo, instalacin, operaciones y mantenimiento. Establecer la planificacin y calendario para 69
las revisiones: Asegurar la disponibilidad de: Personal requerido Documentacin requerida Llevar a cabo las revisiones post-instalacin: Crear el informe de la revisin post-instalacin. Obtener la aprobacin firmada de los informes de: Usuarios finales del sistema Operadores del sistema Auditora y garanta de la calidad Desarrollo de sistemas Soporte de sistemas y mantenimiento Finanzas Obtener la carta de aprobacin del sistema Establecer el calendario para otras revisiones post-instalacin si es necesario. Mantenimiento: Implementar los cambios del sistema: Utilizar los procedimientos de implementacin de versiones, o Implementar versiones de emergencia y despus utilizar los procedimientos de versiones formales de forma retroactiva. Asegurarse de que el sistema continua solucionando las necesidades de los usuarios. Utilizar los acuerdos de niveles de soporte. Revisiones regulares de requerimientos del nivel de acuerdo. Revisiones regulares de como el sistema esta alcanzando sus objetivos Llevar a cabo revisiones regulares del sistema Utilizar los procedimientos y contenido de las revisiones post-instalacin. Estas tareas se han enumerado a modo de lista de comprobacin, de forma que sern los desarrolladores los encargados de identificar las tareas apropiadas a cada proyecto as como los recursos necesarios, teniendo en 70
71