lunes, 1 de octubre de 2012

PLANIFICANDO UN PROYECTO



Que es un proyecto de Software


Es el Proceso de gestión para la creación de un Sistema o software, la cual encierra un conjunto de actividades, una de las cuales es la estimación, estimar es echar un vistazo al futuro y aceptar resignados cierto grado de incertidumbre. Aunque la estimación, es mas un arte que una Ciencia, es una actividad importante que no debe llevarse a cabo de forma descuidada. Existen técnicas útiles para la estimación de costes de tiempo. Y dado que la estimación es la base de todas las demás actividades de planificación del proyecto y sirve como guía para una buena Ingeniería Sistemas y Software.

Al estimar tomamos en cuenta no solo del procedimiento técnico a utilizar en el proyecto, sino que se toma en cuenta los recursos, costos y planificación. El Tamaño del proyecto es otro factor importante que puede afectar la precisión de las estimaciones. A medida que el tamaño aumenta, crece rápidamente la interdependencia entre varios elementos del Software.

La disponibilidad de información Histórica es otro elemento que determina el riesgo de la estimación.

2. Planeación del Proyecto

La planeación efectiva de un proyecto de software depende de la planeación detallada de su

avance, anticipando problemas que puedan surgir y preparando con anticipación soluciones

tentativas a ellos. Se supondrá que el administrador del proyecto es responsable de la

Planeación desde la definición de requisitos hasta la entrega del sistema terminado.

Los puntos analizados posteriormente generalmente son requeridos por grandes sistemas de

programación, sin embargo estos puntos son validos también para sistemas pequeños.

~- Panorama. Hace una descripción general del proyecto detalle de la organización del plan y

resume el resto del documento.

~- Plan de fases. Se analiza el ciclo de desarrollo del proyecto como es: análisis de requisitos, fase

de diseño de alto nivel, fase de diseño de bajo nivel, etc. Asociada con cada fase debe de haber

una fecha que especifique cuando se debe terminar estas fases y una indicación de como se

pueden solapar las distintas fases del proyecto.



~- Plan de organización//. //Se definen las responsabilidades especificas de los grupos que

intervienen en el proyecto.

~- Plan de pruebas. Se hace un esbozo general de las pruebas y de las herramientas,

procedimientos y responsabilidades para realizar las pruebas del sistema.

~- Plan de control de modificaciones. Se establece un mecanismo para aplicar las

modificaciones que se requieran a medida que se desarrolle el sistema.

~- Plan de documentación. Su función es definir y controlar la documentación asociada con el

proyecto.

~- Plan de capacitación. Se describe la preparación de los programadores que participan en el

proyecto y las instrucciones a los usuarios para la utilización del sistema que se les entregue.

~- Plan de revisión e informes. Se analiza como se informa del estado del proyecto y se definen

las revisiones formales asociadas con el avance de proyecto.

~- Plan de instalación y operación//. //Se describe el procedimiento para instalar el sistema en la

localidad del usuario.

~- Plan de recursos y entregas//. //Se resume los detalles críticos del proyecto como fechas

programadas, marcas de logros y todos los artículos que deben entrar bajo contrato.

~ Indice. Se muestra en donde encontrar las cosas dentro del plan.

// //

~- //Plan de mantenimiento. //Se establece un bosquejo de los posibles tipos de mantenimiento que

se tienen que dar para futuras versiones del sistema.

Objetivos de la Planificación del Proyecto.

El objetivo de la Planificación del proyecto de Software es proporcionar un marco de trabajo que permita al gestor de planificación hacer estimaciones razonables de recursos, costos y planificación temporal.

Estas estimaciones se hacen dentro de un marco de tiempo limitado al comienzo de un proyecto de software, y deberían actualizarse regularmente a medida que progresa el proyecto. Además las estimaciones deberían definir los escenarios del mejor caso, y peor caso, de modo que los resultados del proyecto pueden limitarse.

El Objetivo de la planificación se logra mediante un proceso de descubrimiento de la información que lleve a estimaciones razonables.

4. Actividades asociadas al proyecto de software.

4.1 Ámbito del Software.

Es la primera actividad de llevada a cabo durante la planificación del proyecto de Software.

En esta etapa se deben evaluar la función y el rendimiento que le asignaron al Software durante la Ingeniería del Sistema de Computadora para establecer un ámbito de proyecto que no sea ambiguo, e incomprensible para directivos y técnicos

