Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FreeLibros
s.me
CAPÍTULO
MODELOS
2 DEL PROCESO
C ONCEPTOS CLAVE n un libro fascinante que expone el punto de vista de un economista sobre el software
conjunto de tareas ............. 29
desarrollo basado
en componentes ................ 43
E y su ingeniería, Howard Baetjer, Jr. [Bae98] comenta acerca del proceso del software.
Debido a que el software, como todo capital, es conocimiento incorporado y a que el conocimiento
modelo de métodos
originalmente se halla disperso, tácito, latente e incompleto en gran medida, el desarrollo de software
formales............................. 44
es un proceso de aprendizaje social. El proceso es un diálogo en el que el conocimiento que debe
modelo general de proceso ..27
convertirse en software se reúne e incorpora en éste. El proceso genera interacción entre usuarios y
modelos concurrentes ....... 40
diseñadores, entre usuarios y herramientas cambiantes, y entre diseñadores y herramientas en evolu‐
modelos de proceso
ción [tecnología]. Es un proceso que se repite y en el que la herramienta que evoluciona sirve por sí
evolutivo............................ 36
misma como medio para la comunicación: con cada nueva ronda del diálogo se genera más cono‐
modelos de proceso
cimiento útil a partir de las personas involucradas.
incremental ...................... 35
modelos de proceso En realidad, la elaboración de software de computadora es un proceso reiterativo de apren‐
prescriptivo ....................... 33
dizaje social, y el resultado, algo que Baetjer llamaría “capital de software”, es la reunión de
patrones del proceso ......... 29
conocimiento recabado, depurado y organizado a medida que se realiza el proceso.
proceso del equipo
Pero desde el punto de vista técnico, ¿qué es exactamente un proceso del software? En el
de software ....................... 49
contexto de este libro, se define proceso del software como una estructura para las actividades,
proceso personal
del software ...................... 48 acciones y tareas que se requieren a fin de construir software de alta calidad. ¿“Proceso” es si‐
proceso unificado .............. 45 nónimo de “ingeniería de software”? La respuesta es “sí y no”. Un proceso del software define
el enfoque adoptado mientras se hace ingeniería sobre el software. Pero la ingeniería de soft‐
ware también incluye tecnologías que pueblan el proceso: métodos técnicos y herramientas
automatizadas.
Más importante aún, la ingeniería de software es llevada a cabo por personas creativas y
preparadas que deben adaptar un proceso maduro de software a fin de que resulte apropiado
para los productos que construyen y para las demandas de su mercado.
U NA
MIRADA ¿Qué es? Cuando se trabaja en la construc‐ ¿Cuáles son los pasos? En un nivel detallado, el proceso
RÁPIDA
ción de un producto o sistema, es importante que se adopte depende del software que se esté elaboran‐
ejecutar una serie de pasos predecibles —el do. Un proceso puede ser apropiado para crear software
mapa de carreteras que lo ayuda a obtener a destinado a un sistema de control electrónico de un aero‐
tiempo un resultado de alta calidad—. El mapa que se plano, mientras que para la creación de un sitio web será
sigue se llama “proceso del software”. necesario un proceso completamente distinto.
¿Quién lo hace? Los ingenieros de software y sus geren‐ ¿Cuál es el producto final? Desde el punto de vista de
tes adaptan el proceso a sus necesidades y luego lo un ingeniero de software, los productos del trabajo son los
siguen. Además, las personas que solicitaron el software programas, documentos y datos que se producen como
tienen un papel en el proceso de definición, elaboración y consecuencia de las actividades y tareas definidas por el
prueba. proceso.
¿Por qué es importante? Porque da estabilidad, control ¿Cómo me aseguro de que lo hice bien? Hay cierto
y organización a una actividad que puede volverse caótica número de mecanismos de evaluación del proceso del
si se descontrola. Sin embargo, un enfoque moderno de software que permiten que las organizaciones determinen
ingeniería de software debe ser “ágil”. Debe incluir sólo la “madurez” de su proceso. Sin embargo, la calidad,
aquellas actividades, controles y productos del trabajo que oportunidad y viabilidad a largo plazo del producto que
sean apropiados para el equipo del proyecto y para el se elabora son los mejores indicadores de la eficacia del
producto que se busca obtener. proceso que se utiliza.
26
www.FreeLibros.me
FIGURA 2.1
Estructura de un
Proceso del software
proceso del
software Estructura del proceso
Actividades sombrilla
actividad estructural # 1
acción de ingeniería de software # 1.1
tareas del trabajo
Conjuntos productos del trabajo
puntos de aseguramiento de la calidad
de tareas puntos de referencia del proyecto
actividad estructural # n
acción de ingeniería de software # n.1
tareas del trabajo
Conjuntos productos del trabajo
puntos de aseguramiento de la calidad
de tareas puntos de referencia del proyecto
www.FreeLibros.me
brilla: seguimiento y control del proyecto, administración de riesgos, aseguramiento de la cali‐
dad, administración de la configuración, revisiones técnicas, entre otras.
El lector debe observar que aún no se menciona un aspecto importante del proceso del soft‐
Cita: ware. En la figura 2.2 se ilustra dicho aspecto —llamado flujo del proceso— y se describe la
“Pensamos que los desarrolla- manera en que están organizadas las actividades estructurales y las acciones y tareas que ocu‐
dores de software pierden de rren dentro de cada una con respecto de la secuencia y el tiempo.
vista una verdad fundamental: Un flujo de proceso lineal ejecuta cada una de las cinco actividades estructurales en secuencia,
la mayor parte de organizacio- comenzando por la comunicación y terminando con el despliegue (véase la figura 2.2a). Un flujo
nes no saben lo que hacen.
de proceso iterativo repite una o más de las actividades antes de pasar a la siguiente (véase la
Piensan que lo saben, pero no
es así.” figura 2.2b). Un flujo de proceso evolutivo realiza las actividades en forma “circular”. A través de
las cinco actividades, cada circuito lleva a una versión más completa del software (véase la fi‐
Tom DeMarco
gura 2.2c). Un flujo de proceso paralelo (véase la figura 2.2d) ejecuta una o más actividades en
Comunicación Planeación Modelado Construcción Despliegue
a) Flujo de proceso lineal
Planeación
Modelado
Comunicación
Incremento
Despliegue Construcción
obtenido
Comunicación Planeación
Modelado Tiempo
Construcción Despliegue
www.FreeLibros.me
1. Hacer contacto con el participante por vía telefónica.
2. Analizar los requerimientos y tomar notas.
3. Organizar las notas por escrito en una formulación breve de los requerimientos.
4. Enviar correo electrónico al participante para que revise y apruebe.
Si el proyecto fuera considerablemente más complejo, con muchos participantes y cada uno
con un distinto conjunto de requerimientos (a veces en conflicto), la actividad de comunicación
puede tener seis acciones distintas (descritas en el capítulo 5): concepción, indagación, elabora-
ción, negociación, especificación y validación. Cada una de estas acciones de la ingeniería del
software tendrá muchas tareas de trabajo y un número grande de diferentes productos finales.
CLAVE
Diferentes proyectos demandan 2.1.2 Identificación de un conjunto de tareas
diferentes conjuntos de tareas. El
equipo de software elige el conjunto En relación con la figura 2.1, cada acción de la ingeniería de software (por ejemplo, obtención,
de tareas con base en las asociada a la actividad de comunicación) se representa por cierto número de distintos conjuntos
características del problema y el de tareas, cada uno de los cuales es una colección de tareas de trabajo de la ingeniería de soft‐
proyecto. ware, relacionadas con productos del trabajo, puntos de aseguramiento de la calidad y puntos
de referencia del proyecto. Debe escogerse el conjunto de tareas que se adapte mejor a las ne‐
cesidades del proyecto y a las características del equipo. Esto implica que una acción de la in‐
geniería de software puede adaptarse a las necesidades específicas del proyecto de software y
a las características del equipo del proyecto.
2.1.3 Patrones del proceso
1 En el capítulo 12 se hace el análisis detallado de los patrones.
www.FreeLibros.me
TE UNO EL PRO
PART OCESO DEL SO
OFTWARE
INFORM
MACIÓN
junto de tarreas 3. Fo
ormar la lista pre eliminar de las fuunciones y caraccterísticas con
njunto de tareass define el trabajo real por efectuuar a baase en las aporta aciones del partticipante.
cumplir los objeetivos de una accción de ingenieríía de 4. Prrogramar una serie de reunioness para facilitar la a elaboración
mplo, la indagacióón (mejor conocid
da como “recabarr dee las especificaciones de la aplicaación.
s”) es una acción importante de laa ingeniería de sooft‐ 5. Ceelebrar las reuniones.
urante la actividaad de comunicaciión. La meta al 6. Prroducir en cada rreunión escenarioos informales de e usuario.
imientos es entender lo que los distintos participa n‐ 7. Affinar los escenarios del usuario coon base en la retroalimenta‐
tware que se va a elaborar. ció
ón de los particip
pantes.
cto pequeño y reelativamente sencillo, el conjuntoo de 8. Fo
ormar una lista re evisada de los reqquerimientos de los partici‐
agación de requerimientos tendrá un aspecto paare‐ paantes.
9. Ussar técnicas de deespliegue de la fuunción de calidadd para asig‐
naar prioridades a lo
os requerimientoos.
ntes del proyecto
ista de participan o. 10. Aggrupar los requerrimientos de moddo que puedan en ntregarse en
dos los participan
ntes a una reunió ón informal. fo
orma paulatina y creciente.
participante quee haga una relacióón de las caracte‐‐ 11. Reesaltar las limitan
ntes y restriccionees que se introdu
ucirán al sis‐
nciones que requiiere. te
ema.
requerimientos yy construir la listta definitiva. 12. Annalizar métodos para validar el ssistema.
requerimientos según su priorida ad.
as áreas de incertidumbre. Los d
dos conjuntos de tareas mencionaados sirven para “recabar los
requerimmientos”, pero so on muy distintos een profundidad yy formalidad.
cto de software m
más grande y commplejo se requerirrá
El equipo de software elige el conjunto dee tareas que le pe ermita
onstituido por lass
tareas diferente que quizá esté co
alcanzarr la meta de cada acción con cal idad y agilidad.
de trabajo:
a de participantees del proyecto.
a cada participantte por separado a
a fin de determi‐
os y necesidades generales.
Lo ción.2 En cierttos casos, un patrón puede
os patrones se definen en cualquier nivel de abstracc e
usarse para descrribir un proble
ema (y su solu
ución) asociad delo completto del proceso
do con un mod o
(por ejemplo, hac
cer prototiposs). En otras situaciones, lo
os patrones se
e utilizan para describir un
n
ones es
a repeti- prob
blema (y su so
olución) asocciado con una
a actividad es or ejemplo, planeación) o
structural (po o
alidad, una acción dentro ural (estimación de proyecctos).
o de una activvidad estructu
n únicas Ambler [Amb9
98] ha propue sto un formatto para describir un patrón
n del proceso:
n los mis-
N
Nombre del patrón.
p El pa
atrón recibe un nombre significativo que
e lo describe e
en el con‐
te
exto del proce
eso del softwa
are (por ejem onesTécnicass).
mplo, Revisio
ander
Fuerzas. El am
mbiente en el que se encue
entra el patrón y los aspecttos que hacen
n visible el
problema y afe
ectan su solucción.
T
Tipo. Se espec
cifica el tipo d
de patrón. Am
mbler [Amb98
8] sugiere tress tipos:
1. Patrón de
d etapa: defin
ne un problem
ma asociado co
on una activid
dad estructurral para el
proceso. Como una acctividad estructural incluye
e múltiples accciones y tareas del tra‐
rciona un
bajo, un patrón de la e
etapa incorpo
ora múltiples patrones de lla tarea (véasse a conti‐
scribir al
nuación) que son rele vantes para la etapa (activ
vidad estructu
ural). Un ejem
mplo de pa‐
etapa sería EsstablecerCom
trón de e municación.. Este patrón incorporaría el patrón de
ecabarReque
tarea Re erimientos y otros más.
y
2. Patrón de
d tarea: defin e un problem
ma asociado con una acción
n o tarea de ttrabajo de la
ingenieríía de software
e y que es rellevante para e
el éxito de la práctica de in
ngeniería de
software
e (por ejemplo equerimienttos es un patrrón de tarea).
o, RecabarRe
2 Loss patrones son a
aplicables a mucchas actividadess de la ingeniería de software. EEl análisis, el dis
seño y la prueba
a
de
e patrones se es
studian en los ca
apítulos 7, 9, 10,, 12 y 14. Los pa
atrones y “antipaatrones” para la
as actividades de
e
ad
dministración de
e proyectos se an
nalizan en la parrte 4 del libro.
www
w.FreeLibro
os.me
Los patrones de proceso dan un mecanismo efectivo para enfrentar problemas asociados con
WebRef cualquier proceso del software. Los patrones permiten desarrollar una descripción jerárquica
En la dirección www.ambysoft. del proceso, que comienza en un nivel alto de abstracción (un patrón de fase). Después se me‐
com/processPatternsPage.html jora la descripción como un conjunto de patrones de etapa que describe las actividades estruc‐
se encuentran recursos amplios sobre
turales y se mejora aún más en forma jerárquica en patrones de tarea más detallados para cada
los patrones de proceso.
patrón de etapa. Una vez desarrollados los patrones de proceso, pueden reutilizarse para la
definición de variantes del proceso, es decir, un equipo de software puede definir un modelo de
proceso específico con el empleo de los patrones como bloques constituyentes del modelo
del proceso.
2.2 E V A L U A C I Ó N Y M E J O R A DEL PR O C E S O
La existencia de un proceso del software no es garantía de que el software se entregue a tiempo,
que satisfaga las necesidades de los consumidores o que tenga las características técnicas que
3 Estos patrones de fase se estudian en la sección 2.3.3.
www.FreeLibros.me
TE UNO EL PRO
PART OCESO DEL SO
OFTWARE
INFORM
MACIÓN
mplo de patrrón de proce
eso debe hacerse con una solución de softwa re. Los participan ntes no están
iente patrón de pproceso abreviado describe un seguros de lo que quieren, es decir, no puueden describir ccon detalle
ue aplicable en ell caso en el que lo
os participantes oftware.
los requerimientos del so
neral de lo que d
debe hacerse, perro no están segu‐ ‐ Solucióón. Aquí se pressentaría una desscripción del proceso prototi‐
mientos específiccos de software. ás adelante, en lla sección 2.3.3.
po, que se describirá má
atrón. Requerim
mientosPocoC
Claros Contex xto resultante. Los participantess aprueban un prrototipo de
atrón describe un enfoque para cconstruir un modee‐ softwaree que identifica lo
os requerimientoos básicos (por ejjemplo,
ue los participantes pueden evalu uar en forma iteraa‐ modos dde interacción, ca aracterísticas com
mputacionales, fu unciones de
o por identificar o
o solidificar los re
equerimientos dee procesamiento). Despuéss de esto, 1) el prrototipo quizá evvolucione a
través de una serie de inccrementos para cconvertirse en el software de
produccción, o 2) tal vez se descarte el proototipo y el softw
ware de pro‐
ase.
ducción se elabore con e el empleo de otrro proceso de patrón.
l. Antes de iniciarr este patrón debben cumplirse las
Patronees relacionado os. Los patrones siguientes están relaciona‐
ones: 1) se ha identificado a los pa articipantes; 2) see
dos con este patrón: ComunicaciónCo onClientes, DisseñoItera-
modo de comunicación entre los participantes y e l
esarrolloIterativ
tivo, De vo, Evaluación nDelCliente, Obten-
e; 3) los participaantes han identificado el problemaa
ciónDe eRequerimiento os.
re que se va a ressolver; 4) se ha obbtenido el enten‐‐
l alcance del proyyecto, los requerimientos básicos Usos y ejemplos cono ocidos. Cuandoo los requerimientos sean
restricciones del proyecto. inciertoss, es recomendab
ble hacer prototippos.
equerimientos son confusos o inexxistentes, pero haay
o claro de que exiiste un problema por resolver y quue
cond
ducirán a cara
acterísticas de
e calidad de llargo plazo (v
véanse los cap
pítulos 14 y 1
16). Los patro‐‐
nes d
de proceso de
eben acoplarsse con una prá
áctica sólida d
de ingeniería d
de software (v
véase la parte
e
2 de
el libro). Adem
más, el processo en sí pued
de evaluarse p
para garantizaar que cumple con ciertoss
der el crite
erios de proce
eso básicos qu
ue se haya de
emostrado qu
ue son esenciiales para el é
éxito de la in‐‐
o del
geniería de software.4
ejorarlo.
En
n las últimas décadas se h
han propuestto numerosos
s enfoques paara la evaluac
ción y mejora
a
de un proceso del software:
as M
Método de ev
valuación de
el estándar CMMI
C para el proceso d
de mejora (S
SCAMPI, porr
pone su
us siglas en in
nglés): proporrciona un mod
delo de cinco fases para evvaluar el proce
eso: inicio,
roceso diagnóstico, esstablecimient o, actuación y
y aprendizaje. El método SSCAMPI emple
ea el SEI
CMMI como la base de la evvaluación [SEI00].
E
Evaluación basada
b en CM
MM para la mejora del proceso
p inte
erno (CBA IP
PI, por sus si‐‐
gllas en inglés): proporciona
a una técnica de diagnóstico para evalu
uar la madure
ez relativa de
e
una organización de softwa
are; usa el SEI CMM como la base de la evaluación [D
Dun01].
software
ficativas SPICE (ISO/IIEC 15504): e
estándar que define un con
njunto de req
querimientos para la eva‐
pitalizar lu
uación del pro
oceso del softtware. El objetivo del están
ndar es ayudaar a las organizaciones a
as de los de
esarrollar una
a evaluación o
objetiva de cu
ualquier proce ware definido [ISO08].
eso del softw
”
IS
SO9001:2000 para softw
ware: estándar genérico q
que se aplica a cualquier o
organización
ejorar la calid ad general de los producttos, sistemass o servicios q
que desee me que propor‐
ciiona. Por tantto, el estánda
ar es directam
mente aplicab nizaciones y compañías de
ble a las organ e
so
oftware [Ant0
06].
En
n el capítulo 3
30 se presentta un análisis d
detallado de los métodos d
de evaluación
n del software
e
y del proceso de m
mejora.
4 En lla publicación CM
MMI [CMM07] d
del SEI, se describen con muchos
s detalles las carracterísticas de u
un proceso del
so
oftware y los critterios para un prroceso exitoso.
www
w.FreeLibro
os.me
5 Los modelos de proceso prescriptivo en ocasiones son denominados modelos de proceso “tradicional”.
www.FreeLibros.me
Comunicación
inicio del proyecto Planeación
estimación Modelado
recabar los requerimientos Construcción
programación análisis
código Despliegue
seguimiento diseño entrega
pruebas
asistencia
retroalimentación
“Con demasiada frecuencia, el En un análisis interesante de proyectos reales, Bradac [Bra94] encontró que la naturaleza
trabajo de software sigue la pri- lineal del ciclo de vida clásico llega a “estados de bloqueo” en los que ciertos miembros del
mera ley del ciclismo: no equipo de proyecto deben esperar a otros a fin de terminar tareas interdependientes. En reali‐
importa hacia dónde te dirijas, dad, ¡el tiempo de espera llega a superar al dedicado al trabajo productivo! Los estados de
vas hacia arriba y contra el
bloqueo tienden a ocurrir más al principio y al final de un proceso secuencial lineal.
viento.”
Hoy en día, el trabajo de software es acelerado y está sujeto a una corriente sin fin de cambios
Anónimo (en las características, funciones y contenido de información). El modelo de la cascada suele ser
6 Aunque el modelo de la cascada propuesto originalmente por Winston Royce [Roy70] prevé los “bucles de retroa‐
limentación”, la gran mayoría de organizaciones que aplican este modelo de proceso lo tratan como si fuera
estrictamente lineal.
7 En la parte 3 del libro se estudian con detalle las acciones de aseguramiento de la calidad.
www.FreeLibros.me
CAPÍTULO 2 MODELOS DEL
L PROCESO 35
El modelo en
n V
Di seño de la P
Pruebas
arrquitectura deel sistema
Gene
eración Pruebas
de código
c unitarias
Software
ejecutable
inapropiado para ese tipo
o de labor. No
o obstante, sirrve como un m
modelo de proceso útil en situa‐
ciones en llas que los req
querimientoss son fijos y el trabajo avan
nza en forma llineal hacia ell final.
2.3.2 Mo
odelos de prroceso incremental
Hay much
has situacione
es en las que los requerimiientos iniciale
es del softwarre están razon
nable‐
mente bien d
definidos, perro el alcance g
general del es
sfuerzo de de
esarrollo impo
osibilita un prroceso
CLAVE
E lineal. Ade haya una necesidad imperiosa de dar ráápidamente cierta funciona
emás, tal vez h alidad
El modelo incremenntal ejecuta una limitada de software a
a los usuarioss y aumentarla en las entre
egas posteriorres de software. En
serie de avances, llamados
tales casos,, se elige un m
modelo de pro
oceso diseñad ucir el software en increme
do para produ entos.
incrementos, que en forma
ncremental co
El modelo in ombina eleme
entos de los flujos de proce
eso lineal y pa
aralelo estudia
a‐ dos
progresiva dan más funcionalidad al
cliente conforme se le entrega cada en la sección 2.1. E
En relación co
on la figura 2.5
5, el modelo iincremental a
aplica secuenc
cias li‐
incremento. neales en fforma escalon
nada a medida que avanza el calendario
o de actividades. Cada secu
uencia
lineal produce “incremen
ntos” de softw
ware susceptibles de entreggarse [McD93
3] de manera pare‐
cida a los inc
crementos prroducidos en un flujo de prroceso evolutiivo (sección 2
2.3.3).
Por ejemplo, un softw
ware para proc
cesar textos q
que se elaborre con el paradigma increm
mental
gue en el pri mer incremento las funcio
quizá entreg ones básicas de administrración de archivos,
oducción del documento; en el segundo
edición y pro o dará herram
mientas más ssofisticadas de edi‐
ción y produ n el tercero habrá separacción de palabrras y revisión de la
ucción de doccumentos; en
CONSEJO ortografía; y
y en el cuarto onará la capacidad para daar formato av
o se proporcio vanzado a lass pági‐
Su cliente solicita lla entrega para nas. Debe observarse
o qu
ue el flujo de proceso para cualquier in
ncremento puede incorpo
orar el
una fecha que es imposible de paradigma d
del prototipo.
cumplir. Sugiera enttregar uno o más Cuando sse utiliza un m
modelo increm
mental, es frecuente que e
el primer incre
emento sea e
el pro-
incrementos en la ffecha que pide, y
ducto funda
amental. Es de
ecir, se abord
dan los reque
erimientos báásicos, pero no
n se proporc
cionan
el resto del softwaare (incrementos
adicionales) en unn momento muchas cara
acterísticas su
uplementariass (algunas con nte usa el producto
nocidas y otraas no). El clien
posterior. fundamenta
al (o lo somete da). Como ressultado del usso y/o evaluación,
e a una evaluación detallad
www
w.FreeLibros.me
FIGURA 2.5
El modelo Comunicación
entrega del primer
incremento
Calendario del proyecto
se desarrolla un plan para el incremento que sigue. El plan incluye la modificación del producto
fundamental para cumplir mejor las necesidades del cliente, así como la entrega de caracterís‐
ticas adicionales y más funcionalidad. Este proceso se repite después de entregar cada incre‐
mento, hasta terminar el producto final.
El modelo de proceso incremental se centra en que en cada incremento se entrega un pro‐
ducto que ya opera. Los primeros incrementos son versiones desnudas del producto final, pero
proporcionan capacidad que sirve al usuario y también le dan una plataforma de evaluación.8
El desarrollo incremental es útil en particular cuando no se dispone de personal para la im‐
plementación completa del proyecto en el plazo establecido por el negocio. Los primeros incre‐
mentos se desarrollan con pocos trabajadores. Si el producto básico es bien recibido, entonces
se agrega más personal (si se requiere) para que labore en el siguiente incremento. Además, los
incrementos se planean para administrar riesgos técnicos. Por ejemplo, un sistema grande tal
vez requiera que se disponga de hardware nuevo que se encuentre en desarrollo y cuya fecha
de entrega sea incierta. En este caso, tal vez sea posible planear los primeros incrementos de
forma que eviten el uso de dicho hardware, y así proporcionar una funcionalidad parcial a los
usuarios finales sin un retraso importante.
2.3.3 Modelos de proceso evolutivo
El software, como todos los sistemas complejos, evoluciona en el tiempo. Es frecuente que los
requerimientos del negocio y del producto cambien conforme avanza el desarrollo, lo que hace
CLAVE que no sea realista trazar una trayectoria rectilínea hacia el producto final; los plazos apretados
El modelo del proceso evolutivo del mercado hacen que sea imposible la terminación de un software perfecto, pero debe lan‐
genera en cada iteración una versión
zarse una versión limitada a fin de aliviar la presión de la competencia o del negocio; se com‐
final cada vez más completa del
software. prende bien el conjunto de requerimientos o el producto básico, pero los detalles del producto
o extensiones del sistema aún están por definirse. En estas situaciones y otras parecidas se
necesita un modelo de proceso diseñado explícitamente para adaptarse a un producto que evo‐
luciona con el tiempo.
Los modelos evolutivos son iterativos. Se caracterizan por la manera en la que permiten
desarrollar versiones cada vez más completas del software. En los párrafos que siguen se pre‐
sentan dos modelos comunes de proceso evolutivo.
8 Es importante observar que para todos los modelos de proceso “ágiles” que se estudian en el capítulo 3 también
se usa la filosofía incremental.
www.FreeLibros.me
CAPÍTULO 2 MODELOS DEL
L PROCESO 37
Hacer prototipos. Es frrecuente que un cliente defina un conju
unto de objetivos generaless para
Cita: el software, pero que no identifique lo
os requerimie
entos detallad
dos para las fu
unciones y caracte‐
rísticas. En o
otros casos, e
el desarrollado
or tal vez no esté seguro d
de la eficienciia de un algorritmo,
“Planee para laanzar uno. De
todos modos hará eso. Su única de la adapta n sistema operativo o de la forma que de
abilidad de un ebe adoptar la interacción entre
elección es si traatará de vender y la máquina. En estas situaciones, y mu
el humano y el paradigma de hacer prototipos
uchas otras, e
a sus clientes loo que lanzó.” tal vez ofrezca el mejor e
enfoque.
Aunque es
e posible ha
acer prototipos como un modelo de p
proceso aislad
do, es más común
c
Frederick P
P. Brooks
usarlo como
o una técnica q mplementarse
que puede im e en el context
xto de cualquiera de los mo
odelos
de proceso d
descritos en e
de hacer pro
este capítulo. Sin importar la manera en
ototipos le ayyudará a uste
ed y a otros p
n la que se apllique, el parad
participantes a mejorar la comprensión
digma
n de lo
que hay que
e elaborar cua
El paradig
o están claross.
ando los requerimientos no
gma de hacerr prototipos (véase la figurra 2.6) comien
nza con comu
unicación. Ustted se
CONSEJO reúne con ottros participa
antes para deffinir los objetivos generale
es del software, identifica c
cuales‐
Cuando su clientee tiene una quiera reque
erimientos qu
ue conozca y detecta las áreas en las qu
ue es impresc
cindible una m
mayor
necesidad legítimaa, pero ignora los definición. Se
S planea ráp
pidamente un
na iteración para
p hacer el prototipo, y se lleva a ca
abo el
detalles, como prim
mer paso desarrolle modelado (e
en forma de un “diseño rápido”).
r Éste se centra en
n la representación de aquellos
un prototipo.
aspectos del software qu
ue serán visib usuarios finalles (por ejemplo, disposiciión de
bles para los u
la interfaz humana o form pantalla de salida). El diseñ
matos de la p ño rápido lleva a la constru
ucción
de un proto
otipo. Éste se entrega y ess evaluado po
or los particip
pantes, que dan
d retroalim
menta‐
ción para mejorar los req
querimientos. La iteración ocurre a me
edida de que el prototipo e
es afi‐
nado para satisfacer las n de distintos participantes, y al mismo tiiempo le perm
necesidades d mite a
usted entender mejor lo q
que se necesita hacer.
El ideal es
e que el pro totipo sirva como
c mecaniismo para ide
entificar los requerimiento
r os del
software. Si va a construiirse un prototipo, pueden utilizarse fraggmentos de p
programas ex
xisten‐
tes o aplicarr herramienta
as (por ejemp
plo, generadores de reporttes y administradores de v
venta‐
nas) que perrmitan genera
ar rápidamen
nte programas
s que funcion en.
Pero, ¿qu
ué hacer con e
el prototipo cuando ya sirv
vió para el pro
opósito descrito? Brooks [B
Bro95]
da una respu
uesta:
FIGURA 2.6
El paradigma a de
hacer prototiipos
Plan rápido
Comunicación
Modeelado
Diseeño rápido
Despliegue
Entrega y
Construccción
Retroalime
entación
del
prototipoo
www
w.FreeLibros.me
TE UNO EL PRO
PART OCESO DEL SO
OFTWARE
Ell prototipo sirve como “el primer sistem
ma”. Lo que B
Brooks recom
mienda es desecharlo. Pero
o
esto quizá sea un
n punto de vissta idealizado
o. Aunque algunos prototip
pos se constru
uyen para serr
“dessechables”, ottros son evolu
utivos; es decir, poco a poc
co se transforrman en el sistema real.
Ta
anto a los participantes co
omo a los inge
enieros de so
oftware les gu
usta el paradig
gma de hacerr
prototipos. Los usuarios adqu ieren la senssación del sisttema real, y los desarrolla
adores logran
n
consstruir algo de inmediato. N
No obstante, hacer prototipos llega a se
er problemáttico por las si‐‐
guientes razones::
1. Los particip
pantes ven lo que parece sser una versión funcional d el software, ssin darse
ONSEJO cuenta de q
que el prototiipo se obtuvo
o de manera c
caprichosa; no
o perciben qu
ue en la prisa
la presión para conveertir un por hacer q
que funcionarra, usted no consideró la ca
alidad generaal del software
e o la facili‐
ipo burdo en un prodducto dad de darle mantenimiiento a largo plazo. Cuando
o se les inform
ma que el pro
oducto debe
ado. Como resultado dde ello, a fin de obten
rehacerse a ner altos niveles de calidad
d, los participaantes gritan q
que es usted
empre disminuye la ccalidad.
un tonto y piden “unos ccuantos arreg
glos” para hac
cer del protottipo un produ
ucto funcio‐
nal. Con de
emasiada freccuencia, el gerrente de desa
arrollo del sofftware cede.
2. Como ingeniero de softw
ware, es frecu
uente que lleg
gue a compro
omisos respec
cto de la im‐
plementaciión a fin de ha
acer que el prrototipo funcione rápido. Q
Quizá utilice u
un sistema
operativo inapropiado, o
o un lenguaje
e de programa
ación tan sólo
o porque cuen
nta con él y
lo conoce; tal vez implem
mentó un algoritmo ineficiiente sólo parra demostrar capacidad.
Después de
e un tiempo, q ones y olvide todas las
quizá se sientta cómodo con esas eleccio
razones por las que eran os que lo idea
n inadecuadas. La elección de algo meno al ahora ha
pasado a fo
ormar parte d
del sistema.
Aunque puede
e haber probl emas, hacer prototipos es
s un paradigm
ma eficaz para
a la ingeniería
a
de so
oftware. La clave es definiir desde el prrincipio las reg
glas del juego
o; es decir, to
odos los parti‐‐
cipan
ntes deben estar de acuerrdo en que el prototipo sirrva como el m
mecanismo pa
ara definir loss
requ
uerimientos. D
Después se de
escartará (al menos en parte) y se haráá la ingeniería
a del software
e
real con la mirada
a puesta en la
a calidad.
CASASEGU
URA
S
Selección d
de un modello de proces
so, Doug: Es cierto, pero no
E o sin muchos sobbresaltos, y este proyecto
p
parte 1 m grande y complejo que cuallquier cosa que hayamos
parece más
hecho anntes.
a escena: Salaa de juntas del grrupo de ingenierría de software dde Jamie: No parece tan m mal, pero estoy dde acuerdo… nue estro enfo‐
PI Corporation, ccompañía (ficticiia) que manufactura artículos dee que ad hhoc de los proyecctos anteriores nno funcionará en
n éste, en
onsumo para el h hogar y para usoo comercial. particula
ar si tenemos una fecha de entreega muy apretad da.
articipantes: LLee Warren, gereente de ingenierría; Doug Miller, Doug (ssonríe): Quiero ser un poco máás profesional en n nuestro
erente de ingeniería de software miembro del equ ipo
e; Jamie Lazar, m enfoque. La semana pasada asistí a un cuurso breve y aprrendí mucho
e software; Vino
od Raman, miembro del equipo d de software; y Edd sobre ing
geniería de softw
ware… algo buenno. Aquí necesitaamos un
obbins, miembro o del equipo de software. proceso.
a conversació
ón: Jamie (con
( el ceño fruncido):
f Mi ttrabajo es producir progra‐
ee: Recapitulemo os. He dedicado algún tiempo all análisis de la mas de ccomputadora, no
o papel.
nea de productoss CasaSegura, seggún la vemos hassta el momento.. Doug: Den una oportuni
D dad antes de ser tan negativos co
onmigo. Lo
o hay duda de quue hemos efectuaado mucho trabajjo tan sólo para que quiero decir es esto: [Doug pasa a desscribir la estructura del
efinir el concepto
o, pero me gustarría que ustedes co
omenzaran a penn‐ proceso vvista en este capíítulo y los modeloos de proceso preescriptivo
ar en cómo van aa enfocar la partee del software dee este proyecto. presentados hasta el mom mento.]
oug: Pareciera qque en el pasado hemos estado m
muy desorganiza‐ Doug: De cualquier form
D ma, parece que unn modelo lineal no es para
os en nuestro enffoque del software. nosotros… pues supone que conocemos toodos los requerimmientos y,
d: No sé, Doug, siempre sacamo
os el producto. conociendo esta empresa, eso no parece pprobable.
www
w.FreeLibro
os.me
CAPÍTULO 2 MODELOS DEL
L PROCESO 39
y parece demasiado orientado a a las tecnologíass de Viinod: Eso es un p
problema. Me preeocupa que no nos dé suficiente
n… tal vez sea buueno para hacerr un sistema de ccontrol de estructura.
no para CasaSeguura.
o algo así, pero no parece buen Dooug: No te preoccupes. Tenemos m muchas opcioness más, y quisiera
oy de acuerdo. qu
ue ustedes, muchachos, elijan la qque sea mejor parra el equipo y
oque de hacer prrototipos parece bueno. En todo ccaso, se paara el proyecto.
ucho a lo que haccemos aquí.
El modelo de desarrollo e
espiral es un ge odelo de procesoo impulsado po
enerador de mo or el riesgo, que
e se
usa para guiar
g la ingenie
ería concurrentte con participa
antes múltipless de sistemas intensivos en so
oft‐
ware. Tien vas principales. La primera es el enfoque cíc
ne dos caracterrísticas distintiv clico para el cre
eci‐
miento inc
cremental del g
grado de definición de un sistema y su imple
ementación, mientras que dismi‐
o. La otra es un conjunto de puntos de refferencia de anc
nuye su grado de riesgo claje puntual para
p
asegurar e
el compromiso d
del participante
e con solucione
es factibles y mu
utuamente satisfactorias.
Con el empleo del model o espiral, el software se de
esarrolla en u
una serie de entregas evolu
utivas.
Durante las primeras ite raciones, lo que
q se entreg
ga puede ser
r un modelo o
o prototipo. En las
iteraciones posteriores s e producen versiones
v cada vez más co
ompletas del sistema cuya inge‐
E niería se está haciendo.
l se adapta para
elo en espiral es dividido por
Un mode p el equipo e en un conjunto de actividades
o de software
o de todo el ciclo
cación, desde el estructurale
es. Para fines ilustrativos, sse utilizan las
s actividades estructuraless generales ya
a ana‐
ncepto hasta el lizadas.9 Cad
da una de ellass representa un segmento de la trayecto
oria espiral ilu
ustrada en la ffigura
2.7. Al come
enzar el proce
eso evolutivo, el equipo de software reaaliza actividad
des implícitas en un
Planeación n
spiral estimaciónn
programac ción
análisis de
e riesgo
Comunicación
n
Modelaado
anális
sis
diseño
Inicio
Despliiegue
Construcción
entreega código
retroaalimentación prueba
www
w.FreeLibros.me
circu
uito alrededorr de la espiral en el sentido
o horario, parttiendo del cenntro. El riesgo
o se considera
a
confforme se desaarrolla cada re evolución (capítulo 28). Enn cada paso e evolutivo se m marcan puntoss
de reeferencia punttuales: combi nación de pro
oductos del trrabajo y cond
diciones que sse encuentran
n
a lo largo de la tra
ayectoria de l a espiral.
El primer circ
cuito alrededo
or de la espiral da como re
esultado el de
esarrollo de una especifica‐‐
ción del producto; las vueltas ssucesivas se u
usan para desa
arrollar un prrototipo y, lue
ego, versioness
ca
ada vez más sofisticadas de
el software. C
Cada paso porr la región de planeación da como resul‐‐
ta
ado ajustes en
n el plan del p gramación de actividades sse ajustan con
proyecto. El costo y la prog n
base
e en la retroalimentación o
obtenida del cliente despué
és de la entregga. Además, e
el gerente del
proy
yecto ajusta e
el número pla
aneado de iterraciones que se requieren para termina
ar el software.
We
ebRef A diferen
ncia de otros modelos del proceso que ffinalizan cuan
ndo se entrega el software,,
En la dirección
d www.sei.cmu. el modelo
m espiral puede adap
ptarse para aplicarse
a a lo largo de tod
da la vida del software de
e
edu/publications/ cómputo. Entonc
ces, el primerr circuito alre
ededor de la espiral quizáá represente un “proyecto
o
docuuments/00.reports// de desarrollo del concepto” qu
ue comienza en el centro de la espiral y continúa po
or iteracioness
00sr0008.html se encuenttra
informaación útil sobre el modeelo múlttiples10 hasta que queda te
erminado el d
desarrollo del concepto. Si el concepto va a desarro‐‐
espiraal. llarse e hacia fuera de la espirall y comienza un “proyecto
e en un producto real, el proceso sigue o
de desarrollo de p
producto nuevvo”. El nuevo
o producto evo
olucionará a ttravés de cierto número de
e
itera
aciones alrede
edor de la esp
piral. Más adelante puede u or de la espiral
usarse un circcuito alrededo
para
a que represe
ente un “proyyecto de mejo
ora del produ
ucto”. En ese
encia, la espirral, cuando se
e
caracteriza de estte modo, sigu
ue operativa h
hasta que el s
software se re
etira. Hay oca
asiones en lass
CO
ONSEJO
que el proceso está inmóvil, p
pero siempre
e que se inicia un cambio comienza en
n el punto de
e
Si su administración pidee un
ada apropiado (por ejemp lo, mejora de
entra el producto).
desarroollo apegado al presuppuesto
(mala idea, por lo generaal), la El modelo espiral es un enffoque realista
a para el desa
arrollo de siste
emas y de software a gran
n
espiral se convierte en un prooblema. esca
ala. Como el software evolu
uciona a med
dida que el pro
oceso avanza,, el desarrolla
ador y cliente
e
El costoo se revisa y modificca cada com
mprenden y re
eaccionan me
ejor ante los rriesgos en cad modelo espiral
da nivel de evvolución. El m
vez quee se termina un circcuito. usa los prototipo
os como mec anismo de re
educción de riesgos,
r pero,, más importante, permite
e
aplic
car el enfoque
e de hacer pro
ototipos en cu a de la evoluci ón del produc
ualquier etapa cto. Mantiene
e
el en
nfoque de esc
calón sistemá
ático sugerido
o por el ciclo d
de vida clásico
o, pero lo inco
orpora en una
a
uctura iterativa que refleja
estru a al mundo re
eal en una forma más reallista. El mode
elo espiral de‐‐
man
nda una consiideración dire
ecta de los rie
esgos técnico
os en todas laas etapas del proyecto y, ssi
Cita: se a
aplica de man
nera apropiad
da, debe reducir los riesgos e se vuelvan un problema.
s antes de que
“Sólo voy aquí y sólo el m
mañana Pero, como otros paradigm as, el modelo s una panaceaa. Es difícil convencer a loss
o espiral no es
me guía.”
g clien
ntes (en partic
cular en situa
aciones bajo c
contrato) de q e evolutivo es controlable.
que el enfoque
Dem
manda mucha experiencia en la evaluac
ción del riesgo y se basa e
en ella para lllegar al éxito.
Dave
e Matthews Band
No h
hay duda de q
que habrá pro
oblemas si algún riesgo imp e descubre y administra.
portante no se
2.3.4
4 Modeloss concurren
ntes
El modelo de desa
arrollo concurrrente, en oca
asiones llamado ingenieríaa concurrente,, permite que
e
un equipo de softtware represe
ente elemento
os iterativos y
y concurrente
es de cualquie
era de los mo‐‐
CO
ONSEJO
delos de proceso descritos en e
este capítulo. Por ejemplo,, la actividad d
de modelado definida para
a
Con freecuencia, el modeloo
el m
modelo espirall se logra porr medio de invocar una o más de las sigguientes acciones de soft‐‐
concurrrente es más apropiaddo para
proyecttos de ingeniería de prroductos ware otipos, análisiis y diseño.11
e: hacer proto
en los que se involucran vvarios La
a figura 2.8 m presentación esquemática de una activiidad de ingen
muestra la rep niería de soft‐‐
equipoos de trabajo. ware
e dentro de la
a actividad de
e modelado co
on el uso del e
enfoque de m
modelado concurrente. La
10 La
as flechas que ap
puntan hacia den despliegue de la
ntro a lo largo del eje que separa la región del d a de comunica--
ciión indican un p
potencial para la iteración local a
a lo largo de la m
misma trayectoriia espiral.
11 De
ebe observarse q
que el análisis y diseño son tareas complejas que requieren muccho análisis. La p
parte 2 de este
lib
bro considera en
n detalle dichos ttemas.
www
w.FreeLibro
os.me
CASASEGURA
Selección de un modelo de proceso, otro incremento. También se ajusta a la naturaleza del producto.
parte 2 Podemos lanzar con rapidez algo al mercado y luego agregar fun‐
cionalidad con cada versión, digo… con cada incremento.
La escena: Sala de juntas del grupo de ingeniería de software de
Lee: Un momento. Doug, ¿dijiste que volveríamos a hacer el plan a
CPI Corporation, compañía que manufactura productos de consumo
cada vuelta de la espiral? Eso no es nada bueno; necesitamos un
para uso doméstico y comercial.
plan, un programa de actividades y apegarnos a ellos.
Participantes: Lee Warren, gerente de ingeniería; Doug Miller,
Doug: Ésa es la vieja escuela, Lee. Como dijeron los chicos, tene‐
gerente de ingeniería de software; Vinod y Jamie, miembros del
mos que hacerlo apegado a la realidad. Afirmo que es mejor afinar
equipo de ingeniería de software.
el plan a medida de que aprendamos más y conforme se soliciten
La conversación: [Doug describe las opciones de proceso evoluti‐ cambios. Eso es más realista. ¿Qué sentido tiene un plan si no refleja
vo.] la realidad?
Jamie: Ahora me doy cuenta de algo. El enfoque incremental tiene
Lee (con el ceño fruncido): Supongo, pero… a la alta dirección
sentido, y en verdad me gusta el flujo del modelo en espiral. Es bas‐
no le va a gustar… quieren un plan fijo.
tante realista.
Doug (sonriente): Entonces tendrás que reeducarlos, amigo.
Vinod: De acuerdo. Entregamos un incremento, aprendemos de la
retroalimentación del cliente, volvemos a planear y luego entregamos
actividad —modelado— puede estar en cualquiera de los estados12 mencionados en un mo‐
mento dado. En forma similar, es posible representar de manera análoga otras actividades,
acciones o tareas (por ejemplo, comunicación o construcción). Todas las actividades de in‐
geniería de software existen de manera concurrente, pero se hallan en diferentes estados.
FIGURA 2.8
Un elemento
Inactivo
del modelo
de proceso Actividad de modelado
concurrente
Representa el estado
En de una actividad o
desarrollo tarea de la ingeniería
de software
Cambios
en espera
En revisión
En
evaluación
Alcance mínimo
Terminado
12 Un estado es algún modo de comportamiento observable externamente.
www.FreeLibros.me
A pesar de los beneficios incuestionables de los procesos evolutivos de software, existen algunas pre‐
ocupaciones. La primera es que hacer prototipos (y otros procesos evolutivos más sofisticados) plantea
un problema para la planeación del proyecto debido a la incertidumbre en el número de ciclos que se
requieren para elaborar el producto. La mayor parte de técnicas de administración y estimación de pro‐
yectos se basa en un planteamiento lineal de las actividades, por lo que no se ajustan por completo.
En segundo lugar, los procesos evolutivos de software no establecen la velocidad máxima de la
evolución. Si las evoluciones ocurren demasiado rápido, sin un periodo de relajamiento, es seguro que
el proceso se volverá un caos. Por otro lado, si la velocidad es muy lenta, se verá perjudicada la pro‐
ductividad…
En tercer lugar, los procesos de software deben centrarse en la flexibilidad y capacidad de exten‐
sión en lugar de en la alta calidad. Esto suena preocupante. Sin embargo, debe darse prioridad a la
velocidad del desarrollo con el enfoque de cero defectos. Extender el desarrollo a fin de lograr alta
calidad podría dar como resultado la entrega tardía del producto, cuando haya desaparecido el nicho
de oportunidad. Este cambio de paradigma es impuesto por la competencia al borde del caos.
En realidad, sí parece preocupante un proceso del software que se centre en la flexibilidad,
expansión y velocidad del desarrollo por encima de la calidad. No obstante, esta idea ha sido
propuesta por varios expertos en ingeniería de software muy respetados ([You95], [Bac97]).
13 Sin embargo, es importante notar que ser el primero en llegar al mercado no es garantía de éxito. En realidad,
muchos productos de software muy exitosos han llegado en segundo o hasta en tercer lugar al mercado (apren‐
den de los errores de sus antecesores).
www.FreeLibros.me
El objetivo de los modelos evolutivos es desarrollar software de alta calidad14 en forma itera‐
tiva o incremental. Sin embargo, es posible usar un proceso evolutivo para hacer énfasis en la
flexibilidad, expansibilidad y velocidad del desarrollo. El reto para los equipos de software y sus
administradores es establecer un balance apropiado entre estos parámetros críticos del pro‐
yecto y el producto, y la satisfacción del cliente (árbitro definitivo de la calidad del software).
2.4 M O D E L O S DE PR O C E S O E S P E C I A L I Z A D O
Los modelos de proceso especializado tienen muchas de las características de uno o más de los
modelos tradicionales que se presentaron en las secciones anteriores. Sin embargo, dichos mo‐
delos tienden a aplicarse cuando se elige un enfoque de ingeniería de software especializado
o definido muy específicamente.15
2.4.1 Desarrollo basado en componentes
WebRef Los componentes comerciales de software general (COTS, por sus siglas en inglés), desarrolla‐
En la dirección www.cbd-hq.com dos por vendedores que los ofrecen como productos, brindan una funcionalidad que se persigue
hay información útil sobre el desarrollo con interfaces bien definidas que permiten que el componente se integre en el software que se
basado en componentes. va a construir. El modelo de desarrollo basado en componentes incorpora muchas de las caracte‐
rísticas del modelo espiral. Es de naturaleza evolutiva [Nie92] y demanda un enfoque iterativo
para la creación de software. Sin embargo, el modelo de desarrollo basado en componentes
construye aplicaciones a partir de fragmentos de software prefabricados.
Las actividades de modelado y construcción comienzan con la identificación de candidatos
de componentes. Éstos pueden diseñarse como módulos de software convencional o clases
orientadas a objetos o paquetes16 de clases. Sin importar la tecnología usada para crear los
componentes, el modelo de desarrollo basado en componentes incorpora las etapas siguientes
(se implementan con el uso de un enfoque evolutivo):
1. Se investigan y evalúan, para el tipo de aplicación de que se trate, productos disponi‐
bles basados en componentes.
2. Se consideran los aspectos de integración de los componentes.
3. Se diseña una arquitectura del software para que reciba los componentes.
4. Se integran los componentes en la arquitectura.
5. Se efectúan pruebas exhaustivas para asegurar la funcionalidad apropiada.
El modelo del desarrollo basado en componentes lleva a la reutilización del software, y eso
da a los ingenieros de software varios beneficios en cuanto a la mensurabilidad. Si la reutiliza‐
ción de componentes se vuelve parte de la cultura, el equipo de ingeniería de software tiene la
posibilidad tanto de reducir el ciclo de tiempo del desarrollo como el costo del proyecto. En el
capítulo 10 se analiza con más detalle el desarrollo basado en componentes.
14 En este contexto, la calidad del software se define con mucha amplitud para que agrupe no sólo la satisfacción
del cliente sino también varios criterios técnicos que se estudian en los capítulos 14 y 16.
15 En ciertos casos, los modelos de proceso especializado pueden caracterizarse mejor como un conjunto de téc‐
nicas o “metodología” para alcanzar una meta específica de desarrollo de software. No obstante, implican un
proceso.
16 En el apéndice 2 se estudian los conceptos orientados a objetos, y se utilizan en toda la parte 2 del libro. En este
contexto, una clase agrupa un conjunto de datos y los procedimientos para procesarlos. Un paquete de clases es
un conjunto de clases relacionadas que funcionan juntas para alcanzar cierto resultado final.
www.FreeLibros.me
A pesar de estas preocupaciones, el enfoque de los métodos formales ha ganado partidarios
entre los desarrolladores que deben construir software de primera calidad en seguridad (por
ejemplo, control electrónico de aeronaves y equipos médicos), y entre los desarrolladores que
sufrirían graves pérdidas económicas si ocurrieran errores en su software.
2.4.3 Desarrollo de software orientado a aspectos
Sin importar el proceso del software que se elija, los constructores de software complejo imple‐
WebRef
mentan de manera invariable un conjunto de características, funciones y contenido de informa‐
Existen muchos recursos e información
sobre SOA en la dirección: aosd.net ción localizados. Estas características localizadas del software se modelan como componentes
(clases orientadas a objetos) y luego se construyen dentro del contexto de una arquitectura de
sistemas. A medida que los sistemas modernos basados en computadora se hacen más sofisti‐
cados (y complejos), ciertas preocupaciones —propiedades que requiere el cliente o áreas de
interés técnico— se extienden a toda la arquitectura. Algunas de ellas son las propiedades
de alto nivel de un sistema (por ejemplo, seguridad y tolerancia a fallas). Otras afectan a funcio‐
nes (aplicación de las reglas de negocios), mientras que otras más son sistémicas (sincroniza‐
ción de la tarea o administración de la memoria).
Cuando las preocupaciones afectan múltiples funciones, características e información del
sistema, es frecuente que se les llame preocupaciones globales. Los requerimientos del aspecto
CLAVE definen aquellas preocupaciones globales que tienen algún efecto a través de la arquitectura del
El DSOA define “aspectos” que software. El desarrollo de software orientado a aspectos (DSOA), conocido también como progra-
expresan preocupaciones del cliente mación orientada a aspectos (POA), es un paradigma de ingeniería de software relativamente
que afectan múltiples funciones,
nuevo que proporciona un proceso y enfoque metodológico para definir, especificar, diseñar y
características e información del
sistema. construir aspectos: “mecanismos más allá de subrutinas y herencia para localizar la expresión
de una preocupación global” [Elr01].
Grundy [Gru02] analiza con más profundidad los aspectos en el contexto de lo que denomina
ingeniería de componentes orientada a aspectos (ICOA):
La ICOA usa el concepto de rebanadas horizontales a través de componentes de software descom‐
puestos verticalmente, llamados “aspectos”, para caracterizar las propiedades globales funcionales y
www.FreeLibros.me
Aún no madura un proceso distinto orientado a aspectos. Sin embargo, es probable que un
proceso así adopte características tanto de los modelos de proceso evolutivo como concurrente.
El modelo evolutivo es apropiado en tanto los aspectos se identifican y después se construyen.
La naturaleza paralela del desarrollo concurrente es esencial porque la ingeniería de aspectos
se hace en forma independiente de los componentes de software localizados; aun así, los as‐
pectos tienen un efecto directo sobre éstos. De esta forma, es esencial disponer de comunica‐
ción asincrónica entre las actividades de proceso del software aplicadas a la ingeniería, y la
construcción de los aspectos y componentes.
El análisis detallado del desarrollo de software orientado al aspecto se deja a libros especia‐
lizados en el tema. Si el lector tiene interés en profundizar, se le invita a consultar [Saf08],
[Cla05], [Jac04] y [Gra03].
HERRAMIENTAS DE SOFTWARE
Administración del proceso (www.informatik.uni-bremen.de/uniform/gdpa/
home.htm), proporciona una amplia variedad de funciones
Objetivo: Ayudar a la definición, ejecución y administra‐
para modelar y administrar procesos.
ción de modelos de proceso prescriptivo.
SpeeDev, desarrollada por SpeeDev Corporation (www.speedev.
Mecánica: Las herramientas de administración del proceso permiten com), incluye un conjunto de herramientas para la definición del
que una organización o equipo de software defina un modelo com‐ proceso, administración de los requerimientos, resolución de pro‐
pleto del proceso (actividades estructurales, acciones, tareas, asegura‐ blemas, y planeación y seguimiento del proyecto.
miento de la calidad, puntos de revisión, referencias y productos del
ProVision BPMx, desarrollado por Proforma (www.proforma-
trabajo). Además, las herramientas proporcionan un mapa conforme
corp.com), es representativo de muchas herramientas que ayu‐
los ingenieros de software realizan el trabajo técnico, y una plantilla
dan a definir el proceso y que automatizan el flujo del trabajo.
para los gerentes que deben dar seguimiento y controlar el proceso
del software. En la dirección www.processwave.net/Links/tool_links.
htm, se encuentra una lista extensa de muchas herramientas dife‐
Herramientas representativas:17
rentes asociadas con el proceso del software.
GDPA, grupo de herramientas de investigación de definición del pro‐
ceso, desarrollada por la Universidad de Bremen, en Alemania
2.5 E L PR O C E S O U N I F I C A D O
En su libro fundamental, Unified Process, Ivar Jacobson, Grady Booch y James Rumbaugh [Jac99]
analizan la necesidad de un proceso del software “impulsado por el caso de uso, centrado en la
arquitectura, iterativo e incremental”, con la afirmación siguiente:
17 Las herramientas mencionadas aquí no representan una obligación; sólo son una muestra de las de esta catego‐
ría. En la mayoría de casos, los nombres de las herramientas son marcas registradas por sus desarrolladores
respectivos.
www.FreeLibros.me
En la actualidad, la tendencia en el software es hacia sistemas más grandes y complejos. Eso se debe
en parte al hecho de que año tras año las computadoras son más poderosas, lo que hace que los
usuarios esperen más de ellas. Esta tendencia también se ha visto influida por el uso creciente de in‐
ternet para intercambiar toda clase de información […] Nuestro apetito por software cada vez más
sofisticado aumenta conforme aprendemos, entre un lanzamiento y otro de un producto, cómo mejo‐
rar éste. Queremos software que se adapte mejor a nuestras necesidades, pero eso a su vez lo hace
más complejo. En pocas palabras, queremos más.
En cierto modo, el proceso unificado es un intento por obtener los mejores rasgos y caracterís‐
ticas de los modelos tradicionales del proceso del software, pero en forma que implemente
muchos de los mejores principios del desarrollo ágil de software (véase el capítulo 3). El proceso
unificado reconoce la importancia de la comunicación con el cliente y los métodos directos para
describir su punto de vista respecto de un sistema (el caso de uso).18 Hace énfasis en la impor‐
tancia de la arquitectura del software y “ayuda a que el arquitecto se centre en las metas correc‐
tas, tales como que sea comprensible, permita cambios futuros y la reutilización” [Jac99]: Su‐
giere un flujo del proceso iterativo e incremental, lo que da la sensación evolutiva que resulta
esencial en el desarrollo moderno del software.
2.5.1 Breve historia
Al principio de la década de 1990, James Rumbaugh [Rum91], Grady Booch [Boo94] e Ivar Jacob‐
son [Jac92] comenzaron a trabajar en un “método unificado” que combinaría lo mejor de cada
uno de sus métodos individuales de análisis y diseño orientado a objetos. El resultado fue un
UML, lenguaje de modelado unificado, que contiene una notación robusta para el modelado y
desarrollo de los sistemas orientados a objetos.
El UML se utiliza en toda la parte 2 del libro para representar tanto los modelos de requeri‐
mientos como el diseño. En el apéndice 1 se presenta un método introductorio a la enseñanza
para quienes no están familiarizados con las reglas básicas de notación y modelado con el UML.
El estudio exhaustivo del UML se deja a libros dedicados al tema. En el apéndice 1 se enlistan
los textos recomendables.
El UML brinda la tecnología necesaria para apoyar la práctica de la ingeniería de software
orientada a objetos, pero no da la estructura del proceso que guíe a los equipos del proyecto
cuando aplican la tecnología. En los siguientes años, Jacobson, Rumbaugh y Booch desarrolla‐
ron el proceso unificado, estructura para la ingeniería de software orientado a objetos que utiliza
UML. Actualmente, el proceso unificado (PU) y el UML se usan mucho en proyectos de toda clase
orientados a objetos. El modelo iterativo e incremental propuesto por el PU puede y debe adap‐
tarse para que satisfaga necesidades específicas del proyecto.
2.5.2 Fases del proceso unificado19
Al principio de este capítulo se estudiaron cinco actividades estructurales generales y se dijo que
podían usarse para describir cualquier modelo de proceso del software. El proceso unificado no
CLAVE es la excepción. La figura 2.9 ilustra las “fases” del PU y las relaciona con las actividades gene‐
Las fases del PU tienen un objetivo rales estudiadas en el capítulo 1 y al inicio de éste.
similar al de las actividades
La fase de concepción del PU agrupa actividades tanto de comunicación con el cliente como
estructurales generales definidas en
este libro. de planeación. Al colaborar con los participantes, se identifican los requerimientos del negocio,
18 El caso de uso (véase el capítulo 5) es la narración o plantilla que describe una función o rasgo de un sistema
desde el punto de vista del usuario. Éste escribe un caso en uso que sirve como base para la creación de un
modelo de requerimientos más completos.
19 El proceso unificado en ocasiones recibe el nombre de Proceso Racional Unificado (PRU), acuñado por Rational
Corporation (adquirida posteriormente por IBM), que contribuyó desde el principio al desarrollo y mejora del PU
y a la elaboración de ambientes completos (herramientas y tecnología) que apoyan el proceso.
www.FreeLibros.me
CAPÍTULO 2 MODELOS DEL PROCESO 47
FIGURA 2.9
Elaboración
El proceso
unificado
Concepción
Construcción
Lanzamiento Transición
Producción
se propone una arquitectura aproximada para el sistema y se desarrolla un plan para la natura‐
leza iterativa e incremental del proyecto en cuestión. Los requerimientos fundamentales del
negocio se describen por medio de un conjunto de casos de uso preliminares (véase el capítulo
5) que detallan las características y funciones que desea cada clase principal de usuarios. En este
punto, la arquitectura no es más que un lineamiento tentativo de subsistemas principales y la
función y rasgos que tienen. La arquitectura se mejorará después y se expandirá en un conjunto
de modelos que representarán distintos puntos de vista del sistema. La planeación identifica los
recursos, evalúa los riesgos principales, define un programa de actividades y establece una base
para las fases que se van a aplicar a medida que avanza el incremento del software.
La fase de elaboración incluye las actividades de comunicación y modelado del modelo gene‐
ral del proceso (véase la figura 2.9). La elaboración mejora y amplía los casos de uso prelimina‐
res desarrollados como parte de la fase de concepción y aumenta la representación de la arqui‐
tectura para incluir cinco puntos de vista distintos del software: los modelos del caso de uso, de
requerimientos, del diseño, de la implementación y del despliegue. En ciertos casos, la elabora‐
ción crea una “línea de base de la arquitectura ejecutable” [Arl02] que representa un sistema
ejecutable de “primer corte”.20 La línea de base de la arquitectura demuestra la viabilidad de ésta,
pero no proporciona todas las características y funciones que se requieren para usar el sistema.
Además, al terminar la fase de elaboración se revisa con cuidado el plan a fin de asegurar que
el alcance, riesgos y fechas de entrega siguen siendo razonables. Es frecuente que en este mo‐
mento se hagan modificaciones al plan.
WebRef La fase de construcción del PU es idéntica a la actividad de construcción definida para el pro‐
En la dirección www.ambysoft. ceso general del software. Con el uso del modelo de arquitectura como entrada, la fase de
com/unifiedprocess/agileUP. construcción desarrolla o adquiere los componentes del software que harán que cada caso
html, se encuentra un análisis
de uso sea operativo para los usuarios finales. Para lograrlo, se completan los modelos de re‐
interesante del PU en el contexto del
desarrollo ágil. querimientos y diseño que se comenzaron durante la fase de elaboración, a fin de que reflejen
la versión final del incremento de software. Después se implementan en código fuente todas las
características y funciones necesarias para el incremento de software (por ejemplo, el lanza‐
miento). A medida de que se implementan los componentes, se diseñan y efectúan pruebas
unitarias21 para cada uno. Además, se realizan actividades de integración (ensamble de compo‐
20 Es importante darse cuenta de que la línea de base de la arquitectura no es un prototipo y que no se desecha. Por
el contrario, es revestida durante la fase siguiente del PU.
21 En los capítulos 17 a 20 se presenta el análisis exhaustivo de las pruebas del software (incluso las pruebas unita-
rias).
www.FreeLibros.me
nentes y pruebas de integración). Se emplean casos de uso para obtener un grupo de pruebas
de aceptación que se ejecutan antes de comenzar la siguiente fase del PU.
La fase de transición del PU incluye las últimas etapas de la actividad general de construcción
y la primera parte de la actividad de despliegue general (entrega y retroalimentación). Se da el
software a los usuarios finales para las pruebas beta, quienes reportan tanto los defectos como
los cambios necesarios. Además, el equipo de software genera la información de apoyo nece‐
saria (por ejemplo, manuales de usuario, guías de solución de problemas, procedimientos de
instalación, etc.) que se requiere para el lanzamiento. Al finalizar la fase de transición, el soft‐
ware incrementado se convierte en un producto utilizable que se lanza.
La fase de producción del PU coincide con la actividad de despliegue del proceso general.
Durante esta fase, se vigila el uso que se da al software, se brinda apoyo para el ambiente de
operación (infraestructura) y se reportan defectos y solicitudes de cambio para su evaluación.
Es probable que al mismo tiempo que se llevan a cabo las fases de construcción, transición
y producción, comience el trabajo sobre el siguiente incremento del software. Esto significa que
las cinco fases del PU no ocurren en secuencia sino que concurren en forma escalonada.
El flujo de trabajo de la ingeniería de software está distribuido a través de todas las fases del
PU. En el contexto de éste, un flujo de trabajo es análogo al conjunto de tareas (que ya se descri‐
bió en este capítulo). Es decir, un flujo de trabajo identifica las tareas necesarias para completar
una acción importante de la ingeniería de software y los productos de trabajo que se generan
como consecuencia de la terminación exitosa de aquéllas. Debe notarse que no toda tarea iden‐
tificada para el flujo de trabajo del PU es realizada en todos los proyectos de software. El equipo
adapta el proceso (acciones, tareas, subtareas y productos del trabajo) a fin de que cumpla sus
necesidades.
El mejor proceso del software es el que está cerca de las personas que harán el trabajo. Si un
modelo del proceso del software se ha desarrollado en un nivel corporativo u organizacional,
será eficaz sólo si acepta una adaptación significativa para que cubra las necesidades del equipo
de proyecto que en realidad hace el trabajo de ingeniería de software. En la situación ideal se
Cita: crearía un proceso que se ajustara del mejor modo a los requerimientos, y al mismo tiempo
“La persona que es exitosa tan cubriera las más amplias necesidades del equipo y de la organización. En forma alternativa, el
sólo se ha hecho el hábito de equipo crearía un proceso propio que satisficiera las necesidades más estrechas de los indivi‐
hacer las cosas que no hacen las duos y las más generales de la organización. Watts Humphrey ([Hum97] y [Hum00]) afirma que
personas que no tienen éxito.” es posible crear un “proceso personal de software” y/o un “proceso del equipo de software”.
Dexter Yager Ambos requieren trabajo duro, capacitación y coordinación, pero los dos son asequibles.22
2.6.1 Proceso personal del software (PPS)
Todo desarrollador utiliza algún proceso para elaborar software de cómputo. El proceso puede
ser caprichoso o ad hoc; quizá cambie a diario; tal vez no sea eficiente, eficaz o incluso no sirva;
pero sí existe un “proceso”. Watts Humphrey [Hum97] sugiere que a fin de cambiar un proceso
WebRef personal ineficaz, un individuo debe pasar por las cuatro fases, cada una de las cuales requiere
En la dirección www.ipd.uka.de/ capacitación e instrumentación cuidadosa. El proceso personal del software (PPS) pone el énfasis
PSP, se hallan muchos recursos para en la medición personal tanto del producto del trabajo que se genera como de su calidad. Ade‐
el PPS.
más, el PPS responsabiliza al profesional acerca de la planeación del proyecto (por ejemplo,
22 Es útil notar que quienes proponen un desarrollo ágil del software (véase el capítulo 3) también plantean que el
proceso debe ser cercano al equipo. Para lograr esto sugieren un método alternativo.
www.FreeLibros.me
El PPS enfatiza la necesidad de detectar pronto los errores; de igual importancia es entender
los tipos de ellos que es probable cometer. Esto se logra a través de una actividad de evaluación
CLAVE rigurosa ejecutada para todos los productos del trabajo que se generen.
El PPS pone el énfasis en la El PPS representa un enfoque disciplinado basado en la medición para la ingeniería de soft‐
necesidad de registrar y analizar los
ware que quizá sea un choque cultural para muchos de sus practicantes. Sin embargo, cuando
tipos de errores que se cometen, de
modo que se desarrollen estrategias se introduce el PPS en forma apropiada en los ingenieros de software [Hum96], es significativa
para eliminarlos. la mejora resultante en la productividad de la ingeniería respectiva y en la calidad del software
[Fer97]. No obstante, el PPS no ha sido adoptado con amplitud por la industria. Es triste recono‐
cer que las razones de esto tienen que ver más con la naturaleza humana y la inercia organiza‐
cional que con las fortalezas y debilidades del enfoque del PPS. Dicho enfoque plantea desafíos
intelectuales y demanda un nivel de compromiso (por parte de los practicantes y sus adminis‐
tradores) que no siempre es posible obtener. La capacitación es relativamente larga y sus costos
elevados. El nivel requerido de las mediciones es culturalmente difícil para muchas personas de
la comunidad del software.
¿Es posible usar el PPS como un proceso eficaz de software a nivel personal? La respuesta es
un rotundo “sí”. Pero aun si no se adoptara por completo el PPS, muchos de los conceptos del
proceso de mejora personal que introduce constituyen un aprendizaje provechoso.
• Formar equipos autodirigidos que planeen y den seguimiento a su trabajo, que esta‐
blezcan metas y que sean dueños de sus procesos y planes. Éstos pueden ser equipos de
software puros o de productos integrados (EPI) constituidos por 3 a 20 ingenieros.
www.FreeLibros.me