Escolar Documentos
Profissional Documentos
Cultura Documentos
Programa de la asignatura:
Mtricas de desarrollo de software (PSP)
Unidad 2.
Planeacin: Introduccin, medicin y estimacin
Clave:
15143529
Ejecutas el editor1
1
ndice
Ejecutas el editor2
2
Presentacin de la unidad
En esta unidad conocers lo importante que es realizar una planeacin previa al
desarrollo de un nuevo proyecto de software.
Aprenders por qu es necesario realizar planes, as como el contenido de una
planeacin. Entenders por qu mientras ms detallados sean tus planes, ms precisas
sern tus estimaciones de tiempo y costos antes de comenzar el desarrollo de un nuevo
proyecto. As mismo, tendrs elementos y bases para gestionar cambios en los
requerimientos planeados, para un nuevo proyecto de software y cmo deben ser
manejados dichos cambios antes de su implementacin en el proyecto.
Finalmente, conocers algunas tcnicas para estimar el tamao de un proyecto de
software y como ste, est relacionado con el tiempo que tomar desarrollarlo.
Ejecutas el editor3
3
Propsito
En esta unidad logrars:
- Comprender lo que es un plan para un proyecto de software y lo que debe
contener.
- Conocers algunas tcnicas para estimar el tamao de un proyecto de software.
- Conocers algunas tcnicas para estimar el tiempo que tomar desarrollar un
nuevo proyecto de software.
Competencia especfica
Aplicar la medicin y estimacin para planear un programa, tomando en cuenta el plan,
sus etapas, criterios y estndares de medicin, as como diferentes mtodos de
estimacin.
Ejecutas el editor4
4
2.1.1. Qu es un plan?
En este tpico se explicar y comprender lo que es un plan y como est estrechamente
relacionado con la culminacin exitosa de un nuevo proyecto.
Un plan no es ms que una gua que nos muestra los pasos, procedimientos o medidas a
seguir para lograr un objetivo o meta determinada. La mayora de las veces, el xito que
se tiene en un proyecto est en funcin de la calidad del plan que se realiza antes de
comenzar el desarrollo de ese proyecto. A su vez, la calidad de un plan est dada por el
sustento y validez de las bases sobre cules se apoya dicho plan.
Para comprender lo anterior, veamos el siguiente ejemplo:
Pedro se entera, a mitad de su periodo escolar, que existe un concurso de proyectos
finales para la materia de desarrollo de aplicaciones. Al equipo o desarrollador del
proyecto ganador se le otorgar un premio que consiste en un par de equipos de cmputo
porttiles y dispositivos de cmputo mviles de ltima generacin.
Al pensar Pedro en su proyecto, se da cuenta que anda un poco retrasado en el avance
del mismo. Sin embargo, cree que no puede dejar pasar esa oportunidad ya que con
algunos ajustes, su proyecto tendra altas posibilidades de ser el mejor.
Qu podra hacer Pedro para poder tener las mayores posibilidades de ganar el
concurso?
Sin otro conocimiento acerca del problema, lo primero que podramos pensar en realizar
es el conocer el estado actual del proyecto de Pedro, analizar y delimitar un conjunto de
mejoras de acuerdo al conocimiento general que se tiene de los otros proyectos. Despus
habra que definir un conjunto de actividades por realizar as como un tiempo estimado
para concluir cada actividad con la finalidad de lograr obtener un proyecto con altas
posibilidades de ser exitoso.
Una vez que se ha entendido y comprendido lo que es un plan as como su utilizacin en
el desarrollo de nuevos proyectos, se analizarn algunas situaciones que remarcan la
necesidad de realizar planes previos al desarrollo de nuevos proyectos.
Ejecutas el editor5
5
Si el cliente cuenta con varias opciones para el desarrollo de su programa, quizs opte
por el proyecto que consuma menos tiempo en realizarse y que sea ms barato. Sin
embargo, esta eleccin no siempre es la ms adecuada como veremos en seguida.
Cuando se responde a un cliente las dos preguntas anteriores, sobre qu bases es
respondido el tiempo que tomar desarrollar el sistema?
Cuando no se lleva una metodologa que involucre una slida planeacin en el desarrollo
de nuevos proyectos, se suele responder en base a la experiencia propia. Sin embargo,
qu tan acertada es una respuesta de este tipo? Generalmente, existe poca asertividad
y generalmente se planea menos tiempo del que realmente se requiere para desarrollar el
proyecto. Un factor adicional frecuente, que lleva a realizar una mala estimacin, es la
competencia para ser elegidos por el cliente para el desarrollo de dicho proyecto. Esto
conlleva a subestimar el esfuerzo real que requiere el proyecto y se propone un tiempo
relativamente corto para la realizacin del mismo. Al final, el proyecto podra tardarse 2
3 veces ms el tiempo estimado. Por eso, se mencion anteriormente que la eleccin del
tiempo ms corto no siempre es la ms adecuada. Sin dejar de lado, que el costo de un
proyecto tambin est relacionado con el tiempo en que se desarrolla.
Con base en la informacin anterior, podemos deducir lo importante que es el realizar una
planeacin de los nuevos proyectos de desarrollo de software para lograr las mayores
posibilidades de xito. (Zapata, J., Garca, J., Cerrada, J. 2001. Pg. 43-55).
Ejecutas el editor6
6
del proyecto, la forma de medir el status del proyecto en cualquier momento, etc. Todo
esto ser analizado y discutido en este tpico.
El contenido de un plan depende de las necesidades de las personas que utilizarn dicho
plan y de lo que requieran hacer con l. En PSP la planeacin involucra a dos tipos de
persona: el desarrollador y sus clientes.
Una planeacin en PSP involucra definir y conocer los siguientes 4 factores:
1. Tamao del producto. Qu tan grande es el proyecto?
2. Definicin de las tareas que tienen que realizarse y como se realizarn.
3. Estatus del trabajo que se est realizando. Esto significa saber en qu etapa
estamos, qu falta por hacer. Esto nos permite responder una pregunta crtica muy
importante: Se terminar el producto en el tiempo estimado con los costos
planeados?
4. Evaluacin. Este factor se refiere a la evaluacin de la planeacin realizada y
responde a las preguntas: Qu tan efectiva fue la planeacin? Se cometieron
errores obvios de detectar? Qu errores se pueden evitar en el futuro? Qu se
requiere ajustar o modificar para realizar una mejor planeacin?
De lo anteriormente expuesto, Humphrey, W. (1995), menciona que el factor 4 es de
vital importancia pues es la clave para mejorar la efectividad de las planeaciones que
se realizarn posteriormente para nuevos proyectos.
Es necesario mencionar que al utilizar PSP, todo lo que realizamos es un trabajo
completamente individual. En este contexto, el contenido de las planeaciones debe
permitir saber:
1. Qu se tiene que entregar?, Cundo?, Cunto costar?
2. El proyecto que se planea desarrollar, es realmente lo que el cliente quiere?
3. Existe algn mecanismo que permita medir, monitorear o conocer el avance del
proyecto en cualquier momento?
En proyectos pequeos, la administracin y control de los aspectos anteriores
probablemente no sean complejos; sin embargo, se debe ser consciente de lo siguiente:
-
Ejecutas el editor7
7
Siempre hay que tener en cuenta que: cuando se planea el trabajo personal, el objetivo es
calcular el tiempo que tardar en desarrollarse un determinado proyecto, el costo que
tendr y qu fechas se tienen planeadas para terminar cada una de las tareas a realizar
(Humphrey, W. 1995. pp. 57-68).
En el siguiente tpico se comprender como comenzar la planeacin de un nuevo
proyecto as como los pasos necesarios para poder obtener un plan lo ms acertado
posible conforme a la realidad.
Ejecutas el editor8
8
Figura. Secuencia de pasos a seguir para elaborar un plan de desarrollo de un nuevo proyecto de software.
(Humphrey, W. 1995. Pg. 65).
Una vez que se conocen los pasos necesarios para realizar la planeacin de un proyecto
de software, es necesario conocer aquellos aspectos que dotan de la calidad necesaria a
una planeacin. Mientras ms alta sea la calidad de un plan, mayores son las
posibilidades de xito al trmino del desarrollo del proyecto. (Humphrey, W. 1995. Pg.
57-68).
Ejecutas el editor9
9
informacin se requiere un estudio profundo que nos permita conocer cmo medir,
predecir y mejorar las planeaciones que realizamos.
Cuando planeamos nuevos proyectos de software lo hacemos de dos formas: imparcial o
balanceado. Se considera que una planeacin est balanceada si por ejemplo, de diez
proyectos, cinco fueron sobreestimados y cinco fueron subestimados. Un proyecto
sobreestimado es aquel en el cual se plane ms tiempo para su realizacin que el
tiempo real. En otras palabras, se tard menos tiempo de lo planeado en realizar el
proyecto. Un proyecto subestimado, al contrario de uno sobreestimado, es aquel en el
que se plane menos tiempo del que realmente se necesit para llevarlo a cabo. Una
planeacin imparcial se da cuando no es balanceada, es decir, el nmero de proyectos
sobreestimados no es igual al nmero de proyectos subestimados. De acuerdo a la
experiencia de Watts Humphrey, el autor del PSP, una planeacin balanceada permite
realizar un mejor ajuste de la estimacin de tiempos para nuevos proyectos, pues al haber
un equilibrio entre los proyectos sobreestimados y los subestimados, se puede fcilmente
obtener un tiempo promedio a travs del mtodo PROBE, el cual veremos ms adelante.
Para terminar de comprender el proceso de la planeacin de un proyecto de software, se
analizarn las etapas involucradas en la planeacin. (Humphrey, W. 2005. Pg. 65).
2.
Ejecutas el editor10
10
3.
4.
5.
6.
7.
8.
Ejecutas el editor11
11
Sin embargo, para poder estimar o predecir cunto tiempo se requiere para desarrollar el
proyecto, es necesario conocer o tener una medida del mismo. Y un par de preguntas que
surgen son: cmo medimos un proyecto de software? Qu medida es la ms precisa?
En este captulo se analizarn algunas tcnicas para medir y estimar el tamao de nuevos
proyectos de software, pues a travs de los aos, el estudio e investigacin sobre PSP,
por parte de Watts Humphrey, ha recopilado una serie de datos y buenas prcticas que
ahorrarn en gran medida la investigacin y aprendizaje en este tema. (Zapata, J., Garca,
J., Cerrada, J. 2001. Pg. 58-71).
Debe servir para un propsito especfico. Por ejemplo, la unidad de medida litro
sirve especficamente para medir volmenes. Querer medir el peso con una
mtrica o instrumento que mide volumen sera muy difcil a la vez que los
resultados seran inadecuados y poco tiles. En el contexto de la ingeniera de
software, medir el tamao de un producto debe servir a un propsito muy
especfico: conocer de forma puntual que tan grande es un proyecto de software.
Ejecutas el editor12
12
Debe estar bien definida. Esto significa que las unidades que se utilicen para medir
deben estar claramente definidas de tal forma que no presenten ambigedades.
Por ejemplo, la unidad de medida metro est bien definida y cualquier cinta
mtrica o regla que utilicemos para medir por ejemplo, el largo de una mesa, nos
dar la misma medida para esa misma mesa. Aplicando este ejemplo en la
ingeniera de software, se requiere de una unidad de medida lo ms exacta posible
y que no tenga ambigedades cada vez que se aplique en la medicin de
proyectos de software.
Debe ser adecuadamente administrada. Generalmente, conocer la medida de algo
tiene implicaciones para tomar una decisin o hacer algo con esa medida
conocida. Por ejemplo, conocer el rea que ocupa una mesa es podra ser de
utilidad para escoger el mantel que mejor la cubra. De igual forma, las mtricas de
desarrollo de software deben aportar utilidad para administrar y controlar el
proyecto.
Debe ser adecuadamente utilizada. Los datos obtenidos con una mtrica
determinada deben ser adecuadamente utilizados. Por ejemplo, medir el rea de
un cuarto sera poco til si buscamos elegir el color de piso que mejor combine
con el diseo de dicho cuarto. En todo caso, es mejor utilizar otra unidad de
medida, como por ejemplo, el color ms representativo o la luminosidad del cuarto.
En el contexto de la ingeniera de software, las mtricas para medir el tamao de
un proyecto de software deben utilizarse para tal fin. Sera ilgico utilizar una
mtrica de tamao de software para elegir el tamao del monitor ideal para la
computadora donde se instalar el sistema a desarrollar en ese proyecto.
Se tiene que ser consciente qu las medidas solo producen nmeros. Para que una
medida sea de utilidad, debe:
-
Estar relacionada con los objetivos que se plantean alcanzar. Si lo que medimos
no est relacionado con los objetivos que deseamos lograr, no hay razn para
invertir esfuerzos en medir aquello.
Ser adecuadamente interpretada. Una vez que obtenemos una medida, debemos
entender lo que esa medida significa y lo que no. Por ejemplo, conocer el nmero
de tablas que tendr la base de datos no significa conocer cuntas de esas tablas
sern catlogos que impliquen su propia interface para altas, bajas y cambios.
Ejecutas el editor13
13
Permitir tomar acciones apropiadas. El conocer la medida de algo, nos debe ser
utilidad para tomar acciones apropiadas ya sean de carcter preventivo, correctivo
o las acciones de curso normal para lograr los objetivos planteados al inicio del
desarrollo del proyecto as como para efectuar una mejor planeacin de nuevos
proyectos.
A lo largo del tiempo, se han propuesto varias tcnicas para medir el tamao de un
proyecto de software. A continuacin se mencionan algunas de ellas:
-
Ejecutas el editor14
14
quien realiza el estndar de conteo de lneas de cdigo y del criterio que aplique para
tomar esta decisin.
Ejecutas el editor15
15
Ejecutas el editor16
16
Ejecutas el editor17
17
Ejecutas el editor18
18
En PSP 0.1 se utilizan todos los documentos vistos en PSP0 y se agregan los siguientes
tres:
PIP, (por sus siglas en ingls, Process Improvement Proposal), significa Propuesta
de Mejora del Proceso. Este formato es un documento libre donde el ingeniero de
software, por cada programa que realice a partir del nivel 0.1 de PSP, deber
emitir una propuesta de mejora al PSP mediante este documento. Es importante
mencionar que en una PIP no basta con describir alguna problemtica que se
tenga con el PSP, sino que adems se tiene que proponer alguna alternativa que
ayude a mejorar o erradicar dicha problemtica.
Formato para el conteo del tamao del programa.
Estndar de codificacin.
Como resultado de esto, el formato del resumen del plan del proyecto tambin deber
mostrar los datos referentes al tamao del programa tomando en cuenta que a partir
de este nivel, el desarrollo del programa debe ser planeado por cada fase del ciclo de
desarrollo. (Echeverra, C.M., Echeverra, C.D. Mera, J.L. 2006. Pg 23-26).
Ejecutas el editor19
19
proyectos pequeos, se puede ser capaz de estimar proyectos grandes a travs de esta
tcnica.
2.3.1. Contexto
Generalmente, cuando se planea el desarrollo de un nuevo proyecto, tan solo se conocen
los requerimientos del cliente. La dificultad de estimar el tamao del proyecto es
precisamente el poder predecir el tamao del producto final conociendo tan solo los
requerimientos iniciales del cliente. Y, dado que nadie conoce en realidad que tan grande
o cuanto se tardar realmente en realizarse, la estimacin ser siempre un proceso con
un cierto grado de incertidumbre. Por lo tanto, siempre ser una ventaja el contar con una
mejor definicin as como el mayor nmero de requerimientos por parte del cliente.
(Humphrey, W. 1995. Pg. 97).
Especificacin de requerimientos.
Niveles de fase, actividad, tarea, etc.
Definicin del perodo laboral y vacacional.
Manejo de salarios.
Uso de diferentes tipos de proyectos.
Mtricas de puntos de funcin, lneas de cdigo, etc.
Sin embargo, ningn mtodo de estimacin es lo suficientemente preciso para indicar con
exactitud los tiempos que cada tarea nos llevar. Una buena prctica de la estimacin es
que la herramienta que se utilice, ya sea la comercial o propia, se vaya mejorando con
cada proyecto y cada vez nos pueda ir dando valores ms cercanos a la realidad. En el
siguiente tema veremos los dos mtodos que se recomiendan en PSP los cules son el
Ejecutas el editor20
20
2.3.3. Proxy
En este tpico se analizar el mtodo Proxy. El mtodo Proxy es un mtodo propuesto
por Watts Humphrey, creador de PSP y, se ver ms adelante, sirve para medir el tamao
que tendr un producto de software basado en la divisin ms elemental de los
componentes que integrarn el producto que se piensa desarrollar. A estos elementos se
les llama partes proxy cuya caracterstica principal es que pueden ser comparados con
otros elementos proxy correspondientes a proyectos desarrollados previamente de los
cuales ya se tienen datos histricos.
El siguiente ejemplo muestra en primera instancia las bases de un mtodo de estimacin
basado en un proxy. Si se piensa por ejemplo, en la construccin de una casa tomando
en cuenta la cantidad de metros cuadrados que se van a construir, se podra tener una
base para estimar el costo de construccin. Sin embargo, algunas personas, pueden
pensar en trminos de metros cuadrados basados en el nmero de cuartos y baos que
tendr la casa para realizar la estimacin del costo de construccin. La estimacin del
software es un problema similar. Si se pudiera saber el nmero de tablas y relaciones
entre ellas, que tendra la base de datos o, el nmero de lneas de cdigo que tendr el
programa, se formulara una base para poder estimar su tamao.
Es muy difcil realizar la estimacin del tamao de un programa basado nicamente en los
requerimientos del cliente. Se requiere de algn proxy que permita relacionar el tamao
del producto con las funciones que se desean incorporar en el programa. Un proxy no es
ms que un sustituto del cual conocemos su tamao. Ejemplos de proxies son tablas,
clases, campos o pantallas.
Existen algunos criterios para seleccionar un proxy adecuadamente:
-
La medida del proxy debe estar altamente relacionada con el esfuerzo requerido
para desarrollar el producto.
El contenido proxy de un producto debe ser automticamente contable.
El proxy debe ser fcil de visualizar al inicio del proyecto.
El proxy debe ser personalizable a las necesidades de cada proyecto y
desarrollador.
El proxy debe ser sensible a las variaciones de implementacin que afectan los
costos de desarrollo o esfuerzo.
Ejecutas el editor21
21
Figura. Diagrama del proceso para estimar proyectos de software utilizando el mtodo Proxy. (Humphrey, W.
1995. Pg. 110).
Una vez que se comprendido el mtodo de estimacin por proxy se podr analizar un
mtodo ms complejo denominado PROBE, el cual ser descrito en la siguiente seccin.
El mtodo PROBE est basado en el mtodo Proxy, pero adems, permite estimar el
tiempo requerido para el desarrollo de cada parte del proyecto. (Humphrey, W. 1995.
Pg. 109).
2.3.4. PROBE
En esta seccin se analizar el mtodo PROBE. Este mtodo permite obtener una
estimacin del tamao de cada parte del proyecto (basado en la metodologa Proxy) y
Ejecutas el editor22
22
posteriormente, con estos datos, permite estimar el tiempo requerido para el desarrollo de
cada una de las partes del proyecto.
El mtodo PROBE utiliza datos histricos para realizar las estimaciones. Por ejemplo, si
se estima el trabajo para desarrollar un sistema de consultas en una base de datos, se
podra producir inicialmente un diseo conceptual y despus dividirlo en partes.
Posteriormente, se podran estimar el nmero de elementos en cada parte. Por ejemplo,
si se estiman un total de 95 elementos y se sabe que cada elemento se lleva en
producirse en promedio, 1.5 horas, el tiempo estimado total de desarrollo seran 142.5
horas.
Para hacer ms precisas las estimaciones se requiere adems de una base para calcular
el tiempo promedio requerido para desarrollar un determinado componente del programa.
Una vez que se han comprendido los conceptos de estimacin de tamao y tiempo de
desarrollo, es necesario comprender como son utilizados dentro del proceso PSP, en
especfico, en el nivel 1 o (tambin conocido como PSP1), el cual, ser descrito en la
siguiente seccin. (Humphrey, W. 2005. Pg.105).
2.3.5. PSP 1
Durante la Unidad 1, se analiz el PSP 0 el cual es el nivel inicial del proceso personal de
software. Como se recordar, el objetivo en PSP 0 era estimar el tiempo total que tomara
desarrollar un determinado programa. Una vez que se tiene completado el nivel PSP 0 se
pasa al nivel PSP 0.1. En este segundo nivel el objetivo es estimar de forma emprica,
basado en la experiencia del desarrollador, el tiempo de desarrollo por cada fase y se
estima adems, las lneas de cdigo que podra tener el nuevo programa a desarrollar.
Finalmente, en PSP 1, el objetivo es el mismo que en PSP 0.1, slo que, la estimacin de
las lneas de cdigo se realiza utilizando el mtodo Proxy y adicionalmente, utilizando el
mtodo PROBE y los datos histricos de PSP 0 y PSP 0.1, se estima de forma automtica
el tiempo de desarrollo por cada fase.
El objetivo en PSP1 es establecer un procedimiento ordenado y repetible para realizar
estimaciones de tamao y tiempo de desarrollo por cada fase para un nuevo producto de
software. Este nivel toma en cuenta dos nuevos aspectos:
Ejecutas el editor23
23
La hoja del resumen del plan del proyecto se expande para mostrar adems de los datos
de PSP0.1, datos de productividad (medida en lneas de cdigo por hora), tamao
planeado para todos los tipos de lneas de cdigo. (Zapata, J., Garca, J., Cerrada, J.
2001. Pg. 60-61).
Para saber ms
Si deseas saber acerca de PSP, TSP o CMMI puedes consultar la siguiente direccin
electrnica:
http://www.ecured.cu/index.php/Proceso_de_Software_Personal
Es una enciclopedia virtual, colaborativa y en espaol que fue creada para difundir el
conocimiento de tecnologas de la informacin, sus fuentes son confiables. Puedes
participar en sus foros y acceder a este sitio por medio de las redes sociales ms
importantes de la actualidad.
Fuentes de consulta
Bibliografa bsica
Humphrey, W. (1995) A discipline for software engineering (The complete PSP Book)
United States of America: Addison Wesley.
Humphrey, W. (2005) PSP a Self-improvement process for software engineers. United
States of America: Addison Wesley.
Zapata, J., Garca, J., Cerrada, J. (2001) Introduccin al proceso software personalSM.
Madrid, Espaa: Addison Wesley.
Bibliografa complementaria
Ejecutas el editor24
24