Describe la función, el rendimiento, las restricciones, las interfaces y la fiabilidad, se evalúan las funciones del ámbito y en algunos casos se refinan para dar mas detalles antes del comienzo de la estimación. Las restricciones de rendimiento abarcan los requisitos de tiempo de respuesta y procesamiento, identifican los límites del software originados por el hardware externo, por la memoria disponible y por otros sistemas existentes.

El Ámbito se define como un pre-requisito para la estimación y existen algunos elementos que se debe tomar en cuenta como es:

//La Obtención//// de la Información necesaria para el software. Para esto el analista y el cliente se reúnen sobre las expectativas del proyecto y se ponen de acuerdo en los puntos de interés para su desarrollo.//

4.2 Recursos.

La Segunda tarea de la planificación del desarrollo de Software es la estimación de los recursos requeridos para acometer el esfuerzo de desarrollo de Software, esto simula a una pirámide donde las Herramientas (hardware y Software), son la base proporcional de soporte al esfuerzo de desarrollo, en segundo nivel de la pirámide se encuentran los Componentes reutilizables.

Y en la parte mas alta de la pirámide se encuentra el recurso primario, las personas (el recurso humano).

|| Recursos Humanos ||

|| Componentes Reutilizables ||

|| Herramientas de Software y Hardware ||

Fig. 1.1

Cada recurso queda especificado mediante cuatro características:

· //Descripción del Recurso.//

~- //Informes de disponibilidad.//
~- //Fecha cronológica en la que se requiere el recurso.//
~- //Tiempo durante el que será aplicado el recurso.//

4.3 Recursos Humanos.

La Cantidad de personas requeridas para el desarrollo de un proyecto de software solo puede ser determinado después de hacer una estimación del esfuerzo de desarrollo (por ejemplo personas mes o personas años), y seleccionar la posición dentro de la organización y la especialidad que desempeñara cada profesional.

4.4 Recursos o componentes de software reutilizables.

Cualquier estudio sobre recursos de software estaría incompleto sin estudiar la reutilizacion, esto es la creación y la reutilizacion de bloques de construcción de Software.

Tales bloques se deben establecer en catálogos para una consulta más fácil, estandarizarse para una fácil aplicación y validarse para la también fácil integración.

El Autor Bennatan sugiere cuatro categorías de recursos de software que se deberían tener en cuenta a medida que se avanza con la planificación:

· //Componentes ya desarrollados.//

~- //Componentes ya experimentados.//
~- //Componentes con experiencia Parcial.//
~- //Componentes nuevos.//

4.5 Recursos de entorno.

El entorno es donde se apoya el proyecto de Software, llamado a menudo entorno de Ingeniería de Software, incorpora Hardware y Software.

El Hardware proporciona una plataforma con las herramientas (Software) requeridas para producir los productos que son el resultado de la buena practica de la Ingeniería del Software, un planificador de proyectos debe determinar la ventana temporal requerida para el Hardware y el Software, y verificar que estos recursos estén disponibles. Muchas veces el desarrollo de las pruebas de validación de un proyecto de software para la composición automatizada puede necesitar un compositor de fotografías en algún punto durante el desarrollo. Cada elemento de hardware debe ser especificado por el planificador del Proyecto de Software.

5. Estimación del proyecto de Software.

En el principio el costo del Software constituía un pequeño porcentaje del costo total de los sistemas basados en Computadoras. Hoy en día el Software es el elemento más caro de la mayoría de los sistemas informáticos.

Es una pequeña planeación sobre que es lo que va a ser mi proyecto. Una de las actividades

cruciales del proceso de gestión del proyecto del software es la planificación. Cuando se planifica

un proyecto de software se tiene que obtener estimaciones de esfuerzo humano requerido, de la

duración cronológica del esfuerzo humano requerido, de la duración cronológica del proyecto y

del costo. Pero en muchos de los casos las estimaciones se hacen valiéndose de la experiencia

pasada como única guía. Si un proyecto es bastante similar en tamaño y funciona un proyecto es

bastante similar en tamaño y funciona un proyecto pasado es probable que el nuevo proyecto

requiera aproximadamente la misma cantidad de esfuerzo, que dure aproximadamente lo mismo que el trabajo anterior. Pero que pasa si el proyecto es totalmente distinto entonces puede que las experiencias obtenida no sean suficientes.

Se han desarrollado varias técnicas de estimación para el desarrollo de software, aunque cada

una tiene sus puntos fuertes y sus puntos débiles, todas tienen en común los siguientes

atributos.

1. Se han de establecer de antemano el ámbito del proyecto.

2. Como bases para la realización de estimaciones se usan métricas del software de

proyectos pasados.

