Está en la página 1de 19

H

OWARD Baetjer, Jr. en un libro fascinante que proporciona un punto d e


vista economicista del software y de la ingeniería del software, comenta sobre el
proceso:
Como el software, al igual que el capital, es el conocimiento incorporado, y puesto que el conocimiento
está inicialmente disperso, el desarrollo del software implícito, latente e incompleto en gran medida, es un
proceso social de aprendizaje. El proceso es un diálogo en el que se reúne el conocimiento y se incluye en
el software para convertirse en software. El proceso proporciona una interacción entre los usuarios y los
diseñadores, entre los usuarios y las herramientas de desarrollo, y entre los diseñadores y las herramien-
tas de desarrollo [tecnología]. Es un proceso interactivo donde la herramienta de desarrollo se usa como
medio de comunicación, con cada iteración del diálogo se obtiene mayor conocimiento de las personas
involucradas.
Realmente, construir software de computadora es un proceso de aprendizaje iterativo, y el
resultado, algo que Baetjer podría llamar del software», es el conjunto del software
reunido. denurado v mientras se desarrolla el

es? Cuando trabaja para construir qué es importante? Porque pro- software, los productos obtenidos son
un producto o un sistema, es impor- porciona estabilidad, control y organi- programas, documentos y datos se
tante seguir una serie d e pasos zación a una actividad que puede, si producen como consecuencia d e l a s
decibles -un mapa de carreteras que no se controla, volverse caótica. actividades de ingeniería del software
le ayude a obtener el resultado opor- son los pasos? A un nivel deta- definidas por el proceso.
tuno de calidad-. El mapa de carre- llado, el proceso que adoptemos puedo estar seguro de que
teras a seguir es llamado del depende del software que estamos lo he hecho correctamente?Hay
software.. construyendo. Un proceso puede ser una cantidad de mecanismos d e
lo hace? Los ingenieros de soft- apropiado para crear software de un luacion del proceso del software que
ware y sus gestores adaptan el proce- sistema de aviación, mientras un permiten a las organizaciones deter-
so a sus necesidades y entonces lo proceso diferente por completo puede minar la de su proceso del
siguen. Además las personas que han ser adecuado para la creación d e un software. Sin embargo, la calidad, opor-
solicitado el software tienen un papel sitio web. tunidad y viabilidad a largo plazo del
a desempeñar en el proceso del soft- es el producto obtenido? Des- producto que está construyendo son los
ware. de el punto de vista de un ingeniero d e mejores indicadores de la eficiencia del
proceso que estamos utilizando.

Pero, es exactamente el proceso del software desde un punto de vista técnico? Dentro del con-
texto de este libro, definimos un proceso de software como un marco de trabajo de las tareas que se
requieren para construir software de alta calidad. «proceso» sinónimo de ingeniería del softwa-
re? La respuesta es y «no». Un proceso de software define el enfoque que se toma cuando el soft-
ware es tratado por la ingeniería. Pero la ingeniería del software también comprende las tecnologías
que tiene el proceso -métodos técnicos y herramientas automatizadas-.
Aún más importante es que la ingeniería del software la realizan personas creativas, con conoci-
miento, que deberían trabajar dentro de un proceso del software definido y avanzado que es apropia-
do para los productos que construyen y para las demandas de su mercado. La intención de este capítulo
es proporcionar un estudio del estado actual del proceso del software y puntualizar sobre el estudio
detallado de los temas de gestión y técnicos presentados en este libro.
13
DEL SOFTWARE. U N E N F O Q U E PR A C TI CO

Aunque cientos de autores han desarrollado definicio-


nes personales de la ingeniería del software, una defi-
nición propuesta por Fritz Bauer en una
conferencia de gran influencia sobre estos temas va a
servir como base de estudio:

FIGURA 2.1. Capas de la ingeniería del software.

El fundamento de la ingeniería del software es la


capa de proceso. El proceso de la ingeniería del soft-
ware es la unión que mantiene juntas las capas de tec-
nología y que permite un desarrollo racional y oportuno
de la ingeniería del software. El proceso define un mar-
[La ingeniería del software] es el establecimiento y uso de prin- co de trabajo para un conjunto de Úreas clave de pro-
cipios robustos de la ingeniería a fin de obtener económicamente
ceso que se deben establecer para la
software que sea fiable y que funcione eficientemente sobre máqui-
nas reales. entrega efectiva de la tecnología de la ingeniería del
software. Las áreas claves del proceso forman la base
Casi todos los lectores tendrán la tentación de del control de gestión de proyectos del software y esta-
seguir esta definición. No dice mucho sobre los aspec- blecen el contexto en el que se aplican los métodos téc-
tos técnicos de la calidad del software; no se enfren- nicos, se obtienen productos del trabajo (modelos,
ta directamente con la necesidad de la satisfacción del documentos, datos, informes, formularios, etc.), se esta-
cliente o de la entrega oportuna del producto; omite blecen hitos, se asegura la calidad y el cambio se ges-
la mención de la importancia de mediciones y métri- tiona adecuadamente.
cas; tampoco expresa la importancia de un proceso Los métodos de la ingeniería del software indican
avanzado. Y sin embargo, la definición de Bauer nos «cómo» construir técnicamente el software. Los méto-
proporciona una línea base. son los «princi- dos abarcan una gran gama de tareas que incluyen aná-
pios robustos de la ingeniería» aplicables al desarro- lisis de requisitos, diseño, construcción de programas,
llo de software de computadora? construimos pruebas y mantenimiento. Los métodos de la ingeniería
el software «económicamente» para que sea «fiable»? del software dependen de un conjuntode principios bási-
se necesita para crear programas de computa- cos que gobiernan cada área de la tecnología e incluyen
dora que funcionen no en una máqui- actividades de modelado y otras técnicas descriptivas.
na si no en diferentes «máquinas reales»? Éstas son
cuestiones que siguen siendo un reto para los inge-
nieros del software.
CLAVE
l a Ingeniería de comprende un proceso,
definimos métodos técnicosy de gestión, y herramientas.
Ingeniería del software?

Las herramientas de la Ingeniería del software pro-


El IEEE ha desarrollado una definición más porcionan un enfoque automático o semi-automáticopara
completa: el proceso y para los métodos. Cuando se integran herra-
Ingeniería del software: La aplicación de un enfoque sis- mientas para que la información creada por una herra-
temático, disciplinado y cuantificable hacia el desarrollo, opera- mienta la pueda utilizar otra, se establece un sistema de
ción y mantenimiento del software; es decir, la aplicación de soporte para el desarrollo del software llamado ingenie-
ingeniería al software. (2) El estudio de enfoques como en ría del software asistida por computadora (CASE).

2.1.1. Proceso, métodos y herramientas 2.1.2. Una visión general de la ingeniería del
software
La Ingeniería del software es un tecnología
pa. Como muestra la Figura 2.1, cualquier enfoque de La ingeniería es el análisis, diseño, construcción, veri-
ingeniería (incluida ingeniería del software) debe apo- ficación y gestión de entidades técnicas (o sociales).
yarse sobre un compromiso de organización de cali- Con independencia de la entidad a la que se va a apli-
dad. car ingeniería, se deben cuestionar y responder las
siguientes preguntas:

14
2 EL PROCESO

es el problema a resolver? La fase de desarrollo se centra en el cómo. Es decir,


