Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SOFTWARE
Contenido
1. Introducción ......................................................................................................................................................................... 2
2. Fundamentos ....................................................................................................................................................................... 3
3. Estimaciones de software................................................................................................................................................. 16
4. Glosario .............................................................................................................................................................................. 52
5. Referencias ........................................................................................................................................................................ 58
1
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
1. Introducción
En el entorno mexicano actual, el desarrollo de software se ha vuelto un motor importante para el crecimiento de la economía
del país (Villalobos Hernández & Gutiérrez Tornés, 2001), (Secretaría de economía, 2012). El número de empresas que
desarrollan software creció en un 54% del 2002 al 2011 (Secretaría de economía, 2012) y hoy México ocupa ya el cuarto lugar
de importancia en desarrollo de software en el mundo (IVEX, 2007), (Secretaría de economía, 2012). Sin embargo, y a pesar
de este crecimiento, la industria del software en el país aún se encuentra en una etapa de poca madurez y en desarrollo (IVEX,
2007).
Aun cuando en nuestro país ya existen más de trescientas empresas que cuentan con una o más certificaciones en algún
modelo de procesos (Secretaría de economía, 2012) la realidad es que en el día a día muchos de los proyectos de software
fracasan (The Standish Group, 1995) o las empresas tienen que invertir grandes sumas económicas (The Standish Group,
1995) para mantener aplicaciones que no cumplen con los estándares de calidad necesarios.
De acuerdo a un estudio realizado por la ANIEI-ILCE1 con el apoyo de la Secretaría de Economía, para determinar la cantidad
y calidad de recursos humanos necesarios para el desarrollo de la industria del software en México (Secretaría de economía,
2012), se detectaron 2 problemáticas fundamentales:
La disparidad que existe entre los conocimientos adquiridos en las instituciones educativas y las competencias
demandadas por la industria.
El costoso y extenso período de transición adaptativa, esto es, el tiempo entre el egreso de las instituciones
educativas y el momento en que son productivos.
Por lo anterior, este curso fue diseñado con el objetivo de incrementar las habilidades profesionales de las personas que
participan en los procesos de software, a través de la aplicación de la ingeniería.
Si el objetivo anterior se cumple, se espera que la madurez de los procesos de software incremente en las empresas para
que así, puedan tener mayor eficiencia, empleados y clientes más satisfechos, para que por consecuencia obtengan mayores
ingresos. En la mayoría de las economías, cerca de una tercera parte del crecimiento del PIB real es atribuible a mejoras en
la eficiencia con la que se utilizan los insumos o factores de la producción (Secretaría de economía, 2012).
El presente trabajo representa una combinación de lecciones aprendidas y mejores prácticas ya implementadas y mejoradas
por equipos de desarrollo de software en México, además de información recopilada de diversas fuentes de información
respetadas y reconocidas en la industria del software en el mundo.
1 Asociación Nacional de Instituciones de Educación en Tecnologías de la Información, A.C. y el Instituto Latinoamericano de la Comunicación Educativa
2
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
2. Fundamentos
Tal como se mostrará más delante en este mismo documento, es importante comprender y distinguir los siguientes:
2.1.1 Software
Una combinación de instrucciones de computadora y definiciones de datos que permiten al hardware de computadora llevar
a cabo funciones computacionales o de control. (IEEE, 1990)
2.1.3 Proyecto
Es un esfuerzo temporal realizado para crear un producto, servicio o resultado únicos. (PMI, 2008)
2.1.4 Proceso
Un conjunto definido de actividades o comportamientos llevados a cabo por humanos o máquinas para alcanzar uno o más
objetivos. (ABPMP, 2009)
Uno de los elementos que más comúnmente es llamado de diferentes formas, aunque los nombres con los que se le llama
signifiquen cosas diferentes, es el software mismo. Para comprender las diferencias hay que comprender los significados de
cada palabra, de ahí entonces que es importante comprender primero que:
3
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Un sistema es un conjunto de cosas que relacionadas entre sí ordenadamente contribuyen a determinado objeto
(RAE, 2012), es decir, muchas cosas pueden ser un sistema, entre ellas el software, pero no es lo único.
Luego entonces, se puede decir que un sistema computacional es un sistema que contiene una o más computadoras
y software asociado (IEEE, 1990), es decir, un sistema computacional no solamente está conformado por un
programa computacional.
De lo anterior entonces es importante comprender que un programa computacional no necesariamente es igual a un
programa, es decir, un programa puede significar varias cosas (RAE, 2012), la mayoría de ellas no relacionadas con
la computación. Por otro lado, un programa computacional es una combinación de instrucciones de computadora y
definiciones de datos que permiten al hardware de computadora llevar a cabo funciones computacionales o de control
(IEEE, 1990).
Por otro lado, el software es un conjunto, que está conformado por programas de computadora, procedimientos,
datos y documentación asociada pertenecientes a la operación de un sistema computacional (IEEE, 1990).
Y finalmente, pero no por eso menos importante, una aplicación o software de aplicación es un software diseñado
para cumplir con necesidades específicas de un usuario, por ejemplo, software de nómina, recursos humanos o
ventas (IEEE, 1990).
Otra de las confusiones más comunes es la que se da cuando a un programa computacional se le llama proyecto. Aunque es
muy común que en otros ámbitos se emplee la palabra proyecto como sinónimo del producto, servicio o resultado que se está
generando, se considera que en la industria del software se vuelve relevante hacer la distinción para que el concepto de la
administración de proyectos se adopte más rápido y de forma más efectiva y eficiente. De lo anterior entonces se puede decir
que:
Un proyecto es un esfuerzo temporal realizado para crear un producto, servicio o resultado únicos (PMI, 2008), es
decir, el proyecto, para el ámbito de este documento, es el conjunto de actividades que se realizan para crear un
programa computacional.
Como ya se explicó antes, un programa computacional es una combinación de instrucciones de computadora y
definiciones de datos que permiten al hardware de computadora llevar a cabo funciones computacionales o de control
(IEEE, 1990).
Cuando se comienzan a medir los resultados obtenidos en procesos relacionados con la calidad del software se vuelve
relevante poder comprender la diferencia entre error, defecto y falla. De ahí que es importante que se comprenda que:
Un error es una acción desacertada o equivocada (RAE, 2012) o una acción humana que produce un resultado
incorrecto (IEEE, 1990). Cuando un humano participa en el desarrollo de un producto y comete un error, puede
insertar un defecto en el producto.
4
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Por lo tanto, se puede decir que un defecto es una imperfección o deficiencia en un componente de un proyecto en
la cual dicho componente no cumple sus requerimientos o especificaciones y necesita ser corregido o reemplazado
(PMI, 2008).
Finalmente, una falla es la acción y el efecto de que algo salga fallido, por ejemplo, el programa computacional.
En resumen se puede decir que, el humano (programador(a) de software) puede insertar defectos en el programa
computacional cuando comete errores. Posteriormente y debido a uno varios defectos, el programa computacional puede
fallar.
Durante la administración de un proyecto es importante controlar los costos y, dependiendo de la organización que esté
ejecutando el proyecto, podría estar manejándose el precio en lugar del costo, de ahí la importancia de distinguirlos. Por lo
tanto:
El costo es la cantidad que se da o se paga por algo (RAE, 2012), es decir, desde el punto de vista del que compra
o crea un proyecto o producto de forma interna, el costo es la cantidad pagada o invertida por dicho proyecto o
producto, aunque desde el punto de vista de quien vende, el costo representa lo que le cuesta ejecutar el proyecto
aunque después le agregue una utilidad y el total se convierta en el precio.
Visto de otra forma, desde el punto de vista de quien vende un proyecto o producto y lo ofrece como un servicio a un
cliente, el precio representa lo que le cuesta ejecutar el proyecto más la ganancia que desea obtener por la venta de
dicho servicio (proyecto o producto). En este caso, desde el punto de vista de quien compra, lo que le cuesta el
proyecto representa un costo, como ya se mencionó anteriormente.
En resumen, el precio es la suma del costo más la utilidad. El costo puede descomponerse en varias cosas, sin embargo, esa
descomposición está fuera del alcance de este documento.
En la administración de un proyecto debe controlarse el costo, no el precio, ya que si se controla el precio se corre el riesgo
de tomar la utilidad como parte de la inversión disponible dentro del proyecto.
Es muy común que en los proyectos se mida el esfuerzo en función del tiempo, por ejemplo, en horas, días o semanas. Lo
anterior puede provocar una confusión cuando existe comunicación relacionada con esfuerzo y duración, de tal forma que
durante una conversación o mensaje, una de las partes puede estar expresando algún valor en función del esfuerzo y la otra
parte podría interpretar dicho valor en función de la duración, por ejemplo: Juan le dice a María que realizar la actividad A le
tomará 16 horas y María podría interpretar que Juan realizará dicha actividad en 2 días, puesto que calcula 8 horas laborales
por día, sin embargo, quizá Juan contemplaba dedicar 4 horas diarias a dicha actividad, por lo que la duración en realidad
sería de 4 días y no 2, como lo pensó María. Si no existe la comunicación adecuada entre Juan y María, podría haber una
confusión importante posteriormente. La confusión anterior es muy común y de ahí que sea importante distinguir la diferencia
entre ambos conceptos. Por lo tanto:
5
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
El esfuerzo es el número de unidades de trabajo requeridas para completar una actividad programada o un
componente de una estructura de desglose de trabajo. Usualmente expresado como horas/hombre, días/hombre o
semanas/hombre (PMI, 2008). El esfuerzo es igual a la duración de una actividad multiplicada por el número de
personas que participan en ella.
La duración es el número total de periodos de trabajo (sin incluir días festivos u otros periodos no laborables)
requerido para completar una actividad programada o un componente de una estructura de desglose de trabajo.
Usualmente expresada como días o semanas laborables (PMI, 2008).
Es muy común que quienes se gradúan de alguna carrera relacionada con las tecnologías de información y que eligen el
camino del software comiencen programando. También es muy común que quienes inician nuevas empresas de software sean
los mismos ingenieros o licenciados surgidos de las carreras de tecnologías de información y que alguna vez iniciaron
programando. Lo anterior ha provocado que muchas empresas de software enfoquen sus esfuerzos a la programación del
mismo, probablemente y, porque lo consideran necesario, también dediquen tiempo a la recopilación de los requerimientos
del software que van a desarrollar o mantener. Es muy probable que muchas de esas empresas comiencen con ninguna o
pocas prácticas de administración de proyectos, de arquitectura y diseño, de pruebas y qué pensar de prácticas de
aseguramiento de la calidad.
Por lo mencionado anteriormente es importante comprender que hacer software no es lo mismo que programar, es decir,
hacer software implica llevar a cabo, preferentemente de una forma estandarizada, actividades de estimaciones,
recopilación de requerimientos, arquitectura y diseño de software, pruebas de software, revisiones del código y la
documentación generada, administración de la configuración del software, administración de proyectos, medición
del desempeño, aseguramiento de la calidad entre otras, ah y por cierto, también de programación.
En el año de 1986 Fred Brooks publicó un ensayo titulado “No Silver Bullet — Essence and Accidents of Software Engineering”
en el cual argumentaba que: “no existe un solo desarrollo, en cualquier tecnología o técnica de administración, que por sí
misma prometa una mejora en al menos un orden de magnitud dentro de una década en productividad, confiabilidad o
simplicidad”. Y pareciera que Brooks tenía razón, pero su predicción pareciera aplicar no solamente para la siguiente década
después de que publicó su ensayo, sino que aparentemente sigue siendo válida hasta nuestros días.
En 1985 fue formado The Standish Group, con la visión de recolectar información de casos de la vida real de fallas y ambientes
de tecnologías de información. En 1995 este grupo publicó el reporte del caos en el cual, entre otros hallazgos, encontraron
que:
El 31% de los proyectos sería cancelado antes de ser terminado. (The Standish Group, 1995)
6
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
El 52.7% de los proyectos costarían 189% más que en sus estimaciones originales. (The Standish Group, 1995)
La falla para producir software confiable para manejar las maletas en el aeropuerto de Denver le estaba costando a
la ciudad $1.1 millones de dólares por día. (The Standish Group, 1995)
Las compañías estadounidenses y las agencias de gobierno gastarían $81 billones de dólares por proyectos de
software cancelados. Estas mismas compañías pagarían $59 billones de dólares adicionales por proyectos de
software que serán terminados pero excederán sus estimaciones originales de duración. (The Standish Group, 1995)
El promedio de proyectos de software que fueron terminados a tiempo y dentro de su presupuesto fue de 16.2%, sin
embargo, en compañías grandes el número de proyectos terminados a tiempo y dentro de su presupuesto
representaba solamente el 9% del total. (The Standish Group, 1995)
Los proyectos terminados por grandes compañías estadounidenses contenían solamente el 42% de las funciones y
características que fueron propuestas originalmente. Sin embargo, en compañías pequeñas este porcentaje era
diferente, un total de 78.4% de sus proyectos de software fueron entregados con al menos el 74.2% de sus funciones
y características originales. (The Standish Group, 1995)
En años recientes, el reporte del caos muestra que la ejecución de proyectos ha mejorado, pero no por mucho:
Tabla 1 Indicadores de proyectos de software de acuerdo al reporte del caos del Standish Group.
Exitosos: terminaron a tiempo, dentro del presupuesto planeado y cumplieron los requerimientos de sus usuarios.
Desafiados: excedieron sus presupuestos, su duración planeada o no cumplieron completamente con las necesidades de
sus usuarios.
Jim Johnson, presidente del Standish Group mencionó en el 2007 (Rubinstein, 2007) que la mejoría con respecto a años
anteriores principalmente se debió a:
7
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Originalmente fue planeado para automatizar el manejo de equipaje a través del aeropuerto entero, el sistema probó ser más
complejo que lo que algunos creyeron originalmente. Los problemas para construir el sistema resultaron en una espera
en la apertura del nuevo aeropuerto de 16 meses mientras los ingenieros trabajaban para hacer que el sistema funcionara.
El retraso agregó aproximadamente $560 millones de dólares al costo del aeropuerto. Al final del día, el sistema que fue
finalmente implementado fue una sombra de lo que estaba originalmente planeado. En lugar de integrar las tres salas en un
sólo sistema, el sistema soportaba vuelos de salida solamente en una de las salas. Todo el equipaje adicional era manejado
por un remolcador manual y un sistema de carretillas que fue construido a la carrera cuando se hizo claro que el sistema
automatizado nunca cumpliría sus metas.
Inclusive la porción del sistema que fue implementada nunca funcionó apropiadamente y en agosto de 2005 el sistema fue
desechado por completo. El costo de un millón de dólares mensuales empleados para mantener el sistema fue contrarrestando
el valor que ofrecían las partes restantes del sistema además de que el uso de un sistema manual realmente ayudó a reducir
costos.
Los factores reportados a la prensa y que contribuyeron al fracaso fueron: subestimación de la complejidad, una arquitectura
compleja, cambios en los requerimientos, subestimación de la duración y el presupuesto, despido del consejo de expertos,
entre otros.
El culpable resultó ser un error en una sola línea de código, nada de hackers como se especuló en aquel entonces, que había
sido agregada durante una actualización altamente compleja del software. American Airlines estimó que este pequeño error
le costó $200,000 dólares en reservaciones.
(Barker, 2007)
8
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
De acuerdo a una pieza en la revista New York Times, la autodestrucción fue disparada por el software que intentaba llenar
un espacio de 16 bits con un número de 64 bits.
"Este apagón ocurrió 36.7 segundos después del lanzamiento, cuando la computadora del sistema de navegación intentó
convertir un dato, el de la velocidad lateral del cohete, de un formato de 64 bits a un formato de 16 bits. El número era
demasiado grande y resultó en un error de sobre flujo (overflow). Cuando el sistema de navegación se apagó, pasó el control
a una unidad idéntica, redundante, la cual estaba ahí para proveer respaldo en caso de que hubiera alguna falla. Pero la
segunda unidad había fallado de forma idéntica unos milisegundos antes. ¿Y por qué no? estaba ejecutando el mismo
software." mencionó el artículo.
(Barker, 2007)
Uno de los principales conflictos que existen en la industria del software es el que tiene que ver con la visión que tiene un
programador de software promedio y la que tiene un empresario, de software o de cualquier industria que emplee software.
Es muy común que una persona que recién egresa de una carrera relacionada con el software decida comenzar su carrera
profesional programando software y que inicialmente busque crecimiento profesional adquiriendo la mayor cantidad de
conocimiento técnico posible, por otro lado, el empresario promedio enfocará sus esfuerzos en la obtención de mayores
ingresos económicos. Aunque estas dos visiones no necesariamente son mutuamente excluyentes, al final de cuentas si
representan visiones diferentes que si no son alineadas pueden provocar insatisfacción a ambas partes.
Para explicar de una manera más detallada lo anterior se presentan algunos de los intereses comunes de cada parte. Es
importante aclarar que las siguientes listas no son estáticas y los intereses mostrados no son los únicos que existen e inclusive
es probable que ni siquiera representen los intereses más importantes de cada una de las partes:
9
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
o Entiéndase flexibilidad y libertad como la posibilidad de tener un horario flexible de trabajo, respeto por sus
estimaciones, comprensión de sus jefes del hecho de que como humanos no pueden estar sentados ocho
horas diarias programando y como la posibilidad de realizar otras actividades de esparcimiento en horas
laborales, entre otras.
Trabajar en proyectos con nueva tecnología.
Otros.
Intereses de un empresario:
Incrementar ingresos.
Reducir costos.
Reducir riesgos de negocio.
Satisfacer a clientes.
Satisfacer a empleados.
Mejorar procesos (optimizarlos).
Mayor efectividad y eficiencia del negocio.
Otros.
Como puede observarse, algunos de estos intereses pueden estar en conflicto, por ejemplo, mientras un programador de
software busca mayor flexibilidad y libertad en el trabajo, el empresario está ocupado por obtener mayor eficiencia, que implica
entre otras cosas, la posibilidad de optimizar al máximo los recursos disponibles, entre ellos las horas productivas de un
programador de software. Otro ejemplo es el que tiene que ver con el hecho de que los programadores buscan trabajar en
proyectos que involucren nueva tecnología, sin embargo, hacer esto incrementa los riesgos del negocio desde el momento
que la nueva tecnología puede no tener la madurez necesaria para ser empleada en nuevas aplicaciones de software.
En resumen y para finalizar esta sección, en la medida que los programadores de software comprendan que los programas
computacionales que generan tienen un impacto económico (positivo o negativo) importante en las empresas que los utilizan
y en la medida que el empresario que desarrolla o emplea software comprenda que el software es hecho por personas y no
por máquinas, la madurez de la industria del software incrementará y podrán tenerse programadores y empresarios más
satisfechos.
En la industria de la manufactura es muy común escuchar de la implementación de prácticas de mejora continua, tales como
la administración de la calidad total, y esfuerzos de optimización de la producción asociados a conceptos como la manufactura
esbelta, reducción de defectos, administración de la capacidad de la producción entre otros. Muchos de estos conceptos o
filosofías han sido adoptados y adaptados de empresas japonesas de manufactura.
Aunque como ya se mencionó, dichas prácticas o filosofías han sido adoptadas ampliamente en empresas de manufactura,
no es muy común que dichas prácticas sean empleadas en empresas de servicios o productos de software. Efectivamente
dichas prácticas pueden ser adoptadas a empresas de servicios y específicamente empresas de software, un ejemplo de ello
10
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
es la emergente disciplina conocida como Lean IT, en la que el principal objetivo es la eliminación del desperdicio, desperdicio
entendido como el trabajo que no agrega valor a un producto o servicio (Wikipedia, 2012).
Lean IT promete identificar y erradicar el desperdicio que contribuye a un pobre servicio al cliente, pérdida de negocio, costos
de negocio más altos de lo necesario y pérdida de productividad de los empleados. Para estos fines, Lean IT se enfoca en
ocho elementos de la operación de TI que no agregan valor al producto, servicio terminado o a la organización que los genera:
Sobreproducción (sobre Generación de características (funciones) adicionales Incremento en los costos de producción
aprovisionamiento) no solicitadas por el cliente.
Espera Tiempo que un equipo de desarrollo de software debe Costos no planeados (asociados al
esperar para instalar una aplicación cuando el servidor tiempo de espera, tiempo no
(hardware) requerido para hacerlo no está disponible. productivo)
Procesamiento que no Recopilación manual de información para obtención de Incremento de costos para la
agrega valor indicadores de desempeño de un proyecto organización
Transportación Tiempo de traslado empleado para visitar las oficinas No aprovechamiento de recursos en
de un cliente para recopilar requerimientos. actividades que generen valor
Inventario Programadores de software que no están asignados a Costos devengados por la empresa
algún proyecto productivo. mientras no exista un cliente que
pague, a través de un proyecto, por las
horas disponibles de dichos
programadores.
11
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Para empresas que ofrecen servicios relacionados con productos de software y que lo hacen a través de la ejecución de
proyectos es muy importante distinguir la diferencia entre costo y precio al momento de planear, monitorear y controlar sus
proyectos. Quizá lo anterior no sea tan relevante para empresas cuyos proyectos de software se ejecutan de manera interna,
es decir, no venden servicios relacionados con la ejecución de dichos proyectos.
El costo es la cantidad que se da o se paga por algo (RAE, 2012). La definición anterior se establece desde el punto
de vista de quien compra, pero desde el punto de vista de quien vende se puede decir que el costo es lo que cuesta
ejecutar un proyecto.
El precio representa lo que cuesta (el costo) ejecutar un proyecto más la ganancia que desea obtener por la venta
de dicho proyecto.
Al igual que la premisa que se emplea en México para el IVA (Impuesto al valor agregado) cuando se dice que el IVA solamente
se traslada y no le pertenece a quien lo cobra, podría pensarse del precio, es decir, la utilidad no le pertenece a un proyecto,
por lo tanto, cuando un proyecto que fue vendido se planea, monitorea y controla, solamente debe considerar el costo como
su presupuesto y no el precio, ya que este último incluye la utilidad.
Para mayor información de las diferencias entre el precio y el costo ver la sección Diferencia entre costo y precio en este
mismo documento.
El siguiente texto fue tomado del libro Software Project Survival Guide. (McConnell, Software Project Survival Guide, 1998)
“Upstream, Downstream
Los buenos procesos de software están diseñados para resolver problemas de forma temprana en un proyecto. Este concepto
es lo suficientemente importante para discutirlo con algo de detalle.
12
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Algunas veces habrás escuchado a los desarrolladores experimentados hablar acerca de las partes "upstream" (ir contra la
corriente) y "downstream" (ir en el sentido que va la corriente) de un proyecto. La palabra "upstream" simplemente se refiere
a las partes tempranas de un proyecto tales como el desarrollo de requerimientos y la arquitectura, mientras que "downstream"
se refiere a las últimas partes tales como construcción y pruebas del sistema.
He encontrado que esta distinción entre "upstream" y "downstream" es una forma fundamentalmente útil de pensar acerca de
un proyecto de software. El trabajo que los desarrolladores hacen en las etapas tempranas del proyecto es colocado en un
flujo y tiene que ser "pescado" más delante en el proyecto. Si el trabajo que se hizo al inicio es bien hecho, el trabajo que
es "pescado" más tarde es saludable y contribuye al éxito del proyecto. Si el trabajo que se hizo al inicio es hecho
pobremente, el trabajo que es "pescado" más tarde puede perjudicar severamente al proyecto. En circunstancias
extremas, inclusive puede evitar que el proyecto sea terminado.
Investigadores han encontrado que un defecto insertado en el flujo del proyecto de forma temprana, por ejemplo, un
defecto en la especificación de requerimientos o arquitectura, tiende a costar de 50 a 200 veces más para ser
corregido hacía el final del proyecto que si hubiera sido corregido lo más cercano al punto en el que fue originalmente
colocado en el flujo. La siguiente figura ilustra dicho efecto:
Una sentencia en una especificación de requerimientos puede fácilmente convertirse en varios diagramas de diseño. Más
tarde en el proyecto, esos diagramas pueden convertirse en cientos de líneas de código fuente, docenas de casos de pruebas,
muchas páginas de documentación de usuario, pantallas de ayudas, instrucciones para el personal de soporte técnico, entre
otras.
13
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Si el equipo del proyecto tiene una oportunidad de corregir una equivocación en la etapa en la que se están recolectando los
requerimientos, cuando el único trabajo que ha sido hecho es la creación de una sentencia de requerimientos, hace sentido
que el equipo corrija dicha sentencia en lugar de corregir todas las diferentes manifestaciones de dicha sentencia inadecuada
hacía el final del proyecto. Esta idea algunas veces es llamada "contención de fase" y se refiere a la detección y corrección
de los defectos en la misma fase en la cual los defectos fueron introducidos.
Puesto que ningún código fuente es generado mientras las actividades "upstream" son ejecutadas, dichas
actividades pueden hacer parecer que están retrasando "el verdadero trabajo" del proyecto. En realidad, están
haciendo exactamente lo contrario. Están estableciendo las bases para el éxito del proyecto.
Equivocarse del lado de demasiado proceso marginalmente incrementará la sobrecarga del proyecto, pero equivocarse del
lado de demasiado poco permite que los defectos se deslicen y entonces deberán ser corregidos con un costo de 50 a 200
veces mayor que el costo de corrección más eficiente. Por esta razón, el "dinero inteligente" reside del lado de demasiado
proceso en lugar del lado de muy poco.”
Es muy común, al menos en la industria del software mexicana, que los costos de una aplicación de software sean establecidos
de acuerdo al número de horas invertidas en el desarrollo de dicha aplicación. Esta forma de costear las aplicaciones no
necesariamente es inadecuada, sin embargo, existe un método que permite estandarizar y comparar los costos de varias
aplicaciones y que es independiente de la complejidad de cada aplicación, a diferencia del costeo por horas que no
necesariamente es efectivo cuando se trata de hacer comparaciones, ya que la complejidad entre las diferentes aplicaciones
que se están comparando varía. Dicho método está relacionado con la medición del tamaño del software.
Es muy común también que cuando se realizan estimaciones en un proyecto de software se estime la duración, el esfuerzo 2
y el costo de dicho proyecto con base en el esfuerzo que debe realizarse en cada actividad del proyecto, sin embargo, pocas
veces se estima el tamaño del software. Estimar el tamaño del software permite estimar también la duración, el esfuerzo y el
costo de un proyecto y se pueden calcular con base en la duración, esfuerzo y costo que deben invertirse para generar una
unidad de software. Una unidad de software es la unidad de medida del tamaño de software, las unidades de medida del
tamaño del software más comunes son los puntos de función y las líneas de código.
Entonces, para poder costear el software con base en su tamaño se requiere primero estimar el tamaño del software y
posteriormente establecer la duración, esfuerzo y costo unitario de cada unidad de tamaño. Existen diferentes métodos para
medir el tamaño del software, uno de los más aceptados y reconocido como estándar a nivel mundial es el análisis de puntos
de función (IFPUG, 2012).
Para comprender mejor el concepto del tamaño del software vea la sección Tamaño del software en este mismo documento.
2 Entiéndase esfuerzo como el número de horas, días, meses o años que se requieren para realizar una actividad, multiplicados por el número de personas que participan en dicha
actividad.
14
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
15
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
3. Estimaciones de software
3.1 Introducción
“Es muy difícil defender una estimación de forma vigorosa, plausible y arriesgando el trabajo cuando ésta fue derivada por un
método no cuantitativo, soportada con muy pocos datos y certificada principalmente por las corazonadas de los gerentes”.
-Fred Brooks
1. Una evaluación tentativa o cálculo bruto (McConnell, Software Estimation (Demystifying the Black Art), 2006).
2. Un cálculo preliminar del costo de un proyecto (McConnell, Software Estimation (Demystifying the Black Art), 2006).
3. Aprecio y valor que se da y en que se tasa y considera algo (RAE, 2012).
4. Una evaluación cuantitativa de la probable cantidad o salida. Usualmente aplicada a los costos del proyecto, recursos,
esfuerzo y duraciones. Siempre debe incluir alguna indicación de precisión (ej. +- x por ciento) (PMI, 2008).
Es muy importante recalcar que una estimación siempre será una aproximación, no un dato exacto.
Las estimaciones pueden emplearse y ser útiles para diferentes actividades durante un proyecto y en una organización:
En proyectos:
o Para determinar el tamaño del software que se va a construir o modificar.
o Para determinar la duración del proyecto.
o Para determinar el esfuerzo que requieren las actividades del proyecto.
o Para determinar el costo del proyecto.
o Para determinar la cantidad de recursos, humanos y materiales, necesarios para el proyecto.
o Para determinar el avance de la aplicación, en términos de cuánto software se ha construido.
o Para determinar parte del tamaño del proyecto.
o Para determinar parte del avance del proyecto, en función del avance de la aplicación.
o Para determinar la cantidad de defectos que se han encontrado o que pueden llegar a encontrarse en la
aplicación.
En una organización:
o Para poder comparar aplicaciones.
o Para poder comparar proyectos.
o Para determinar la productividad de los desarrolladores del software.
o Para establecer precios de venta del software.
16
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Es muy común que en la industria del software se confunda el concepto de estimación por el de programación (de actividades),
es decir, cuando se solicita una estimación algunas personas elaboran un cronograma de las actividades que se van a realizar.
Aunque elaborar un cronograma de actividades para posteriormente asignar esfuerzo, costo o duración es una forma de
estimar, la programación de actividades es más una actividad de planeación y no es la única forma de estimar.
Por lo anterior, es importante distinguir claramente las principales diferencias entre una planeación y una estimación:
Planeación
o Prever el futuro,
o Escritura en que sumariamente se precisan los detalles para realizar una obra.
Estimación
o Aproximación,
o Evaluación tentativa,
o Cálculo bruto,
o Cálculo preliminar,
o Evaluación cuantitativa.
La estimación y la planeación son tópicos relacionados, pero estimar no es planear y planear no es estimar. La estimación
debe ser tratada como un proceso imparcial y analítico; la planeación debe ser tratada como un proceso parcial que busca
alcanzar objetivos. Con la estimación, es peligroso querer que el estimado salga ante cualquier respuesta particular. La meta
es la precisión; la meta no es buscar un resultado particular. Pero la meta de la planeación es buscar un resultado particular.
Deliberada y apropiadamente parcializamos nuestros planes para conseguir salidas específicas. Planeamos significados
específicos para alcanzar un fin específico.
Los estimados forman la base para los planes, pero los planes no tienen que ser los mismos que los estimados. Si los
estimados son dramáticamente diferentes de los objetivos, los planes del proyecto necesitan reconocer esas diferencias y
atenderlas con un alto nivel de riesgo. Si los estimados son cercanos a los objetivos, entonces los planes pueden asumir
menos riesgo.
En conclusión, estimar puede ser una actividad de planeación, estimar es calcular algún valor necesario para la planeación o
para la toma de alguna decisión, valor tal como el esfuerzo, costo, duración o tamaño (del software). Mientras que planear
consiste en establecer las estrategias, actividades, objetivos, recursos, procesos, etc. de forma anticipada con la intención de
actuar a futuro acorde a lo definido.
17
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Planeación de proyectos
1.3 Defina los procesos que seguirá 1.4 Seleccione un ciclo de vida
18
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Estrictamente hablando, la definición del diccionario de estimación es correcta: una estimación es una predicción de cuánto
durará un proyecto o cuánto costará. Pero la estimación en los proyectos de software interactúa con objetivos de negocio,
compromisos y el control.
Las empresas tienen razones importantes para establecer objetivos independientemente de las estimaciones de software.
Pero el hecho de que un objetivo es deseable o incluso aún, obligatorio, esto no necesariamente significa que es alcanzable.
Mientras que un objetivo es una descripción de un objetivo de negocio deseable, un compromiso es una promesa para entregar
una funcionalidad deseada con un nivel específico de calidad en una cierta fecha. Un compromiso puede ser lo mismo que un
estimado, o puede ser más agresivo o más conservador que el estimado. En otras palabras, no supongas que el compromiso
tiene que ser lo mismo que el estimado; no lo es.
El desarrollo de software consiste en realizar literalmente cientos de decisiones acerca de todos los temas relacionados con
las características del mismo. La incertidumbre en una estimación de software resulta de la incertidumbre de cómo se
resolverán las decisiones tomadas. Conforme se toman un gran porcentaje de dichas decisiones, se reduce la incertidumbre
de la estimación.
Como un resultado de este proceso de resolución de decisiones, los investigadores han encontrado que las estimaciones de
proyecto están sujetos a cantidades predecibles de incertidumbre en varias etapas. El cono de la incertidumbre muestra como
las estimaciones se vuelven más precisas conforme el proyecto avanza.
19
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
El eje horizontal contiene hitos comunes de proyecto, tales como el concepto inicial, la definición aprobada del producto, los
requerimientos completos, entre otros. Debido a sus orígenes, esta terminología suena de alguna forma orientada a productos.
La “definición de producto” se refiere simplemente a la visión acordada del software, o el concepto de software, y aplica
igualmente a servicios web, sistemas de negocio internos y la mayoría de tipos de proyectos de software.
El eje vertical contiene el grado de error que ha sido encontrado en estimaciones creadas por estimadores habilidosos en
varios puntos del proyecto. Las estimaciones podrían ser por cuánto costará una característica particular y cuánto esfuerzo
será requerido para entregar el conjunto de características, o podría ser por cuántas características pueden ser entregadas
para una cantidad particular de esfuerzo o tiempo.
Como se puede observar en la gráfica, las estimaciones creadas muy temprano en el proyecto están sujetas a un alto grado
de error. Las estimaciones creadas en el tiempo del concepto inicial pueden ser imprecisas por un factor de 4x en el extremo
más alto o 4x en el extremo más bajo (también expresada como 0.25x, que es simplemente 1 dividido entre 4). El rango total
de estimación del extremo alto al bajo es 4x dividido entre 0.25x, o 16X.
Una pregunta que los gerentes y los clientes se hacen es: "¿Si te doy otra semana de trabajo en tu estimación, puedes refinarla
para que contenga menos incertidumbre?” Esa es una pregunta razonable, pero desafortunadamente no es posible cumplir
esa petición. Investigaciones realizadas por Luiz Laranjeira sugieren que la precisión de la estimación de software depende
del nivel de refinamiento de la definición del software (Laranjeira, 1990). Entre más refinada sea la definición, más precisa
será la estimación, La razón por la que una estimación contiene variabilidad es que el proyecto de software en sí mismo
contiene variabilidad. La única forma de reducir la variabilidad en la estimación es reducir la variabilidad en el proyecto.
20
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Una implicación engañosa de esta representación común del cono de la incertidumbre es que parece que tomará para siempre
que el cono adelgace – como si no se pudiera tener una muy buena precisión en la estimación hasta que el proyecto esté casi
terminado. Afortunadamente, esa impresión es creada porque los hitos en el eje horizontal están igualmente espaciado y
naturalmente suponemos que el eje horizontal es tiempo de calendario.
En realidad, los hitos enlistados tienden a estar cargados al frente en el cronograma del proyecto. Cuando el cono es re-
dibujado sobre una base de tiempo calendario, se parece a la siguiente figura:
Ilustración 3 - El cono de la incertidumbre basado en tiempo calendario. El cono se adelgaza mucho más rápido que en la
representación previa mostrada.
Como se puede observar en esta versión del cono, la precisión de la estimación mejora rápidamente para el primer 30% del
proyecto, mejorando de +-4x a +-1.25x.
Un concepto importante, y difícil, es que el cono de la incertidumbre representa la mejor precisión que es posible tener en
estimaciones de software en diferentes puntos del proyecto. El cono representa el error en estimaciones creadas por
estimadores habilidosos. Es fácilmente posible estimar de peor forma. No es posible ser más preciso; solamente es posible
tener más suerte.
21
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Ilustración 4 - Si un proyecto no es bien controlado o bien estimado, se puede terminar con una nube de incertidumbre que
contiene aún más error de estimación que el representado por el cono.
El cono adelgaza solo si se toman las decisiones que eliminan la variabilidad. Como lo muestra la figura siguiente, definir la
visión del producto (incluyendo el compromiso de lo que no se hará) reduce la variabilidad. Definir los requerimientos –
nuevamente, incluyendo lo que no se va a hacer – elimina la variabilidad posterior. Diseñar la interfaz de usuario ayuda a
reducir el riesgo de creciente variabilidad por requerimientos mal comprendidos. Por supuesto, si el producto no está realmente
definido, o si la definición del producto se redefine más adelante, el cono se hará más ancho y la precisión de la estimación
será más pobre.
Ilustración 5 - El cono de la incertidumbre no adelgaza por sí mismo. Se adelgaza tomando decisiones que remuevan las
fuentes de variabilidad del proyecto.
22
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Error de alcance
Si se usan los valores de esta tabla, debe reconocerse que en el punto en el que se crea la estimación se desconoce si la
salida actual del proyecto caerá en el límite superior o en el límite inferior del rango.
Una segunda estrategia está basada en el hallazgo de que la habilidad para “saber cuánto” y la habilidad para “saber qué tan
incierto” son dos habilidades diferentes. Se puede tener una persona que estime el mejor y peor caso del rango y una segunda
persona que estime la probabilidad de que el resultado actual caiga en dicho rango.
23
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
No es posible realizar compromisos significativos en la parte temprana y ancha del cono. Las organizaciones efectivas
retrasan sus compromisos hasta que han realizado el trabajo necesario para forzar que el cono se haga más angosto. Los
compromisos significativos en la parte media del proyecto (cerca del 30% del camino recorrido) son posibles y apropiados.
Si se está trabajando en un proyecto que realiza un ciclo completo de desarrollo en cada iteración se tendrá un cono “miniatura”
en cada iteración. Antes de que se realice el trabajo de requerimientos para la iteración, se estará en el punto de la definición
del producto aprobada en el cono, sujeto a una variabilidad de 4x en las estimaciones del extremo bajo al alto del cono. Con
iteraciones cortas (menos de un mes), se puede mover de la definición del producto aprobada a los requerimientos completos
y diseño terminado de interfaz de usuarios en unos pocos días, reduciendo la variabilidad de 4x a 1.6x. Si el cronograma es
inmovible, la variabilidad de 1.6x aplicará para las características que se pueden entregar en el tiempo disponible, en lugar
del esfuerzo o duración.
Lo que se sacrifica con estrategias que dejan los requerimientos sin definir hasta el inicio de cada iteración es la certeza y
precisión acerca de la combinación de costo, duración y características que se entregarán en las iteraciones que están por
delante.
La alternativa a iteración total no es no tener iteraciones. Se ha encontrado que es casi universalmente inefectiva. Las
alternativas son menos iteraciones o diferentes iteraciones.
Muchos equipos de desarrollo han encontrado un término medio en el cual la mayoría de los requerimientos son definidos al
inicio del proyecto, pero el diseño, la construcción, pruebas y liberación son llevados a cabo en cortas iteraciones. En otras
palabras, el proyecto se mueve secuencialmente a través del hito de diseño terminado de interfaz de usuario (cerca del 30%
del tiempo del calendario del proyecto) y luego se cambian a una estrategia iterativa desde ese punto en delante. Esto reduce
la variabilidad existente en el cono cerca de +-25%, lo que permite controlar el proyecto lo suficiente para conseguir el objetivo
mientras se obtienen beneficios del desarrollo iterativo. Los equipos de proyecto pueden dejar alguna cantidad de tiempo
planeado para requerimientos por definir al final del proyecto. Lo anterior introduce algo de variabilidad relacionada con el
conjunto de funciones, lo cual, en este caso, es positivo porque se empleará solamente si se identifican funciones deseables
para implementar. Este término medio soporta un amplio rango de predictibilidad de costo y duración así como una cantidad
moderada de flexibilidad en requerimientos.
Algunas veces cuando la gente discute la estimación de software se trata a la estimación como una actividad puramente
predictiva. La gente se comporta como si el estimado fuera hecho por un estimador imparcial, sentado en algún lugar en el
espacio exterior, desconectado de la planeación del proyecto y la priorización de actividades.
24
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
En realidad, hay muy poco de pureza en una estimación de software. Si alguna vez ha querido un ejemplo del principio de
incertidumbre de Heisenberg aplicado a software, sería la estimación. El principio de incertidumbre de Heisenberg es la idea
de que el mero acto de observar una cosa la cambia, de tal forma que nunca se estará seguro de cómo se hubiera comportado
esa cosa si no se le hubiere estado observando). Una vez que hacemos una estimación y, sobre las bases de dicho estimado,
hacemos un compromiso para entregar funcionalidad y calidad en una fecha determinada, entonces controlamos el proyecto
para alcanzar el objetivo. Las actividades típicas de control del proyecto incluyen la remoción de requerimientos no críticos, la
redefinición de requerimientos, el reemplazo de personal menos experimentado con personal más experimentado, entre otras.
La siguiente figura ilustra dicha dinámica:
Además de las actividades de control del proyecto, los proyectos a menudo son afectados por eventos externos imprevistos.
El equipo del proyecto podría necesitar crear una liberación intermedia para soportar u cliente clave. El personal podría ser
distraído para soportar una aplicación antigua, entre otras cosas.
Los eventos que ocurren durante un proyecto casi siempre invalidan las suposiciones que fueron empleadas para estimar el
proyecto. Las suposiciones de funcionalidad cambian, las suposiciones de personal cambian y las prioridades cambian. Se
vuelve imposible realizar una evaluación analítica clara de si el proyecto fue estimado de forma precisa, puesto que el proyecto
de software que ha sido entregado no es el proyecto que fue originalmente estimado.
En la práctica, si se entrega un proyecto con el nivel de funcionalidad esperado, usando el nivel de recursos planeado, dentro
del tiempo establecido, entonces típicamente se dice que el proyecto “cumple sus estimados”, a pesar de todas las impurezas
analíticas implícitas en dicho enunciado.
Al igual que los ciclos de vida del software, los modelos de procesos y metodologías, la elaboración de una estimación siempre
dependerá del contexto, por lo tanto, siempre será recomendable adaptar cualquier proceso, técnica o método de estimación
25
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
a la situación particular en la que se empleará. Lo anterior significa que es importante tener claro cuál es el propósito de la
estimación, en qué etapa se está realizando, quien o quienes la están elaborando, con qué información se cuenta y qué otros
procesos dependen de la información que se generará.
Algunos proyectos determinan sus características y luego se enfocan en estimar la duración y el esfuerzo requeridos para
entregar dichas características. Otros proyectos determinan sus presupuestos y tiempo de desarrollo y luego se enfocan en
cuántas características pueden entregar.
Muchas técnicas de estimación son aplicables independientemente de lo que se está estimando; algunas pocas técnicas
funcionan mejor para estimar cuánto esfuerzo requerirá un proyecto, cuánto durará un proyecto o cuántas características
pueden ser entregadas.
Al seleccionar un proceso, técnica o método de estimación deben considerarse los siguientes factores:
26
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
En cada uno de los casos anteriores el método o técnica de estimación puede, y debe, variar. Por ejemplo, muy probablemente
una estimación de proyecto en los dos primeros casos esté basada en el tamaño de lo que se va a construir, sin embargo, en
los tres últimos casos (implementación, migración y actualización) la estimación tenga que estar basada en los entregables
del proyecto y las actividades que deben realizarse para instalarlos, diseñarlos, construirlos, configurarlos o probarlos.
Es importante comprender que cuando se realiza una estimación, las actividades asociadas a ésta se realizan como parte de
procesos o funciones de negocio que integran varios procesos. Siendo así, elaborar una estimación requerirá elementos de
entrada (insumos) y generará productos (salidas) que probablemente sean requeridos para otros procesos. En dicho contexto
se presenta el siguiente:
27
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Herramientas
- Técnicas de estimación
- Métodos de estimación
- Información histórica
- Software de estimación
Roles
Estimador
28
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
3.2.1 Introducción
En la industria de software mexicana es muy común hablar de la duración de un proyecto o de una actividad, inclusive se han
generalizado los conceptos de esfuerzo y costo, sin embargo, aunque estos parámetros son válidos y están relacionados con
las estimaciones de proyectos, podrían no ser muy útiles en proyectos de software si se estiman y emplean de forma aislada
sin considerar el tamaño del software que se va a construir.
¿Pero a qué se refiere entonces el tamaño de software y qué relación tiene con las estimaciones? El tamaño de software es
el atributo que permite determinar cuánto mide éste. Dicho atributo está estrechamente ligado con las estimaciones puesto
que representa la entrada principal requerida para determinar el esfuerzo, duración y costo de diseñarlo, construirlo, probarlo
y liberarlo.
Dado que el software es un bien intangible, puede llegar a ser complicado determinar cuál es su tamaño. Las dos unidades
de medida más comunes, generalmente empleadas y aceptadas para medir el tamaño del software son:
Identificar el tamaño del software a través de cada una de estas unidades de medida tiene sus ventajas y desventajas, sin
embargo, si una organización logra estandarizar el método y la unidad de medida empleada para determinar el tamaño del
software a través de sus proyectos, la unidad de medida en sí misma será menos relevante que la información que podrá
obtenerse y que podrá ser de gran utilidad para estimar proyectos futuros, aplicaciones futuras, aplicaciones compradas,
productividad de los desarrolladores de software, entre otras cosas.
El tamaño del producto es el más grande contribuyente en el cronograma de un desarrollo. Los productos más grandes toman
más tiempo. Los productos más pequeños toman menos tiempo. Características adicionales requieren especificación, diseño,
construcción, pruebas e integración adicionales. Requieren coordinación adicional con otras características y requieren que
se coordinen otras características con ellas. Puesto que el esfuerzo requerido para construir software se incrementa
desproporcionadamente más rápido que el tamaño del software, una reducción en tamaño mejorará la velocidad de desarrollo
desproporcionadamente. Reducir el tamaño de un programa de tamaño medio a la mitad típicamente reducirá el esfuerzo
requerido en casi dos tercios.
Se puede reducir el tamaño del producto dejando para desarrollo solamente las características esenciales o se puede reducir
temporalmente desarrollando un producto en etapas. También se puede reducir desarrollando en un lenguaje o herramienta
de alto nivel de tal forma que cada característica requiera menos código.
29
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Ya se habló del tamaño del software y cómo puede medirse, sin embargo, es muy importante comprender que no siempre los
métodos o modelos empleados por la mayoría funcionan para todo y para todos. Por lo anterior, es muy importante tener muy
claro cuáles son los componentes del software para que, en caso de ser necesario, puedan establecerse nuevos métodos de
medición del tamaño que funcionen para las necesidades de cada organización.
Dicho lo anterior, podríamos decir que los siguientes son algunos de los componentes más comunes e importante del software,
entendiendo software como un sistema compuesto por una aplicación y su documentación. El siguiente modelo, aunque es
extenso, no es limitativo:
Software
Aplicación Documentación
De
Pantallas Componentes Base de datos Archivos
requerimientos
Procedimientos
Constantes De usuario
almancenados
Funciones De configuración
Reglas
Disparadores
30
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Otros factores que deben considerarse y que están asociados con la aplicación son los siguientes:
Complejidad
Funcionalidad
Reglas de negocio
Algoritmos
Diseño (gráfico)
Atributos de calidad
o Precisión
o Escalabilidad
o Extensibilidad
o Seguridad
o Usabilidad
o Desempeño
o Otros
Documentación (del código fuente)
Estándares de nomenclatura
Patrones de arquitectura y diseño empleados
Interfaces con otras aplicaciones
En conclusión, es muy importante conocer cómo está conformado un programa computacional y el software en general,
para poder determinar cómo puede medirse su tamaño.
Establecer nuevas estimaciones - Comparando la estimación del tamaño de una aplicación con el tamaño de
aplicaciones construidas previamente para determinar la duración, esfuerzo y costo de diseñarla y construirla.
Medir la densidad de defectos - Estableciendo la cantidad de defectos contenidos por unidad de medida del
tamaño.
Medir la productividad - Determinando la cantidad de producto (la aplicación) que puede generar un desarrollador
por unidad de tiempo (horas, por ejemplo).
Determinar el avance de construcción de la aplicación – Identificando el tamaño de producto (aplicación) que ya se
ha construido.
Seleccionar proveedores – Entregando el tamaño del software a construir, se pueden solicitar cotizaciones a
diferentes proveedores para seleccionar uno.
Establecer el precio del software – Se puede definir un precio por unidad de medida y con base en el tamaño
determinar el precio total de la aplicación.
31
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
3.3.1 Introducción
La característica distintiva del enfoque de lo general a lo particular es que se centra en las propiedades generales del sistema,
tales como la integración, gestión del cambio, y la entrega gradual, combinada con su relativa facilidad de aplicación. Sin
32
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
embargo, como se mencionó anteriormente, por su naturaleza, este enfoque no es tan bueno como el enfoque de lo particular
a lo general en la captura de los factores de menor nivel, como las cuestiones específicas de cada proyecto, las características
de diseño de aplicaciones, y detalles específicos de la implementación, que tienden a acumularse rápidamente y puede afectar
en gran medida la estimación.
El enfoque de lo particular a lo general es generalmente considerado como más intuitivo y menos propenso a errores que el
enfoque de lo general a lo particular. En el caso de componentes bien aislados puede producir estimaciones muy precisas.
Sin embargo, usar solamente el enfoque de lo particular a lo general puede provocar que se pasen por alto limitaciones y
costos significativos a nivel sistema, especialmente cuando se emplea este enfoque en ausencia de suficientes datos de
requerimientos.
Basadas en experiencia
Orientadas al aprendizaje
33
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
A diferencia de modelos paramétricos más estrictos, estas técnicas se basan principalmente en la experiencia y conocimiento
de los seres humanos, lo cual constituye su principal debilidad. Esta debilidad puede ser mitigada mediante la expansión del
tamaño del grupo de los estimadores.
La ventaja más evidente de las técnicas de aprendizaje orientado es que la estimación se basa en las características probadas
y no sólo la evidencia empírica, como en el caso de la estimación basada en la experiencia. Una limitación de esta técnica es
la necesidad de determinar las variables más importantes que se utilizan para describir la solución, incluidas las que la
distinguen de la línea de base. Estos objetivos pueden ser difíciles o pueden consumir mucho tiempo para lograrse.
Algorítmicos
o Matemáticos
o Estadísticos
34
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
para producir una estimación con un grado o rango conocido de precisión. Por su capacidad de aceptar diferentes métricas
estos métodos son también llamados a veces basados en métricas.
A diferencia de las técnicas no algorítmicas, los métodos algorítmicos pueden producir estimaciones repetibles, y son
relativamente fáciles de ajustar. Estos métodos, sin embargo, son también más sensibles a los datos de entrada inexactos y
pueden llegar a producir estimaciones muy pobres si no se calibran y validan correctamente. Además, estos métodos no
pueden abordar eficazmente circunstancias excepcionales, tales como personal altamente creativo o perezoso, o trabajo en
equipo excepcionalmente fuerte o pobre.
3.4.1 Introducción
La elaboración de estimaciones mediante el juicio de experto es una de las técnicas más empleadas en nuestra industria,
principalmente cuando se emplean enfoques que van de lo particular a lo general. En este documento se propone el uso del
juicio de experto en combinación con algunas técnicas de descomposición del alcance que permiten identificar los elementos
que van a ser estimados.
Técnica de estimación
Procedimiento: 1. Identificar qué se está solicitando o buscando (cumplir un objetivo, establecer un compromiso o
estimar)
2. Identificar, de forma general, cuál es el entregable y/o actividades que se realizarán
(descomponer en caso de ser necesario)
3. Identificar el propósito de la estimación (planear, re-planear, cotizar, otro)
4. Identificar qué se está solicitando estimar (tamaño, duración, esfuerzo, costo o recursos)
5. Solicitar información adicional en caso de ser necesario
6. Resolver dudas en caso de ser necesario
7. Revisar registros de estimaciones previas (para seleccionar alguna en caso de que pueda ser
comparable con la actual)
8. Estimar
9. Registrar y almacenar valores estimados
35
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
3.5.1 Introducción
En la técnica Delphi, a un grupo de expertos en la materia se le pide que haga la evaluación de un problema. Durante la ronda
inicial de estimación, cada experto ofrece su evaluación individual y sin consultar a los demás. Después de los resultados de
la ronda inicial se recogen y se clasifican, los participantes se involucran en una segunda ronda de análisis, esta vez con la
información sobre las evaluaciones realizadas por otros participantes. Durante esta ronda se espera reducir la amplitud de los
números, mientras que algunos elementos son considerados para obtener mayor detalle, otros son descartados. Después de
unas cuantas rondas, el equipo llega a una estimación mutuamente acordada.
Técnica de estimación
Nombre: Delphi
36
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
3.6.1 Introducción
Este método consiste en encontrar algún elemento que se pueda contar y que esté altamente relacionado con el tamaño de
la aplicación que se está estimando. Una vez que se hayan contado los elementos de la aplicación multiplíquelos por una
medida de tiempo unitaria. En caso de que no se puedan contar elementos entonces emplee el juicio de experto.
Método de estimación
Procedimiento: 1. Identificar qué se está solicitando o buscando (cumplir un objetivo, establecer un compromiso o
estimar)
2. Identificar, de forma general, cuál es el entregable y/o actividades que se realizarán
(descomponer en caso de ser necesario)
3. Identificar el propósito de la estimación (planear, re-planear, cotizar, otro)
4. Identificar qué se está solicitando estimar (tamaño, duración, esfuerzo, costo o recursos)
5. Solicitar información adicional en caso de ser necesario
6. Resolver dudas en caso de ser necesario
7. Revisar registros de estimaciones previas (para seleccionar alguna en caso de que pueda ser
comparable con la actual)
8. Identificar y contar los elementos que van a generarse (pantallas, reportes, tablas, etc.)
37
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
9. Establecer un valor unitario para cada elemento con base en información histórica (duración,
esfuerzo, costo, recursos) (emplear juicio de experto como último recurso)
10. Calcular los valores totales para cada elemento
11. Registrar y almacenar valores estimados
12. Registrar y almacenar suposiciones y razonamientos hechos al estimar
13. Validar estimación
14. Presentar estimación (preferentemente como un rango)
3.7.1 Introducción
Un punto de función es una medida sintética del tamaño de un programa computacional que es a menudo usada en las etapas
tempranas de un proyecto. Los puntos de función son más fáciles de determinar de una especificación de requerimientos que
las líneas de código y proveen una medida más exacta del tamaño de un programa. Existen diferentes métodos para contar
puntos de función.
El análisis de puntos de función es un método estándar para medir el desarrollo de software desde el punto de vista del
usuario. Mide el software cuantificando la funcionalidad que provee al usuario con base en el diseño lógico.
El número de puntos de función en un programa está basado en el número y complejidad de cada uno de los siguientes
elementos:
Entradas – Pantallas, formas, cajas de dialogo, controles o mensajes a través de los cuales un usuario final u otro
programa agrega, elimina o cambia datos del programa. Esto incluye cualquier entrada que tiene un formato único o
una lógica de procesamiento única.
Salidas – Pantallas, reportes, gráficas o mensajes que el programa genera para ser usado por un usuario final u otro
programa. Esto incluye cualquier salida que tenga un formato diferente o requiera una lógica de procesamiento
diferente que otros tipos de salidas.
Consultas – Combinaciones de entrada / salida en las cuales una entrada resulta en una salida simple e inmediata.
El término se originó en el mundo de bases de datos y se refiere a la búsqueda directa de datos específicos,
usualmente empleando una llave única. En las aplicaciones modernas con interfaces gráficas de usuario (GUI –
Graphic User Interface por sus siglas en inglés), la línea entre las consultas y las salidas es borrosa; generalmente,
sin embargo, las consultas regresan datos directamente de una base de datos y proveen formato rudimentario,
mientras que las salidas pueden procesar, combinar o resumir datos complejos y pueden ser altamente formateadas.
38
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Archivos lógicos internos – Grupos lógicos más importantes de datos de usuario final o información de control que
está completamente controlada por el programa. Un archivo lógico puede estar compuesto de un archivo plano o una
tabla de una base de datos relacional.
Archivos lógicos externos – Archivos controlados por otros programas con los cuales el programa que está siendo
contado interactúa. Esto incluye cada grupo lógico importante de datos o información de control que entra o deja el
programa.
La terminología empleada en el análisis de puntos de función está muy orientada a las bases de datos. El método básico
funciona bien para todos los tipos de software, pero se tendrá que adaptar a cada ambiente si es que no se están construyendo
sistemas con uso intensivo de base de datos.
El procedimiento para contar el tamaño de un programa mediante el análisis de puntos de función se muestra a continuación.
3.7.2 Procedimiento
2.1. Identificar el alcance (pantallas, descripciones, necesidades de negocio, casos de uso de negocio, requerimientos
de negocio, etc.).
2.2. Identificar el propósito del conteo (opcional. Ayuda a enfocar y entender el objetivo del conteo)
3.1. Identificar y contar los almacenamientos lógicos (ILF o EIF). ILF si es mantenido por la aplicación, EIF si no es
mantenido por la aplicación. (no incluir tablas temporales, índices o catálogos que solo tienen un identificador y
una descripción).
3.1.1. Determinar la complejidad de cada almacenamiento lógico contando los elementos de datos (DETs y RETs).
3.2. Determinar la contribución de cada almacenamiento lógico, medida en puntos de función con base en la tabla 1 y
4.1. Identificar y contar los procesos elementales clasificándolos en funciones transaccionales (EI, EQ, EO).
4.1.1. Determinar la complejidad de cada función transaccional contando los elementos de datos (DETs FTRs).
4.1.2. Determinar la contribución de cada función transaccional, medida en puntos de función con base en la tabla
3, tabla 4 y tabla 5 (usar las 3 tablas solo para nuevos desarrollos). Ver los criterios de conteo en la
39
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
7. Determinar los puntos de función ajustados. (Puntos de función ajustados = Puntos de función no ajustados x valor del
factor de ajuste).
3.7.3 Tablas
40
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
ILF 7 10 15
EIF 5 7 10
EI 3 4 6
EQ 3 4 6
EO 4 5 7
41
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
2 Procesamiento de datos distribuido ¿Cómo son manejados los datos y funciones de procesamiento
distribuidos?
4 Configuración intensa de uso ¿Qué tan intensamente es usada la plataforma de hardware actual en
dónde será ejecutada la aplicación?
7 Eficiencia del usuario final La aplicación fue diseñada para tener eficiencia del usuario final?
8 Actualización en línea ¿Qué tantos ILFs son actualizados por transacciones en línea?
10 Reusabilidad ¿La aplicación fue desarrollada para cumplir una o más necesidades
de usuario?
12 Facilidad de operación ¿Qué tan efectivos y/o automatizados son los procedimientos de
arranque, respaldo y recuperación?
13 Sitios múltiples ¿La aplicación fue diseñada, desarrollada y soportada para ser
instalada en múltiples sitios para múltiples organizaciones?
14 Facilidad de cambio ¿La aplicación fue diseñada, desarrollada y soportada para facilitar los
cambios?
42
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
43
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
3.7.5 Catálogos
EI (External Input)
EQ (External Inquiry)
EO (External Output)
44
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
También conocidos como entidades de información, deben identificarse en cuanto a que sean totalmente independientes y
que tengan un significado para el usuario. Por ejemplo, índices, tablas temporales son considerados almacenamientos
técnicos creados con propósitos de implementación y no contribuyen al tamaño funcional de la aplicación. Así mismo,
catálogos que contienen sólo un ID y una descripción, son almacenamientos considerados como “Code Table” y tampoco
tendrán una contribución en el tamaño funcional. El punto clave para agrupar los almacenamientos lógicos, es verificando la
dependencia entre ellos. Una pregunta clave, es respondernos si dicho almacenamiento puede existir de manera aislada, o si
para tener significado debe formar parte de otro almacenamiento. Por ejemplo: Si se define la tabla de empleado, y la tabla
telefonos_empleado, ambas son consideradas como un solo almacenamiento lógico, ya que telefonos_empleado no tiene
significado por sí sola.
Otra forma de ver esta independencia, por ejemplo, es reflexionando lo siguiente, si desaparece un registro de la tabla de
empleado ¿tiene sentido para el negocio conservar el registro asociado en telefonos_empleado?. Si la respuesta es positiva,
entonces se considera que cada entidad puede existir de manera independiente y por lo tanto serán dos almacenamientos
lógicos. Por el contrario, si la respuesta es negativa, los almacenamientos no existen de manera independiente, y por lo tanto
son un solo almacenamiento lógico.
Son los campos de datos únicos e identificables por el usuario. Ayudan a identificar la complejidad de un almacenamiento
lógico.
Son los campos únicos de información que son identificables por el usuario y que entran o salen de la función transaccional.
Ayudan a identificar la complejidad de una función transaccional. A continuación se presentan algunos criterios para contar
los DETs en funciones transaccionales:
45
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Para ser contado, el DET debe entrar o salir de la aplicación, es decir, un campo que sea utilizado internamente y
que no entre o salga de la aplicación no es contado como DET.
Las etiquetas, nombres de campo, nombres de columna y variables de sistema como (fecha de sistema, número de
página, número de columna, etc.) no son contados.
En aplicaciones on-line, se cuenta 1 DET para la capacidad de ejecución sin importar de cuantas formas distintas se
pueda ejecutar el proceso elemental. Por ejemplo, si se puede ejecutar la función de “Insertar empleado” presionando
el botón “Guardar” o presionando Ctrl-G o dando clic en una opción de menú, sólo se cuenta un DET por la capacidad
para ejecutar dicha función.
En aplicaciones on-line, se cuenta 1 DET para la capacidad de envío de mensajes, sin importar cuantos mensajes
sean enviados dentro de la misma función transaccional. Por ejemplo, en la función “Insertar empleado”, por ejemplo,
podrían hacerse diversas validaciones sobre cada uno de los datos capturados (longitud del campo, formato de la
fecha, etc.), sin importar cuantas validaciones sean realizadas, sólo se contará un DET por la capacidad de generar
mensajes en dicha función transaccional.
Contar los drop-downs (combo boxes) como procesos elementales. Contar 1 DET por la capacidad de ejecución
(cuando se presiona la flechita y se despliega el combo box) y un DET por dato mostrado en el combo (se cuentan
los campos, no los registros. Normalmente será un DET – campo por combo box).
46
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Si la calificación de estos factores ambientales es el mínimo, el valor de ajuste será 0.65. Por el contrario, si los factores
ambientales son los más complicados, el valor de ajuste será 1.35.
El valor del factor de ajuste está basado en 14 características generales del sistema (GSCs - General System Characteristics)
que califican la funcionalidad general de la aplicación que se está contando. Cada característica tiene descripciones asociadas
que ayudan a determinar los grados de influencia de dichas características. Los grados de influencia varían en una escala de
cero a 5, desde "ninguna influencia" hasta "fuerte influencia".
3.8.1 Introducción
Un elemento clave para mejorar las estimaciones siempre será la información histórica real que represente el desempeño de
un proyecto. Para poder emplear información histórica y mejorar las estimaciones se vuelve imperante recolectar la
información necesaria durante un proyecto. Dicha información no solamente servirá como entrada al proceso de estimaciones,
sino que muy seguramente representará información útil para medir el desempeño de un proyecto durante sus procesos de
monitoreo y control.
Aunque un objetivo inicial pudiera ser mejorar las estimaciones a nivel individual, en algún momento será necesario contar
con información a nivel proyecto, e inclusive a nivel de cartera de proyectos con el objetivo de monitorear y controlar los costos
(duración y esfuerzo) de dichos proyectos. Es aquí cuando la estandarización, de procesos y herramientas, se vuelve relevante
y otro elemento clave en la ecuación.
Esta sección presenta un modelo ya probado que permite la recolección y almacenamiento de información en proyectos para
que pueda ser empleada como entrada para nuevas estimaciones.
47
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
3.8.2.1 Introducción
Como ya se mencionó anteriormente, el uso de información histórica es clave para mejorar las estimaciones de proyectos de
software. En esta sección se presenta un modelo probado que permite la recolección y uso de información de tamaño,
duración, esfuerzo y costo de aplicaciones y proyectos para que, además de ser usada como información histórica, permita
incrementar el conocimiento de la organización, principalmente en el desempeño de sus proyectos.
3.8.2.2 Modelo
A continuación se presenta el modelo propuesto para recolectar, almacenar y emplear información histórica de proyectos:
Estimación
o Representa la información de tamaño, duración, esfuerzo y costo aproximados de un nuevo proyecto o
aplicación.
o Emplea, para fines comparativos o de generación de nueva información, la información histórica
almacenada en el repositorio organizacional de métricas.
Proyecto
48
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
o Durante éste se recolecta la información necesaria real acerca de su duración, esfuerzo y costo, así como
del tamaño de la aplicación.
o Durante el proyecto también se genera la planeación, que permite tener mayor detalle acerca de la duración,
esfuerzo y costo, comparado con lo originalmente estimado.
Registro de métricas del proyecto
o Este registro contiene la información consolidada, y probablemente detallada, de la duración, esfuerzo y
costo del proyecto, así como del tamaño de la aplicación.
Repositorio organizacional de métricas
o Contiene la información consolidada de duración, esfuerzo y costo de todos los proyectos de la organización,
así como el tamaño de todas las aplicaciones generadas o modificadas.
Herramienta de registro de horas (timesheet)
o Permite el registro de las horas dedicadas a alguna actividad, que a su vez, una vez que se sumen,
representarán las horas dedicadas a un entregable y, estas a su vez, representarán las horas dedicadas a
una fase; así entonces, la suma de las horas dedicadas a una fase representarán las horas dedicadas al
proyecto. Para comprender mejor lo anteriormente mencionado, vea la siguiente figura.
Cronograma (y su estructura jerárquica)
o Además de que contiene la programación de actividades del proyecto, al final del mismo contendrá la
información real de avance, duración y probablemente esfuerzo y costo de todo el proyecto (siempre y
cuando se haya mantenido actualizado).
o Para poder asegurar el uso de la información de duración, esfuerzo y costo en futuras estimaciones, se
sugiere que se estandarice la estructura jerárquica (WBS – Work Breakdown Structure) de los cronogramas,
tal y como se muestra en la siguiente ilustración.
Aplicación
o La aplicación construida o modificada aportará el tamaño real de la misma al finalizar el proyecto. Para
poder conocer el tamaño de la aplicación habrá que emplear algún método como por ejemplo el análisis de
puntos de función.
Sistema de costos estándar
o El sistema de costos estándar, contablemente hablando, es el sistema empleado por la organización para
determinar los costos originados por la producción (desarrollo) del software o de cualquier otro producto o
servicio que ofrezca la empresa.
El siguiente diagrama representa la estructura jerárquica propuesta para estandarizar los cronogramas, así como la
herramienta de registro de actividades (timesheet). Es importante que ambas herramientas (cronograma y timesheet) estén
construidos bajo la misma estructura para asegurar la integridad y homogeneidad de la información a lo largo del ciclo de vida
de los proyectos y la organización en sí.
49
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
- Procesos de desarrollo de 1. Estandarizar 3 los procesos relacionados con el desarrollo de software Información de
software de la empresa 2. Estandarizar la herramienta para recolección de horas en proyectos tamaño,
3Para efectos de este proceso, estandarizar significa definir e implementar, a nivel organización, y luego usar, a nivel proyecto, el elemento
mencionado.
50
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Herramientas
Roles
Responsables de procesos
Administradores de proyectos
51
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
4. Glosario
Actividad
(1) Serie de pasos llevados a cabo para ejecutar un proceso. (ABPMP, 2009)
(2) Un componente de trabajo llevado a cabo durante el curso de un proyecto. (PMI, 2008)
(3) Trabajo que una compañía u organización lleva a cabo usando procesos de negocio. Una actividad puede ser atómica o
no atómica (compuesta). Los tipos de actividades que son parte de un modelo de procesos son: procesos, subprocesos y
tareas. (OMG, 2011)
(4) Unidad tangible de trabajo realizada por un trabajador en un flujo de trabajo, de forma que implica una responsabilidad
bien definida para el trabajador, produce un resultado bien definido (un conjunto de artefactos) basado en una entrada bien
definida (otro conjunto de artefactos), y representa una unidad de trabajo con límites bien definidos a la que, probablemente
se refiera el plan de proyecto al asignar tareas a los individuos. También puede verse como la ejecución de una operación por
un trabajador. (Jacobson, Booch, & Rumbaugh, 2000)
Aplicación
(1) Una colección de fases de proyecto, generalmente secuenciales, cuyo nombre y número son determinados por las
necesidades de control de la organización u organizaciones involucradas en el proyecto. Un ciclo de vida puede ser
documentado con una metodología. (PMI, 2008)
(2) Una partición de la vida de un producto, servicio, proyecto, grupo de trabajo o conjunto de actividades de trabajo en fases.
(SEI, 2010)
(1) El periodo que comienza cuando un producto de software es concebido y concluye cuando el software ya no está disponible
para su uso. El ciclo de vida del software típicamente incluye las siguientes fases: concepto, requerimientos, diseño,
implementación, pruebas, instalación, operación y mantenimiento, en algunas ocasiones se incluye una fase de
descontinuación. Estas fases pueden traslaparse o ser ejecutadas iterativamente. (IEEE, 1990)
(2) Ciclo que cubre cuatro fases en el siguiente orden: inicio, elaboración, construcción y transición. (Jacobson, Booch, &
Rumbaugh, 2000)
Cliente
(1) Persona que utiliza con asiduidad los servicios de un profesional o empresa. (RAE, 2012)
(2) La parte responsable de aceptar el producto o autorizar un pago. El cliente es externo al proyecto o grupo de trabajo pero
no necesariamente externo a la organización. El cliente puede ser un proyecto o grupo de trabajo de más alto nivel. Los
clientes son un subconjunto del grupo de interesados en el proyecto. (SEI, 2010)
52
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
(3) Persona, organización o grupo de personas que encarga la construcción de un sistema, ya sea empezando desde cero, o
mediante el refinamiento de versiones sucesivas. (Jacobson, Booch, & Rumbaugh, 2000)
Componente
Una parte física y reemplazable de un sistema que se ajusta a, y proporciona la realización de, un conjunto de interfaces.
(Jacobson, Booch, & Rumbaugh, 2000)
Costo
Defecto
(3) Una imperfección o deficiencia en un componente de un proyecto en la cual dicho componente no cumple sus
requerimientos o especificaciones y necesita ser corregido o reemplazado. (PMI, 2008)
(4) Anomalía del sistema, por ejemplo un síntoma de un error en el software descubierto durante las pruebas, o un problema
descubierto durante una reunión de revisión. (Jacobson, Booch, & Rumbaugh, 2000)
Duración
El número total de periodos de trabajo (sin incluir días festivos u otros periodos no laborables) requerido para completar una
actividad programada o un componente de una estructura de desglose de trabajo. Usualmente expresada como días o
semanas laborables. (PMI, 2008)
Entrada
Cualquier elemento, interno o externo al proyecto que es requerido por un proceso antes de que el proceso proceda. Puede
ser una salida de un proceso predecesor. (PMI, 2008)
Entregable
Cualquier producto único y verificable, resultado o capacidad para llevar a cabo un servicio que debe ser producido para
completar un proceso, fase o proyecto. A menudo usado más estrechamente en referencia a un entregable externo, que es
un entregable que está sujeto a aprobación del patrocinador o cliente del proyecto. (PMI, 2008)
Un elemento que será provisto a un adquiriente u cualquier otro recipiente designado tal como fue especificado en un acuerdo.
El elemento puede ser un documento, elemento de hardware, elemento de software, servicio o cualquier tipo de producto de
trabajo. (SEI, 2010)
53
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Error
(2) Una acción humana que produce un resultado incorrecto. (IEEE, 1990)
(3) La diferencia entre un valor o condición computado, observado o medido y la condición o valor verdadero, especificado o
teóricamente correcto. Por ejemplo, una diferencia de 30 metros entre un resultado computado y el resultado correcto. (IEEE,
1990)
(4) Un resultado incorrecto. Por ejemplo, un resultado computado de 12 cuando el resultado correcto es 10. (IEEE, 1990)
Esfuerzo
El número de unidades de trabajo requeridas para completar una actividad programada o un componente de una estructura
de desglose de trabajo. Usualmente expresado como horas/hombre, días/hombre o semanas/hombre. (PMI, 2008)
(1) Una colección de actividades de un proyecto relacionadas lógicamente, usualmente culminando en la conclusión de un
entregable importante. Las fases de un proyecto son concluidas principalmente de forma secuencial, pero pueden empalmarse
en algunas situaciones del proyecto. Una fase de proyecto es un componente del ciclo de vida del proyecto. (PMI, 2008)
(2) Periodo de tiempo entre dos hitos principales de un proceso de desarrollo. (Jacobson, Booch, & Rumbaugh, 2000)
Hito
(2) Punto en el que han de tomarse importantes decisiones de negocio. Punto de sincronización en el que coinciden una serie
de objetivos bien definidos, se completan artefactos, se toman decisiones de pasar o no a la fase siguiente, y en el que las
esferas técnica y de gestión entran en conjunción. (Jacobson, Booch, & Rumbaugh, 2000)
Indicador
Un dispositivo o variable que puede ser configurada con un estado prescrito con base en los resultados de un proceso o la
ocurrencia de una condición especificada. Por ejemplo, una bandera o semáforo. (IEEE, 1990)
Instrumento o herramienta
Insumo
54
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Interfaz
(1) Un límite compartido a través del cual la información es pasada. (IEEE, 1990)
(2) Un componente de hardware o software que conecta dos o más componentes con el propósito de pasar información de
uno a otro. (IEEE, 1990)
(3) Conectar dos o más componentes con el propósito de pasar información de uno a otro. (IEEE, 1990)
(4) Servir como un componente conectado o para conectar tal como se especifica en (2). (IEEE, 1990)
Iteración
(1) El proceso de llevar a cabo una secuencia de pasos repetidamente. (IEEE, 1990)
(3) Conjunto de actividades llevadas a cabo de acuerdo a un plan (de iteración) y unos criterios de evaluación, que lleva a
producir una versión, ya sea interna o externa. (Jacobson, Booch, & Rumbaugh, 2000)
Medición
Medida
Variable a la cual se le asigna un valor como resultado de una medición. (SEI, 2010)
Métrica
(1) Una medida cuantitativa del grado en el cuál un sistema, componente o proceso posee un determinado atributo. (IEEE,
1990)
Modelo
(3) Esquema teórico, generalmente en forma matemática, de un sistema o de una realidad compleja, como la evolución
económica de un país, que se elabora para facilitar su comprensión y el estudio de su comportamiento. (RAE, 2012)
(3) Una abstracción de un sistema cerrada semánticamente. (Jacobson, Booch, & Rumbaugh, 2000)
55
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Patrón
Solución a un problema común de un determinado contexto. (Jacobson, Booch, & Rumbaugh, 2000)
Proceso
(1) Un conjunto definido de actividades o comportamientos llevados a cabo por humanos o máquinas para alcanzar uno o
más objetivos. (ABPMP, 2009)
(2) Una secuencia de pasos llevados a cabo para un propósito dado. (IEEE, 1990)
(3) Una secuencia o flujo de actividades en una organización con el objetivo de llevar a cabo trabajo. (OMG, 2011)
(4) Un conjunto de actividades interrelacionadas, las cuales transforman salidas en entradas, para cumplir un propósito dado.
(SEI, 2010)
(5) Un flujo de control pesado que puede ejecutarse concurrentemente con otros procesos.
Proceso de negocio
(1) Trabajo llevado a cabo de principio a fin que entrega valor a los clientes. (ABPMP, 2009)
(2) Un conjunto definido de actividades de negocio que representa los pasos requeridos para alcanzar un objetivo de negocio.
Incluye el flujo, uso de información y recursos. (OMG, 2011)
(3) Conjunto total de actividades necesarias para producir un resultado de valor percibido y medible para un cliente individual
de un negocio. (Jacobson, Booch, & Rumbaugh, 2000)
Producto
(2) Un artefacto que es producido, es cuantificable y puede ser un elemento final o un componente. (PMI, 2008)
Programa de computadora
Una combinación de instrucciones de computadora y definiciones de datos que permiten al hardware de computadora llevar
a cabo funciones computacionales o de control. (IEEE, 1990)
Proyecto
(1) Es un esfuerzo temporal realizado para crear un producto, servicio o resultado únicos. (PMI, 2008)
(2) Esfuerzo de desarrollo para llevar un sistema a lo largo de un ciclo de vida. (Jacobson, Booch, & Rumbaugh, 2000)
La naturaleza temporal de los proyectos indica un inicio y un fin definidos. El fin es alcanzado cuando los objetivos del proyecto
han sido alcanzados o cuando el proyecto es terminado puesto que sus objetivos no pueden o no podrán ser cumplidos, o
cuando la necesidad de continuar el proyecto ya no exista. (PMI, 2008)
56
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Riesgo
Variable de un proyecto que pone en peligro o impide su éxito. (Jacobson, Booch, & Rumbaugh, 2000)
Rol
(1) Una función definida para ser llevada a cabo por el miembro de un equipo de proyecto, tal como prueba, inspección,
codificación. (PMI, 2008)
Salida
Un producto, resultado o servicio generado por un proceso. Puede ser una entrada para un proceso sucesor. (PMI, 2008)
Servicio
Los servicios son entregados a través del uso de sistemas de servicios que han sido diseñados para satisfacer requerimientos
de servicio. (SEI, 2010)
Muchos proveedores de servicios entregan combinaciones de servicios y bienes. Un sistema de servicios puede entregar
ambos tipos de productos. (SEI, 2010)
Los servicios pueden ser entregados a través de combinaciones de procesos manuales y automatizados. (SEI, 2010)
Sistema
(1) Conjunto de cosas que relacionadas entre sí ordenadamente contribuyen a determinado objeto. (RAE, 2012)
(2) Una colección de subsistemas organizados para llevar a cabo un propósito específico y descritos por un conjunto de
modelos, posiblemente desde distintos puntos de vista.
Sistema computacional
Un sistema que contiene una o más computadoras y software asociado. (IEEE, 1990)
Software
57
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
Software de aplicación
(1) Software diseñado para cumplir con necesidades específicas de un usuario, por ejemplo, software de nómina, recursos
humanos o ventas. (IEEE, 1990)
(2) Sistema que ofrece a un usuario final un conjunto coherente de casos de uso. (Jacobson, Booch, & Rumbaugh, 2000)
Subproceso
Tarea
(2) Una actividad atómica que está incluida dentro de un proceso. Una tarea es usada cuando el trabajo en el proceso no es
descompuesto para obtener un nivel más fino de detalle en el modelado del proceso. Generalmente, un usuario final, una
aplicación o ambos llevarán a cabo la tarea. (OMG, 2011)
Patrocinador
La persona o grupo que provee los recursos financieros, en efectivo o especie, para el proyecto. (PMI, 2008)
Usuario (final)
(1) Una de las partes que emplea un producto entregado o que recibe el beneficio de un servicio entregado. Los usuarios
finales también pueden, o no, ser clientes. (SEI, 2010)
(2) Humano que interactúa con un sistema. (Jacobson, Booch, & Rumbaugh, 2000)
5. Referencias
ABPMP. (2009). Guide to the Business Process Management Common Body of Knowledge (BPM CBOK) Version 2.0.
Chicago: Association of Business Process Management Professionals.
Barker, C. (2007, 11 22). The top 10 IT disasters of all time. Retrieved from ZDNet: http://www.zdnet.com/the-top-10-it-
disasters-of-all-time-3039290976/
Booch, G., Rumbaugh, J., & Jacobson, I. (2006). El lenguaje unificado de modelado. Pearson Education.
Calleam Consulting Ltd. (2012, 11 20). Denver Airport Baggage System Case Study. Retrieved from Why Projects Fail:
http://calleam.com/WTPF/?page_id=2086
Domínguez, J. (2012, 11 16). The Curious Case of the CHAOS Report 2009. Retrieved from ProjectSmart.co.uk:
http://www.projectsmart.co.uk/the-curious-case-of-the-chaos-report-2009.html
58
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
IBM. (2013, 04 16). RUP: Best practices for design, implementation and effective project management. Retrieved from IBM
Web Site: http://www-01.ibm.com/software/rational/rup/
IEEE. (1990). IEEE Standard Glossary of Software Engineering Terminology. New York: The Institute of Electrical and
Electronics Ehgineers.
IFPUG. (2012, 11 22). About Function Point Analysis. Retrieved from International Function Point Users Group:
http://www.ifpug.org/?page_id=10
IVEX. (2007). El mercado del software en México. Ciudad de México: Instituto Valenciano de la exportación.
Jacobson, I., Booch, G., & Rumbaugh, J. (2000). El proceso unificado de desarrollo de software. Madrid, España: Addison
Wesley.
Karl T. Ulrich, S. D. (2009). Diseño y desarrollo de productos, cuarta edición. Mc Graw Hill.
Lamb Charles, H. J. (2002). Marketing, Sexta Edición. International Thomson Editores S.A.
McConnell, S. (1996). Chapter 2: Rapid-Development Strategy. In S. McConnell, Rapid Development (Taming Wild Software
Schedules) (p. 22). Redmond, Washington: Microsoft Press.
McConnell, S. (1996). Rapid Development (Taming Wild Software Schedules). Redmond, Washington: Microsoft Press.
McConnell, S. (1998). Software Project Survival Guide. Redmond, Washington: Microsoft Press.
McConnell, S. (2006). Software Estimation (Demystifying the Black Art). Redmond, Washington: Microsoft Press.
Oktaba, H. (2010, 03 07). Historia estándar ISO/IEC 29110. Retrieved from ISO/IEC 29110: http://iso29110.kuali-
kaans.mx/iso29110/index.php?option=com_content&view=section&layout=blog&id=3&Itemid=8&lang=es
OMG. (2011). A Foundation for the Agile Creation and Enactment of Software Engineering Methods. Needham, MA: OMG.
OMG. (2011). Business Process Model and Notation (BPMN). Needham, MA: Object Management Group.
Pareja Quinaluisa, J. F. (2012, 02 08). Evaluación de procesos de software utilizando EvalProSoft aplicado a un caso de
estudio. Retrieved from Escuela Politécnica Nacional: http://bibdigital.epn.edu.ec/handle/15000/4491
PMI. (2008). A Guide to the Project Management Body of Knowledge (PMBOK Guide) Fourth Edition. Pennsylvania: Project
Management Institute, Inc.
RAE. (2012, 11 08). Diccionario de la lengua española. Retrieved from Real Academia Española: http://www.rae.es
Rubinstein, D. (2007, 3 1). Standish Group Report: There's Less Development Chaos Today. Retrieved from SD Times:
http://www.sdtimes.com/content/article.aspx?ArticleID=30247
Secretaría de economía. (2012, 11 13). Capital humano - estimación del capital humano de las personas. Retrieved from
Sistema nacional de indicadores de la industria de tecnologías de información:
http://www.edigital.economia.gob.mx/capital%20humano.htm
Secretaría de economía. (2012). Ejercicio de Rendición de Cuentas a la Sociedad PROSOFT 2012. Ciudad de México:
Secretaría de economía.
Secretaría de economía. (2012, 11 13). Mercado nacional. Retrieved from Sistema nacional de indicadores de la industria de
tecnologías de información: http://www.edigital.economia.gob.mx/MNACIONAL.htm
59
Este material es propiedad de Rogelio Francisco Ramírez Ramírez y no puede ser distribuido, reproducido o comercializado sin el consentimiento expreso de su
autor. Registro de obra en trámite.
SEI - Software Engineering Institute. (2013, 04 16). Team Software Process - A Performance Framework for Software
Development. Retrieved from SEI Web Site: http://www.sei.cmu.edu/library/upload/TSPoverview.pdf
SEI - Software Engineering Institute. (2013, 04 16). The Personal Software Process (PSP). Retrieved from SEI Web Site:
http://www.sei.cmu.edu/library/abstracts/reports/00tr022.cfm
SEI. (2010). CMMI for Acquisition, Version 1.3 (CMU/SEI-2010-TR-032). Hanscom AFB, MA: Software Engineering Institute.
SEI. (2010). CMMI for Development, Version 1.3 (CMU/SEI-2010-TR-033). Hanscom AFB, MA: Software Engineering
Institute.
SEI. (2010). CMMI for Services, Version 1.3 (CMU/SEI-2010-TR-034). Hanscom AFB, MA: Software Engineering Institute.
Villalobos Hernández, M., & Gutiérrez Tornés, A. (2001). Investigación sobre las prácticas de ingeniería de software. Ciudad
de México: CIC-IPN.
60