Ingenieria de Software PDF
Ingenieria de Software PDF
Ingenieria de Software PDF
El desarrollo de software es una de las acti- como lo eran durante los primeros años de
vidades más importantes de la computación, la computación. De esta manera, el lector po-
ya que está presente tanto en el desarrollo de drá conocer los fundamentos de la ingeniería
aplicaciones ajenas a la computación —por de software aplicables en el desarrollo de soft-
ejemplo, un programa que controla la asigna- ware tanto para las áreas de la computación
ción de salas de embarque en un aeropuer- estudiadas en este libro, como para cualquier
to— como en el desarrollo de programas área del saber.
básicos en el área —por ejemplo, un sistema
operativo—. Otro aspecto relevante que debe
tenerse en cuenta es que el desarrollo de 12.1 Modelo del proceso
software no es una tarea solamente técnica,
en la cual lo único que importa es la tecno- Un proceso define quién hace qué, cuándo
logía y los desarrolladores. La producción de y cómo lo hace, para alcanzar cierto obje-
software generalmente también involucra a tivo. En general, el éxito de las empresas u
terceros (es decir, en la mayoría de las situa- organizaciones depende en gran medida de
ciones se desarrolla un programa para satis- la definición y seguimiento adecuado de sus
facer una necesidad específica de un usuario procesos. En el caso de una empresa que se
que no es el mismo programador). Por lo dedica al desarrollo de software, se requieren
tanto, el éxito de un programa está sujeto procesos especializados que abarquen desde
a que éste haga lo que se espera que haga, la creación hasta la administración de un siste-
que haya sido desarrollado con los recursos ma de software. Como se ha visto en capítulos
estimados y que sea confiable. Considerando anteriores, los sistemas de software pueden
lo mencionado, el diseño, desarrollo y man- llegar a ser extremadamente complejos. Para
tenimiento de software debe realizarse con la administrar la complejidad de tales sistemas
misma seriedad y responsabilidad con la que es necesario contar con modelos de procesos
se llevan a cabo cualquiera de las actividades y tecnologías de software apropiadas. En este
propias de las ingenierías tradicionales. capítulo se describe en qué consiste el proce-
En este capítulo se presenta una introduc- so de software.
ción al proceso de desarrollo de software, así Un modelo de proceso de software
como los conceptos básicos acerca de meto- define cómo resolver la problemática del
dologías que existen para el trabajo en equi- desarrollo de sistemas de software. Para de-
po, dado que el software que se desarrolla sarrollar software se requiere resolver ciertas
hoy en día ya no son programas de cien líneas fases de un proceso que se conocen en su
de código, hechos por un solo programador, conjunto como el ciclo de vida1 del desarro-
1
Scacchi, W., 2001, “Process models in software engineering”, en J. Marciniak (Ed), Encyclopedia of
software engineering (second edition), Wiley.
llo de software. Un modelo de proceso debe en el sistema. Para hacer esta elección existen
considerar una variedad de aspectos, como ciertas heurísticas que muestran la tendencia
el conjunto de personas, estructuras organi- a cambiar en varios elementos de un sistema,
zacionales, reglas, políticas, actividades, com- como se muestra en la tabla 12.1.2 Las inter-
ponentes de software, metodologías y herra- faces representan los elementos gráficos, la
mientas utilizadas. funcionalidad son las reglas del negocio
A continuación se describen aspectos (requisitos del usuario), los datos y funcio-
esenciales que definen un proceso: arquitec- nes son los elementos internos que se usan
turas, actividades, métodos y metodologías, para describir a los objetos (correspondien-
estrategias y herramientas para la administra- tes a las estructuras de datos básicas de la
ción de software. programación orientada a objetos), mientras
que la información representa el dominio
12.1.1 Arquitecturas del problema en una aplicación.
Esta tabla resalta dos aspectos del desa-
rrollo de software. Primero, la arquitectura
Una arquitectura de software define la es-
del sistema debe distinguir entre elementos
tructura general de un sistema. Las arquitec-
con mayor y menor probabilidad de cambios.
turas varían de acuerdo con el tipo de sistema
Segundo, el desarrollo de software debe con-
a desarrollarse. Pueden ser arquitecturas ba-
siderar un modelo de proceso en el que
sadas en elementos sencillos o en componen-
aquellos elementos de mayor probabilidad
tes prefabricados de mayor tamaño. Además
de cambio no “arrastren” a los más estables.
de depender del tipo de sistema a desarrollar,
Este tema se discute con mayor detalle en la
la selección de una arquitectura afecta as-
sección de metodologías.
pectos como la extensibilidad del sistema
(qué tan fácil es extenderlo en el futuro para
incorporar más funcionalidad o mayor capa- 12.1.2 Actividades
cidad). Por lo tanto, la arquitectura debe ser
escogida de manera que minimice los efectos Una actividad es una unidad (un paso) bási-
de los cambios que pueda haber en el futuro ca de un proceso. En el proceso de software
Interfaces Alta
Funcionalidad Alta
Datos Mediana
Funciones Mediana
Objetos Baja
Información Baja
2
Coad, P., y Yourdon, E., 1991, Object-oriented analysis, Yourdon Press.
Actividad Descripción
Requisitos Se especifican las necesidades del sistema a desarrollar. La
especificación de requisitos sirve como base para la negociación entre
los desarrolladores y clientes del sistema y también para planear y
controlar el proceso de desarrollo.
Análisis Se busca comprender los requisitos del sistema con el propósito de
estructurar la arquitectura del sistema. Responde a la pregunta del
“qué” del sistema.
Diseño Se transforma la arquitectura obtenida durante el análisis en una
arquitectura especializada, donde se considera el ambiente de
implantación particular del sistema. Obedece al “cómo” del sistema.
Implementación Se expresa la arquitectura del sistema en una forma aceptable para la
computadora (es decir, el código programado).
Integración Se combinan los componentes creados de manera independiente
para formar el sistema completo.
Pruebas Se verifica y valida el sistema a nivel de componentes individuales y
su integración. Éste es uno de los aspectos más críticos del desarrollo
y debe desarrollarse de manera concurrente con el resto de las
actividades. Se busca descubrir cualquier defecto en los requisitos,
análisis, diseño, implementación e integración. Las pruebas se hacen a
varios niveles, desde funciones sencillas hasta el sistema completo.
Documentación Se describen los aspectos sobresalientes de los requisitos, análisis,
diseño, implementación, integración y pruebas. Esto servirá para
usuarios externos e internos, aquellos encargados de mantener el
sistema y extenderlo.
Mantenimiento Se corrigen errores que no se hayan encontrado durante el desarrollo
y las pruebas originales del sistema. Se extiende el sistema si surgen
nuevas necesidades.
supone que lo hará. El alcance del modelo no hacer esta extensión durante el modelo de
de análisis está directamente relacionado con análisis es que la propia aplicación controla la
la naturaleza del problema. En el caso de un arquitectura del sistema y no las circunstan-
análisis orientado a objetos, se desea identifi- cias existentes durante su implementación.
car los objetos y describir cómo interactúan En otras palabras, el modelo de análisis debe
entre sí. ser visto como un modelo conceptual y ló-
gico del sistema, mientras que el modelo de
diseño debe definir todo lo que es necesario
12.1.2.3 DISEÑO hacer para alcanzar el código final. Dado que
los ambientes de implementación tienden a
El propósito del modelo de diseño es exten- cambiar, es necesario guardar y congelar el
der la arquitectura de análisis. La razón para modelo de análisis para cualquier manteni-
miento que se requiera en el futuro, incluso las cuales se tiene que construir el sistema.
después de terminar el diseño. El modelo de Además, el diseño del sistema debe apoyar
diseño se concentra en dos aspectos prin- aspectos adicionales como una terminación
cipales, el diseño de objetos y el diseño de inesperada durante la ejecución del sistema
sistemas, como se describe a continuación. por agotamiento de recursos o por fallas ex-
El modelo de análisis no es lo suficiente- ternas del hardware.
mente formal, por lo cual para llegar al códi-
go final se deben refinar las estructuras de la
arquitectura de análisis. Es necesario especifi-
12.1.2.4 IMPLEMENTACIÓN
car el detalle de cada clase (en otras palabras,
sus operaciones y atributos). Este aspecto se El modelo de implementación toma el resul-
conoce como el diseño de estructuras o, tado del modelo de diseño para generar el
de manera general, como el diseño de ob- código final del sistema. Esta traducción debe
jetos, en el caso de arquitecturas orientadas ser relativamente sencilla y directa, ya que
a objetos. El diseño de objetos incluye la se- todas las decisiones importantes han sido
lección de algoritmos y estructuras de datos tomadas en las etapas previas. La especializa-
para satisfacer los objetivos de rendimiento y ción al lenguaje de programación, o base de
espacio del proyecto de software. El modelo datos, describe cómo traducir los términos
de análisis y diseño de objetos tienen bastan- usados en el diseño a los términos y propie-
te en común, incluyendo conceptos, técnicas dades del lenguaje específico de implementa-
y notaciones similares. Como consecuencia, ción. Muchas herramientas, como se ve más
las mismas herramientas de desarrollo se uti- adelante, apoyan el proceso de generación
lizan para llevar a cabo ambas actividades. automática de código a través de un proceso
A menudo estas similitudes hacen difícil saber de ingeniería hacia adelante (en inglés,
qué actividad se está llevando a cabo. Uno de forward engineering), como en el caso de
los beneficios de la tecnología orientada a herramientas CASE basadas en UML. Sin em-
objetos es representar la solución como una bargo, la generación automática de código es
consecuencia directa de la representación parcial, y se requiere que el desarrollador la
del problema, por lo cual la distinción entre complete de manera manual. En el modelo
análisis y diseño de objetos no es realmente de implementación, el concepto de rastreabi-
crítica, a diferencia de otros enfoques más lidad también es importante, dado que al leer
tradicionales de desarrollo de software. el código fuente se debe poderlo relacionar
Durante el análisis se considera un mundo con los modelos de diseño y análisis.
ideal para el sistema. En la realidad este mun- Aunque existen muchos tipos de lengua-
do ideal debe adaptarse al ambiente en el que jes de programación, el uso de un lenguaje
se va a implementar el sistema. Entre otros as- orientado a objetos facilita la implementación
pectos, se deben considerar los requisitos de de un diseño orientado a objetos. La elec-
rendimiento, uso de memoria, protocolos ción del lenguaje influye en el diseño, pero
de comunicación, tiempo real, concurrencia, el diseño no debe depender de los detalles
propiedades del lenguaje de programación, del lenguaje, de tal manera que si se cambia de
el sistema de manejo de base de datos, etc. lenguaje de programación no debe ser ne-
Este aspecto se conoce como el diseño de cesario el rediseño del sistema. Por razones
sistema, que define las decisiones estraté- de rastreabilidad, es deseable siempre tener
gicas sobre cómo organizar la funcionalidad una buena y fácil correspondencia entre los
del sistema en torno al ambiente de imple- objetos del modelo de diseño y los objetos del
mentación, incluyendo tanto hardware como lenguaje de programación.
software. Para adaptar el modelo de análisis En la actualidad, las bases de datos son
al ambiente de implementación, es necesa- parte integral de los sistemas de software.
rio identificar las restricciones técnicas bajo Aunque existen bases de datos orientadas a
Métodos de requisitos
Requisitos • OBA
• Fusión
• Casos de uso actor 1 actor 2
Casos de uso en UML
Métodos de análisis
clase 1 clase 2
• OBA
Análisis
• Fusión
• Objectory
Métodos de diseño
• UML clase 1 clase 2
Diseño
• Fusión
• RDD
Asociación de clase en UML
3
Goldberg, A., y Rubin, K, 1995, Succeeding with objects: decision framework for project management
(primera edición), Addison-Wesley.
4
Goldberg, A. y Rubin, K., 1995, Succeeding with objects: decision framework for project management
(primera edición), Addison-Wesley.
gías utilizadas. Se debe tomar en cuenta si progreso del desarrollo de software hacia
proveen apoyo explícito para cada paso del puntos de revisión bien definidos (en inglés,
método, administran toda la información que milestones o checkpoints) mediante en-
el método requiere obtener o especificar, per- tregas programadas con fechas precisas (en
miten manejar grandes cantidades de infor- inglés, schedule). La figura 12.2 muestra un
mación y hacer proyectos escalables, incluyen diagrama del modelo de cascada que descri-
un mecanismo que permita probar que la in- be el orden de las actividades del desarrollo
formación recolectada es coherente, apoyan de software. No se muestra una etapa explíci-
la organización de los diagramas de manera ta de documentación dado que ésta se lleva a
automática, permiten usuarios simultáneos en cabo en el transcurso de todo el desarrollo. El
uno o más proyectos, pueden generar una modelo original planteaba que cada actividad
implementación inicial junto con la docu- debía completarse antes de poder continuar
mentación y apoyan la ingeniería en reversa con la siguiente actividad. Sin embargo, en una
para asegurar que los cambios directos en revisión posterior se extendió el modelo, per-
la implementación sean coherentes con los mitiendo regresar a actividades anteriores.7
modelos administrados. Algunas de las creencias del modelo de
cascada son que las metas se logran mejor
cuando se tienen puntos de revisión bien
12.2 Modelos clásicos preestablecidos y documentados (dividien-
Los modelos de proceso dependen de las do el desarrollo del software en actividades
opiniones o creencias de las personas involu- secuenciales bien definidas), los documentos
cradas en un proyecto.5 Por ejemplo, algunas técnicos son comprensibles para usuarios y
de estas opiniones o creencias implican que administradores no técnicos, cada detalle de
es necesario comprender el problema antes los requisitos se conoce de antemano antes
de desarrollar una solución, el proceso para de desarrollar el software (dichos detalles son
resolver un problema debe dar un resultado estables durante el desarrollo) y las pruebas y
predecible (sin importar qué individuo hace evaluaciones se realizan de manera eficiente
el trabajo), es indispensable planear y calcu- al final del desarrollo.
lar el proceso con gran precisión, para que El modelo de cascada fue inicialmente
un proceso tenga éxito es importante evaluar bien recibido, dado que las actividades de las
y administrar el riesgo y la entrega de etapas etapas eran razonables y lógicas. Lamentable-
intermedias bien definidas aumenta la con- mente, el modelo no explicaba cómo modi-
fianza que se tiene en el resultado final. ficar un resultado, en especial considerando
A continuación se describen los modelos lo difícil que es definir todos los requisitos de
de procesos “clásicos”, analizando las creen- un sistema desde el inicio y que éstos se man-
cias en las cuales se basan. tengan estables y sin cambios durante el de-
sarrollo. Además, toma demasiado tiempo en
obtener resultados, retrasando la detección
12.2.1 Modelo de cascada de errores hasta el final. El modelo también
hace difícil rastrear (en otras palabras, ver la
El modelo de cascada original se desarrolló dependencia entre los requisitos iniciales y el
entre las décadas de los años 60 y 706 y se código final). Esta rigidez trajo dudas sobre la
define como una secuencia de actividades, utilidad del modelo, resultando en que éste
donde la estrategia principal es seguir el dejase de utilizarse de acuerdo con su defini-
5
Idem.
6
Royce, W., 1970, Managing the development of large software systems: concepts and techniques,
Proceedings WESTCON, IEEE Computer Society Press, San Francisco, CA.
7
Boehm, B., 1981, Software engineering economics, Englewood Cliffs, NJ: Prentice Hall.
especificación
de requisitos
análisis
diseño
implementación
pruebas
parciales
integración
mantenimiento
ción original, llevando a los desarrolladores construirse de manera serial o paralela de-
a utilizar variantes del modelo básico, inclu- pendiendo de la naturaleza de la dependencia
yendo el uso de prototipos y la reutilización entre versiones y recursos. Cada incremento
de software.8 agrega funcionalidad adicional o mejorada so-
bre el sistema. Conforme se completa cada
etapa, se verifica e integra la última versión
12.2.2 Modelo incremental con las demás versiones ya completadas del
sistema. Durante cada incremento, el sistema
El modelo incremental consiste de un de- se evalúa con respecto al desarrollo de versio-
sarrollo inicial de la arquitectura completa del nes futuras. Las actividades se dividen en pro-
sistema, seguida de incrementos y versiones cesos y subprocesos, dando lugar al término
parciales de éste.9 Cada incremento tiene su fábrica de software (en inglés, software
propio ciclo de vida, típicamente siguiendo el factory). Para que la secuencia de desarrollo
modelo de cascada. Los incrementos pueden sea exitosa, es esencial definir etapas que no
8
Yourdon, E., 1992, Decline and fall of the american programmer, Prentice Hall.
9
Boehm, B., 1981, Software engineering economics, Englewood Cliffs, NJ: Prentice Hall.
requieran cambiar los resultados anteriores al siendo entregados los incrementos. Desde el
agregar nuevas. Por lo tanto, es importante punto de vista del desarrollador, los requeri-
comprender al inicio los requisitos completos mientos que son claros al principio del pro-
del sistema, algo que normalmente es muy yecto dictan el incremento inicial, mientras
difícil de lograr. El desarrollo incremental evi- que los incrementos para cada uno de los
ta la teoría del “big bang” para el desarrollo siguientes ciclos de desarrollo se clarifican a
de software, donde una gran explosión de través de la experiencia de los incrementos
desarrollo se transforma repentinamente en anteriores. Este modelo considera que el
el sistema final. desarrollo de sistemas es un proceso de cam-
Algunas de las creencias del modelo de bios progresivos mediante deltas (cambios)
cascada son que la administración de proyec- de especificación de requerimientos. En la
tos es más fácil de lograr en incrementos más figura 12.3 se ilustra este concepto.
pequeños, es más fácil comprender y probar El modelo evolutivo es también conocido
incrementos de funcionalidad más peque- como desarrollo rápido de aplicaciones
ños, la funcionalidad inicial se desarrolla más (en inglés, RAD—rapid application deve-
temprano (logrando resultados de inversión lopment), que se basa tradicionalmente en
en menor tiempo) y hay más probabilidad de el uso de prototipos (en inglés, rapid pro-
satisfacer el cambio en los requisitos de usua- totyping). Un prototipo de software se con-
rio mediante incrementos del software en el sidera como un medio para especificar los
tiempo que si fueran planeados todos a la vez requisitos y un enlace de comunicación entre
en un mismo periodo. el usuario final y el diseñador, ayudando a re-
ducir el riesgo de carecer de requerimientos
12.2.3 Modelo evolutivo iniciales completos y estables.
Algunas de las creencias del modelo de
El modelo evolutivo es una extensión al cascada son la entrega temprana de parte del
modelo incremental en la que los incremen- sistema, aunque no estén completos todos
tos se hacen de manera secuencial, en lugar los requerimientos, ya que esto permite uti-
de en paralelo.10 Desde el punto de vista del lizarlo como herramienta para la generación
cliente, el sistema evoluciona según vayan de requerimientos faltantes, obteniendo be-
10
Boehm, B., 1987, A spiral model of software development and enhancement, Software engineering
project management, IEEE.
Primer ciclo
de desarrollo versión 1
versión 1
versión 2
versión n
diseño análisis
implementación pruebas
neficios para el sistema mediante entregas jo, cada uno de los cuales estudia el riesgo
iniciales mientras las entregas posteriores se antes de proceder al siguiente ciclo. Cada
encuentran en desarrollo. ciclo comienza con la identificación de los
objetivos, soluciones alternas y restricciones
asociadas con cada alternativa, y finalmente
12.2.4 Modelo espiral se procede a su evaluación. Cuando se en-
cuentra que existe cierta incertidumbre, se
El modelo espiral,11 desarrollado duran- utilizan diversas técnicas para reducir el ries-
te la década de los años 80, es una exten- go de las distintas alternativas. Cada ciclo del
sión del modelo de cascada. A diferencia modelo espiral termina con una revisión que
del modelo de cascada, que es dirigido por discute los logros actuales y los planes para
documentos, el modelo espiral se basa en el siguiente ciclo. La figura 12.4 muestra un
una estrategia para reducir el riesgo del diagrama conceptual del modelo espiral.
proyecto en áreas de incertidumbre, como Al igual que el modelo evolutivo, el mode-
tener requerimientos iniciales incompletos e lo espiral incorpora una estrategia de uso de
inestables. El modelo enfatiza ciclos de traba- prototipos como parte del manejo del riesgo.
11
Idem.
Las creencias del modelo de espiral son que yendo la partición del sistema en subsistemas
una actividad comienza cuando se entienden para ser considerados en ciclos paralelos, lo
los objetivos y riesgos involucrados, se usan cual puede incluir un plan para terminar el
las herramientas que mejor reduzcan los ries- proyecto si es muy riesgoso o no es factible,
gos basándose en la evaluación de soluciones asegurando el compromiso de la administra-
alternas, todo el personal relacionado debe in- ción para continuar según lo planeado.
volucrarse en una revisión que determine cada Una vez revisadas las actividades, los ciclos
actividad (planeando y comprometiéndose definen líneas específicas a seguir. En el Ciclo
con las siguientes actividades) y el desarrollo 0 (grupos de aplicación) se determina la viabi-
se incrementa en cada etapa, permitiendo lidad de un grupo apropiado de aplicaciones.
prototipos sucesivos del producto. Con algu- En el Ciclo 1 (objetivos del ciclo de vida de
nas variantes, éste es el modelo de proceso la aplicación) se desarrollan los objetivos del
más importante en la actualidad. ciclo de vida, incluyendo prototipos, planes
y especificaciones de aplicaciones individua-
12.3 Modelos nuevos les, y se verifica la existencia de al menos una
arquitectura viable para cada aplicación. En el
Ciclo 2 (arquitectura del ciclo de vida de la
En esta sección se describen algunos de los
aplicación) se establece una arquitectura del
modelos de procesos “nuevos” que surgieron
ciclo de vida detallado, se verifica su viabili-
después de los clásicos.
dad, y se determina que no existen riesgos
mayores en satisfacer los planes y especifica-
12.3.1 Modelo ganar-ganar ciones. En el Ciclo 3 (capacidad de operación
inicial) se alcanza una capacidad operacio-
El modelo ganar-ganar (en inglés, win-win)12 nal inicial para cada etapa crítica del proyecto
extiende el modelo espiral, haciendo énfasis en en el ciclo de vida del software.
la identificación de las condiciones de ganancia Las creencias del modelo son: crear soft-
para todas las partes, creando un plan para al- ware basado en componentes para lograr ma-
canzar las condiciones ganadoras y evitar los yor calidad en los sistemas de mayor tama-
riesgos correspondientes. Se establecen las ño, escribir software reutilizable para hacer
reglas para definir el proceso de desarrollo del eficiente el proceso de desarrollo, medir la
proyecto, tomando en cuenta todas las partes calidad del sistema como aspecto clave del
implicadas. El modelo no necesita mucho tiem- desarrollo del producto, lograr mayor calidad
po de gestión. Esto permite utilizarlo tanto en en el proceso de ensamblaje a partir de com-
proyectos pequeños como grandes. ponentes menores, usar tecnologías basadas
Se consideran cuatro los ciclos, cada uno en objetos como aspecto básico para lograr
compuesto de cuatro actividades. Las cuatro la calidad, producir sistemas rápidamente (sen-
actividades son: elaborar los objetivos, res- cillos, confiables y de calidad) empleando pro-
tricciones y alternativas del proceso y pro- cesos bien definidos, utilizar el modelo es-
ducto del sistema y subsistema; evaluar las piral como base del proceso, hacer flexible
alternativas con respecto a los objetivos y el proceso de creación del software para lo-
restricciones (identificando y resolviendo las grar los objetivos generales de eficiencia, in-
fuentes principales de riesgo en el proceso volucrar al cliente mediante el manejo de
y producto); elaborar la definición del pro- prototipos y analizar los riesgos en el proceso
ducto y proceso; y planear el siguiente ciclo, del desarrollo del software para asegurar la
actualizando el plan del ciclo de vida, inclu- calidad final del sistema.
12
Boehm, B., Egyed, A., Port, D., Shah, A., Kwan, J. y Madachy, R., “A stakeholder win-win approach to
software engineering education”, Annals of software engineering, enero de 1999.
12.3.2 Proceso unificado (UP) ro es necesario que cada uno de sus ingenie-
ros alcancen resultados de excelencia y luego
El proceso unificado (en inglés, UP—uni- que sus grupos de trabajo también lo hagan.
fied process)13 es una extensión al proceso En el caso del desarrollo de software de alta
objectory (del inglés object factory),14 que calidad, que responda a las expectativas de
tiene sus orígenes en la década de los años los usuarios, es fundamental definir proce-
80. Estos modelos de proceso se basan prin- sos tanto personales como para el trabajo en
cipalmente en la especificación de reque- equipo. En cuanto al proceso personal, aquí
rimientos de un sistema mediante casos de se explican dos de los más importantes, el
uso (maneras de utilizar un sistema). El pro- PSP (Personal Software Process) y el XP
ceso unificado considera como aspecto esen- (Extreme Programming). Con respecto al
cial del desarrollo de software una visión proceso de trabajo en equipos se explica el
que parte de la arquitectura del sistema, si- TSP (Team Software Process).
guiendo un proceso iterativo e incremental.
El proceso considera e integra diferentes as-
pectos, como son los ciclos, fases, flujos de 12.4.1 PSP (Personal
trabajo, mitigación de riesgo, control de cali- Software Process)
dad, administración de proyecto y control de
configuración. De manera adicional, el pro- El proceso personal (Humphrey, 2004a) con-
ceso unificado considera las cuatro P del de- siste en especificar la secuencia de pasos re-
sarrollo de software: personas, proyecto, pro- queridos por un programador para desarrollar
ducto y proceso. o mantener software. Un proceso bien definido
El proceso unificado tiene las siguientes proporciona el marco técnico y administrativo
creencias: para construir un sistema exitoso para la aplicación de metodologías, herramien-
se debe conocer qué quieren y necesitan los tas y el esfuerzo personal en el desarrollo de
usuarios potenciales; al igual que la arquitec- software. Éste determina los papeles y las ta-
tura, en la construcción, permite diseñar edi- reas que deben llevarse a cabo.
ficios desde múltiples puntos de vista, estruc- PSP propone un proceso. Sin embargo,
tura, electricidad, etc., las arquitecturas de los cada individuo debe adaptarlo a su propia
sistemas de software deben permitir visuali- situación. Las principales ideas en las que se
zar un sistema desde múltiples perspectivas; basa PSP son:
y el desarrollo de un producto de software co-
mercial puede significar un gran esfuerzo con- 1. Los desarrolladores entienden mejor
tinuando por meses, años o incluso más, lo que hacen cuando definen, miden y
por lo que es práctico dividir el trabajo en controlan su trabajo.
pedazos, donde cada iteración resulta en un 2. Tener un proceso e indicadores bien
incremento del proyecto. definidos favorece la evaluación y el
aprendizaje a partir de las propias ex-
12.4 Proceso personal periencias y de las ajenas.
y de equipo para 3. Con el conocimiento y la experiencia
el desarrollo de software se pueden seleccionar aquellos méto-
dos y prácticas que mejor se adapten
Para lograr buenos resultados a nivel de las a las habilidades particulares de cada
empresas desarrolladoras de software, prime- ingeniero.
13
Jacobson, I., Booch, G., y Rumbaugh, J., 1999, The unified software development process, Addison
Wesley.
14
Jacobson, C., Christensen, M., Jonsson, P., y Overgaard, G., 1992, Object-oriented software engi-
neering: a use-case driven approach, Addison-Wesley.
PSP3
Desarrollo cíclico
PSP2.1
Revisión de código
Revisión de diseño
PSP1.1
Planeación de tareas
PSP1
Planeación de tiempo
Estimación de tamaño
Reporte de prueba
PSP0.1
Estandarizar codificación
PSP0 Establecer medidas de tamaño
Propuesta de mejoras en el proceso
Proceso actual
Registro de tiempo
Registro de defectos
Estandarizar el tipo de defectos
identificar aspectos a mejorar y llevar un se- la que se lleva a cabo. El mejoramiento con-
guimiento del progreso alcanzado. Se registra tinuo del proceso se logra gracias al uso ade-
el tiempo y los defectos. Para esto último se cuado de los datos obtenidos en experiencias
requiere definir un estándar de tipos de defec- previas, por lo cual se requiere el registro
tos o se puede tomar el propuesto por PSP. constante de datos durante todas las etapas
PSP0.1 se obtiene agregando al PSP0 la es- de PSP. Es importante mencionar que los da-
tandarización del código, medidas de tamaño tos recolectados por los programadores du-
y una propuesta para el mejoramiento del rante las distintas etapas del desarrollo deben
proceso. Es importante registrar los proble- ser respetados como propiedad de los pro-
mas encontrados en el proceso y sugerencias gramadores. No deben ser usados por los
para mejorarlo. administradores para establecer premios o
En PSP1 se incorpora la actividad de pla- castigos.
neación. Se incluye la estimación de recursos
y tiempo. Además, se empiezan a realizar
reportes de las pruebas efectuadas a los pro-
12.4.1.2 PLANEACIÓN
gramas desarrollados.
Para alcanzar el nivel de PSP1.1 se agrega En el plan del proyecto se define el trabajo y
la planeación de tareas y el calendario de en- la manera en la que se va a realizar. Asimismo,
tregas. La planeación permite al programador se especifican las principales tareas, así como
entender la relación entre el tamaño de los una estimación del tiempo y de los recursos
programas que desarrolla y el tiempo que re- requeridos para realizarlas. Para elaborar un
quiere para ello, establecer metas que puede plan se recomienda tener en cuenta los si-
alcanzar y poder saber en cada momento cuál guientes puntos: 1. definir para desarrollar un
es el estado de avance de su trabajo. producto específico; 2. revisar con el cliente;
En PSP2 el énfasis está en la calidad de los 3. dividir en varias etapas bien definidas y
productos que se elaboran. Para poder con- que se puedan evaluar, y 4. debe servir para
trolar los defectos introducidos en el código, medir el progreso que se vaya alcanzando en
primero se necesita saber cuántos se introdu- el proyecto.
cen y de qué tipo son. Con este conocimiento Considerando lo anterior, un buen plan
se elaboran listas de los defectos más frecuen- proporciona información valiosa tanto para
tes. Teniendo estas listas, se establecen revi- el desarrollador como para el cliente. Al desa-
siones e inspecciones de diseño y de código, rrollador, el plan le indica todo lo correspon-
de tal manera que los defectos se detecten diente al tamaño del trabajo, las etapas en las
en una etapa inicial. Cuanto antes se detec- que lo va a desarrollar, el estado del trabajo
te un defecto, más barato resulta su correc- en grado de avance y la precisión o no con la
ción. que se hizo la planeación de las tareas y de los
En PSP2.1 se incluyen plantillas de diseño recursos. Al cliente, el plan le indica todo lo
que ayudan a garantizar que el diseño esté correspondiente al producto que recibirá, el
completo y sea coherente con las necesida- tiempo y el costo involucrados, la evaluación
des planteadas. El PSP no dice cómo realizar de los progresos y la manera en la que va a ser
el diseño; para ello se puede usar cualquiera desarrollado el proyecto.
de las metodologías existentes. Para poder planear un proyecto se re-
En la etapa PSP3 se plantea un proceso quiere poder estimar el tamaño del sistema.
cíclico, útil para el desarrollo de programas El método elegido para hacer la estimación
o módulos muy grandes. El problema debe debe ser automático, preciso y útil para la
subdividirse de tal manera que cada uno de planeación. En PSP se usa el método PROBE
los subproblemas quede en un nivel PSP2. (PROxy-Based Estimating). Además, se
PSP se apoya fundamentalmente en la debe establecer un estándar para el conteo
planeación del proyecto y en la calidad con de líneas de código, de funciones o de los
elementos que se vayan a contar para esti- de entender y adaptar. Cada desarrollador de-
mar el tamaño. be definir su propio proceso de calidad. Para
Otro elemento importante que interviene ello debe primero definir un proceso y poste-
en la planeación es la estimación del tiempo riormente medirlo, darle seguimiento y me-
requerido para desarrollar el producto. En jorarlo de manera continua. Se recomienda
PSP la selección del método para estimar el la siguiente estrategia para asegurar la calidad
tiempo depende de la cantidad de datos his- del proceso:
tóricos disponibles.
1. Medir la calidad del proceso a través de
12.4.1.3 ADMINISTRACIÓN la calidad del producto, de la producti-
vidad alcanzada, del total de defectos
DE LA CALIDAD
corregidos, entre otros.
2. Incorporar los mejores métodos de
La estrategia seguida por PSP para asegurar la calidad (por ejemplo, revisiones e ins-
calidad del producto desarrollado se lleva a pecciones), encontrar las causas de los
cabo a través del manejo de la cantidad de errores que se cometen, usar los me-
defectos insertados en el software. Si se con- jores métodos para el diseño, entre
trolan los defectos en cada unidad de soft- otros.
ware, se puede garantizar la calidad de todo el 3. Evaluar periódicamente la estrategia y
sistema una vez que las partes sean integradas. establecer nuevos objetivos, obedecien-
La calidad del producto está estrechamente li- do al carácter dinámico de PSP en cuan-
gada con la calidad del proceso seguido para to a la mejora del proceso.
su producción. Para determinar el nivel de ca-
lidad del proceso usado, se deben establecer
métricas y hacer seguimientos del proceso. 12.4.1.4 EL USO DE PSP
La calidad también se mide por el servicio
prestado al usuario. Este servicio incluye si el La adopción de PSP es eficaz cuando existe
sistema es fácil de usar, de instalar y de man- un compromiso por parte de toda la organi-
tener, si es seguro tanto al protegerse contra zación, o al menos de un grupo de la misma.
los mismos usuarios como de externos, si su Inicialmente implica cambiar los hábitos de
desempeño es aceptable y si está acompaña- trabajo, recopilar datos, realizar planes, escri-
do de toda la documentación necesaria. PSP bir reportes y realizar otras actividades que
se centra en los defectos, ya que si un sistema aquellos que no están familiarizados con el
de baja calidad entra a la etapa de pruebas proceso podrían considerar como una pérdi-
es casi seguro que se descuidarán los otros da de tiempo. Además, la organización que
aspectos relacionados con la calidad por de- está desarrollando el proyecto debe dar apo-
tectar y corregir todos los defectos. En el área yo para formar la base de datos y llevar a cabo
de la ingeniería de software, la mayoría de los el análisis de los datos recolectados. Por lo
defectos de un programa proviene de erro- tanto, es importante que los desarrolladores
res cometidos por los individuos que lo desa- y administradores entiendan los beneficios
rrollaron. Generalmente un proceso de baja que ofrece PSP y colaboren para que el per-
calidad produce un producto de baja cali- sonal se capacite y defina su propio proceso.
dad. De ahí la insistencia de PSP de que cada En (Humphrey 2004c) se señalan los cos-
desarrollador defina un proceso propio de tos y beneficios relacionados con el uso de
alta calidad. PSP. Con respecto a los costos, en primer lugar
Un PSP de calidad es aquel que se ajusta se indica el tiempo necesario para aprender a
a las características del desarrollador y le per- usarlo. Se requiere tiempo para aprender PSP
mite producir software de excelente nivel de y para registrar los datos, tarea que debe ha-
manera sistemática. Además, debe ser fácil cerse continuamente para poder contar con
como una versión reducida de TSP, que man- diseño, implementación, prueba y postmor-
tiene sus mismos principios, y a partir de la tem. Además, usa múltiples ciclos para cons-
cual se puede escalar fácilmente a TSP. En truir un producto final. En cada uno de los
este libro se describe TSPi. Tanto TSP como ciclos se aplican los ocho procesos menciona-
TSPi presuponen que todos los miembros del dos. Se inicia con una junta de lanzamiento,
equipo conocen PSP. en la que se presentan los objetivos del pro-
ducto. Posteriormente, se aplican los otros
12.4.2.1 LOS PRINCIPIOS DE TSPI siete procesos. En el siguiente ciclo se aplican
los mismos procesos, pero trabajando sobre
lo que haya sido desarrollado en el ciclo an-
TSPi está basado en cuatro principios funda-
terior, logrando que el producto vaya aumen-
mentales:
tando sus funcionalidades. La cantidad de
1. El aprendizaje es más eficaz si se sigue ciclos depende del tamaño del proyecto y del
un proceso definido y se recibe retro- tiempo que se disponga. En la figura 12.6 se
alimentación. TSPi provee un marco de presenta un esquema de la estructura y del
trabajo que cumple con estas caracterís- flujo de TSPi.
ticas. Además, cuenta con mediciones Para usar una estrategia de desarrollo cí-
establecidas y está diseñado para reali- clica se requiere definir el producto básico
zarse de manera cíclica. El uso de ciclos que se ha de generar con el primer ciclo. Se
pequeños permite que el equipo reciba recomienda que sea una versión pequeña del
información sobre su desempeño pe- producto, pero que incluya alguna funciona-
riódicamente. Es decir, el trabajo del lidad que dé valor al negocio. Para decidir el
grupo se evalúa al terminar cada ciclo y contenido y tamaño de cada ciclo se debe
los resultados se analizan y utilizan para tener en cuenta que debe producir una ver-
mejorar el desempeño del mismo. sión que pueda probarse y que represente un
2. Para que el trabajo en equipo sea pro- subconjunto de la versión final del producto,
ductivo, se requiere definir objetivos, que debe ser lo suficientemente pequeño
un ambiente de trabajo apropiado y para que pueda desarrollarse y probarse en
liderazgo adecuado. el tiempo disponible y que la combinación de
3. Es importante recibir la guía apropia- los productos obtenidos en cada ciclo debe
da para encontrar soluciones eficaces dar el producto final deseado.
a los problemas de desarrollo que se
originen. TSPi ayuda a definir papeles,
métodos y prácticas adecuadas para
12.4.2.3 LOS PROCESOS DE TSPI
cada grupo de trabajo.
4. La instrucción es más eficaz cuando Los ocho procesos de TSPi aplicados de ma-
se construye sobre la base de conoci- nera cíclica permiten a los equipos de inge-
mientos previamente adquiridos. TSPi nieros de software alcanzar productos de alta
se basa en el conocimiento y las expe- calidad en el tiempo estimado. TSPi provee
riencias que existen sobre equipos de una guía en la que se presenta el objetivo, el
desarrolladores de software y material criterio de entrada, las etapas (con las activi-
disponible sobre este tema. dades que involucra cada una de ellas) y el
criterio de salida de cada proceso. El criterio
de entrada es todo aquello que necesita el
12.4.2.2 LA ESTRUCTURA Y EL FLUJO proceso para llevarse a cabo y el criterio de
DE TSPI salida es el producto o los productos gene-
rados por el proceso. Asimismo, la guía pro-
TSPi está formado por ocho procesos: lan- porciona unas formas para el registro de todos
zamiento, estrategia, plan, requerimientos, los datos relevantes del proyecto. Estos da-
Ciclo 1 - Lanzamiento
Ciclo 2 - Lanzamiento
Estrategia 1
Plan 1
Ciclo n - Lanzamiento
Requerimientos 1
Estrategia 2
Diseño 1
Plan 2
Implementación 1
Requerimientos 2 Estrategia - n
Prueba 1
Plan - n
Diseño 2
Postmortem 1
Requerimientos - n
Implementación 2
Diseño - n
Prueba 2
Implementación - n
Postmortem 2
Prueba - n
Postmortem - n
Producto terminado
Evaluación final
tos sirven para evaluar el desempeño del equi- administrador de planeación, administrador
po, de cada uno de sus integrantes y definir de la calidad del proceso y administrador de
posibles mejoras al proceso de desarrollo. soporte. Los miembros del equipo a quie-
nes se les asignan estos roles realizan tam-
bién actividades propias de los ingenieros de
12.4.2.3.1 LANZAMIENTO software.
Establecer objetivos es de fundamental im-
El establecimiento del equipo de trabajo se portancia. Se requiere que los mismos estén
lleva a cabo en la etapa de lanzamiento. Se de- bien definidos y sean cuantificables. Si no
terminan las relaciones de trabajo, los roles de se pueden medir, entonces resulta difícil de-
los miembros, quién va a ocupar cada uno terminar con precisión la calidad del pro-
de ellos y se llega a un acuerdo sobre los ob- ducto generado y del proceso seguido por el
jetivos. equipo. Se deben fijar objetivos ambiciosos
Los roles básicos propuestos por TSPi son: pero realistas, de tal manera que motiven a
líder de equipo, administrador de desarrollo, los integrantes del grupo. Para fijar objeti-
vos con estas características, es importante También se deben establecer objetivos para
contar con experiencias previas. Cuando no cada uno de los roles definidos en el equipo. Es
se cuente con esta experiencia, TSPi sugiere importante tener presente que, en caso de que
adoptar, como objetivos básicos, elaborar un haya un conflicto entre los objetivos del equipo
producto de calidad, llevar a cabo un pro- y los personales o de papeles, la prioridad más
yecto productivo y bien administrado, y ter- alta la tiene el objetivo del equipo.
minar el proyecto a tiempo. Cada objetivo
debe acompañarse de métricas para que pue-
da evaluarse en qué grado fue alcanzado. En
12.4.2.3.2 ESTRATEGIA
la tabla 12.3 se presentan los objetivos pro-
puestos por TSPi con sus correspondientes Una vez completada la etapa de lanzamiento,
métricas. se debe fijar una estrategia para llevar a cabo el
Después de cada ciclo se debe evaluar el proyecto. En esta etapa se debe idear una es-
desempeño y establecer objetivos para me- trategia para realizar el trabajo, crear un diseño
jorar el proceso en el siguiente ciclo. Luego conceptual del producto, y hacer una estima-
se deben definir los cambios necesarios para ción preliminar del tamaño del producto y
que los objetivos planteados puedan ser al- del tiempo de desarrollo. El tiempo estimado
canzados. debe corresponder al tiempo disponible. De
Además de los objetivos para el equipo, no ser así, se debe revisar y ajustar la estrategia
se deben establecer objetivos para cada uno hasta que los tiempos coincidan.
de los miembros del mismo. Si no se cuenta TSPi propone un proceso cíclico en el que
con experiencia previa, TSPi sugiere adoptar cada ciclo toma la versión del sistema gene-
los objetivos y las métricas que se presentan rada en el ciclo anterior y produce una ver-
en la tabla 12.4. sión aumentada. La cantidad total de ciclos
Tabla 12.4 Objetivos propuestos para los miembros del equipo y sus indicadores.
depende del tamaño del sistema y del tiempo producto. Para esto, TSPi sugiere contestar
disponible. las siguientes preguntas:
El diseño conceptual se requiere para po-
der hacer posteriormente la planeación del 1. Tomando en cuenta experiencias pre-
proyecto. Se debe lograr un diseño de alto vias, ¿cómo se podría desarrollar este
nivel, definiendo la estructura general del producto?
2. ¿Cuáles son los principales componen- en el plan inicial. Por lo tanto, es conveniente
tes que deben construirse para lograr incluir algunas horas en el plan para realizar
este producto? esas tareas, especialmente en el primer ciclo.
3. ¿Cuáles son las funciones que estos El resultado de este proceso es el plan
componentes deben proveer? completo del equipo y de cada uno de los
4. ¿Qué tan grande son estos componen- ingenieros que lo forman, incluyendo tareas,
tes? tiempos y calidad.
rimientos que fueron bien entendidos, reali- formar el sistema. Los estándares más impor-
zar prototipos de aquellos requerimientos tantes para realizar el diseño de alto nivel son
sobre los que se tenga alguna duda, definir los siguientes:
posibles escenarios de uso del sistema e iden-
tificar restricciones del dominio. 1. Convenciones para la identificación.
En la tabla 12.5 se presentan los requeri- Se debe establecer el criterio que se
mientos, clasificados por tipos, en los que se va a aplicar para nombrar al sistema,
centra TSPi. sus componentes, módulos, archivos,
Durante la elaboración del documento variables y demás elementos.
de requerimientos, el equipo discute acerca de 2. Formatos para la relación. Se debe
la necesidad del cliente, la posible solución especificar cómo va a ser la comunica-
y cómo se va a implementar. De esta forma ción entre las partes del software, pa-
se genera el documento y se va logrando un rámetros de entrada/salida, códigos de
acuerdo entre los miembros del grupo sobre error u otras condiciones que deban
el producto que van a desarrollar. preverse.
3. Mensajes. Se debe establecer un están-
dar para escribir los mensajes de tal ma-
12.4.2.3.5 DISEÑO nera que la información proporcionada
por el sistema resulte comprensible.
En este proceso se elabora un diseño de alto 4. Estándar de defectos. TSPi sugiere uti-
nivel del sistema (es decir, de la estructura lizar el estándar de defectos propuesto
general del mismo). El diseño es un proceso por PSP que se pueden consultar en
creativo que permite identificar los princi- (Humphrey 2004a).
pales componentes, así como la manera en 5. Conteo de líneas de código. Si bien aún
que éstos interactúan. Esto ayuda a decidir no se utilizará, TSPi sugiere que en esta
la manera en la que se va a desarrollar cada una etapa se defina el estándar para llevar a
de las partes y cómo van a ser integradas para cabo el conteo de líneas de código.
rrecta y verificar que están todas las requieren del trabajo de equipos, no de pro-
partes presentes y que funcionan ade- gramadores individuales. Además, los equi-
cuadamente juntas. pos en los cuales cada miembro cuenta con
3. Probar el sistema para evaluar que cu- buenas prácticas de trabajo, y trabajan coo-
bre todos los requerimientos. perativa y eficazmente juntos, producen re-
sultados de alta calidad. Cuando un equipo
En esta fase, mientras algunos ingenieros encuentra condiciones adecuadas, sus miem-
prueban el sistema, otros deben ir elaboran- bros realizan un trabajo superior, son más
do la documentación que se va a entregar al productivos y disfrutan su trabajo.
usuario. Dentro de esta documentación se de-
ben incluir todas las explicaciones necesarias 12.4.3 XP (Extreme
para entender la instalación, entrenamiento,
uso y mantenimiento del sistema.
Programming)
La programación extrema (Beck, 2004) ofre-
12.4.2.3.8 POSTMORTEM ce un marco flexible, de bajo riesgo y eficien-
te para el desarrollo de software, basándose
En este proceso se revisa todo el trabajo he- en algunos principios muy sencillos. XP se
cho por los ingenieros y todos los datos reco- caracteriza además porque tiene en cuenta
lectados durante los procesos previos. Poste- al ser humano como elemento clave en el de-
riormente se hace un análisis para identificar sarrollo.
los puntos en los cuales se puede mejorar el El desarrollo de software es una actividad
proceso, lo cual provee un medio para apren- dinámica que exige mucha flexibilidad y dis-
der y mejorar. Se debe comparar lo planeado posición por parte de los clientes y de los de-
con lo hecho. Además, se deben detectar sarrolladores. Algunos de los problemas que
oportunidades para mejorar y decidir cam- surgen en los proyectos de software son los
bios en las prácticas para el siguiente ciclo o siguientes: cambios en el negocio durante el
proyecto. desarrollo del sistema, cancelación de parte
Para determinar en qué áreas se puede o todo el proyecto, introducción de defectos
mejorar el proceso se deben realizar revisio- en el diseño y/o en el código, implementación
nes. Algunas de las más importantes son: de requerimientos que no fueron solicitados,
cambios en el equipo de trabajo, caducidad
1. Revisión de calidad. Se debe comparar del sistema, etc. XP toma en cuenta todas
la calidad planeada a nivel personal y a estas posibles desventajas del desarrollo de
nivel de equipo con la calidad produci- software y genera prácticas para vencerlas o
da. Deben plantearse las siguientes tres disminuir sus consecuencias.
preguntas. ¿Qué se puede aprender de
esta experiencia? ¿Qué objetivos se
pueden plantear para el siguiente de- 12.4.3.1 LAS VARIABLES DE XP
sarrollo? ¿Dónde se podría modificar
al proceso para mejorarlo? XP es un modelo de desarrollo de software
2. Evaluación de roles. Se deben evaluar en el que hay cuatro variables que juegan un
los diferentes roles del equipo. Deben papel fundamental: costo, tiempo, calidad y
plantearse las siguientes tres pregun- alcance. La interacción entre las variables y el
tas. ¿Qué sirvió? ¿Dónde hubo proble- control de las mismas son decisivos para el éxi-
mas? ¿Qué se puede mejorar? to del proyecto. El control de estas variables
es llevado a cabo por los programadores, ad-
El éxito de TSPi se basa en que la mayoría ministradores y clientes. Aquí se analizan las
de los sistemas que se desarrollan actualmente cuatro variables:
1. Costo: hace referencia a cuánto cuesta siempre que no se descuiden las funciona-
(en recursos humanos, tecnológicos y de lidades más importantes, para mantener el
oportunidad) desarrollar y/o mantener costo, la calidad y el tiempo.
un producto de software. XP propone
empezar invirtiendo poco e ir gastando 12.4.3.2 LOS VALORES DE XP
más de manera productiva, es decir en-
tregando resultados útiles al cliente. Los valores de XP son la comunicación, la
2. Tiempo: hace referencia al tiempo que simplicidad, la retroalimentación y la valentía.
transcurre hasta que un sistema se libera. Éstos deben ser aceptados y respetados por
XP propone establecer alcances a corto todos los miembros del equipo y de la orga-
plazo, de tal manera que los programas, nización, ya que de ellos depende el éxito de
con sólo algunas de sus funciones, entren este modelo.
en producción, y con la retroalimenta- La comunicación es básica en el desarro-
ción que se recibe se siga agregando llo de software (¿existirá alguna actividad en
funcionalidades y mejorando lo existente. la cual no lo sea?). Muchos de los problemas
3. Calidad: hace referencia a que el soft- que se presentan en los proyectos de soft-
ware desarrollado se ajuste a los reque- ware tienen su origen en la falta de comu-
rimientos del cliente, así como a que el nicación. Por ejemplo, se pueden ocasionar
mismo esté libre de defectos. El nivel de graves problemas si un programador no avisa
calidad es medido por los programado- a sus compañeros acerca de un cambio que
res, dando origen a la calidad interna. introdujo en el código o reporta de mane-
También es medido por los clientes, lo ra inadecuada el grado de avance del pro-
cual se conoce como calidad externa. ducto, o un cliente no avisa a tiempo a los
XP propone realizar pruebas de manera programadores que un requerimiento cam-
continua sobre el producto que se está bió o no da toda la información necesaria a
desarrollando. Por otra parte, XP se apo- los programadores. XP ayuda a mantener una
ya en el hecho de que los seres huma- buena comunicación por medio de prácticas
nos quieren hacer un buen trabajo. Los que, por su naturaleza, exigen que los invo-
desarrolladores trabajan más a gusto y de- lucrados se comuniquen. Estas prácticas son
sarrollan con mayor calidad si sienten que las pruebas de unidades, la programación de
su trabajo es bueno. pares y la estimación de tareas. Además, y
4. Alcance: hace referencia a los objetivos complementando lo anterior, XP requiere de
que se plantean para el producto a desa- la actividad de una persona cuyo trabajo es
rrollar. Es una variable difícil de controlar detectar cuándo la gente no se está comuni-
porque, en la práctica, cuando se inicia cando bien y lograr que vuelvan a hacerlo.
un proyecto ni el cliente ni los progra- La simplicidad permite que los productos
madores tienen claro adónde se quiere se diseñen e implementen de la manera más
llegar con el desarrollo de un software sencilla posible. ¿Por qué usar una estructura
nuevo. Muchas veces a medida que el de tipo árbol para representar unos datos si el
sistema entra en producción, el cliente problema se puede resolver igualmente bien
se da cuenta de qué es lo que realmente usando un arreglo? Si bien es una tendencia
necesita. XP propone establecer alcances natural en el ser humano ver más allá de lo in-
pequeños, empezando siempre por los mediato, la simplicidad es un valor que debe
requerimientos de mayor prioridad para mantenerse en XP. Esta idea se fundamenta
el cliente. en el hecho de que tratar de desarrollar un
producto simple y tener un costo adicional,
La variable alcance puede condicionarse si posteriormente se debe aumentar, es pre-
a las otras tres. Se puede reducir el alcance, ferible a desarrollar un producto complejo y
caro que posiblemente nunca se use y cuyo todo el sistema de una manera más simple.
desarrollo puede ser muy tardado. Existe una La valentía es importante siempre que estén
estrecha relación entre la simplicidad y la co- presentes los otros tres valores. La comunica-
municación. Cuanto más sencillo sea un pro- ción favorece la presencia de valentía entre
grama, más fácil será la comunicación entre los miembros del equipo ya que facilita que los
los involucrados en él. Cuanto más se comu- mismos intenten, de común acuerdo, tomar
niquen los miembros de un equipo, más fácil riesgo al cambiar un código o un diseño. La
será detectar con precisión las actividades simplicidad también la promueve, ya que es
que deben realizarse. más fácil tomar una decisión sobre un siste-
La retroalimentación acerca del estado ma simple que sobre un sistema complejo,
actual del proyecto es fundamental para poder especialmente si la decisión es tirar el siste-
tomar decisiones apropiadas. Se lleva a cabo ma al bote de la basura. La retroalimentación
por medio de pruebas. Se definen pruebas de también contribuye a su presencia, ya que es
unidades para garantizar que se va avanzando más seguro basar una decisión en la infor-
sobre resultados sólidos. De esta manera mación proporcionada por las pruebas que
los programadores prueban la lógica de sus en la intuición o idea que pueda tener algún
programas. Por otra parte, tanto los clientes miembro del equipo. Por su parte, la valentía
como los programadores responsables de las produce simplicidad. En cuanto se detecta
pruebas deben definir pruebas funcionales que un sistema puede simplificarse, se hacen
que permitan determinar el estado actual de los cambios necesarios para lograrlo.
todo el sistema. En cuanto se implemente Existe un elemento adicional señalado
un mínimo de funcionalidades que tengan por (Beck, 2004), sin el cual ninguno de los
sentido, el sistema debe ponerse en produc- otros valores se sostendría: el respeto. Es fun-
ción. Ya operando el sistema, el equipo de damental que todos los miembros del equipo
desarrollo recibirá retroalimentación valiosa se respeten mutuamente y respeten el traba-
sobre el desempeño del mismo y sobre otras jo de los demás. Se requiere compromiso y
funcionalidades que se podrán incorporar. La disfrutar ser parte de un equipo que hace las
retroalimentación se relaciona con los valores cosas bien.
ya mencionados. Cuanta mayor retroalimen-
tación se tenga, más fácil será la comunica-
ción. Seguramente será más eficaz comuni- 12.4.3.3 PRINCIPIOS BÁSICOS DE XP
car el hecho de que cierto código es inco-
rrecto por medio de una prueba que así lo Los principios básicos que se generan a partir
demuestre, que por medio de una discusión de los valores, y que ofrecen medios más con-
entre pares o entre administrador y progra- cretos para aplicarlos son: retroalimentación
mador. Por otra parte, cuanto más simple sea rápida, simplicidad, cambios incrementales,
un sistema más fácil será probarlo. cambios sin alterar lo ya desarrollado y traba-
La valentía permite tomar las decisiones jo de calidad.
oportunas en el momento exacto, aunque La retroalimentación rápida consiste en
parezcan descabelladas. Por ejemplo, si lue- obtener retroalimentación, interpretarla y
go de trabajar todo un día en un trozo de aplicar lo aprendido al sistema, lo más pronto
código, éste no funciona correctamente y su que se pueda. Todo lo que se puede aprender
desarrollo se está saliendo del plan, entonces de la experiencia se debe tratar de llevar al
con valor se debe desechar y volver a em- sistema cuanto antes.
pezar a la mañana siguiente. Si de repente a La simplicidad consiste en hacer un buen
algún miembro del equipo se le ocurre cómo trabajo para resolver el problema actual,
simplificar el sistema complejo ya desarro- confiando en que si en el futuro se necesita,
llado, la valentía de todos los miembros del se podrá aumentar la complejidad del siste-
equipo permite enfrentar el reto de rehacer ma. XP promueve soluciones simples, que se
programa completo. XP lleva este concep- prueba, si falla tiene la certeza de que es
to al extremo, por lo que sostiene que sólo su parte la que tiene defectos.
cualquier función de un programa que no 10. Trabajar 40 horas semanales: la canti-
sea probada no existe. Los programa- dad de horas trabajadas por cada desa-
dores definen pruebas que validan la rrollador es un factor importante para
operación del sistema. Por su parte, los el éxito de un proyecto. A pesar de que
clientes definen pruebas funcionales que la cantidad de horas que cada persona
validan la operación del sistema desde puede trabajar de manera eficaz puede
el punto de vista del negocio. Cuanto variar, se sabe que para que el rendimien-
más probado esté un sistema, más fácil to se mantenga, la cantidad de horas no
será aceptar cambios. debe exceder las 40 semanales. Además,
6. Reestructuración: se revisa el programa se considera de fundamental importan-
cada vez que se agregan nuevas funcio- cia que los programadores dediquen los
nalidades, buscando simplificarlo. Si se fines de semana a realizar actividades dis-
detecta la posibilidad de hacer algo más tintas al trabajo y que tomen vacaciones.
simple, se hace. Cuando se requiere du- 11. Cliente en el lugar de desarrollo: el clien-
plicar código se está en presencia de un te, en este caso, es una de las personas
caso que exige la reestructuración del que usará el sistema cuando sea liberado,
sistema. y debe formar parte del equipo de tra-
7. Programación de pares: se programa bajo. Por lo tanto, debe ayudar al equipo
entre dos personas. Es decir, cada trozo contestando las preguntas que vayan sur-
de código es generado por un par de per- giendo, sin detener el trabajo, y definien-
sonas compartiendo una computadora. do prioridades entre funcionalidades a
Se establecen dos papeles entre los pro- implementar. Por otra parte, debido a su
gramadores. Uno de ellos se concentra participación activa durante el desarro-
en buscar la mejor manera de implemen- llo, el sistema podrá proporcionar mayor
tar el método o la clase asignada. El otro valor al negocio.
analiza el problema más globalmente 12. Codificación estándar: se requiere esta-
(por ejemplo, se cuestiona si se podría blecer un estilo común de codificación.
simplificar el sistema y así evitar la pro- Teniendo en cuenta las prácticas de pro-
gramación del método o clase actual o si gramación de pares, que todos son due-
se podrían definir nuevos casos de prue- ños del sistema y por lo tanto todos pue-
ba). La asignación de pareja es dinámica den de manera permanente modificar o
—cambian durante el transcurso del pro- agregar código y que el sistema se está
yecto. reestructurando de manera continua, es
8. Propiedad colectiva: todos los miem- de fundamental importancia establecer
bros del equipo son dueños del sistema. y respetar el estándar. XP propone que
Por lo tanto, todos tienen la posibilidad el estándar sea lo más sencillo posible,
de modificar o agregar código en cual- adoptado por los programadores de ma-
quier momento y todos tienen la misma nera voluntaria y que el mismo debe en-
responsabilidad ante el sistema. fatizar la no duplicación de código y la
9. Integración continua: se debe ir inte- comunicación entre los miembros del
grando y probando el código de manera equipo.
continua. XP propone que se integre lue-
go de algunas horas de trabajo o como XP se apoya en el hecho de que si estas
máximo una vez al día. El código inte- prácticas son buenas, entonces ¿por qué no
grado debe pasar todas las pruebas de- usarlas de manera intensiva? Es decir, si inte-
finidas. De esta manera, cuando otro par grar código es una práctica buena, ¿por qué
de programadores integra su parte y la no integrar código de manera continua? O, si
la simplificación del sistema es una práctica sables del negocio, los clientes, y los de los
buena, ¿por qué no simplificar continuamen- responsables de la tecnología, los desarrolla-
te? Lo mismo se podría decir acerca de las prue- dores. El éxito de un proyecto depende de
bas. Si es bueno probar el código, ¿por qué que los grupos colaboren entre sí y manten-
no probarlo todo el tiempo? gan una buena comunicación.
Las prácticas se apoyan mutuamente, De acuerdo con lo presentado en las sec-
y muchas de ellas sólo pueden aplicarse ciones precedentes, se puede decir que XP
en presencia de otras. Por ejemplo, esta- es un modelo de programación novedoso e
blecer alcances pequeños es posible sólo interesante. Una de las razones para efectuar
si se hace una planeación adecuada, si se esa afirmación es la importancia que le da al
hacen diseños sencillos que puedan imple- ser humano como pieza clave en el desarro-
mentarse fácil y rápidamente, y si el código llo de software. Esto da origen a algunas de
se prueba e integra de manera continua. las prácticas y estrategias del modelo, como
Por su parte, el estándar de codificación, la cantidad de horas trabajadas, la comuni-
que implica un esfuerzo adicional para los cación entre miembros del equipo y el am-
miembros del equipo, se requiere y justifica biente de trabajo. Otro pilar de este modelo
si se tienen otras prácticas como la progra- que merece ser destacado es la idea de que
mación de pares, la propiedad colectiva y toda persona gusta de hacer las cosas de la
la integración continua. En la figura 12.7 se mejor manera posible, por naturaleza, no por
presenta un esquema de la relación entre obligación.
prácticas de XP. Las diferencias más importantes entre XP
XP resalta la importancia de buscar un y otras metodologías de programación se re-
equilibrio entre los intereses de los respon- sumen en la tabla 12.6.
Metáfora
Planeación
Clientes en el lugar de desarrollo
40 horas/semana
Restauración
Propiedad colectiva Alcance pequeño
Diseño sencillo
Estándares de
codificación
Pruebas
Programación de pares
Integración continua
XP Otras metodologías de
programación
15
ANSI/IEEE Std. 729-1983, IEEE standard glossary of software engineering terminology, IEEE Inc.,
Nueva York, 1983.
16
ISO 9000-3:1997, http://www.iso.org
17
DeMarco, T., 1982, Controlling software projects: management, measurement and estimation, Pren-
tice Hall.
Los factores que más afectan la obtención la calidad de software más importantes en la
de un producto de calidad son: el cliente o actualidad.
usuario (participante primordial en el proce- En las siguientes secciones se describen
so de desarrollo del producto y responsable algunos de los modelos de madurez más im-
en definir los requisitos del producto final), portantes.
el desarrollador (responsable del proceso de
producción y el responsable de asegurar la ca-
lidad del producto), el proceso seguido para 12.5.2 Modelo de madurez
el desarrollo del producto final y el producto de capacidad (CMM)
(correspondiente al sistema desarrollado).
Estos factores tienen una estrecha y conti- El modelo más importante en la actualidad
nua correlación que afecta a la ingeniería del para la evaluación de la madurez de los proce-
producto, tanto como a la organización, la cual sos de desarrollo es el modelo de madurez
debe establecer estándares para los procesos de capacidad (en inglés, CMM—Capabili-
de desarrollo y evaluación, empleando medi- ty Maturity Model) del Instituto de Inge-
das bien establecidas que permitan mejoras niería de Software (en inglés, SEI—Software
continuas de los productos. La evaluación de Engineering Institute)20. CMM tiene como
los procesos evita especificaciones incomple- objetivo evaluar los procesos en sus niveles
tas o anómalas, la aplicación incorrecta de de madurez e identificar los niveles que una
metodologías, etc.18 Con el objetivo de eva- organización debe formar para establecer
luar la calidad de los procesos de software se una cultura de excelencia en la ingeniería de
define el concepto de modelo de madurez software. Los modelos de CMM se generan
del proceso de producción de software. Estos gracias a la experiencia colectiva de los pro-
modelos apoyan no sólo la mejora continua yectos más exitosos de software. Dentro de la
de los procesos de desarrollo de software familia de modelos CMM, se define el modelo
sino también la estandarización de la produc- para el área de software, SW-CMM.
ción en toda la organización. Cabe resaltar En particular, CMM es un marco de trabajo
que no se debe aplicar modelos de madurez, que especifica guías para organizaciones de
bajo el supuesto de mejorar su calidad, sin software que quieren incrementar su capaci-
antes establecer y definir completamente los dad de procesos, considerando los siguientes
procesos de desarrollo. Dada la importancia puntos: identificar fortalezas y debilidades en
de los procesos, existen diversas certificacio- la organización, ponderar los riesgos de se-
nes basadas en los modelos de madurez de leccionar entre diferentes contratos y moni-
proceso que evalúan que las empresas “digan torear los mismos, entender las actividades
lo que hacen”, “lo hagan como dicen” y “de- necesarias para planear e implementar los
muestren que lo que dicen así lo hacen”19. La procesos de software, y ayudar a definir e
razón adicional para estas certificaciones es implementar procesos de software en la or-
que los modelos a menudo requieren cam- ganización a través de una guía.
bios en la cultura de la organización y una El modelo CMM se evalúa según el área
fuerte inversión en recursos financieros, tec- de proceso clave (en inglés, KPA—Key Pro-
nológicos y humanos. cess Area), donde cada organización debe
En la tabla 12.7 se muestra una cronología incorporar procesos adecuados en cada una
de algunos de los estándares y modelos para de las áreas establecidas. Los procesos se eva-
18
Jones, C., 1994, Assessment and control of software risks, Prentice Hall.
19
Humphrey, W., 1995, A discipline for software egngineering, Addison Wesley.
20
http://www.sei.cmu.edu/cmm/
Tabla 12.7 Cronología de los estándares y modelos de madurez más importantes para la calidad
de software.
Año Descripción
ISO 9000:2000
2000
SEI CMMI V1.02
1999 PEMM V1.0
ISO 15504 (SPICE) (lanzamiento al público como Reportes Técnicos “tipo 2”)
1998
TickIT V4.0
lúan mediante distintos niveles de madurez, cado CMM, más allá de sólo el desarrollo de
como se muestra en la figura 12.8. software. Esto es algo similar al modelo de ca-
En la tabla 12.8 se describen con mayor lidad ISO-9000, que se aplica en múltiples
detalle los niveles de madurez. disciplinas, como se explica a continuación.
Según información del SEI, hasta abril de
2003 se contaba con cerca de 100 empresas
certificadas en el nivel 5 en todo el mundo21.
12.5.3 Organización
Existe una extensión del modelo básico Internacional para la
de madurez, la integración del mode- Estandarización (ISO)
lo de madurez de capacidad (en inglés,
CMMI—Capability Maturity Model Inte- Existen diversas normas de la Organización
gration) que tiene como objetivo integrar Internacional para la Estandarización (en
los diferentes dominios en los que se ha apli- inglés, ISO—International Organization for
21
http://www.sei.cmu.edu/sema/profile.html, http://www.sei.cmu.edu/sema/pdf/SW-CMM/2003apr.pdf
Procesos
de mejora Optimizado
continua
Procesos
predecibles Administrado
Procesos
estandarizados Definido
Procesos
disciplinados Repetible
Inicial
22
http://www.iso.org
23
http://www.iso.org/iso/en/iso9000-14000/iso9000/iso9000index.html
24
http://www.12207.com/
25
Schmietendorf, A., y Scholz, A., 1999, “The Performance Engineering Maturity Model”, en Metrics
News, vol. 4, núm. 2.
26
http://www.tickit.org/
27
Dorling, A., 1993, SPICE: “Software Process Improvement and Capability Determination”, Software
quality journal, 2, 209-224.
28
http://www.sei.cmu.edu/iso-15504/
Parte 1 Parte 9
Conceptos y guía Vocabulario
introductoria
Parte 3 Parte 4
Realización de evaluación Guía para realización
de evaluación
Parte 5 Parte 2
Modelo de evaluación y Modelo de referencia de
guía de indicadores procesos y capacidades