3. El proyecto se desglosa en partes más pequeñas que se estiman individualmente.

Algunas de estas técnicas son:

|| Técnica || Descripción ||
|| Modelado del http://www.monografias.com/trabajos15/algoritmos/algoritmos.shtml algoritmo de costos || Se desarrolla un modelo utilizando información histórica de costos que relaciona alguna métrica de software (por lo general, su tamaño) con el costo del proyecto. Se hace una estimación de esa métrica y el modelo predice el esfuerzo requerido. ||
|| Opinión de expertos || Se consultan varios expertos en las técnicas de desarrollo de software propuestas y en el dominio de aplicación. Cada uno de ellos estima el costo del proyecto. Estas estimaciones se comparan y discuten. El proceso de estimación se itera hasta que se acuerda una estimación. ||
|| Estimación por analogía || Esta técnica es aplicable cuando otros proyectos en el mismo dominio de aplicación se han completado. Se estima el costo de un nuevo proyecto por analogía con estos proyectos completados. Myers (1989) da una descripción muy clara de este enfoque. ||
|| Ley de Parkinson || La http://www.monografias.com/trabajos4/leyes/leyes.shtml Ley de Parkinson establece que el trabajo se extiende para llenar el tiempo disponible. El costo se determina por los recursos disponibles más que por los objetivos logrados. Si el software se tiene que entregar en 12 meses y se dispone de cinco personas, el esfuerzo requerido se estima en 60 personas-mes. ||
|| Asignar costos para ganar || El costo del software se estima dependiendo de lo que el cliente esté dispuesto a pagar por el proyecto. El esfuerzo estimado depende del presupuesto del cliente y no de la funcionalidad del software. ||

Cada técnica de estimación tiene sus propias fortalezas y debilidades. Para proyectos grandes, se deben utilizar varias técnicas de estimación de costos y comparar sus resultados. Si éstos predicen costos radicalmente diferentes, esto indica que no se tiene suficiente información para generar los costos. Se debe buscar más informaciones y repetir el proceso hasta que la estimación converja.

Un gran error en la estimación del costo puede ser lo que marque la diferencia entre beneficios y perdidas, la estimación del costo y del esfuerzo del software nunca será una ciencia exacta, son demasiadas las variables: humanas, técnicas, de entorno, políticas, que pueden afectar el costo final del software y el esfuerzo aplicado para desarrollarlo.

Para realizar estimaciones seguras de costos y esfuerzos tienen varias opciones posibles:

· Deje la estimación para más adelante (obviamente podemos realizar una estimación al cien por cien fiable después de haber terminado el proyecto.

~- Base las estimaciones en proyectos similares ya terminados.
~- Utilice técnicas de descomposición relativamente sencillas para generar las estimaciones de costos y esfuerzo del proyecto.
~- Desarrolle un modelo empírico para él cálculo de costos y esfuerzos del Software. 

Desdichadamente la primera opción, aunque atractiva no es práctica.

La Segunda opción puede funcionar razonablemente bien si el proyecto actual es bastante similar a los esfuerzos pasados y si otras influencias del proyecto son similares. Las opciones restantes son métodos viables para la estimación del proyecto de software. Desde el punto de vista ideal, se deben aplicar conjuntamente las técnicas indicadas usando cada una de ellas como comprobación de las otras.

Antes de hacer una estimación, el planificador del proyecto debe comprender el ámbito del software a construir y generar una estimación de su tamaño.

5.1 Estimación basada en el http://www.monografias.com/trabajos14/administ-procesos/administ-procesos.shtml#PROCE Proceso.

Es la técnica más común para estimar un proyecto es basar la estimación en el http://www.monografias.com/trabajos14/administ-procesos/administ-procesos.shtml#PROCE proceso que se va a utilizar, es decir, el http://www.monografias.com/trabajos14/administ-procesos/administ-procesos.shtml#PROCE proceso se descompone en un conjunto relativamente pequeño de actividades o tareas, y en el esfuerzo requerido para llevar a cabo la estimación de cada tarea.

Al igual que las técnicas basadas en http://www.monografias.com/trabajos15/calidad-serv/calidad-serv.shtml#PLANT problemas, la estimación basada en el proceso comienza en una delineación de las http://www.monografias.com/trabajos7/mafu/mafu.shtml funciones del software obtenidas a partir del ámbito del proyecto. Se mezclan las http://www.monografias.com/trabajos7/mafu/mafu.shtml funciones del problema y las actividades del proceso. Como ultimo paso se calculan los costos y el esfuerzo de cada función y la actividad del proceso de software.

6. Diferentes modelos de estimación.

Existen diferentes modelos de estimación como son:

6.1 Los Modelos Empíricos:

Donde los datos que soportan la mayoría de los modelos de estimación obtienen una muestra limitada de proyectos. Por esta razón, el modelo de estimación no es adecuado para todas las clases de software y en todos los entornos de desarrollo. Por lo tanto los resultados obtenidos de dichos modelos se deben utilizar con prudencia.

6.2 El Modelo COCOMO.

Barry Boehm, en su libro clásico sobre economía de la Ingeniería del Software, introduce una jerarquía de modelos de estimación de Software con el nombre de COCOMO, por su nombre en Ingles (Constructive, Cost, Model) modelo constructivo de costos. La jerarquía de modelos de Boehm esta constituida por los siguientes:

· Modelo I. //El Modelo COCOMO básico calcula el esfuerzo y el costo del desarrollo de Software en función del tamaño del programa, expresado en las líneas estimadas.//

· Modelo II. //El Modelo COCOMO intermedio calcula el esfuerzo del desarrollo de software en función del tamaño del programa y de un conjunto de conductores de costos que incluyen la evaluación subjetiva del producto, del hardware, del personal y de los atributos del proyecto.//

· Modelo III. //El modelo COCOMO avanzado incorpora todas las características de la versión intermedia y lleva a cabo una evaluación del impacto de los conductores de costos en cada caso (análisis, diseño, etc.) del proceso de ingeniería de Software.//

·

6.3 Herramientas Automáticas De Estimación.

Las herramientas automáticas de estimación permiten al planificador estimar costos y esfuerzos, así como llevar a cabo análisis, con importantes variables del proyecto, tales como la fecha de entrega o la selección del personal. Aunque existen muchas herramientas automáticas de estimación, todas exhiben las mismas características generales y todas requieren de una o más clases de datos.

A partir de estos datos, el modelo implementado por la herramienta automática de estimación proporciona estimaciones del esfuerzo requerido para llevar a cabo el proyecto, los costos, la carga de personal, la duración, y en algunos casos la planificación temporal de desarrollo y riesgos asociados.

En resumen el planificador del Proyecto de Software tiene que estimar tres cosas antes de que comience el proyecto: cuanto durará, cuanto esfuerzo requerirá y cuanta gente estará implicada. Además el planificador debe predecir los recursos de hardware y software que va a requerir y el riesgo implicado.

Para obtener estimaciones exactas para un proyecto, generalmente se utilizan al menos dos de las tres técnicas referidas anteriormente. Mediante la comparación y la conciliación de las estimaciones obtenidas con las diferentes técnicas, el planificador puede obtener una estimación más exacta. La estimación del proyecto de software nunca será una ciencia exacta, pero la combinación de buenos datos históricos y técnicas puede mejorar la precisión de la estimación.

7. Errores

ERRORES CLASICOS EN UN PROYECTO DE SOFTWARE

1. Mal análisis en los requerimientos.

2. Una mala planeación.

3. No tener una negociación (documento, contrato) con el cliente.

4. No hacer un análisis costo beneficio.

5. Desconocer el ambiente de trabajo de los usuarios.

6. Desconocer los usuarios que trabajan con el sistema.

7. Mala elección de recursos (hardware, software, humanos).

8. Herramientas para la planificación y Gestión de productos Software.

Para poder completar con éxito un proyecto de software, se necesita tener un control riguroso sobre el tiempo, las personas o los imprevistos que puedan surgir, como por ejemplo cambios en el software. Para ayudarnos en la planificación y gestión de proyectos, Microsoft nos proporciona dos herramientas básicas: Microsoft Project y Microsoft Solutions Framework.

· Microsoft Solutions Framework (MSF): es una flexible e interrelacionada serie de conceptos, modelos y prácticas de uso que controlan la planificación, el desarrollo y la gestión de proyectos tecnológicos. MSF se centra en los modelos de proceso y de equipo dejando en un segundo plano las elecciones tecnológicas. Originalmente creado en 1994 para conseguir resolver los problemas a los que se enfrentaban las empresas en sus respectivos proyectos, se ha convertido posteriormente en un modelo práctico que facilita el éxito de los proyectos tecnológico.

2 comentarios:

  1. es vital conocer un poco mas acerca de la planificación y el desarrollo del software y todo lo que contiene...

    ResponderEliminar
  2. Excelente La Info... Me Ayuda Mucho A Entender Lo Que En Realidad Un Proyecto De Software y Todo Lo Que Viene Con El.. Muy Buen Aporte

    ResponderEliminar