Capítulo 12
Ingeniería de software: el proceso
para el desarrollo de software
Por Alfredo Weitzenfeld Ridel y Silvia Guardati Buemo
El desarrollo de software es una de las acti-
vidades más importantes de la computación,
ya que está presente tanto en el desarrollo de
aplicaciones ajenas a la computación —por
ejemplo, un programa que controla la asigna-
ción de salas de embarque en un aeropuer-
to— como en el desarrollo de programas
básicos en el área —por ejemplo, un sistema
operativo—. Otro aspecto relevante que debe
tenerse en cuenta es que el desarrollo de
software no es una tarea solamente técnica,
en la cual lo único que importa es la tecno-
logía y los desarrolladores. La producción de
software generalmente también involucra a
terceros (es decir, en la mayoría de las situa-
ciones se desarrolla un programa para satis-
facer una necesidad específi ca de un usuario
que no es el mismo programador). Por lo
tanto, el éxito de un programa está sujeto
a que éste haga lo que se espera que haga,
que haya sido desarrollado con los recursos
estimados y que sea confi able. Considerando
lo mencionado, el diseño, desarrollo y man-
tenimiento de software debe realizarse con la
misma seriedad y responsabilidad con la que
se llevan a cabo cualquiera de las actividades
propias de las ingenierías tradicionales.
En este capítulo se presenta una introduc-
ción al proceso de desarrollo de software, así
como los conceptos básicos acerca de meto-
dologías que existen para el trabajo en equi-
po, dado que el software que se desarrolla
hoy en día ya no son programas de cien líneas
de código, hechos por un solo programador,
como lo eran durante los primeros años de
la computación. De esta manera, el lector po-
drá conocer los fundamentos de la ingeniería
de software aplicables en el desarrollo de soft-
ware tanto para las áreas de la computación
estudiadas en este libro, como para cualquier
área del saber.
12.1 Modelo del proceso
Un proceso defi ne quién hace qué, cuándo
y cómo lo hace, para alcanzar cierto obje-
tivo. En general, el éxito de las empresas u
organizaciones depende en gran medida de
la defi nición y seguimiento adecuado de sus
procesos. En el caso de una empresa que se
dedica al desarrollo de software, se requieren
procesos especializados que abarquen desde
la creación hasta la administración de un siste-
ma de software. Como se ha visto en capítulos
anteriores, los sistemas de software pueden
llegar a ser extremadamente complejos. Para
administrar la complejidad de tales sistemas
es necesario contar con modelos de procesos
y tecnologías de software apropiadas. En este
capítulo se describe en qué consiste el proce-
so de software.
Un modelo de proceso de software
defi ne cómo resolver la problemática del
desarrollo de sistemas de software. Para de-
sarrollar software se requiere resolver ciertas
fases de un proceso que se conocen en su
conjunto como el ciclo de vida1 del desarro-
1 Scacchi, W., 2001, “Process models in software engineering”, en J. Marciniak (Ed), Encyclopedia of
software engineering (second edition), Wiley.
CAP. 12.indd 355
CAP. 12.indd 355
7/10/07 1:52:18 PM
7/10/07 1:52:18 PM
356
CAPÍTULO 12
llo de software. Un modelo de proceso debe
considerar una variedad de aspectos, como
el conjunto de personas, estructuras organi-
zacionales, reglas, políticas, actividades, com-
ponentes de software, metodologías y herra-
mientas utilizadas.
A continuación se describen aspectos
esenciales que defi nen un proceso: arquitec-
turas, actividades, métodos y metodologías,
estrategias y herramientas para la administra-
ción de software.
12.1.1 Arquitecturas
Una arquitectura de software defi ne la es-
tructura general de un sistema. Las arquitec-
turas varían de acuerdo con el tipo de sistema
a desarrollarse. Pueden ser arquitecturas ba-
sadas en elementos sencillos o en componen-
tes prefabricados de mayor tamaño. Además
de depender del tipo de sistema a desarrollar,
la selección de una arquitectura afecta as-
pectos como la extensibilidad del sistema
(qué tan fácil es extenderlo en el futuro para
incorporar más funcionalidad o mayor capa-
cidad). Por lo tanto, la arquitectura debe ser
escogida de manera que minimice los efectos
de los cambios que pueda haber en el futuro
en el sistema. Para hacer esta elección existen
ciertas heurísticas que muestran la tendencia
a cambiar en varios elementos de un sistema,
como se muestra en la tabla 12.1.2 Las inter-
faces representan los elementos gráfi cos, la
funcionalidad son las reglas del negocio
(requisitos del usuario), los datos y funcio-
nes son los elementos internos que se usan
para describir a los objetos (correspondien-
tes a las estructuras de datos básicas de la
programación orientada a objetos), mientras
que la información representa el dominio
del problema en una aplicación.
Esta tabla resalta dos aspectos del desa-
rrollo de software. Primero, la arquitectura
del sistema debe distinguir entre elementos
con mayor y menor probabilidad de cambios.
Segundo, el desarrollo de software debe con-
siderar un modelo de proceso en el que
aquellos elementos de mayor probabilidad
de cambio no “arrastren” a los más estables.
Este tema se discute con mayor detalle en la
sección de metodologías.
12.1.2 Actividades
Una actividad es una unidad (un paso) bási-
ca de un proceso. En el proceso de software
Tabla 12.1 Probabilidad de cambios futuros en el software de acuerdo
con el tipo de elemento de diseño.
Elemento
Interfaces
Funcionalidad
Datos
Funciones
Objetos
Información
Probabilidad de cambio
Alta
Alta
Mediana
Mediana
Baja
Baja
2 Coad, P., y Yourdon, E., 1991, Object-oriented analysis, Yourdon Press.
CAP. 12.indd 356
CAP. 12.indd 356
7/10/07 1:52:18 PM
7/10/07 1:52:18 PM
Ingeniería de software: el proceso para el desarrollo de software 357
las actividades defi nen los pasos necesarios
para lograr las metas y objetivos (por ejem-
plo, especifi car los requisitos del sistema).
Las actividades deben ser fáciles de defi nir
y seguir, deben simplifi car la comprensión
del sistema, y ofrecer fl exibilidad, precisión y
extensibilidad. Las actividades básicas del pro-
ceso de desarrollo de software, conocidas
como el ciclo de vida del software, son las
siguientes:
(i)
(ii)
(iii)
(iv)
(v)
(vi)
(vii)
(viii)
especifi cación de requisitos para
capturar los aspectos funcionales
del sistema, describiendo cómo in-
teractuaría un usuario con la aplica-
ción.
análisis para dar al sistema una
estructura o arquitectura robusta
y extensible independiente del am-
biente de implementación fi nal.
diseño para adoptar y refi nar la ar-
quitectura del sistema y adaptarla
al ambiente de implementación es-
pecífi co.
implementación para programar
el sistema.
pruebas para validar y verifi car el
sistema.
integración para combinar los dife-
rentes componentes del sistema.
documentación para describir los
diversos aspectos del sistema.
mantenimiento para extender la
funcionalidad del sistema.
12.1.2.1 REQUISITOS
La actividad de especifi cación de requisitos
tiene como meta defi nir y delimitar la funcio-
nalidad del sistema de software. La especifi -
cación de requisitos sirve como base de ne-
gociación entre el desarrollador del sistema y
el cliente, y debe refl ejar los deseos de éste.
El resultado es el modelo de requisitos. Es
esencial que los clientes que no tengan co-
nocimientos en computación comprendan el
modelo de requisitos para facilitar la interac-
ción de los desarrolladores del software con
ellos.
El modelo de requisitos gobierna el desa-
rrollo de los demás modelos —los demás mo-
delos se deben basar en éste—. El modelo de
requisitos también sirve como base para ela-
borar las instrucciones de operación y los ma-
nuales, los cuales deben ser redactados desde
el punto de vista del usuario.
El desafío en la especifi cación de requisitos
comienza cuando el experto debe comunicar
los conceptos importantes para su aplicación.
En general, no es posible hacer esto adecua-
damente de manera sencilla. Como resultado,
se provee de múltiples explicaciones, orales o
escritas, que el desarrollador trata de integrar
en una forma coherente. La especifi cación de
requisitos es particularmente difícil cuando
la información es incompleta, los expertos
no pueden articular lo que saben, o no están
seguros o, incluso, son incoherentes en su
información o se contradicen.
La tabla 12.2 muestra las actividades más
importantes del ciclo de vida del proceso de
software.
La transición entre las distintas actividades
del ciclo de vida del software debe ser natu-
ral: debe existir continuidad o rastreabili-
dad (en inglés, traceability, la capacidad de
entender por qué razón surgió y a qué resul-
tados llevó cada decisión realizada durante el
desarrollo de software) de una actividad a la
siguiente o la anterior. A continuación des-
cribimos con mayor detalle cada una de las
actividades listadas arriba.
12.1.2.2 ANÁLISIS
Después de desarrollar el modelo de re-
quisitos y de que los usuarios del sistema o
clientes lo aprueben, se puede continuar con
la elaboración del modelo de análisis, te-
niendo como meta construir una arquitectu-
ra capaz de resolver el problema bajo condi-
ciones ideales. Esto signifi ca desarrollar una
estructura lógica del sistema que debe ser es-
table y extensible. El análisis se enfoca en qué
debe hacer el sistema, en lugar de cómo se
CAP. 12.indd 357
CAP. 12.indd 357
7/10/07 1:52:19 PM
7/10/07 1:52:19 PM
358
CAPÍTULO 12
Actividad
Requisitos
Análisis
Diseño
Tabla
Comentarios de: Capítulo 12 Ingeniería de software: el proceso para el desarrollo de software (0)
No hay comentarios