son las características de la entidad que se durante el desarrollo un ingeniero del software intenta
utiliza para resolver el problema? definir cómo han de diseñarse las estructuras de datos,
cómo ha de implementarse la función dentro de una
se realizará la entidad (y la solución)? arquitectura de software, cómo han de implementarse
se construirá la entidad? los detalles procedimentales, cómo han de caracteri-
zarse interfaces, cómo ha de traducirse el diseño en un
enfoque se va a utilizar para no contemplar los
lenguaje de programación (o lenguaje no
errores que se cometieron en el diseño y en la cons-
tal) y cómo ha de realizarse la prueba. Los métodos apli-
trucción de la entidad?
cados durante la fase de desarrollo variarán, aunque las
se apoyará la entidad cuando usuarios soli- tres tareas específicas técnicas deberían ocurrir siem-
citen correcciones, adaptaciones y mejoras de la enti- pre: diseño del software (Capítulos 14, 15 y gene-
dad? ración de código y prueba del software (Capítulos 16,
17 y 22).

Referencia Web
es un periódico que proporciona y
comentarios prócticos de ingeniería del software. Estón
disponibles temas directamente en:
www.stc.hill.af.mil
A lo largo de este libro, nos vamos a centrar en
una sola entidad -el software de computadora-.
Para construir la ingeniería del software adecuada-
mente, se debe definir un proceso de desarrollo de
software. En esta sección se consideran las caracte- La fase de mantenimiento se centra en el cambio que
rísticas genéricas del proceso de software. Más ade- va asociado a la corrección de errores, a las adaptacio-
lante, en este mismo capítulo, se tratarán modelos nes requeridas a medida que evoluciona el entorno del
específicos de procesos. software y a cambios debidos a las mejoras producidas
El trabajo que se asocia a la ingeniería del software por los requisitos cambiantes del cliente. Durante la fase
se puede dividir en tres fases genéricas, con indepen- de mantenimiento se encuentran cuatro tipos de cam-
dencia del área de aplicación, tamaño o complejidad del bios:
proyecto. Cada fase se encuentra con una o varias cues- Corrección. Incluso llevando a cabo las mejores acti-
tiones de las destacadas anteriormente. vidades de garantía de calidad, es muy probable que el
de definición se centra sobre el qué. Es decir, cliente descubra los defectos en el software. El mante-
durante la definición, el que desarrolla el software inten- nimiento correctivo cambia el software para corregir los
ta identificar qué información ha de ser procesada, qué defectos.
función y rendimiento se desea, qué comportamiento Adaptación. Con el paso del tiempo, es probable
del sistema, qué interfaces van a ser establecidas, qué que cambie el entorno original (por ejemplo: CPU, el
restricciones de diseño existen, y qué criterios de vali- sistema operativo, las reglas de empresa, las caracte-
dación se necesitan para definir un sistema correcto. Por rísticas externas de productos) para el que se desarro-
tanto, han de identificarse los requisitos clave del siste- lló el software. El mantenimiento adaptativo produce
ma y del software. Aunque los métodos aplicados duran- modificaciónen el software para acomodarlo a los cam-
te la fase de definición variarán dependiendo del bios de su entorno externo.
paradigma de ingeniería del software (o combinación
Mejora. Conforme se utilice el software, el
de paradigmas) que se aplique, de alguna manera ten-
puede descubrir funciones adicionales que
drán lugar tres tareas principales: ingeniería de sistemas
van a producir beneficios. El mantenimiento perfectivo
o de información (Capítulo planificación del pro-
lleva al software más allá de sus requisitos funcionales
yecto del software (Capítulos 3, 5 , 6 y 7) y análisis de
originales.
los requisitos (Capítulos 11, 12 y 21).
Prevención. El software de computadora se dete-
riora debido al cambio, y por esto el
ventivo también llamado reingeniería del software, se
debe conducir a permitir que el software sirva para las
necesidades de los usuarios finales. En esencia, el man-
El software crea tres fases distintas que se tenimiento preventivo hace cambios en programas de
centran en definición, desarrollo y mantenimiento. computadora a fin de que se puedan corregir, adaptar y
mejorar más fácilmente.
15
DEL SOFTWARE. UN ENFOQUE PRACTICO

Además de estas actividades de mantenimiento, los


usuarios de software requieren un mantenimiento con-
tinuo. Los asistentes técnicos a distancia, teléfonos de
ayuda y sitios Web de aplicaciones específicas se
mentan frecuentemente como parte de la fase de man-
tenimiento. Actividades de protección
Entre las actividades típicas de esta categoría se incluyen:
Seguimiento y control del proyecto de software
el término «mantenimiento»
reconocemos que es mucho más que una simple
Revisiones técnicas formales
de errores. Garantía de calidad del software
Hoy en día, el aumento de los programas' legales Gestión de configuración del software
está forzando a muchas compañías a seguir estrategias Preparación y producción de documentos
de reingeniería del software (Capítulo 30). En un sen- Gestión de reutilización
tido global, la reingeniería del software se considera a Mediciones
menudo como una parte de la reingeniería de procesos
comerciales Gestión de riesgos
Las fases y los pasos relacionados descritos en nues- Las actividades de protección se aplican a lo largo
tra visión genérica de la ingeniería del software se com- de todo el proceso del software y se tratan en las partes
plementan con un número de actividades protectoras. Segunda y Quinta del libro.

Un proceso de software se puede caracterizar como se del proyecto. Finalmente, las actividades de protección
muestra en la Figura 2.2. Se establece un marco común -talescomo garantía de calidad del software,gestión de
del proceso definiendo un pequeño número de activida- configuración del software y medición*-abarcan el
des del marco de trabajo que son aplicables a todos los modelo de procesos. Las actividades de protección son
proyectos del software,con independenciade su tamaño independientes de cualquier actividad del marco de tra-
o complejidad.Un número de conjuntos de tareas - c a d a bajo y aparecen durante todo el proceso.
uno es una colección de tareas de trabajo de ingeniería En los Últimos años, se ha hecho mucho énfasis en
del software, hitos de proyectos, productos de trabajo, y la «madurez del El Softwate Engineering
puntos de garantía de calidad-que permiten que las acti- ha desarrollado un modelo completo que
vidades del marco de trabajo se adapten a las caracterís- se basa en un conjunto de funciones de ingeniería del
ticas del proyecto del software y a los requisitos del equipo software que deberían estar presentes conforme orga-
nizaciones alcanzan diferentes niveles de madurez del
proceso. Para determinar el estado actual de madurez
del proceso de una organización, el utiliza un cues-
Actividades del marco de trabajo tionario de evaluación y un esquema de cinco grados.

Tareas
Seleccioneun de del proceso común que se
producto, personal y proyecto.

El esquema de grados determina la conformidad con


un modelo de capacidad de madurez que defi-
ne las actividades clave que se requieren en los dife-
rentes niveles de madurez del proceso. El enfoque del
FIGURA 2.2. El proceso del software. proporciona una medida de la efectividad global de

término es un eufemismo para sottware Estos temas se tratan con más detalle en capítulos posteriores.
antiguo, a menudo diseñado y documentado pobremente, que es crí- El autor se está refiriendo al de la Cannegie University.
tico para el negocio y debe ser soportado durante algunos años.

16
CAPÍTULO 2 EL PROCESO

las prácticas de ingeniería del software de una compa- ción ha sido detallado y se hace cumplir por medio de
ñía y establece cinco niveles de madurez del proceso, procedimientos tales como auditorías. Este nivel es aquel
que se definen de la forma siguiente: en el que la mayoría de los desarrolladores de softwa-
Nivel 1: Inicial. El proceso del software se caracte- re, pretenden conseguir con estándares como el ISO
riza según el caso, y ocasionalmente incluso de forma 9001, y existen pocos casos de desarrolladores de soft-
caótica. Se definen pocos procesos, y el éxito depende ware que superan este nivel.
del esfuerzo individual. El nivel 4 comprende el concepto de medición y el
uso de métricas. El capítulo 4 describe este tema con más
Nivel 2: Repetible. Se establecen los procesos de
detalle. Sin embargo, cabe destacar el concepto de métri-
gestión del proyecto para hacer seguimiento del coste,
ca para comprenderla importancia que tiene que el desa-
de la planificación y de la funcionalidad. Para repetir
rrollador del software alcance el nivel 4 o el nivel 5.
éxitos anteriores en proyectos con aplicaciones simila-
Una métrica es una cantidad insignificanteque puede
res se aplica la disciplina necesaria para el proceso.
extraerse de algún documentoo código dentro de un pro-
Nivel 3: Definido. El proceso del software de las yecto de software. Un ejemplo de métrica es el número
actividades de gestión y de ingeniería se documenta, se de ramas condicionales en una sección de código de un
estandariza y se integra dentro de un proceso de soft- programa. Esta métrica es significativa en el sentido de
ware de toda una organización.Todos los proyectos uti- que proporciona alguna indicación del esfuerzo necesa-
lizan una versión documentada y aprobada del proceso rio para probar el código: está directamente relacionado
de la organización para el desarrollo y mantenimiento con el número de caminos de prueba dentro del código.
del software. En este nivel se incluyen todas las carac- Una organización del nivel 4 maneja numerosas
terísticas definidas para el nivel 2. métricas. Estas métricas se utilizan entonces para super-
Nivel 4: Gestionado. Se recopilan medidas deta- visar y controlar un proyecto de software, por ejemplo:
lladas del proceso del software y de la calidad del pro- Una métrica de prueba puede usarse para determinar
ducto. Mediante la utilización de medidas detalladas,
cuándo finalizar la prueba de un elemento del código.
se comprenden y se controlan cuantitativamente tan-
to los productos como el proceso del software. En este Una métrica de legilibilidad puede usarse para juz-
nivel se incluyen todas las características definidas gar la legilibilidad de algún documento en lenguaje
para el nivel 3. natural.
Nivel 5: Optimización. Mediante una retroalimen- Una métrica de comprensióndel programa puede uti-
tación cuantitativadel proceso, ideas y tecnologías lizarse para proporcionar algún umbral numérico que
se posibilita una mejora del proceso. En este los programadores no pueden cruzar.
nivel se incluyen todas las características definidas para Para que estas métricas alcancen este nivel es nece-
el nivel 4. sario que todos los componentes del nivel 3 CMM, en
castellano MCM (Modelo de Capacidad de Madurez),
estén conseguidos, por ejemplo notaciones bien defini-
das para actividades como la especificación del diseño
de requisitos, por lo que estas métricas pueden ser fácil-
El ofrece un amplio conjunto de información
relacionada con el proceso en www.sei.cmu.edu
mente extraídas de modo automático.
El nivel 5 es el nivel más alto a alcanzar. Hasta aho-
Merece la pena destacar que cada nivel superior es ra, muy pocos desarrolladores de software han alcan-
la suma de los niveles anteriores, por ejemplo, un desa- zado esta fase. Representa la analogía del software con
rrollador de softwareen el nivel 3 tiene que haber alcan- los mecanismos de control de calidad que existen en
zado el estado nivel 2 para poder disponer de sus otras industrias de mayor madurez. Por ejemplo el fabri-
procesos en el nivel 3. cante de un producto industrial como un cojinete de
El nivel 1 representa una situación sin ningún esfuer- bolas (rodamiento) puede supervisar y controlar la cali-
zo en la garantía de calidad y gestión del proyecto, don- dad de los rodamientos producidos y puede predecir esta
de cada equipo del proyecto puede desarrollar software calidad basándose en los procesos y máquinas utiliza-
de cualquier forma eligiendo los métodos, estándares y dos para desarrollar los rodamientos. Del mismo modo
procedimientos a utilizar que podrán variar desde lo que el desarrollador del sofware en el nivel 5 puede pre-
mejor hasta lo peor. decir resultados como el número de errores latentes en
El nivel 2 representa el hecho de que un desarrolla- un producto basado en la medición tomada durante la
dor de software ha definido ciertas actividades tales ejecución de un proyecto. Además, dicho desarrollador
como el informe del esfuerzo y del tiempo empleado, y puede cuantificar el efecto que un proceso nuevo o herra-
el informe de las tareas realizadas. mienta de manufacturación ha tenido en un proyecto
El nivel 3 representa el hecho de que un desarrolla- examinando métricas para ese proyecto y comparándo-
dor de software ha definido tanto procesos técnicos como las con proyectos anteriores que no utilizaron ese pro-
de gestión, por ejemplo un para la programa- ceso o herramienta.
17
DEL SOFTWARE. U N E N F O Q U E

En este orden debe destacarse que para que un


rrollador de software alcance el nivel 5 tiene que tener
cada proceso definido rigurosamente y seguirlo al pie
de la letra; esto es una consecuencia de estar en el
Referencia ’-
nivel 3. Si el desarrollador del software no tiene defi- Una tabular del MCM completo del incluyendo
nidos rigurosamente los procesos pueden ocurrir una todos objetivos, comentarios, habilidades y
actividades disponible en
gran cantidad de cambios en el proceso de desarrollo
y no se podrán utilizar las estadísticas para estas acti-
vidades.
Los cinco niveles definidos por el se obtienen madurez y se distribuyen en niveles diferentes de madu-
como consecuencia de evaluar las respuestas del cues- rez del proceso. Las ACPs se deberían lograr en cada
tionario de evaluación basado en el MCM (Modelo de nivel de madurez de proceso4:
capacidad de madurez). Los resultados del cuestiona- Nivel 2 de Madurez del Proceso
rio se refinan en un único grado numérico que propor- Gestión de configuración del software
ciona una indicación de la madurez del proceso de una
organización. Garantía de calidad del software
El ha asociado áreas claves del proceso Gestión de subcontratación del software
(ACPs) a cada uno de los niveles de madurez. Las Seguimiento y supervisión del proyecto del software
ACPs describen esas funciones de la ingeniería del
software (por ejemplo: planificación del proyecto de Planificación del proyecto del software
software, gestión de requisitos) que se deben pre- Gestión de requisitos
sentar para satisfacer una buena práctica a un nivel Nivel 3 de Madurez del Proceso
en particular. Cada ACP se describe identificando las
Revisiones periódicas
características siguientes:
Coordinación entre grupos
Ingeniería de productos de software
lodo organización esforzarse poro
Gestión de integración del software
lo profundidad del del Sin Programa de formación
lo de cualquier aspecto del modelo Definición del proceso de la organización
puede eliminarse en su situación.
Enfoque del proceso de la organización
Objetivos- los objetivos globales que debe alcan- Nivel 4 de Madurez del Proceso
zar la ACP Gestión de calidad del software
Compromisos-requisitos (impuestos en la organi- Gestión cuantitativa del proceso
zación) que se deben cumplir para lograr los objeti-
vos y que proporcionan una prueba del intento por Nivel 5 de Madurez del Proceso
ajustarse a los objetivos. Gestión de cambios del proceso
Capacidades-aquellos elementos que deben encon- Gestión de cambios de tecnología
trarse (organizacional y técnicamente) para permitir Prevención de defectos
que la organización cumpla los objetivos.
Actividades- las tareas específicas que se requieren Cada una de las ACPs se definen con un conjunto
para lograr la función ACP. de prácticas clave que contribuyen a cumplir estos obje-
tivos. Las prácticas clave son normas, procedimientos
Métodos para supervisar la implementación-la y actividades que deben ocurrir antes de que se haya
manera en que las actividades son supervisadas con- instituido completamente un área clave de proceso. El
forme se aplican. define a los clave como prác-
Métodos para verificar la implementución-la forma ticas clave o componentes de prácticas clave que ofre-
en que se puede verificar la práctica adecuada para cen una visión mejor para lograr los objetivos de un
la ACP. área clave de proceso». Las cuestiones de valoración
Se definen dieciocho ACPs (descritas mediante la se diseñan para averiguar la existencia (o falta) de un
estructura destacada anteriormente) en el modelo de indicador clave.

Téngase en cuenta que las ACPs son acumulativas. Por ejemplo, el


nivel 3 de madurez del proceso contiene todas las ACPs del nivel 2
más las destacadas para el nivel

18
2 EL PROCESO

Para resolver los problemas reales de una industria, un completo, las etapas descritas anteriormente se aplican
ingeniero del software o un equipo de ingenieros debe recursivamente a las necesidades del usuario y a la espe-
incorporar una estrategia de desarrollo que acompañe cificación técnica del desarrollador del software.
al proceso, métodos y capas de herramientas descritos
en la Sección 2.1.1 y las fases genéricas discutidas en
la Sección 2.1.2. Esta estrategia a menudo se llama
modelo de proceso o paradigma de ingeniería del soft- c VE
ware. Se selecciona un modelo de proceso para la inge- Todas etapas de un proceso del -estado
niería del software según la naturaleza del proyecto y actual, definición del problema, desarrollo técnico e
de la aplicación, los métodos y las herramientas a utili- integración de solución-coexisten simultáneamente
zarse, y los controles y entregas que se requieren. En en algún nivel de detalle.
un documento intrigante sobre la naturaleza del proce-
so del software, L.B.S. Raccoon utiliza En las secciones siguientes, se tratan diferentes mode-
tales como base de estudio de la verdadera naturaleza los de procesos para la ingeniería del software. Cada
del proceso del software. una representa un intento de ordenar una actividad
rentemente caótica. Es importante recordar que cada
uno de los modelos se han caracterizado de forma que
ayuden (con esperanza) al control y a la coordinación
de un proyecto de software real. Y a pesar de eso, en el
fondo, todos los modelos exhiben características del
«Modelo del Caos».

Definición
Todo el desarrollo del software se puede caracteri- de problemas
zar como bucle de resolución de problemas (Fig.
en el que se encuentran cuatro etapas distintas: «status
definición de problemas, desarrollo técnico e inte-
Desarrollo
gración de soluciones. Status quo «representa el estado técnico
actual de la definición de proble-
mas identifica el problema específico a resolverse; el
desarrollo técnico resuelve el problema a través de la
aplicaciónde alguna tecnología y la integración de solu- Integración
ciones ofrece los resultados (por ejemplo: documentos, de soluciones
programas, datos, nueva función comercial, nuevo pro-
ducto) a los que solicitan la solución en primer lugar.
Las fases y los pasos genéricos de ingeniería del soft-
ware definidos en la Sección 2.1.2 se divide fácilmen-
te en estas etapas.
En realidad, es difícil compartimentar actividades de
manera tan nítida como la Figura 2.3.b da a entender,
porque existen interferencias entre las etapas. Aunque
esta visión simplificada lleva a una idea muy impor-
tante: con independencia del modelo de proceso que se Estado
seleccione para un proyecto de software, todas las eta- actual
pas -status quo, definición de problemas, desarrollo
técnico e integración de soluciones-coexisten simul-
táneamente en algún nivel de detalle. Dada la naturale-
za recursiva de la Figura las cuatro etapas tratadas
anteriormente se aplican igualmente al análisis de una
aplicación completa y a la generación de un pequeño
segmento de código.
Raccoon sugiere un «Modelo del Caos»
que describe el «desarrollodel software como una exten- FIGURA 2.3.a) Las fases de un bucle de resolución de pro-
sión desde el usuario hasta el desarrollador y la tecno- blemas [RAC 951. Fases dentro de las fases
logía». Conforme progresa el trabajo hacia un sistema del bucle de resolución de problemas

19
DEL SOFTWARE. UN ENFOQUE PRÁCTICO

2.4
Llamado algunas veces «ciclo de vida básico» o se pueda evaluar su calidad antes de que comience la
lo en cascada», el modelo lineal secuencial sugiere un codificación.
enfoque5 sistemático, secuencial, para el desarrollo del Generación de código. El diseño se debe traducir
software que comienza en un nivel de sistemas y pro- en una forma legible por la máquina. El paso de gene-
gresa con el análisis, diseño, codificación, pruebas y man- ración de código lleva a cabo esta tarea. Si se lleva a
tenimiento. La Figura 2.4 muestra el modelo lineal cabo el diseño de una forma detallada, la generación de
secuencial para la ingeniería del software. Modelado código se realiza mecánicamente.
según el ciclo de ingeniería convencional, el modelo
lineal secuencial comprende las siguientes actividades:
Ingeniería y modelado de
Como el software siempre forma parte de un sistema Aunque el modelo lineal es a menudo
más grande (o empresa), el trabajo comienza estable- tradicional», resulto un enfoque razonable
ciendo requisitos de todos los elementos del sistema y cuando los requisitosse han entendido correctomente.
asignando al software algún de estos requisi-
tos. Esta visión del sistema es esencial cuando el soft- Pruebas. Una vez que se ha generado el código,
ware se debe interconectar con otros elementos como comienzan las pruebas del programa. El proceso de prue-
hardware, personas y bases de datos. La ingeniería y el bas se centra en los procesos lógicos internos del soft-
análisis de sistemas comprende los requisitos que se ware, asegurando que todas las sentencias se han
recogen en el nivel del sistema con una pequeña parte comprobado, y en los procesos externos funcionales; es
de análisis y de diseño. La ingeniería de información decir, realizar las pruebas para la detección de errores
abarca los requisitos que se recogen en el nivel de y asegurar que la entrada definida produce resultados
empresa estratégico y en el nivel del área de negocio. reales de acuerdo con los resultados requeridos.
Mantenimiento. El software indudablemente sufrirá
cambios después de ser entregado al cliente (una excep-
ción posible es el software empotrado). Se producirán
cambios porque se han encontrado errores, porque el soft-
ware debe adaptarse para acoplarse a los cambios de su
entorno externo (por ejemplo: se requiere un cambio debi-
do a un sistema operativo o dispositivo periférico nue-
vo), o porque el cliente requiere mejoras funcionales o
de rendimiento. El soporte y mantenimiento del softwa-
re vuelve a aplicar cada una de las fases precedentes a un
programa ya existente y no a uno nuevo.
FIGURA 2.4. El modelo lineal secuencial. El modelo lineal secuencial es el paradigma más anti-
guo y más extensamente utilizado en la ingeniería del
Análisis de los requisitos del software. El proceso software. Sin embargo, la crítica del paradigma ha pues-
de reunión de requisitos se intensifica y se centra espe- to en duda su eficacia Entre los problemas
cialmente en el software. Para comprender la naturaleza que se encuentran algunas veces en el modelo lineal
del (los) a construirse, el ingeniero secuencial se incluyen:
lista») del software debe comprender el dominio de
información del software (descrito en el Capítulo 1 así qué falla algunas veces
como la función requerida, comportamiento,rendimien- el modelo lineal?
to e interconexión.
Diseño. El diseño del software es realmente un pro-
ceso de muchos pasos que se centra en cuatro atributos 1. Los proyectos reales raras veces siguen el modelo
distintos de programa: estructura de datos, arquitectu- secuencial que propone el modelo. Aunque el modelo
ra de software, representaciones de interfaz y detalle lineal puede acoplar interacción, lo hace indirecta-
procedimental (algoritmo). El proceso del diseño tra- mente. Como resultado, los cambios pueden causar
duce requisitos en una representación del software donde confusión cuando el equipo del proyecto comienza.

Aunque el modelo original en cascada propuesto por Winston Royce


hacía provisiones para de la gran
mayoría d e las organizaciones que aplican este modelo de proceso
lo hacen como si fuera estrictamente lineal.

20
2 EL PROCESO

A menudo es difícil que el cliente exponga explíci- Cada uno de estos errores es real. Sin embargo, el
tamente todos los requisitos. El modelo lineal paradigma del ciclo de vida clásico tiene un lugar defi-
cial lo requiere y tiene dificultades a la hora de nido e importante en el trabajo de la ingeniería del soft-
acomodar la incertidumbre natural al comienzo de ware. Proporciona una plantilla en la que se encuentran
muchos proyectos. métodos para análisis, diseño, codificación, pruebas y
El cliente debe tener paciencia. Una versión de tra- mantenimiento. El ciclo de vida clásico sigue siendo el
bajo del (los) no estará disponible hasta modelo de proceso más extensamente utilizado por la
que el proyecto esté muy avanzado. Un grave error ingeniería del software. Pese a tener debilidades, es
puede ser desastroso si no se detecta hasta que se nificativamente mejor que un enfoque hecho al azar para
revisa el programa. el desarrollo del software.

Un cliente, a menudo, define un conjunto de objetivos


generales para el software, pero no identifica los requi-
sitos detallados de entrada, proceso o salida. En otros Escuchar
casos, el responsable del desarrollo del software puede al cliente
no estar seguro de la eficacia de un algoritmo, de la capa-
cidad de adaptación de un sistema operativo, o de la for-
ma en que debería tomarse la interacción
máquina. En estas y en otras muchas situaciones, un
paradigma de construcción de prototipos puede ofre-
cer el mejor enfoque.
El paradigma de construcción de prototipos (Fig. El cliente
prueba
2.5) comienza con la recolección de requisitos. El la maqueta
rrollador y el cliente encuentran y definen los objeti-
vos globales para el software, identifican los requisitos
conocidos y las áreas del esquema en donde es obli- FIGURA 2.5. El paradigma de construcción de prototipos.
gatoria más definición. Entonces aparece un «diseño
rápido». El diseño rápido se centra en una representa-
ción de esos aspectos del software que serán visibles Pero hacemos con el prototipo una vez que ha
para el (por ejemplo: enfoques de entra- servidopara el propósito descrito anteriormente? Brooks
da y de salida). El diseño rápido lleva a la proporciona una respuesta:
construcción de un prototipo. El prototipo lo evalúa el
y se utiliza para refinar los requisitos En la mayoría de los proyectos, el primer sistema construido
del software a desarrollar. La iteración ocurre cuando apenas se puede utilizar. Puede ser demasiado lento, demasiado
el prototipo se pone a punto para satisfacer las nece- grande o torpe en su uso, o las tres a la vez. No hay otra alterna-
tiva que comenzar de nuevo, aunque nos duela pero es más inte-
sidades del cliente, permitiendo al mismo tiempo que ligente, y construir una versión rediseñada en la que se resuelvan
el desarrollador comprenda mejor lo que se necesita estos problemas ... Cuando se utiliza un concepto nuevo de siste-
hacer. ma o una tecnología nueva, se tiene que construir un sistema que
no sirva y se tenga que tirar, porque incluso la mejor planificación
no es omnisciente como para que esté perfecta la primera vez. Por
lo tanto la preguntade la gestión no es si construir un sistema pilo-
to y tirarlo. Tendremos que hacerlo. La Única pregunta es si pla-
el tiene uno necesidad nificar de antemano construir un desechable, o prometer
pero sobre los entregárselo a los clientes...
el poso es un
El prototipo puede servir como «primer sistema».
El que Brooks recomienda tirar. Aunque esta puede ser
Lo ideal sería que el prototipo sirviera como un meca- una visión idealizada. Es verdad que a los clientes y a
nismo para identificar los requisitos del software. Si se los que desarrollan les gusta el paradigma de cons-
construyeun prototipo de trabajo, el desarrolladorinten- trucción de prototipos. A los usuarios les gusta el sis-
ta hacer uso de los fragmentos del programa ya exis- tema real y a los que desarrollan les gusta construir algo
tentes o aplica herramientas (por ejemplo: generadores inmediatamente. Sin embargo, la construcción de pro-
de informes, gestores de ventanas, etc.) que permiten totipos también puede ser problemática por las siguien-
generar rápidamente programas de trabajo. tes razones:
21
DEL SOFTWARE. U N E N F O Q U E

El cliente ve lo que parece ser una versión de trabajo para demostrar la capacidad. Después de algún
del software, sin tener conocimiento de que el pro- tiempo, el desarrollador debe familiarizarse con estas
totipo también está junto con chicle y el cable de selecciones, y olvidarse de las razones por las que
embalar», sin saber que con la prisa de hacer que son inadecuadas. La selección menos ideal ahora es
funcioneno se ha tenido en cuenta la calidad del soft- una parte integral del sistema.
ware global o la facilidad de mantenimiento a largo
plazo. Cuando se informa de que el producto se debe
construir otra vez para que se puedan mantener los
niveles altos de calidad, el cliente no lo entiende y Resisto lo presión de ofrecer un prototipo en el
pide que se apliquen pequeños para producto Corno lo colidod se resiente
que se pueda hacer del prototipo un producto final. siempre.
De forma demasiado frecuente la gestión de desa-
rrollo del software es muy lenta. Aunque pueden surgir problemas, la construcción de
2. El desarrollador, a menudo, hace compromisos de prototipos puede ser un paradigma efectivo para la inge-
implementación para hacer que el prototipo funcione niería del software. La clave es definir las reglas del jue-
rápidamente. Se puede utilizar un sistema operativo go al comienzo; es decir, el cliente y el desarrollador se
o lenguaje de programación inadecuado simplemente deben poner de acuerdo en que el prototipo se constru-
porque está disponible y porque es conocido; un algo- ya para servir como un mecanismo de definición de
ritmo eficiente se puede implementar simplemente requisitos.

El Desarrollo Rápido de Aplicaciones (DRA) es un mode- Generación de aplicaciones. El DRA asume la uti-
lo de proceso del desarrollo del software lineal secuencial lización de técnicas de cuarta generación (Sección 2.10).
que un ciclo de desarrollo extremadamente cor- En lugar de crear software con lenguajes de programa-
to. El modelo DRA es una adaptación a «alta velocidad» ción de tercera generación, el proceso DRA trabaja para
del modelo lineal secuencial en el que se logra el desa- volver a utilizar componentes de programas ya exis-
rrollo rápido utilizando una construcción basada en com- tentes (cuando es posible) o a crear componentes
ponentes. Si se comprenden bien los requisitos y se limita lizables (cuando sea necesario). En todos los casos se
el ámbito del proyecto, el proceso DRA permite al equi- utilizan herramientas para facilitar la construcción del
po de desarrollo crear un completamente fun- software.
cional» dentro de períodos cortos de tiempo (por ejemplo:
de a 90 días) Cuando se utiliza principal-
mente para aplicaciones de sistemas de información, el Equipo 3
enfoque DRA comprende las siguientes fases
Modelado de Gestión. El flujo de información entre Modelado
degestión
las funciones de gestión se modela de forma que res-
ponda a las siguientes preguntas: información con- Modelado Modelado
duce el proceso de gestión? información se genera? de gestión de datos

la genera? dónde va la información?


la procesa? El modelado de gestión se describe con más Modelado
de procesos
detalle en el Capítulo 10. Modelado
de datos
Modelado de datos. El flujo de información defini- Generación
do como parte de la fase de modelado de gestión se refi- de
aplicaciones
na como un conjunto de objetos de datos necesarios para Modelado
apoyar la empresa. Se definen las características (lla- de procesos
madas atributos) de cada uno de los objetos y las rela-
ciones entre estos objetos. El modelado de datos se trata
Generación
en el Capítulo 12.
Modelado del proceso. Los objetos de datos defi-
nidos en la fase de modelado de datos quedan transfor-
mados para lograr el flujo de información necesariopara Pruebas
implementar una función de gestión. Las descripciones y entrega
del proceso se crean para añadir, modificar, suprimir, o
recuperar un objeto de datos.
En ingles: (Rapid Application Deveiopment) FIGURA 2.6.El modelo DRA.

22
2 EL PROCESO

Pruebas y entrega. Como el proceso DRA Al igual que todos los modelos de proceso, el enfo-
za la reutilización, ya se han comprobado muchos de que DRA tiene inconvenientes
los componentes de los programas. Esto reduce tiempo Para proyectos grandes aunque por escalas, el D R A
de pruebas. Sin embargo, se deben probar todos los com- requiere recursos humanos suficientes como para
ponentes nuevos y se deben ejercitar todas las crear el número correcto de equipos DRA.
ces a fondo. D R A requiere clientes y desarrolladores compro-
metidos en las rápidas actividades necesarias para
completar un sistema en un marco de tiempo abre-
ElDRA un fuerte de
viado. Si no hay compromiso por ninguna de las par-
Paro sobre el
tes constituyentes, los proyectos DRA fracasarán.
de véase el 27.
No todos los tipos de aplicaciones son apropiados
para DRA. Si un sistema no se puede modularizar
adecuadamente, la construcción de los componentes
El modelo de proceso DRA se ilustra en la Figura
necesarios para DRA será problemático. Si está en
2.6. Obviamente, las limitaciones de tiempo impuestas
juego el alto rendimiento, y se va a conseguir el ren-
en un proyecto DRA demandan «ámbito en escalas»
dimiento convirtiendo interfaces en componentes de
Si una aplicación de gestión puede
sistemas, el enfoque DRA puede que no funcione.
se de forma que permita completarse cada una de las
funciones principales en menos de tres meses (utilizando DRA no es adecuado cuando los riesgos técnicos son
el enfoque descrito anteriormente), es un candidato del altos. Esto ocurre cuando una nueva aplicación hace
DRA. Cada una de las funciones pueden ser afrontadas uso de tecnologías nuevas, o cuando el software
por un equipo DRA separado y ser integradas en un solo nuevo requiere un alto grado de interoperatividad
conjunto. con programas de computadora ya existentes.

Se reconoce que el software, al igual que todos los sis- 2.7.1. El modelo incremental
temas complejos, evoluciona con el tiempo El modelo incrernental combina elementos del modelo
Los requisitos de gestión y de productos a menudo cam- lineal secuencial (aplicados repetidamente) con la filo-
bian conforme a que el desarrollo proceda haciendo que sofía interactiva de construcción de prototipos. Como
el camino que lleva al producto final no sea real; las muestra la Figura 2.7, el modelo incremental aplica
estrictas fechas tope del mercado hacen que sea impo- secuencias lineales de forma escalonada mientras pro-
sible finalizar un producto completo, por lo que se debe gresa el tiempo en el calendario. Cada secuencia lineal
introducir una versión limitada para cumplir la presión produce un «incremento» del software Por
competitiva y de gestión; se comprende perfectamente ejemplo, el software de tratamiento de textos desarro-
el conjunto de requisitos de productos centrales o del llado con el paradigma incremental podría extraer fun-
sistema, pero todavía se tienen que definir los detalles ciones de gestión de archivos básicos y de producción
de extensiones del producto o sistema. En estas y en de documentos en el primer incremento; funciones de
otras situaciones similares, los ingenieros del software edición más sofisticadas y de producción de documen-
necesitan un modelo de proceso que se ha diseñado tos en el segundo incremento; corrección ortográfica y
explícitamente para acomodarse a un producto que evo- gramatical en el tercero; y una función avanzada de
lucione con el tiempo. esquema de página en el cuarto. Se debería tener en cuen-
El modelo lineal secuencial (Sección 2.4) se diseña ta que el flujo del proceso de cualquier incremento pue-
para el desarrollo en línea recta. En esencia, este enfo- de incorporarel paradigma de construcciónde prototipos.
que en cascada asume que se va entregar un sistema
completo una vez que la secuencia lineal se haya fina-
lizado. El modelo de construcción de prototipos (Sec-
ción 2.5) se diseña para ayudar al cliente (o al que
desarrolla) a comprender los requisitos. En general, no Elmodelo entrega el software en partes
se diseña para entregar un sistema de producción. En pero utilizables, llamadas ((incrementos).
ninguno de los paradigmas de ingeniería del software En general, cado incrementose construye sobre aquél
se tiene en cuenta la naturaleza evolutiva del software. que ya ho sido entregado.
Los modelos evolutivos son iterativos. Se caracteri-
zan por la forma en que permiten a los ingenieros del Cuando se utiliza un modelo incremental, el primer
software desarrollar versiones cada vez más completas incremento a menudo es un producto esencial. Es decir,
del software. se afrontan requisitos básicos, pero muchas funciones
23
DEL SOFTWARE. UN ENFOQUE PRACTICO

suplementarias (algunas conocidas, otras no) quedan sin El modelo de proceso incremental, como la cons-
extraer. El cliente utiliza el producto central (o sufre la trucción de prototipos (Sección 2.5) y otros enfoques
revisión detallada). Como un resultado de utilización evolutivos, es iterativo por naturaleza. Pero a dife-
de evaluación, se desarrolla un plan para el incremento rencia de la construcción de prototipos, el modelo
siguiente. El plan afronta la modificación del producto incremental se centra en la entrega de un producto
central a fin de cumplir mejor las necesidades del clien- operacional con cada incremento. Los primeros incre-
te y la entrega de funciones, y características adiciona- mentos son versiones del producto
les. Este proceso se repite siguiendo la entrega de cada final, pero proporcionan al usuario la funcionalidad
incremento, hasta que se elabore el producto completo. que precisa y también una plataforma para la eva-
luación.
El desarrollo incremental es particularmente útil
cuando la dotación de personal no está disponible para
Cuando tenga una fecha de entrega imposible una implementación completa en la fecha límite que se
de cambiar, el modela incremental es un buen haya establecido para el proyecto. Los primeros incre-
a considerar.
mentos se pueden implementar con menos personas.

incremento 1

Prueba
incremento

,
Código Prueba
2." incremento

Diseño Código

incremento Análisis Prueba


incremento

Tiempo de calendario

FIGURA 2.7. El modelo incremental.

2.7.2. El modelo espiral


El modelo en espiral, propuesto originalmente por
Boehm es un modelo de proceso de soft-
ware evolutivo que conjuga la naturaleza iterativa de
construcción de prototipos con los aspectos controla- nieria
dos y sistemáticos del modelo lineal secuencial. Pro-
porciona el potencial para el desarrollo rápido de
del cliente
versiones incrementales del software. En el modelo
espiral, el software se desarrolla en una serie de ver- Proyectode mantenimiento de productos.
siones incrementales. Durante las primeras Proyectode mejora de productos.
Proyecto de desarrollo de nuevos productos.
nes, la version incremental podría ser un modelo en Proyecto de desarrollo de conceptos.
papel o un prototipo. Durante las últimas iteraciones,
se producen versiones cada vez más completas del
tema diseñado. FIGURA 2.8. Un modelo espiral típico.
24
2 EL PROCESO

El modelo en espiral se divide en un número de acti- más sofisticadas del software. Cada paso por la región
de marco de trabajo, también llamadas regio- de planificación produce ajustes en el plan del proyec-
de Generalmente, existen entre tres y seis to. El coste y la planificación se ajustan con la
regiones de tareas. La Figura 2.8 representa un modelo mentacion ante la evaluación del cliente. Además, el
en espiral que contiene seis regiones de tareas: gestor del proyecto ajusta el número planificado de
comunicación con el cliente- las tareas requeridas raciones requeridas para completar el software.
para establecer comunicación entre el desarrollador
y el cliente.
planificación- las tareas requeridas para definir
recursos, el tiempo y otra información relacionadas
con el proyecto.
análisis de riesgos- las tareas requeridas para eva- Modelo de proceso adaptable.
luar riesgos técnicos y de gestión.
ingeniería- las tareas requeridas para construir una A diferencia del modelo de proceso clásico que ter-
o más representaciones de la aplicación. mina cuando se entrega el software, el modelo en espi-
construcción y acción- las tareas requeridas para ral puede adaptarse y aplicarse a lo largo de la vida del
construir, probar, instalar y proporcionar soporte al software de computadora. Una visión alternativa del
usuario (por ejemplo: documentación y práctica) modelo en espiral puede ser considerada examinando
el eje de punto de entrada en el proyecto también refle-
evaluación del cliente- las tareas requeridas para jado en la Figura 2.8. Cada uno de los cubos situados a
obtener la reacción del cliente según la evaluación lo largo del eje pueden usarse para representar el pun-
de las representaciones del software creadas durante to de arranque para diferentes tipos de proyectos. Un
la etapa de ingeniería e implementada durante la de desarrollo de comienza en el
etapa de instalación. centro de la espiral y continuará (aparecen múltiples
raciones a lo largo de la espiral que limita la región
central) hasta que se completa el desarrollo del
concepto. Si el concepto se va a desarrollar dentro de
actividades del marco de trabajo se aplican un producto real, el proceso continúa a través del cubo
a cualquier proyecto de que realice, siguiente (punto de entrada del proyecto de desarrollo
sin tener en cuenta el ni complejidad. del producto nuevo) y se inicia un proyecto de
desarrollo”. El producto nuevo evolucionará a través de
Cada una de las regiones están compuestas por un con- iteraciones alrededor de la espiral siguiendo el camino
junto de tareas del trabajo, llamado conjunto de tareas, que limita la región algo más brillante que el
que se adaptan a las características del proyecto que va esencia, la espiral, cuando se caracteriza de esta forma,
a emprenderse. Para proyectos pequeños, el número de permanece operativa hasta que el software se retira. Hay
tareas de trabajo y su formalidad es bajo. Para proyectos veces en que el proceso está inactivo, pero siempre que
mayores y más críticos cada región de tareas contiene se inicie un cambio, el proceso arranca en el punto de
tareas de trabajo que se definen para lograr un nivel más entrada adecuado (por ejemplo: mejora del producto).
alto de formalidad. los casos, se aplican las acti- El modelo en espiral es un enfoque realista del desa-
vidades de protección (por ejemplo: gestión de configu- rrollo de sistemas y de software a gran escala. Como el
ración del software y garantía de calidad del software) software evoluciona, a medida que progresa el proceso
mencionadas en la Sección 2.2. el desarrollador y el cliente comprenden y reaccionan
mejor ante riesgos en cada uno de los niveles evoluti-
es un conjunto de
vos. El modelo en espiral utiliza la construcción de pro-
tareas?
totipos como mecanismo de reducción de riesgos, pero,
Cuando empieza este proceso evolutivo, el equipo lo que es más importante, permite a quien lo desarrolla
de ingeniería del software gira alrededor de la espiral aplicar el enfoque de construcción de prototipos en cual-
en la dirección de las agujas del reloj, comenzando por quier etapa de evolución del producto. Mantiene el enfo-
el centro. El primer circuito de la espiral puede produ- que sistemático de los pasos sugeridos por el ciclo de
cir el desarrollo de una especificación de productos; los vida clásico, pero lo incorpora al marco de trabajo
pasos siguientes en la espiral se podrían utilizar para rativo que refleja de forma más realista el mundo real.
desarrollar un prototipo y progresivamente versiones El modelo en espiral demanda una consideración

El modelo en espiral de esta sección es una variante sobre el modelo


propuesto por Boehm. Para más información sobre el modelo en espi-
ral original, consulte Un tratado reciente del modelo
en espiral puede encontrarse en

25
DEL SOFTWARE. UN ENFOQUE PRACTICO

ta de los riesgos técnicos en todas las etapas del pro- El modelo en espiral WINWIN de Boehm
yecto, y, si se aplica adecuadamente, debe reducir los define un conjuntode actividades de negociación al prin-
riesgos antes de que se conviertan en problemáticos. cipio de cada paso alrededor de la espiral. Más que una
simple actividad de comunicación con el cliente, se defi-
nen las siguientes actividades:
Identificación del sistema o subsistemas clave de los

la Parte
2. Determinación de las «condiciones de victoria» de
los directivos.
Pero al igual que otros paradigmas, el modelo en 3. Negociación de las condiciones de «victoria» de los
espiral no es la panacea. Puede resultar difícil conven- directivos para reunirlas en un conjunto de condi-
cer a grandes clientes (particularmente en situaciones ciones «victoria-victoria» para todos los afectados
bajo contrato) de que el enfoque evolutivo es controla- (incluyendo el equipo del proyecto de software).
ble. Requiere una considerable habilidad para la eva-
luación del riesgo, y cuenta con esta habilidad para el
éxito. Si un riesgo importante no es descubierto y ges-
tionado, indudablemente surgirán problemas. Final-
mente, el modelo no se ha utilizado tanto como los
paradigmas lineales secuenciales o de construcción de
Habilidadesde negociación
prototipos. Todavía tendrán que pasar muchos años antes
de que se determine con absoluta certeza la eficacia de
este nuevo e importante paradigma. Conseguidos completamente estos pasos iniciales se
logra un resultado «victoria-victoria», que será el crite-
rio clave para continuar con la definición del sistema y
2.7.3. El modelo espiral WINWIN del software. El modelo en espiral WINWIN se ilustra
en la Figura 2.9.
El modelo en espiral tratado en la Seccion 2.7.2 sugie-
re una actividad del marco de trabajo que aborda la 2. Identificar las
condiciones 3a. Reunir las condiciones
comunicación con el cliente. El objetivo de esta activi- de victoria de victoria.
dad es mostrar los requisitos del cliente. En un contex-
to ideal, el desarrollador simplemente pregunta cliente
lo que se necesita y el cliente proporciona detalles sufi-
cientes para continuar. Desgraciadamente, esto rara-
mente ocurre. En realidad el cliente y el desarrollador
entran en un proceso de negociación, donde el cliente
puede ser preguntado para sopesar la funcionalidad,ren- y comentarios.
5. Definir el siguiente nivel
dimiento, y otros productos o características del siste- 6. Validar las del producto y del proceso,
ma frente al coste y al tiempo de comercialización. definiciones incluyendo particiones.
del producto
y del proceso.

FIGURA 2.9. El modelo en espiral WINWIN


l a obtención de requisitos software requiere una
negociación. Tiene éxito cuando ambas partes Además del énfasis realizado en la negociación ini-
cial, el modelo en espiral WINWIN introduce tres hitos
Las mejores negociaciones se esfuerzan en obtener' en el proceso, llamados puntos de
«victoria-victoria». Esto es, el cliente gana obteniendo que ayudan a establecer la completitud de un ciclo alre-
el producto o sistema que satisface la mayor parte de dedor de la espiral y proporcionan hitos de decisión
sus el desarrollador gana trabajando para antes de continuar el proyecto de software.
conseguir presupuestos y lograr una fecha de entrega En esencia, los puntos de fijación representan tres
realista. visiones diferentes del progreso mientras que el

Hay docenas de libros escritos sobre habilidades en la negocia- Un directivo e s alguien e n la organización que tiene un interés
ción ej., una de las cosas mas directo, por el negocio, en el sistema o producto a construir y puede
importantes que un ingeniero o gestor joven (oviejo) puede apren- ser premiado por un resultado con éxito o criticado si el esfuerzo
der. Lea uno. falla.

26
2 EL PROCESO

yecto recorre la espiral. El primer punto de fijación, des del usuario, las decisiones de la gestión y los resultados de
llamado objetivos del ciclo de vida (OCV), define un las revisiones.
conjunto de objetivos para cada actividad principal El modelo de proceso concurrente se puede repre-
de ingeniería del software. Como ejemplo, de una par- sentar en forma de esquema como una serie de acti-
te de OCV, un conjunto de objetivos asociados a la vidades técnicas importantes, tareas y estados
definición de los requisitos del del asociados a ellas. Por ejemplo, la actividad de inge-
nivel más alto. El segundo punto de fijación, llama- niería definida para el modelo en espiral (Sección
do arquitectura del ciclo de vida (ACV), establece los se lleva a cabo invocando las tareas siguien-
objetivos que se deben conocer mientras que se defi- tes: modelado de construcción de prototipos aná-
ne la arquitectura del software y el sistema. Como lisis, especificación de requisitos y diseño'.
ejemplo, de una parte de la ACV, el equipo del pro- La Figura 2.10 proporciona una representación esque-
yecto de software debe demostrar que ha evaluado la mática de una actividad dentro del modelo de proceso
funcionalidad de los componentes del software
concurrente. La actividad -análisis-se puede encon-
lizables y que ha considerado su impacto en las deci- trar en uno de los estados'" destacados anteriormente en
siones de arquitectura. La capacidad operativa inicial
cualquier momento dado. De forma similar, otras acti-
(COI) es el tercer punto de fijación y representa un
vidades (por ejemplo: diseño o comunicación con el
conjunto de objetivos asociados a la preparación del
cliente) se puede representar de una forma análoga.
software para la preparación Todas las actividades existen concurrentemente, pero
del lugar previamente a la instalación, y la asistencia
residen en estados diferentes. Por ejemplo, al principio
precisada de todas las partes que utilizará o manten-
del proyecto la actividad de comunicación con el clien-
drá el software.
te (no mostrada en la figura) ha finalizado su primera
2.7.4. El modelo de desarrollo concurrente iteración y está en el estado de cambios,en espera. La
actividad de análisis (que estaba en el estado ninguno
Davis y Sitaram han descrito el modelo de mientras que se iniciaba la comunicación inicial con el
desarrollo concurrente, llamado algunas veces inge- cliente) ahora hace una transición al estado bajo desa-
niería concurrente, de la forma siguiente: rrollo. Sin embargo, si el cliente indica que se deben
Los gestores de proyectos que siguen los pasos del estado hacer cambios en requisitos, la actividad análisis cam-
del proyecto en lo que se refiere a las fases importantes [del
bia del estado bajo desarrollo al estado cambios en
ciclo de vida clásico] no tienen idea del estado de sus proyec-
tos. Estos son ejemplos de un intento por seguir los pasos extre- espera.
madamente complejos de actividades mediante modelos El modelo de proceso concurrente define una serie
demasiado simples. Tenga en cuenta que aunque un proyecto de acontecimientos que dispararán transiciones de
[grande]esté en la fase de codificación, hay personal de ese pro- estado a estado para cada una de las actividades de la
yecto implicado en actividades asociadas generalmente a muchas
fases de desarrollo simultáneamente. Por ejemplo, ... El perso-
ingeniería del software. Por ejemplo, durante las pri-
nal está escribiendo requisitos, diseñando, codificando, hacien- meras etapas del diseño, no se contempla una incon-
do pruebas y probando la integración [todo al mismo tiempo]. sistencia del modelo de análisis. Esto genera la
Los modelos de procesos de ingeniería del software de corrección del modelo de análisis de sucesos, que dis-
rey y Kellner han mostrado la concurrencia parará la actividad de análisis del estado hecho al
que existe para actividades que ocurren durante cualquier fase. estado cambios en espera.
El trabajo más reciente de Kellner utiliza diagramas
de estado [una notación que representa los estados de un pro- El modelo de proceso concurrente se utiliza a menu-
ceso] para representar la relación concurrente que existe entre do como el paradigma de desarrollo de aplicaciones
actividades asociadas a un acontecimiento específico (por ejem- (Capítulo 28). Un sistema
plo: un cambio de requisitos durante el último desarrollo), pero se compone de un conjunto de componentes funciona-
falla en capturar la riqueza de la concurrencia que existe en todas les. Cuando se aplica a el modelo de pro-
las actividades de desarrollo y de gestión del software en un
proyecto. .. La mayoría de los modelos de procesos de desarro-
ceso concurrente define actividades en dos dimensiones
llo del software son dirigidos por el tiempo; cuanto más tarde una dimensión de sistemas y una dimensiónde
sea, más atrás se encontrará en el proceso de desarrollo. [Un componentes. Los aspectos del nivel de sistemas se afron-
modelo de proceso concurrente] está dirigido por las necesida- tan mediante tres actividades: diseño, ensamblaje y uso.

9 En funcionalidad del se
jas que requieren un estudio sustancial. y del libro
consideran estos temas con más detalle. tadora más potente) que generalmente mantiene una base de datos
centralizada.
Un estado es algún modo externamente observable del compor-
tamiento.

27
DEL SOFTWARE. UN ENFOQUE PR A CTICO

La dimensión de componentes se afronta con dos activi-


dades: diseño y realización. La concurrencia se logra de
dos formas: (1) las actividades de sistemas y de compo-
nentes ocurren simultáneamente y pueden modelarse con
el enfoque orientado a objetos descrito anteriormente;(2)
una aplicación típica se implementa con
muchos componentes, cada uno de los cuales se pueden
diseñar y realizar concurrentemente. En realidad, el mode-
lo de proceso concurrentees aplicable a todo tipo de desa- O
Reperesenia un estado de
rrollo de software y proporciona una imagen exacta del una actividad de
del software.
estado actual de un proyecto.
FIGURA 2.10. Un elemento del modelo de proceso concurrente.

Las tecnologías de objetos Parte de este libro) pro- La actividad de la ingeniería comienza con la iden-
porcionan el marco de trabajo técnico para un modelo tificación de clases candidatas. Esto se lleva a cabo exa-
de proceso basado en componentes para la ingeniería minando los datos que se van a manejar por parte de la
del software. El paradigma orientado a objetos aplicación y el algoritmo que se va a aplicar para con-
za la creación de clases que encapsulan tanto los datos seguir el Los datos y los algoritmos corres-
como los algoritmos que se utilizan para manejar los pondientes se empaquetan en una clase.
datos. Si se diseñan y se implementan adecuadamente, Las clases creadas en los proyectos de ingeniería del
las clases orientadas a objetos son reutilizables por las software anteriores, se almacenan en una biblioteca de
diferentes aplicaciones y arquitecturas de sistemas basa- clases o diccionario de datos (repository) (Capítulo 3
dos en computadora. Una vez identificadas las clases candidatas, la biblioteca
de clases se examina para determinar si estas clases ya
existen. En caso de que así fuera, se extraen de la biblio-
teca y se vuelven a utilizar. Si una clase candidata no resi-
de en la biblioteca, se aplican los orientados
objetos (Capítulos 2 1-23). Se compone así la primera ite-
ración de la aplicación a construirse, mediante las clases
extraídas de la biblioteca y las clases nuevas construidas
para cumplir necesidades Únicas de la aplicación. El
flujo del proceso vuelve a la espiral y volverá a introdu-
cir por último la iteración ensambladora de componen-
tes a través de la actividad de ingeniería.
El modelo de desarrollo basado en componentes con-
FIGURA 2.1 Desarrollo basado en componentes. duce a la reutilización del software, y la reutilización pro-
porciona beneficios a los ingenieros de software. Según
El modelo de desarrollo basado en componentes (Fig. estudios de reutilización, QSM Associates, Inc. informa
2.11) incorpora muchas de las características del mode- que el ensamblaje de componentes lleva a una reducción
lo en espiral. Es evolutivo por naturaleza y exi- del 70 por 100 de tiempo de ciclo de desarrollo, un 84
ge un enfoque iterativo para la creación del software. por 100 del coste del proyecto y un índice de producti-
Sin embargo, el modelo de desarrollo basado en com- vidad del 26.2, comparado con la norma de industria del
ponentes configura aplicaciones desde componentes pre- 16.9 Aunque estos resultados están en función
parados de software (llamados en la Fig. 2.11). de la robustez de la biblioteca de componentes, no hay
duda de que el ensamblaje de componentes proporciona
en lo ventajas significativas para los ingenieros de software.
El proceso unificado de desarrollo de software
un estudio representa un número de modelos de desarro-
llo basados en componentes que han sido propuestos en

Esta es una descripción simplificada de definición de clase. Para


un estudio más detallado, consulte el Capítulo 20.

28
2 EL PROCESO

la industria. Utilizando el Lenguaje de Modelado Uni- to de vista usuario). Entonces acopla la función con
(UML), el proceso unificado define los un marco de trabajo arquitectónico que identifica la for-
nentes que se utilizarán para construir el sistema y las ma que tomará el software.
interfaces que conectarán los componentes. Utilizando
una combinacion del desarrollo incremental e iterativo,
el proceso unificado define la función del sistema apli- En los Capítulos 21 y 22 se trata con más detalle.
cando un enfoque basado en escenarios (desde el

El modelo de métodos formales comprende un conjun- consiguientepermiten que el ingeniero del software des-
to de actividades que conducen a la especificación mate- cubra y corrija errores que no se pudieron detectar de
mática del software de computadora. Los métodos otra manera.
formales permiten que un ingeniero de software espe- Aunque todavía no hay un enfoque establecido, los
cifique, desarrolle y verifique un sistema basado en com- modelos de métodos formales ofrecen la promesa de un
putadora aplicando una notación rigurosa y matemática. software libre de defectos. Sin embargo, se ha hablado
Algunas organizaciones de desarrollo del software de una gran preocupación sobre su aplicabilidad en un
actualmenteaplican una variación de este enfoque, lla- entorno de gestión:
mado ingeniería del software de sala limpia El desarrollo de modelos formales actualmente es
bastante caro y lleva mucho tiempo.
2. Se requiere un estudio detallado porque pocos res-
los métodosformales se tratan en los Capítulos 25 y 26. ponsables del desarrollo de software tienen los ante-
cedentes necesarios para aplicar métodos formales.
Cuando se utilizan métodos formales (Capítulos 25 3. Es difícil utilizar los modelos como un mecanismo
y 26) durante el desarrollo, proporcionan un mecanis- de comunicación con clientes que no tienen muchos
mo para eliminar muchos de los problemas que son difí- conocimientos técnicos.
ciles de superar con paradigmas de la ingeniería del No obstante es posible que el enfoque a través de
software. La ambigüedad, lo incompleto y la inconsis- métodos formales tenga más partidarios entre los desa-
tencia se descubren y se corrigen más fácilmente -no rrolladores del software que deben construir software
mediante un revisión a propósito para el caso, sino de mucha seguridad (por ejemplo: los desarrolladores
mediante la aplicación del análisis matemático-. Cuan- de aviónica y dispositivos médicos), y entre los desa-
do se utilizan métodos formales durante el diseño, sir- rrolladores que pasan grandes penurias económicas al
ven como base'para la verificación de programas y por aparecer errores de software.

El término técnicas de cuarta generación abarca siguientes herramientas: lenguajes no procedimentales


un amplio espectro de herramientas de software que tie- de consulta a bases de datos, generación de informes,
nen algo en común: todas facilitan al ingeniero del soft- manejo de datos, interacción y definición de pantallas,
ware la especificación de algunas características del generación de códigos, capacidades gráficas de alto nivel
softwarea alto nivel. Luego, la herramienta genera y capacidades de hoja de cálculo, y generación auto-
máticamente el código fuente basándose en la especifi- matizada de HTML y lenguajes similaresutilizados para
cación del técnico. Cada vez parece más evidente que la creación de sitios web usando herramientas de soft-
cuanto mayor sea el nivel en el que se especifique el ware avanzado. Inicialmente, muchas de estas herra-
software,más rápido se podrá construir el programa. El mientas estaban disponibles, pero sólo para ámbitos de
paradigma T4G para la ingeniería del software se orien- aplicación muy específicos, pero actualmente los
ta hacia la posibilidad de especificar el software usan- nos T4G se han extendido a todas las categorías de apli-
do formas de lenguaje especializado o notaciones caciones del software.
gráficas que describa el problema que hay que resolver Al igual que otros paradigmas, T4G comienza con
en términos que los entienda el cliente. Actualmente, el paso de reunión de requisitos. Idealmente, el cliente
un entorno para el desarrollo de software que soporte describe los requisitos, que son, a continuación, tradu-
el paradigma T4G puede incluir todas o algunas de las cidos directamente a un prototipo operativo. Sin

29
DEL SOFTWARE. U N ENFOQUE

go, en la práctica no se puede hacer eso. El cliente pue- que facilite la realización del mantenimiento de forma
de que no esté seguro de lo que necesita; puede ser ambi- expeditiva.
guo en la especificaciónde hechos que le son conocidos, Al igual que todos los paradigmas del software, el
y puede que no sea capaz o no esté dispuesto a especi- modelo T4G tiene ventajas e inconvenientes. Los defen-
ficar la información en la forma en que puede aceptar sores aducen reducciones drásticas en el tiempo de desa-
una herramienta Por esta razón, el diálogo clien- rrollo del software y una mejora significativa en la
te-desarrollador descrito por los otros paradigmas sigue productividad de la gente que construye el software.
siendo una parte esencial del enfoque Los detractores aducen que las herramientas actuales
de T4G no son más fáciles de utilizar que los lenguajes
de programación, que el código fuente producido por
tales herramientas es y que el manteni-
utilice tiene que miento de grandes sistemas de software desarrollados
del mediante T4G es cuestionable.
el diseño y /os Hay algún mérito en lo que se refiere a indicaciones
de ambos lados y es posible resumir el estado actual de
Para aplicaciones pequeñas, se puede ir directamen- los enfoques de
te desde el paso de recolección de requisitos al paso de El uso de T4G es un enfoque viable para muchas de
implementación, usando un lenguaje de cuarta genera- las diferentes áreas de aplicación. Junto con las herra-
ción no procedimental o un modelo comprimi- mientas de ingeniería de software asistida por com-
do de red de iconos gráficos. Sin embargo, es necesario putadora (CASE) y los generadores de código, T4G
un mayor esfuerzo para desarrollar una estrategia de ofrece una solución fiable a muchos problemas del
diseño para el sistema, incluso si se utiliza un El software.
uso de T4G sin diseño (para grandes proyectos) causa- 2. Los datos recogidos en compañías que usan T4G
rá las mismas dificultades (poca calidad, mantenimien- parecen indicar que el tiempo requerido para produ-
to pobre, mala aceptación por el cliente) que se cir software se reduce mucho para aplicaciones
encuentran cuando se desarrolla software mediante los pequeñas y de tamaño medio, y que la cantidad de
enfoques convencionales. análisis y diseño para las aplicaciones pequeñas tam-
La implementación mediante L4G permite, al que bién se reduce.
desarrolla el software, centrarse en la representación de
los resultados deseados, que es lo que se traduce 3. Sin embargo, el uso de T4G para grandes trabajos de
máticamente en un código fuente que produce dichos desarrollo de software exige el mismo o más tiempo
resultados. Obviamente, debe existir una estructura de de análisis, diseño y prueba (actividades de ingenie-
datos con información relevante y a la que el L4G pue- ría del software), para lograr un ahorro sustancial de
da acceder rápidamente. tiempo que puede conseguirse mediante la elimina-
Para transformar una implementación T4G en un ción de la codificación.
producto, el que lo desarrolla debe dirigir una prueba Resumiendo, las técnicas de cuarta generación ya se
completa, desarrollar con sentido una documentación han convertido en una parte importante del desarrollo
y ejecutar el resto de las actividades de integración que de software. Cuando se combinan con enfoques de
son también requeridas requeridas por otros ensamblaje de componentes (Sección el paradig-
mas de ingeniería del software. Además, el software ma T4G se puede convertir en el enfoque dominante
desarrollado con T4G debe ser construido de forma hacia el desarrollo del software.

Los modelos de procesos tratados en las secciones ante- ción tratadas en la Sección 2.3. El modelo, presentado
riores se deben adaptar para utilizarse por el equipo del normalmente como una red, se puede analizar para deter-
proyecto del software. Para conseguirlo, se han desarro- minar el flujo de trabajo típico y para examinar estruc-
llado herramientas de tecnología de procesos para ayudar turas alternativas de procesos que pudieran llevar a un
a organizacionesde software a analizar los procesos actua- tiempo o coste de desarrollo reducidos.
les, organizar tareas de trabajo, controlar y supervisar el Una vez que se ha creado un proceso aceptable, se
progreso y gestionar la calidad técnica pueden utilizar otras herramientas de tecnología de pro-
Las herramientas de tecnología de procesos permi- cesos para asignar, supervisar e incluso controlar todas
ten que una organización de software construya un las tareas de ingeniería del software definidas como par-
modelo automatizado del marco de trabajo común de te del modelo de proceso. Cada uno de los miembros
proceso, conjuntos de tareas y actividades de protec- de un equipo de proyecto de softwarepuede utilizar tales

30
E L P R OC E S O

herramientas para desarrollar una lista de control de se puede utilizar para coordinar el uso de otras herra-
tareas de trabajo a realizarse, productos de trabajo a pro- mientas de ingeniería del software asistida por compu-
ducirse, y actividades de garantía de calidad a condu- tadora (Capítulo 3 1) adecuadas para una tarea de trabajo
cirse. La herramienta de tecnología de proceso también en particular.

Y
Si el proceso es débil, el producto final va a sufrir indu- Toda actividad humana puede ser un proceso, pero uno de
dablemente. Aunque una dependencia obsesiva en el nosotros obtiene el sentido de autoestima ante esas actividades que
producen una representación o ejemplo que más de una persona
proceso también es peligrosa. En un breve ensayo, puede utilizar o apreciar, una u otra vez, o en algún otro contexto
garet Davis comenta la dualidad producto y no tenido en cuenta. Es decir, los sentimientos de satisfacción se
proceso: obtienen por volver a utilizar nuestros productos por nosotros mis-
Cada diez años o cinco aproximadamente,la comunidad del soft- mos o por otros.
ware vuelve a definir «el problema» cambiando el foco de los aspec- Así pues, mientras que la asimilación rápida de los objetivos
tos de producto a los aspectos de proceso. Por consiguiente, se han de reutilización en el desarrollo del software aumenta potencial-
abarcado lenguajes de programación estructurados (producto) segui- mente la satisfacción que los desarrolladores obtienen de su tra-
dos por métodos de análisis estructurados (proceso) seguidos a su bajo, esto incrementa la urgencia de aceptar la dualidad producto
vez por encapsulaciónde datos (producto) y después por el énfasis y proceso. Pensar en un mecanismo reutilizable como el único
actual en el Modelo Madurez de Capacidad de Desarrollo del soft- producto o el único proceso, bien oscurece el contexto y la forma
ware del Instituto de ingeniería de software (proceso). de utilizarlo, o bien el hecho de que cada utilización elabora el
Mientras que la tendencia natural de un péndulo es parar en medio producto que a su vez se utilizará como entrada en alguna otra
de dos extremos, el enfoque de la comunidad del software cambia actividad de desarrollo del software. Elegir un método sobre otro
constantemente porque se aplica una fuerza nueva cuando falla el reduce enormemente las oportunidades de reutilización y de aquí
movimiento. Estos movimientos son perjudicialespor sí mis- que se pierda la oportunidad de aumentar la satisfacción ante el
mos y en sí mismos porque confunden al desarrollador del softwa- trabajo.
re medio cambiando radicalmente lo que significa realizar el trabajo,
que por sí mismo lo realiza bien. Los cambios tampoco resuelven
«el problema», porque están condenados al fracaso siempre que el
producto y el proceso se traten como si formasen una dicotomía en
lugar de una dualidad.

se aplica
puede convertirse] en
Las personas obtienen tanta satisfacción (o más) del
proceso creativo que del producto final. Un artista dis-
fruta con las pinceladas de la misma forma que disfru-
ta del resultado enmarcado. Un escritor disfruta con la
En la comunidad científica hay un precedente que se adelanta a búsqueda de la metáfora adecuada al igual que con el
las nociones de dualidad cuando contradicciones en observaciones
no se pueden explicar completamente con una teoría competitiva u
libro final. Un profesional creativo del software debe-
otra. La naturaleza de la luz, que parece ser una partícula y una ría también obtener tanta satisfacción de la programa-
onda al mismo tiempo, se ha aceptado desde los años veinte cuan- ción como del producto final.
do Louis de lo propuso. Creo que las observaciones que se El trabajo de los profesionales del software cambia-
hacen sobre los mecanismos del software y su desarrollo demues- rá en los próximos años. La dualidad de producto y pro-
tran una dualidad fundamental entre producto y proceso. Nunca se ceso es un elemento importante para mantener ocupada
puede comprender el mecanismo completo, su contexto, uso, signi-
ficado y valor si se observa sólo como un proceso o sólo como un a la gente hasta que se finalice la transición de
producto.. . la programación a la ingeniería del software.

La ingeniería del software es una disciplina que inte- venientes, pero todos tienen una serie de fases gené-
gra procesos, métodos y herramientas para el desa- ricas en común. En el resto de este libro se consideran
rrollo del software de computadora. Se han propuesto los principios, conceptos y métodos que permiten lle-
varios modelos de procesos para la ingeniería del soft- var a cabo el proceso que se llama ingeniería del soft-
ware diferentes, cada uno exhibiendo ventajas e incon- ware.
31

También podría gustarte