31
MARIA GUADALUPE Y JONATAN LOPEZ T/V 1/A La definición más simple de lo que es un hardware, es que todo lo físico que podemos ver en una computadora, es considerado como hardware. Todo lo que usted puede llegar a tocar de una computadora, es el hardware. O sea, el monitor, el teclado, el mouse, la impresora, etc. Cada uno de estos elementos por separados, no son nada. Pero al unirlos de manera conjunta, para formar una computadora, pasan a ser parte del hardware de nuestro terminal computacional. imagenes Dentro de todo hardware, existe una categorización específica. Categorías que siempre van a ser cinco. La primera de procesamiento, la segunda de entrada, la tercera de salida, la cuarta de almacenamiento y la quinta de comunicación. En la primera categoría, podemos destacar la unidad central de procesamiento (CPU) cuyo corazón es un microprocesador de silicio, conformado por una unidad aritmético-lógica, la cual realiza todos los cálculos y toma de decisiones. Por otra parte, tenemos la memoria del computador o RAM. En la segunda categoría, tenemos al teclado, por ejemplo. Medio por el cual, podemos ejecutar todos los programas inherentes a Office, por colocar un caso. El teclado es uno de los medios por los cuales, el ser humano se puede comunicar con la computadora. De es manera, ordenarle que ejecute ciertos programas, bajo la voluntad del primero. Y como no, el segundo dispositivo de entrada, es el mouse. Con el cual se cierra el círculo, de las maneras en que el ser humano, puede ordenar a una computadora que ejecute lo que él desee. La tercera categoría se refiere al monitor y la impresora. Medios por los cuales, la computadora se entiende con el ser humano.

La DefinicióN MáS Simple De Lo Que Es Un Hardware

Embed Size (px)

Citation preview

Page 1: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La definicioacuten maacutes simple de lo que es un hardware es que todo lo fiacutesico que

podemos ver en una computadora es considerado como hardware Todo lo que

usted puede llegar a tocar de una computadora es el hardware O sea el

monitor el teclado el mouse la impresora etc Cada uno de estos elementos

por separados no son nada Pero al unirlos de manera conjunta para formar

una computadora pasan a ser parte del hardware de nuestro terminal

computacional imagenes

Dentro de todo hardware existe una categorizacioacuten especiacutefica Categoriacuteas

que siempre van a ser cinco La primera de procesamiento la segunda de

entrada la tercera de salida la cuarta de almacenamiento y la quinta de

comunicacioacuten

En la primera categoriacutea podemos destacar la unidad central de

procesamiento (CPU) cuyo corazoacuten es un microprocesador de silicio

conformado por una unidad aritmeacutetico-loacutegica la cual realiza todos los

caacutelculos y toma de decisiones Por otra parte tenemos la memoria del

computador o RAM

En la segunda categoriacutea tenemos al teclado por ejemplo Medio por el cual

podemos ejecutar todos los programas inherentes a Office por colocar un

caso El teclado es uno de los medios por los cuales el ser humano se puede

comunicar con la computadora De es manera ordenarle que ejecute ciertos

programas bajo la voluntad del primero Y como no el segundo dispositivo de

entrada es el mouse Con el cual se cierra el ciacuterculo de las maneras en que

el ser humano puede ordenar a una computadora que ejecute lo que eacutel desee

La tercera categoriacutea se refiere al monitor y la impresora Medios por los

cuales la computadora se entiende con el ser humano

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

imagenes

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Todos estos componentes forman el hardware y si no estaacuten juntos no

son nada

iquestQueacute es el software El software es una produccioacuten inmaterial del cerebro humano y tal vez una de las estructuras maacutes complicadas que la humanidad conoce De hecho los expertos en computacioacuten auacuten no entienden del todo coacutemo funciona su comportamiento

sus paradojas y sus liacutemites1 Baacutesicamente el software es un plan de funcionamiento para un tipo especial de maacutequina una maacutequina ``virtual o ``abstracta Una vez escrito mediante alguacuten lenguaje de programacioacuten el

software se hace funcionar en ordenadores que temporalmente se convierten en esa maacutequina para la que el programa sirve de plan El software permite poner en relacioacuten al ser humano y a la maacutequina y tambieacuten a las maacutequinas entre siacute Sin ese conjunto de instrucciones programadas los ordenadores seriacutean objetos inertes como cajas de zapatos sin capacidad siquiera para mostrar algo en la pantalla

Los ordenadores soacutelo procesan lenguaje binario2 pero para las personas este no es un modo vaacutelido de comunicarse (salvo a nivel sinaacuteptico -) Si bien en los

tiempos heroicos de los primeros ordenadores no les quedaba otro remedio que hacerlo los programadores hace mucho que no escriben su coacutedigo en lenguaje binario (denominado teacutecnicamente ``coacutedigo-maacutequina) pues es terriblemente

tedioso improductivo y muy sujeto a errores Hace tiempo que los programadores escriben las instrucciones que ha de ejecutar el procesador de la maacutequina

mediante lenguajes formales llamados ``de alto nivel bastante cercanos al ingleacutes si bien con riacutegidas reglas sintaacutecticas que lo asemejan a los lenguajes

loacutegico-formales Esto facilita enormemente la tarea de escribir programas pero para que esas instrucciones sean comprensibles para el procesador deben ser

convertidas antes a coacutedigo-maacutequina Esa conversioacuten se realiza coacutemodamente con programas especiales llamados compiladores A lo que escribe el programador se

le denomina ``coacutedigo-fuente Al resultado de la ``conversioacuten (compilacioacuten) en lenguaje-maacutequina se le denomina ``coacutedigo-objeto ``binarios o ``ficheros

ejecutables En principio al usuario comuacuten soacutelo le importa este uacuteltimo nivel los ``binarios pero conviene tener clara la distincioacuten entre fuentes y binarios pues es clave para entender el empentildeo de los partidarios del software libre en disponer de

las fuentes

Pero el software libre es mucho maacutes que el derecho de los programadores y de los hackers3 a disponer de las fuentes del coacutedigo significa tambieacuten la libertad de

copiar y redistribuir esos programas Esos derechos o su ausencia condicionan a cualquiera que use un ordenador y han configurado la industria del software y de

la informaacutetica tal y como la conocemos hoy diacutea Tambieacuten ha dado lugar a un

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

movimiento social --el del software libre-- cuya historia reconstruiremos brevemente en las proacuteximas liacuteneas

En la informaacutetica de los antildeos sesenta y setenta y en la cultura hacker que surgioacute en torno a ella se disponiacutea libremente de las herramientas necesarias y del coacutedigo

fuente de la gran mayoriacutea de los programas La colaboracioacuten forma parte desde antiguo de los haacutebitos de la comunidad cientiacutefica y ademaacutes ante la diversidad de plataformas era necesario disponer del coacutedigo cuando se adquiriacutea el programa para poder portarlo al hardware de cada cual Era tan normal como compartir

recetas de cocina y ni siquiera se hablaba de ``software libre pues todo el que queriacutea programar se beneficiaba de ello y veiacutea loacutegico que los demaacutes se pudiesen

beneficiar a su vez Los hackers copiaban los programas intercambiaban sus fuentes podiacutean estudiarlas evaluarlas adaptarlas a sus necesidades y a su

hardware reutilizaban una parte del coacutedigo para hacer nuevos programasEl desarrollo de bienes puacuteblicos basados en ese modelo fue exponencial hasta el

punto de que gran parte de la tecnologiacutea en la que se basa hoy Internet --desde el sistema operativo UNIX hasta los protocolos de red-- procede de esos antildeos

Pero a principios de los antildeos ochenta ese modelo entra en crisis y raacutepidamente comienza a emerger un modelo privatizador y mercantilista Los ordenadores

hasta entonces escasos caros y poco potentes se hacen asequibles cada vez maacutes baratos y potentes y aparece un nuevo negocio el de los productores de software Los programas se empezaron a vender como productos comerciales independientes de las maacutequinas y soacutelo con el coacutedigo binario para ocultar las teacutecnicas de programacioacuten a la competencia La nueva industria del software

comienza a apoyarse en la legislacioacuten sobre propiedad intelectual El mundo UNIX se fragmenta en diversas versiones privatizadas y progresivamente incompatibles entre siacute que los programadores no pueden modificar Lo que era praacutectica habitual se convirtioacute en un delito el hacker que compartiacutea el coacutedigo y cooperaba con otras

personas pasoacute a ser considerado un ``pirata

Al tiempo que los sistemas van hacieacutendose incompatibles entre siacute la comunidad de investigadores se va desmembrando poco a poco Muchos hackers ficharon

por empresas y firmaron contratos en los que se comprometiacutean a no compartir con nadie de fuera los ``secretos de fabricacioacuten (el coacutedigo fuente) Por su parte los laboratorios de investigacioacuten comenzaron a hacer lo mismo y obligaban a sus

hackers a suscribir el mismo tipo de claacuteusulas Para cerrar el ciacuterculo los compiladores los depuradores los editores y demaacutes herramientas imprescindibles para programar eran propietarios y se vendiacutean a precios respetables se trataba de que la programacioacuten ``de verdad soacutelo estuviese en manos de la naciente industria

de software

Hubo hackers que no aceptaron esta nueva situacioacuten y continuaron con sus praacutecticas pero pareciacutea solo una cuestioacuten de tiempo que la industria del software

propietario arrinconara y dejara definitivamente fuera de la ley la cultura

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

cooperativa y confiada de las primeras comunidades de hackers4 Este contexto sirve de base y explica el auge posterior del imperio Microsoft y similares estaba

naciendo el negocio del software propietario y la proacutespera industria de los ordenadores personales

Definicioacuten de software

Probablemente la definicioacuten maacutes formal de software sea la siguiente

Es el conjunto de los programas de coacutemputo procedimientos reglas

documentacioacuten y datos asociados que forman parte de las operaciones de un

sistema de computacioacuten

Extraiacutedo del estaacutendar 729 del IEEE4

Considerando esta definicioacuten el concepto de software va maacutes allaacute de los programas de coacutemputo en sus distintos estados coacutedigo fuente binario o ejecutable tambieacuten su documentacioacuten datos a procesar e informacioacuten de usuario forman parte del software es decir abarca todo lo intangible todo lo no fiacutesico relacionado

El teacutermino laquosoftwareraquo fue usado por primera vez en este sentido por John W Tukey en 1957 En las ciencias de la computacioacuten y la ingenieriacutea de software el software es toda la informacioacuten procesada por los sistemas informaacuteticos programas y datos El concepto de leer diferentes secuencias de instrucciones desde la memoria de un dispositivo para controlar los caacutelculos fue introducido por Charles Babbage como parte de su maacutequina diferencial La teoriacutea que forma la base de la mayor parte del software moderno fue propuesta por vez primera por Alan Turing en su ensayo de 1936 Los nuacutemeros computables con una aplicacioacuten al problema de decisioacuten

Clasificacioacuten del software

Si bien esta distincioacuten es en cierto modo arbitraria y a veces confusa a los fines praacutecticos se puede clasificar al software en tres grandes tipos

Software de sistema Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles de la computadora en particular que se use aislaacutendolo especialmente del procesamiento referido a las caracteriacutesticas internas de memoria discos puertos y dispositivos de comunicaciones impresoras pantallas teclados etc El software de sistema le procura al usuario y programador adecuadas interfaces de alto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

nivel herramientas y utilidades de apoyo que permiten su mantenimiento Incluye entre otros

o Sistemas operativos o Controladores de dispositivos o Herramientas de diagnoacutestico o Herramientas de Correccioacuten y Optimizacioacuten o Servidores o Utilidades

Software de programacioacuten Es el conjunto de herramientas que permiten al programador desarrollar programas informaacuteticos usando diferentes alternativas y lenguajes de programacioacuten de una manera praacutectica Incluye entre otros

o Editores de texto o Compiladores o Inteacuterpretes o Enlazadores o Depuradores o Entornos de Desarrollo Integrados (IDE) Agrupan las anteriores

herramientas usualmente en un entorno visual de forma tal que el programador no necesite introducir muacuteltiples comandos para compilar interpretar depurar etc Habitualmente cuentan con una avanzada interfaz graacutefica de usuario (GUI)

Software de aplicacioacuten Es aquel que permite a los usuarios llevar a cabo una o varias tareas especiacuteficas en cualquier campo de actividad susceptible de ser automatizado o asistido con especial eacutenfasis en los negocios Incluye entre otros

o Aplicaciones para Control de sistemas y automatizacioacuten industrial o Aplicaciones ofimaacuteticas o Software educativo o Software empresarial o Bases de datos o Telecomunicaciones (pej internet y toda su estructura loacutegica) o Videojuegos o Software meacutedico o Software de Caacutelculo Numeacuterico y simboacutelico o Software de Disentildeo Asistido (CAD) o Software de Control Numeacuterico (CAM)

Proceso de creacioacuten del software

Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solucioacuten de un problema u obtencioacuten de un producto en este caso particular para lograr la obtencioacuten de un producto software que resuelva un problema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El proceso de creacioacuten de software puede llegar a ser muy complejo dependiendo de su porte caracteriacutesticas y criticidad del mismo Por ejemplo la creacioacuten de un sistema operativo es una tarea que requiere proyecto gestioacuten numerosos recursos y todo un equipo disciplinado de trabajo En el otro extremo si se trata de un sencillo programa (por ejemplo la resolucioacuten de una ecuacioacuten de segundo orden) eacuteste puede ser realizado por un solo programador (incluso aficionado) faacutecilmente Es asiacute que normalmente se dividen en tres categoriacuteas seguacuten su tamantildeo (liacuteneas de coacutedigo) yo costo de Pequentildeo Mediano y Gran porte Existen varias metodologiacuteas para estimarlo una de las maacutes populares es el sistema COCOMO que provee meacutetodos y un software (programa) que calcula y provee una estimacioacuten de todos los costos de produccioacuten en un proyecto software (relacioacuten horashombre costo monetario cantidad de liacuteneas fuente de acuerdo a lenguaje usado etc)

Considerando los de gran porte es necesario realizar tantas y tan complejas tareas tanto teacutecnicas de gerenciamiento fuerte gestioacuten y anaacutelisis diversos (entre otras) que toda una ingenieriacutea hace falta para su estudio y realizacioacuten es la Ingenieriacutea de Software

En tanto que en los de mediano porte pequentildeos equipos de trabajo (incluso un avezado analista-programador solitario) pueden realizar la tarea Aunque siempre en casos de mediano y gran porte (y a veces tambieacuten en algunos de pequentildeo porte seguacuten su complejidad) se deben seguir ciertas etapas que son necesarias para la construccioacuten del software Tales etapas si bien deben existir son flexibles en su forma de aplicacioacuten de acuerdo a la metodologiacutea o Proceso de Desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso)

Los procesos de desarrollo de software poseen reglas preestablecidas y deben ser aplicados en la creacioacuten del software de mediano y gran porte ya que en caso contrario lo maacutes seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos y con variedad de fallos inaceptables (fracasan en pocas palabras) Entre tales procesos los hay aacutegiles o livianos (ejemplo XP) pesados y lentos (ejemplo RUP) y variantes intermedias y normalmente se aplican de acuerdo al tipo porte y tipologiacutea del software a desarrollar a criterio del liacuteder (si lo hay) del equipo de desarrollo Algunos de esos procesos son Extreme Programming (XP) Rational Unified Process (RUP) Feature Driven Development (FDD) etc

Cualquiera sea el proceso utilizado y aplicado al desarrollo del software (RUP FDD etc) y casi independientemente de eacutel siempre se debe aplicar un Modelo de Ciclo de Vida5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Se estima que del total de proyectos software grandes emprendidos un 28 fracasan un 46 caen en severas modificaciones que lo retrasan y un 26 son totalmente exitosos 6

Cuando un proyecto fracasa rara vez es debido a fallas teacutecnicas la principal causa de fallos y fracasos es la falta de aplicacioacuten de una buena metodologiacutea o proceso de desarrollo Entre otras una fuerte tendencia desde hace pocas deacutecadas es mejorar las metodologiacuteas o procesos de desarrollo o crear nuevas y concientizar a los profesionales en su utilizacioacuten adecuada Normalmente los especialistas en el estudio y desarrollo de estas aacutereas (metodologiacuteas) y afines (tales como modelos y hasta la gestioacuten misma de los proyectos) son los Ingenieros en Software es su orientacioacuten Los especialistas en cualquier otra aacuterea de desarrollo informaacutetico (analista programador Lic en Informaacutetica Ingeniero en Informaacutetica Ingeniero de Sistemas etc) normalmente aplican sus conocimientos especializados pero utilizando modelos paradigmas y procesos ya elaborados

Es comuacuten para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologiacuteas normalmente un hiacutebrido de los procesos anteriores y a veces con criterios propios

El proceso de desarrollo puede involucrar numerosas y variadas tareas5 desde lo administrativo pasando por lo teacutecnico y hasta la gestioacuten y el gerenciamiento Pero casi rigurosamente siempre se cumplen ciertas etapas miacutenimas las que se pueden resumir como sigue

Captura Elicitacioacuten7 Especificacioacuten y Anaacutelisis de requisitos (ERS) Disentildeo Codificacioacuten Pruebas (unitarias y de integracioacuten) Instalacioacuten y paso a Produccioacuten Mantenimiento

En las anteriores etapas pueden variar ligeramente sus nombres o ser maacutes globales o contrariamente ser maacutes refinadas por ejemplo indicar como una uacutenica fase (a los fines documentales e interpretativos) de Anaacutelisis y Disentildeo o indicar como Implementacioacuten lo que estaacute dicho como Codificacioacuten pero en rigor todas existen e incluyen baacutesicamentelas mismas tareas especiacuteficas

En el apartado 4 del presente artiacuteculo se brindan mayores detalles de cada una de las listadas etapas

Modelos de proceso o ciclo de vida

Para cada una las fases o etapas listadas en el iacutetem anterior existen sub-etapas (o tareas) El modelo de proceso o modelo de ciclo de vida utilizado para el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

desarrollo define el orden para las tareas o actividades involucradas5 tambieacuten definen la coordinacioacuten entre ellas enlace y realimentacioacuten entre las mencionadas etapas Entre los maacutes conocidos se puede mencionar modelo en cascada o secuencial modelo espiral modelo iterativo incremental De los antedichos hay a su vez algunas variantes o alternativas maacutes o menos atractivas seguacuten sea la aplicacioacuten requerida y sus requisitos6

Modelo cascada

Este aunque es maacutes comuacutenmente conocido como modelo en cascada es tambieacuten llamado modelo claacutesico modelo tradicional o modelo lineal secuencial

El modelo en cascada puro difiacutecilmente se utilice tal cual pues esto implicariacutea un previo y absoluto conocimiento de los requisitos la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores ello soacutelo podriacutea ser aplicable a escasos y pequentildeos desarrollos de sistemas En estas circunstancias el paso de una etapa a otra de las mencionadas seriacutea sin retorno por ejemplo pasar del Disentildeo a la Codificacioacuten implicariacutea un disentildeo exacto y sin errores ni probable modificacioacuten o evolucioacuten codifique lo disentildeado que no habraacuten en absoluto variantes ni errores Esto es utoacutepico ya que intriacutensecamente el software es de caraacutecter evolutivo cambiante y difiacutecilmente libre de errores tanto durante su desarrollo como durante su vida operativa5

Fig 2 - Modelo cascada puro o secuencial para el ciclo de vida del software

Alguacuten cambio durante la ejecucioacuten de una cualquiera de las etapas en este modelo secuencial implicariacutea reiniciar desde el principio todo el ciclo completo lo cual redundariacutea en altos costos de tiempo y desarrollo La figura 2 muestra un posible esquema de el modelo en cuestioacuten5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Sin embargo el modelo cascada en algunas de sus variantes es uno de los actualmente maacutes utilizados8 por su eficacia y simplicidad maacutes que nada en software de pequentildeo y algunos de mediano porte pero nunca (o muy rara vez) se lo usa en su forma pura como se dijo anteriormente En lugar de ello siempre se produce alguna realimentacioacuten entre etapas que no es completamente predecible ni riacutegida esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas cambios o evoluciones durante el ciclo de vida Asiacute por ejemplo una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al disentildeo del sistema pero durante esta uacuteltima fase lo maacutes probable es que se deban realizar ajustes en los requisitos (aunque sean miacutenimos) ya sea por fallas detectadas ambiguumledades o bien por que los propios requisitos han cambiado o evolucionado con lo cual se debe retornar a la primera o previa etapa hacer los pertinentes reajustes y luego continuar nuevamente con el disentildeo esto uacuteltimo se conoce como realimentacioacuten Lo normal en el modelo cascada seraacute entonces la aplicacioacuten del mismo con sus etapas realimentadas de alguna forma permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido

De esta manera se obtiene un modelo cascada realimentado que puede ser esquematizado como lo ilustra la figura 3

Fig 3 - Modelo cascada realimentado para el ciclo de vida

Lo dicho es a grandes rasgos la forma y utilizacioacuten de este modelo uno de los maacutes usados y populares5 El modelo Cascada Realimentado resulta muy atractivo hasta ideal si el proyecto presenta alta rigideacutez (pocos o ninguacuten cambio no evolutivo) los requisitos son muy claros y estaacuten correctamente especificados8

Hay maacutes variantes similares al modelo refino de etapas (maacutes estapas menores y maacutes especiacuteficas) o incluso mostrar menos etapas de las indicadas aunque en tal

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

caso la faltante estaraacute dentro de alguna otra El orden de esas fases indicadas en el iacutetem previo es el loacutegico y adecuado pero advieacutertase como se dijo que normalmente habraacute realimentacioacuten hacia atraacutes

El modelo lineal o en Cascada es el paradigma maacutes antiguo y extensamente utilizado sin embargo las criacuteticas a eacutel (ver desventajas) han puesto en duda su eficacia Pese a todo tiene un lugar muy importante en la Ingenieriacutea de software y continuacutea siendo el maacutes utilizado y siempre es mejor que un enfoque al azar8

Desventajas del modelo cascada5

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto Si los cambios se producen en etapa madura (codificacioacuten o prueba) pueden ser catastroacuteficos para un proyecto grande

No es frecuente que el cliente o usuario final explicite clara y completamente los requisitos (etapa de inicio) y el modelo lineal lo requiere La incertidumbre natural en los comienzos es luego difiacutecil de acomodar8

El cliente debe tener paciencia ya que el software no estaraacute disponible hasta muy avanzado el proyecto Un error detectado por el cliente (en fase de operacioacuten) puede ser desastroso implicando reinicio del proyecto con altos costos

Modelos evolutivos

El software evoluciona con el tiempo Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo por lo que se debe introducir una versioacuten funcional limitada de alguna forma para aliviar las presiones competitivas

En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que esteacuten disentildeados para acomodarse a una evolucioacuten temporal o progresiva donde los requisitos centrales son conocidos de antemano aunque no esteacuten bien definidos a nivel detalle

En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software se plantea como estaacutetico con requisitos bien conocidos y definidos desde el inicio5

Los evolutivos son modelos iterativos permiten desarrollar versiones cada vez maacutes completas y complejas hasta llegar al objetivo final deseado incluso evolucionar maacutes allaacute durante la fase de operacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 2: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

imagenes

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Todos estos componentes forman el hardware y si no estaacuten juntos no

son nada

iquestQueacute es el software El software es una produccioacuten inmaterial del cerebro humano y tal vez una de las estructuras maacutes complicadas que la humanidad conoce De hecho los expertos en computacioacuten auacuten no entienden del todo coacutemo funciona su comportamiento

sus paradojas y sus liacutemites1 Baacutesicamente el software es un plan de funcionamiento para un tipo especial de maacutequina una maacutequina ``virtual o ``abstracta Una vez escrito mediante alguacuten lenguaje de programacioacuten el

software se hace funcionar en ordenadores que temporalmente se convierten en esa maacutequina para la que el programa sirve de plan El software permite poner en relacioacuten al ser humano y a la maacutequina y tambieacuten a las maacutequinas entre siacute Sin ese conjunto de instrucciones programadas los ordenadores seriacutean objetos inertes como cajas de zapatos sin capacidad siquiera para mostrar algo en la pantalla

Los ordenadores soacutelo procesan lenguaje binario2 pero para las personas este no es un modo vaacutelido de comunicarse (salvo a nivel sinaacuteptico -) Si bien en los

tiempos heroicos de los primeros ordenadores no les quedaba otro remedio que hacerlo los programadores hace mucho que no escriben su coacutedigo en lenguaje binario (denominado teacutecnicamente ``coacutedigo-maacutequina) pues es terriblemente

tedioso improductivo y muy sujeto a errores Hace tiempo que los programadores escriben las instrucciones que ha de ejecutar el procesador de la maacutequina

mediante lenguajes formales llamados ``de alto nivel bastante cercanos al ingleacutes si bien con riacutegidas reglas sintaacutecticas que lo asemejan a los lenguajes

loacutegico-formales Esto facilita enormemente la tarea de escribir programas pero para que esas instrucciones sean comprensibles para el procesador deben ser

convertidas antes a coacutedigo-maacutequina Esa conversioacuten se realiza coacutemodamente con programas especiales llamados compiladores A lo que escribe el programador se

le denomina ``coacutedigo-fuente Al resultado de la ``conversioacuten (compilacioacuten) en lenguaje-maacutequina se le denomina ``coacutedigo-objeto ``binarios o ``ficheros

ejecutables En principio al usuario comuacuten soacutelo le importa este uacuteltimo nivel los ``binarios pero conviene tener clara la distincioacuten entre fuentes y binarios pues es clave para entender el empentildeo de los partidarios del software libre en disponer de

las fuentes

Pero el software libre es mucho maacutes que el derecho de los programadores y de los hackers3 a disponer de las fuentes del coacutedigo significa tambieacuten la libertad de

copiar y redistribuir esos programas Esos derechos o su ausencia condicionan a cualquiera que use un ordenador y han configurado la industria del software y de

la informaacutetica tal y como la conocemos hoy diacutea Tambieacuten ha dado lugar a un

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

movimiento social --el del software libre-- cuya historia reconstruiremos brevemente en las proacuteximas liacuteneas

En la informaacutetica de los antildeos sesenta y setenta y en la cultura hacker que surgioacute en torno a ella se disponiacutea libremente de las herramientas necesarias y del coacutedigo

fuente de la gran mayoriacutea de los programas La colaboracioacuten forma parte desde antiguo de los haacutebitos de la comunidad cientiacutefica y ademaacutes ante la diversidad de plataformas era necesario disponer del coacutedigo cuando se adquiriacutea el programa para poder portarlo al hardware de cada cual Era tan normal como compartir

recetas de cocina y ni siquiera se hablaba de ``software libre pues todo el que queriacutea programar se beneficiaba de ello y veiacutea loacutegico que los demaacutes se pudiesen

beneficiar a su vez Los hackers copiaban los programas intercambiaban sus fuentes podiacutean estudiarlas evaluarlas adaptarlas a sus necesidades y a su

hardware reutilizaban una parte del coacutedigo para hacer nuevos programasEl desarrollo de bienes puacuteblicos basados en ese modelo fue exponencial hasta el

punto de que gran parte de la tecnologiacutea en la que se basa hoy Internet --desde el sistema operativo UNIX hasta los protocolos de red-- procede de esos antildeos

Pero a principios de los antildeos ochenta ese modelo entra en crisis y raacutepidamente comienza a emerger un modelo privatizador y mercantilista Los ordenadores

hasta entonces escasos caros y poco potentes se hacen asequibles cada vez maacutes baratos y potentes y aparece un nuevo negocio el de los productores de software Los programas se empezaron a vender como productos comerciales independientes de las maacutequinas y soacutelo con el coacutedigo binario para ocultar las teacutecnicas de programacioacuten a la competencia La nueva industria del software

comienza a apoyarse en la legislacioacuten sobre propiedad intelectual El mundo UNIX se fragmenta en diversas versiones privatizadas y progresivamente incompatibles entre siacute que los programadores no pueden modificar Lo que era praacutectica habitual se convirtioacute en un delito el hacker que compartiacutea el coacutedigo y cooperaba con otras

personas pasoacute a ser considerado un ``pirata

Al tiempo que los sistemas van hacieacutendose incompatibles entre siacute la comunidad de investigadores se va desmembrando poco a poco Muchos hackers ficharon

por empresas y firmaron contratos en los que se comprometiacutean a no compartir con nadie de fuera los ``secretos de fabricacioacuten (el coacutedigo fuente) Por su parte los laboratorios de investigacioacuten comenzaron a hacer lo mismo y obligaban a sus

hackers a suscribir el mismo tipo de claacuteusulas Para cerrar el ciacuterculo los compiladores los depuradores los editores y demaacutes herramientas imprescindibles para programar eran propietarios y se vendiacutean a precios respetables se trataba de que la programacioacuten ``de verdad soacutelo estuviese en manos de la naciente industria

de software

Hubo hackers que no aceptaron esta nueva situacioacuten y continuaron con sus praacutecticas pero pareciacutea solo una cuestioacuten de tiempo que la industria del software

propietario arrinconara y dejara definitivamente fuera de la ley la cultura

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

cooperativa y confiada de las primeras comunidades de hackers4 Este contexto sirve de base y explica el auge posterior del imperio Microsoft y similares estaba

naciendo el negocio del software propietario y la proacutespera industria de los ordenadores personales

Definicioacuten de software

Probablemente la definicioacuten maacutes formal de software sea la siguiente

Es el conjunto de los programas de coacutemputo procedimientos reglas

documentacioacuten y datos asociados que forman parte de las operaciones de un

sistema de computacioacuten

Extraiacutedo del estaacutendar 729 del IEEE4

Considerando esta definicioacuten el concepto de software va maacutes allaacute de los programas de coacutemputo en sus distintos estados coacutedigo fuente binario o ejecutable tambieacuten su documentacioacuten datos a procesar e informacioacuten de usuario forman parte del software es decir abarca todo lo intangible todo lo no fiacutesico relacionado

El teacutermino laquosoftwareraquo fue usado por primera vez en este sentido por John W Tukey en 1957 En las ciencias de la computacioacuten y la ingenieriacutea de software el software es toda la informacioacuten procesada por los sistemas informaacuteticos programas y datos El concepto de leer diferentes secuencias de instrucciones desde la memoria de un dispositivo para controlar los caacutelculos fue introducido por Charles Babbage como parte de su maacutequina diferencial La teoriacutea que forma la base de la mayor parte del software moderno fue propuesta por vez primera por Alan Turing en su ensayo de 1936 Los nuacutemeros computables con una aplicacioacuten al problema de decisioacuten

Clasificacioacuten del software

Si bien esta distincioacuten es en cierto modo arbitraria y a veces confusa a los fines praacutecticos se puede clasificar al software en tres grandes tipos

Software de sistema Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles de la computadora en particular que se use aislaacutendolo especialmente del procesamiento referido a las caracteriacutesticas internas de memoria discos puertos y dispositivos de comunicaciones impresoras pantallas teclados etc El software de sistema le procura al usuario y programador adecuadas interfaces de alto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

nivel herramientas y utilidades de apoyo que permiten su mantenimiento Incluye entre otros

o Sistemas operativos o Controladores de dispositivos o Herramientas de diagnoacutestico o Herramientas de Correccioacuten y Optimizacioacuten o Servidores o Utilidades

Software de programacioacuten Es el conjunto de herramientas que permiten al programador desarrollar programas informaacuteticos usando diferentes alternativas y lenguajes de programacioacuten de una manera praacutectica Incluye entre otros

o Editores de texto o Compiladores o Inteacuterpretes o Enlazadores o Depuradores o Entornos de Desarrollo Integrados (IDE) Agrupan las anteriores

herramientas usualmente en un entorno visual de forma tal que el programador no necesite introducir muacuteltiples comandos para compilar interpretar depurar etc Habitualmente cuentan con una avanzada interfaz graacutefica de usuario (GUI)

Software de aplicacioacuten Es aquel que permite a los usuarios llevar a cabo una o varias tareas especiacuteficas en cualquier campo de actividad susceptible de ser automatizado o asistido con especial eacutenfasis en los negocios Incluye entre otros

o Aplicaciones para Control de sistemas y automatizacioacuten industrial o Aplicaciones ofimaacuteticas o Software educativo o Software empresarial o Bases de datos o Telecomunicaciones (pej internet y toda su estructura loacutegica) o Videojuegos o Software meacutedico o Software de Caacutelculo Numeacuterico y simboacutelico o Software de Disentildeo Asistido (CAD) o Software de Control Numeacuterico (CAM)

Proceso de creacioacuten del software

Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solucioacuten de un problema u obtencioacuten de un producto en este caso particular para lograr la obtencioacuten de un producto software que resuelva un problema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El proceso de creacioacuten de software puede llegar a ser muy complejo dependiendo de su porte caracteriacutesticas y criticidad del mismo Por ejemplo la creacioacuten de un sistema operativo es una tarea que requiere proyecto gestioacuten numerosos recursos y todo un equipo disciplinado de trabajo En el otro extremo si se trata de un sencillo programa (por ejemplo la resolucioacuten de una ecuacioacuten de segundo orden) eacuteste puede ser realizado por un solo programador (incluso aficionado) faacutecilmente Es asiacute que normalmente se dividen en tres categoriacuteas seguacuten su tamantildeo (liacuteneas de coacutedigo) yo costo de Pequentildeo Mediano y Gran porte Existen varias metodologiacuteas para estimarlo una de las maacutes populares es el sistema COCOMO que provee meacutetodos y un software (programa) que calcula y provee una estimacioacuten de todos los costos de produccioacuten en un proyecto software (relacioacuten horashombre costo monetario cantidad de liacuteneas fuente de acuerdo a lenguaje usado etc)

Considerando los de gran porte es necesario realizar tantas y tan complejas tareas tanto teacutecnicas de gerenciamiento fuerte gestioacuten y anaacutelisis diversos (entre otras) que toda una ingenieriacutea hace falta para su estudio y realizacioacuten es la Ingenieriacutea de Software

En tanto que en los de mediano porte pequentildeos equipos de trabajo (incluso un avezado analista-programador solitario) pueden realizar la tarea Aunque siempre en casos de mediano y gran porte (y a veces tambieacuten en algunos de pequentildeo porte seguacuten su complejidad) se deben seguir ciertas etapas que son necesarias para la construccioacuten del software Tales etapas si bien deben existir son flexibles en su forma de aplicacioacuten de acuerdo a la metodologiacutea o Proceso de Desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso)

Los procesos de desarrollo de software poseen reglas preestablecidas y deben ser aplicados en la creacioacuten del software de mediano y gran porte ya que en caso contrario lo maacutes seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos y con variedad de fallos inaceptables (fracasan en pocas palabras) Entre tales procesos los hay aacutegiles o livianos (ejemplo XP) pesados y lentos (ejemplo RUP) y variantes intermedias y normalmente se aplican de acuerdo al tipo porte y tipologiacutea del software a desarrollar a criterio del liacuteder (si lo hay) del equipo de desarrollo Algunos de esos procesos son Extreme Programming (XP) Rational Unified Process (RUP) Feature Driven Development (FDD) etc

Cualquiera sea el proceso utilizado y aplicado al desarrollo del software (RUP FDD etc) y casi independientemente de eacutel siempre se debe aplicar un Modelo de Ciclo de Vida5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Se estima que del total de proyectos software grandes emprendidos un 28 fracasan un 46 caen en severas modificaciones que lo retrasan y un 26 son totalmente exitosos 6

Cuando un proyecto fracasa rara vez es debido a fallas teacutecnicas la principal causa de fallos y fracasos es la falta de aplicacioacuten de una buena metodologiacutea o proceso de desarrollo Entre otras una fuerte tendencia desde hace pocas deacutecadas es mejorar las metodologiacuteas o procesos de desarrollo o crear nuevas y concientizar a los profesionales en su utilizacioacuten adecuada Normalmente los especialistas en el estudio y desarrollo de estas aacutereas (metodologiacuteas) y afines (tales como modelos y hasta la gestioacuten misma de los proyectos) son los Ingenieros en Software es su orientacioacuten Los especialistas en cualquier otra aacuterea de desarrollo informaacutetico (analista programador Lic en Informaacutetica Ingeniero en Informaacutetica Ingeniero de Sistemas etc) normalmente aplican sus conocimientos especializados pero utilizando modelos paradigmas y procesos ya elaborados

Es comuacuten para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologiacuteas normalmente un hiacutebrido de los procesos anteriores y a veces con criterios propios

El proceso de desarrollo puede involucrar numerosas y variadas tareas5 desde lo administrativo pasando por lo teacutecnico y hasta la gestioacuten y el gerenciamiento Pero casi rigurosamente siempre se cumplen ciertas etapas miacutenimas las que se pueden resumir como sigue

Captura Elicitacioacuten7 Especificacioacuten y Anaacutelisis de requisitos (ERS) Disentildeo Codificacioacuten Pruebas (unitarias y de integracioacuten) Instalacioacuten y paso a Produccioacuten Mantenimiento

En las anteriores etapas pueden variar ligeramente sus nombres o ser maacutes globales o contrariamente ser maacutes refinadas por ejemplo indicar como una uacutenica fase (a los fines documentales e interpretativos) de Anaacutelisis y Disentildeo o indicar como Implementacioacuten lo que estaacute dicho como Codificacioacuten pero en rigor todas existen e incluyen baacutesicamentelas mismas tareas especiacuteficas

En el apartado 4 del presente artiacuteculo se brindan mayores detalles de cada una de las listadas etapas

Modelos de proceso o ciclo de vida

Para cada una las fases o etapas listadas en el iacutetem anterior existen sub-etapas (o tareas) El modelo de proceso o modelo de ciclo de vida utilizado para el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

desarrollo define el orden para las tareas o actividades involucradas5 tambieacuten definen la coordinacioacuten entre ellas enlace y realimentacioacuten entre las mencionadas etapas Entre los maacutes conocidos se puede mencionar modelo en cascada o secuencial modelo espiral modelo iterativo incremental De los antedichos hay a su vez algunas variantes o alternativas maacutes o menos atractivas seguacuten sea la aplicacioacuten requerida y sus requisitos6

Modelo cascada

Este aunque es maacutes comuacutenmente conocido como modelo en cascada es tambieacuten llamado modelo claacutesico modelo tradicional o modelo lineal secuencial

El modelo en cascada puro difiacutecilmente se utilice tal cual pues esto implicariacutea un previo y absoluto conocimiento de los requisitos la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores ello soacutelo podriacutea ser aplicable a escasos y pequentildeos desarrollos de sistemas En estas circunstancias el paso de una etapa a otra de las mencionadas seriacutea sin retorno por ejemplo pasar del Disentildeo a la Codificacioacuten implicariacutea un disentildeo exacto y sin errores ni probable modificacioacuten o evolucioacuten codifique lo disentildeado que no habraacuten en absoluto variantes ni errores Esto es utoacutepico ya que intriacutensecamente el software es de caraacutecter evolutivo cambiante y difiacutecilmente libre de errores tanto durante su desarrollo como durante su vida operativa5

Fig 2 - Modelo cascada puro o secuencial para el ciclo de vida del software

Alguacuten cambio durante la ejecucioacuten de una cualquiera de las etapas en este modelo secuencial implicariacutea reiniciar desde el principio todo el ciclo completo lo cual redundariacutea en altos costos de tiempo y desarrollo La figura 2 muestra un posible esquema de el modelo en cuestioacuten5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Sin embargo el modelo cascada en algunas de sus variantes es uno de los actualmente maacutes utilizados8 por su eficacia y simplicidad maacutes que nada en software de pequentildeo y algunos de mediano porte pero nunca (o muy rara vez) se lo usa en su forma pura como se dijo anteriormente En lugar de ello siempre se produce alguna realimentacioacuten entre etapas que no es completamente predecible ni riacutegida esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas cambios o evoluciones durante el ciclo de vida Asiacute por ejemplo una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al disentildeo del sistema pero durante esta uacuteltima fase lo maacutes probable es que se deban realizar ajustes en los requisitos (aunque sean miacutenimos) ya sea por fallas detectadas ambiguumledades o bien por que los propios requisitos han cambiado o evolucionado con lo cual se debe retornar a la primera o previa etapa hacer los pertinentes reajustes y luego continuar nuevamente con el disentildeo esto uacuteltimo se conoce como realimentacioacuten Lo normal en el modelo cascada seraacute entonces la aplicacioacuten del mismo con sus etapas realimentadas de alguna forma permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido

De esta manera se obtiene un modelo cascada realimentado que puede ser esquematizado como lo ilustra la figura 3

Fig 3 - Modelo cascada realimentado para el ciclo de vida

Lo dicho es a grandes rasgos la forma y utilizacioacuten de este modelo uno de los maacutes usados y populares5 El modelo Cascada Realimentado resulta muy atractivo hasta ideal si el proyecto presenta alta rigideacutez (pocos o ninguacuten cambio no evolutivo) los requisitos son muy claros y estaacuten correctamente especificados8

Hay maacutes variantes similares al modelo refino de etapas (maacutes estapas menores y maacutes especiacuteficas) o incluso mostrar menos etapas de las indicadas aunque en tal

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

caso la faltante estaraacute dentro de alguna otra El orden de esas fases indicadas en el iacutetem previo es el loacutegico y adecuado pero advieacutertase como se dijo que normalmente habraacute realimentacioacuten hacia atraacutes

El modelo lineal o en Cascada es el paradigma maacutes antiguo y extensamente utilizado sin embargo las criacuteticas a eacutel (ver desventajas) han puesto en duda su eficacia Pese a todo tiene un lugar muy importante en la Ingenieriacutea de software y continuacutea siendo el maacutes utilizado y siempre es mejor que un enfoque al azar8

Desventajas del modelo cascada5

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto Si los cambios se producen en etapa madura (codificacioacuten o prueba) pueden ser catastroacuteficos para un proyecto grande

No es frecuente que el cliente o usuario final explicite clara y completamente los requisitos (etapa de inicio) y el modelo lineal lo requiere La incertidumbre natural en los comienzos es luego difiacutecil de acomodar8

El cliente debe tener paciencia ya que el software no estaraacute disponible hasta muy avanzado el proyecto Un error detectado por el cliente (en fase de operacioacuten) puede ser desastroso implicando reinicio del proyecto con altos costos

Modelos evolutivos

El software evoluciona con el tiempo Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo por lo que se debe introducir una versioacuten funcional limitada de alguna forma para aliviar las presiones competitivas

En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que esteacuten disentildeados para acomodarse a una evolucioacuten temporal o progresiva donde los requisitos centrales son conocidos de antemano aunque no esteacuten bien definidos a nivel detalle

En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software se plantea como estaacutetico con requisitos bien conocidos y definidos desde el inicio5

Los evolutivos son modelos iterativos permiten desarrollar versiones cada vez maacutes completas y complejas hasta llegar al objetivo final deseado incluso evolucionar maacutes allaacute durante la fase de operacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 3: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Todos estos componentes forman el hardware y si no estaacuten juntos no

son nada

iquestQueacute es el software El software es una produccioacuten inmaterial del cerebro humano y tal vez una de las estructuras maacutes complicadas que la humanidad conoce De hecho los expertos en computacioacuten auacuten no entienden del todo coacutemo funciona su comportamiento

sus paradojas y sus liacutemites1 Baacutesicamente el software es un plan de funcionamiento para un tipo especial de maacutequina una maacutequina ``virtual o ``abstracta Una vez escrito mediante alguacuten lenguaje de programacioacuten el

software se hace funcionar en ordenadores que temporalmente se convierten en esa maacutequina para la que el programa sirve de plan El software permite poner en relacioacuten al ser humano y a la maacutequina y tambieacuten a las maacutequinas entre siacute Sin ese conjunto de instrucciones programadas los ordenadores seriacutean objetos inertes como cajas de zapatos sin capacidad siquiera para mostrar algo en la pantalla

Los ordenadores soacutelo procesan lenguaje binario2 pero para las personas este no es un modo vaacutelido de comunicarse (salvo a nivel sinaacuteptico -) Si bien en los

tiempos heroicos de los primeros ordenadores no les quedaba otro remedio que hacerlo los programadores hace mucho que no escriben su coacutedigo en lenguaje binario (denominado teacutecnicamente ``coacutedigo-maacutequina) pues es terriblemente

tedioso improductivo y muy sujeto a errores Hace tiempo que los programadores escriben las instrucciones que ha de ejecutar el procesador de la maacutequina

mediante lenguajes formales llamados ``de alto nivel bastante cercanos al ingleacutes si bien con riacutegidas reglas sintaacutecticas que lo asemejan a los lenguajes

loacutegico-formales Esto facilita enormemente la tarea de escribir programas pero para que esas instrucciones sean comprensibles para el procesador deben ser

convertidas antes a coacutedigo-maacutequina Esa conversioacuten se realiza coacutemodamente con programas especiales llamados compiladores A lo que escribe el programador se

le denomina ``coacutedigo-fuente Al resultado de la ``conversioacuten (compilacioacuten) en lenguaje-maacutequina se le denomina ``coacutedigo-objeto ``binarios o ``ficheros

ejecutables En principio al usuario comuacuten soacutelo le importa este uacuteltimo nivel los ``binarios pero conviene tener clara la distincioacuten entre fuentes y binarios pues es clave para entender el empentildeo de los partidarios del software libre en disponer de

las fuentes

Pero el software libre es mucho maacutes que el derecho de los programadores y de los hackers3 a disponer de las fuentes del coacutedigo significa tambieacuten la libertad de

copiar y redistribuir esos programas Esos derechos o su ausencia condicionan a cualquiera que use un ordenador y han configurado la industria del software y de

la informaacutetica tal y como la conocemos hoy diacutea Tambieacuten ha dado lugar a un

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

movimiento social --el del software libre-- cuya historia reconstruiremos brevemente en las proacuteximas liacuteneas

En la informaacutetica de los antildeos sesenta y setenta y en la cultura hacker que surgioacute en torno a ella se disponiacutea libremente de las herramientas necesarias y del coacutedigo

fuente de la gran mayoriacutea de los programas La colaboracioacuten forma parte desde antiguo de los haacutebitos de la comunidad cientiacutefica y ademaacutes ante la diversidad de plataformas era necesario disponer del coacutedigo cuando se adquiriacutea el programa para poder portarlo al hardware de cada cual Era tan normal como compartir

recetas de cocina y ni siquiera se hablaba de ``software libre pues todo el que queriacutea programar se beneficiaba de ello y veiacutea loacutegico que los demaacutes se pudiesen

beneficiar a su vez Los hackers copiaban los programas intercambiaban sus fuentes podiacutean estudiarlas evaluarlas adaptarlas a sus necesidades y a su

hardware reutilizaban una parte del coacutedigo para hacer nuevos programasEl desarrollo de bienes puacuteblicos basados en ese modelo fue exponencial hasta el

punto de que gran parte de la tecnologiacutea en la que se basa hoy Internet --desde el sistema operativo UNIX hasta los protocolos de red-- procede de esos antildeos

Pero a principios de los antildeos ochenta ese modelo entra en crisis y raacutepidamente comienza a emerger un modelo privatizador y mercantilista Los ordenadores

hasta entonces escasos caros y poco potentes se hacen asequibles cada vez maacutes baratos y potentes y aparece un nuevo negocio el de los productores de software Los programas se empezaron a vender como productos comerciales independientes de las maacutequinas y soacutelo con el coacutedigo binario para ocultar las teacutecnicas de programacioacuten a la competencia La nueva industria del software

comienza a apoyarse en la legislacioacuten sobre propiedad intelectual El mundo UNIX se fragmenta en diversas versiones privatizadas y progresivamente incompatibles entre siacute que los programadores no pueden modificar Lo que era praacutectica habitual se convirtioacute en un delito el hacker que compartiacutea el coacutedigo y cooperaba con otras

personas pasoacute a ser considerado un ``pirata

Al tiempo que los sistemas van hacieacutendose incompatibles entre siacute la comunidad de investigadores se va desmembrando poco a poco Muchos hackers ficharon

por empresas y firmaron contratos en los que se comprometiacutean a no compartir con nadie de fuera los ``secretos de fabricacioacuten (el coacutedigo fuente) Por su parte los laboratorios de investigacioacuten comenzaron a hacer lo mismo y obligaban a sus

hackers a suscribir el mismo tipo de claacuteusulas Para cerrar el ciacuterculo los compiladores los depuradores los editores y demaacutes herramientas imprescindibles para programar eran propietarios y se vendiacutean a precios respetables se trataba de que la programacioacuten ``de verdad soacutelo estuviese en manos de la naciente industria

de software

Hubo hackers que no aceptaron esta nueva situacioacuten y continuaron con sus praacutecticas pero pareciacutea solo una cuestioacuten de tiempo que la industria del software

propietario arrinconara y dejara definitivamente fuera de la ley la cultura

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

cooperativa y confiada de las primeras comunidades de hackers4 Este contexto sirve de base y explica el auge posterior del imperio Microsoft y similares estaba

naciendo el negocio del software propietario y la proacutespera industria de los ordenadores personales

Definicioacuten de software

Probablemente la definicioacuten maacutes formal de software sea la siguiente

Es el conjunto de los programas de coacutemputo procedimientos reglas

documentacioacuten y datos asociados que forman parte de las operaciones de un

sistema de computacioacuten

Extraiacutedo del estaacutendar 729 del IEEE4

Considerando esta definicioacuten el concepto de software va maacutes allaacute de los programas de coacutemputo en sus distintos estados coacutedigo fuente binario o ejecutable tambieacuten su documentacioacuten datos a procesar e informacioacuten de usuario forman parte del software es decir abarca todo lo intangible todo lo no fiacutesico relacionado

El teacutermino laquosoftwareraquo fue usado por primera vez en este sentido por John W Tukey en 1957 En las ciencias de la computacioacuten y la ingenieriacutea de software el software es toda la informacioacuten procesada por los sistemas informaacuteticos programas y datos El concepto de leer diferentes secuencias de instrucciones desde la memoria de un dispositivo para controlar los caacutelculos fue introducido por Charles Babbage como parte de su maacutequina diferencial La teoriacutea que forma la base de la mayor parte del software moderno fue propuesta por vez primera por Alan Turing en su ensayo de 1936 Los nuacutemeros computables con una aplicacioacuten al problema de decisioacuten

Clasificacioacuten del software

Si bien esta distincioacuten es en cierto modo arbitraria y a veces confusa a los fines praacutecticos se puede clasificar al software en tres grandes tipos

Software de sistema Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles de la computadora en particular que se use aislaacutendolo especialmente del procesamiento referido a las caracteriacutesticas internas de memoria discos puertos y dispositivos de comunicaciones impresoras pantallas teclados etc El software de sistema le procura al usuario y programador adecuadas interfaces de alto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

nivel herramientas y utilidades de apoyo que permiten su mantenimiento Incluye entre otros

o Sistemas operativos o Controladores de dispositivos o Herramientas de diagnoacutestico o Herramientas de Correccioacuten y Optimizacioacuten o Servidores o Utilidades

Software de programacioacuten Es el conjunto de herramientas que permiten al programador desarrollar programas informaacuteticos usando diferentes alternativas y lenguajes de programacioacuten de una manera praacutectica Incluye entre otros

o Editores de texto o Compiladores o Inteacuterpretes o Enlazadores o Depuradores o Entornos de Desarrollo Integrados (IDE) Agrupan las anteriores

herramientas usualmente en un entorno visual de forma tal que el programador no necesite introducir muacuteltiples comandos para compilar interpretar depurar etc Habitualmente cuentan con una avanzada interfaz graacutefica de usuario (GUI)

Software de aplicacioacuten Es aquel que permite a los usuarios llevar a cabo una o varias tareas especiacuteficas en cualquier campo de actividad susceptible de ser automatizado o asistido con especial eacutenfasis en los negocios Incluye entre otros

o Aplicaciones para Control de sistemas y automatizacioacuten industrial o Aplicaciones ofimaacuteticas o Software educativo o Software empresarial o Bases de datos o Telecomunicaciones (pej internet y toda su estructura loacutegica) o Videojuegos o Software meacutedico o Software de Caacutelculo Numeacuterico y simboacutelico o Software de Disentildeo Asistido (CAD) o Software de Control Numeacuterico (CAM)

Proceso de creacioacuten del software

Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solucioacuten de un problema u obtencioacuten de un producto en este caso particular para lograr la obtencioacuten de un producto software que resuelva un problema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El proceso de creacioacuten de software puede llegar a ser muy complejo dependiendo de su porte caracteriacutesticas y criticidad del mismo Por ejemplo la creacioacuten de un sistema operativo es una tarea que requiere proyecto gestioacuten numerosos recursos y todo un equipo disciplinado de trabajo En el otro extremo si se trata de un sencillo programa (por ejemplo la resolucioacuten de una ecuacioacuten de segundo orden) eacuteste puede ser realizado por un solo programador (incluso aficionado) faacutecilmente Es asiacute que normalmente se dividen en tres categoriacuteas seguacuten su tamantildeo (liacuteneas de coacutedigo) yo costo de Pequentildeo Mediano y Gran porte Existen varias metodologiacuteas para estimarlo una de las maacutes populares es el sistema COCOMO que provee meacutetodos y un software (programa) que calcula y provee una estimacioacuten de todos los costos de produccioacuten en un proyecto software (relacioacuten horashombre costo monetario cantidad de liacuteneas fuente de acuerdo a lenguaje usado etc)

Considerando los de gran porte es necesario realizar tantas y tan complejas tareas tanto teacutecnicas de gerenciamiento fuerte gestioacuten y anaacutelisis diversos (entre otras) que toda una ingenieriacutea hace falta para su estudio y realizacioacuten es la Ingenieriacutea de Software

En tanto que en los de mediano porte pequentildeos equipos de trabajo (incluso un avezado analista-programador solitario) pueden realizar la tarea Aunque siempre en casos de mediano y gran porte (y a veces tambieacuten en algunos de pequentildeo porte seguacuten su complejidad) se deben seguir ciertas etapas que son necesarias para la construccioacuten del software Tales etapas si bien deben existir son flexibles en su forma de aplicacioacuten de acuerdo a la metodologiacutea o Proceso de Desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso)

Los procesos de desarrollo de software poseen reglas preestablecidas y deben ser aplicados en la creacioacuten del software de mediano y gran porte ya que en caso contrario lo maacutes seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos y con variedad de fallos inaceptables (fracasan en pocas palabras) Entre tales procesos los hay aacutegiles o livianos (ejemplo XP) pesados y lentos (ejemplo RUP) y variantes intermedias y normalmente se aplican de acuerdo al tipo porte y tipologiacutea del software a desarrollar a criterio del liacuteder (si lo hay) del equipo de desarrollo Algunos de esos procesos son Extreme Programming (XP) Rational Unified Process (RUP) Feature Driven Development (FDD) etc

Cualquiera sea el proceso utilizado y aplicado al desarrollo del software (RUP FDD etc) y casi independientemente de eacutel siempre se debe aplicar un Modelo de Ciclo de Vida5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Se estima que del total de proyectos software grandes emprendidos un 28 fracasan un 46 caen en severas modificaciones que lo retrasan y un 26 son totalmente exitosos 6

Cuando un proyecto fracasa rara vez es debido a fallas teacutecnicas la principal causa de fallos y fracasos es la falta de aplicacioacuten de una buena metodologiacutea o proceso de desarrollo Entre otras una fuerte tendencia desde hace pocas deacutecadas es mejorar las metodologiacuteas o procesos de desarrollo o crear nuevas y concientizar a los profesionales en su utilizacioacuten adecuada Normalmente los especialistas en el estudio y desarrollo de estas aacutereas (metodologiacuteas) y afines (tales como modelos y hasta la gestioacuten misma de los proyectos) son los Ingenieros en Software es su orientacioacuten Los especialistas en cualquier otra aacuterea de desarrollo informaacutetico (analista programador Lic en Informaacutetica Ingeniero en Informaacutetica Ingeniero de Sistemas etc) normalmente aplican sus conocimientos especializados pero utilizando modelos paradigmas y procesos ya elaborados

Es comuacuten para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologiacuteas normalmente un hiacutebrido de los procesos anteriores y a veces con criterios propios

El proceso de desarrollo puede involucrar numerosas y variadas tareas5 desde lo administrativo pasando por lo teacutecnico y hasta la gestioacuten y el gerenciamiento Pero casi rigurosamente siempre se cumplen ciertas etapas miacutenimas las que se pueden resumir como sigue

Captura Elicitacioacuten7 Especificacioacuten y Anaacutelisis de requisitos (ERS) Disentildeo Codificacioacuten Pruebas (unitarias y de integracioacuten) Instalacioacuten y paso a Produccioacuten Mantenimiento

En las anteriores etapas pueden variar ligeramente sus nombres o ser maacutes globales o contrariamente ser maacutes refinadas por ejemplo indicar como una uacutenica fase (a los fines documentales e interpretativos) de Anaacutelisis y Disentildeo o indicar como Implementacioacuten lo que estaacute dicho como Codificacioacuten pero en rigor todas existen e incluyen baacutesicamentelas mismas tareas especiacuteficas

En el apartado 4 del presente artiacuteculo se brindan mayores detalles de cada una de las listadas etapas

Modelos de proceso o ciclo de vida

Para cada una las fases o etapas listadas en el iacutetem anterior existen sub-etapas (o tareas) El modelo de proceso o modelo de ciclo de vida utilizado para el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

desarrollo define el orden para las tareas o actividades involucradas5 tambieacuten definen la coordinacioacuten entre ellas enlace y realimentacioacuten entre las mencionadas etapas Entre los maacutes conocidos se puede mencionar modelo en cascada o secuencial modelo espiral modelo iterativo incremental De los antedichos hay a su vez algunas variantes o alternativas maacutes o menos atractivas seguacuten sea la aplicacioacuten requerida y sus requisitos6

Modelo cascada

Este aunque es maacutes comuacutenmente conocido como modelo en cascada es tambieacuten llamado modelo claacutesico modelo tradicional o modelo lineal secuencial

El modelo en cascada puro difiacutecilmente se utilice tal cual pues esto implicariacutea un previo y absoluto conocimiento de los requisitos la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores ello soacutelo podriacutea ser aplicable a escasos y pequentildeos desarrollos de sistemas En estas circunstancias el paso de una etapa a otra de las mencionadas seriacutea sin retorno por ejemplo pasar del Disentildeo a la Codificacioacuten implicariacutea un disentildeo exacto y sin errores ni probable modificacioacuten o evolucioacuten codifique lo disentildeado que no habraacuten en absoluto variantes ni errores Esto es utoacutepico ya que intriacutensecamente el software es de caraacutecter evolutivo cambiante y difiacutecilmente libre de errores tanto durante su desarrollo como durante su vida operativa5

Fig 2 - Modelo cascada puro o secuencial para el ciclo de vida del software

Alguacuten cambio durante la ejecucioacuten de una cualquiera de las etapas en este modelo secuencial implicariacutea reiniciar desde el principio todo el ciclo completo lo cual redundariacutea en altos costos de tiempo y desarrollo La figura 2 muestra un posible esquema de el modelo en cuestioacuten5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Sin embargo el modelo cascada en algunas de sus variantes es uno de los actualmente maacutes utilizados8 por su eficacia y simplicidad maacutes que nada en software de pequentildeo y algunos de mediano porte pero nunca (o muy rara vez) se lo usa en su forma pura como se dijo anteriormente En lugar de ello siempre se produce alguna realimentacioacuten entre etapas que no es completamente predecible ni riacutegida esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas cambios o evoluciones durante el ciclo de vida Asiacute por ejemplo una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al disentildeo del sistema pero durante esta uacuteltima fase lo maacutes probable es que se deban realizar ajustes en los requisitos (aunque sean miacutenimos) ya sea por fallas detectadas ambiguumledades o bien por que los propios requisitos han cambiado o evolucionado con lo cual se debe retornar a la primera o previa etapa hacer los pertinentes reajustes y luego continuar nuevamente con el disentildeo esto uacuteltimo se conoce como realimentacioacuten Lo normal en el modelo cascada seraacute entonces la aplicacioacuten del mismo con sus etapas realimentadas de alguna forma permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido

De esta manera se obtiene un modelo cascada realimentado que puede ser esquematizado como lo ilustra la figura 3

Fig 3 - Modelo cascada realimentado para el ciclo de vida

Lo dicho es a grandes rasgos la forma y utilizacioacuten de este modelo uno de los maacutes usados y populares5 El modelo Cascada Realimentado resulta muy atractivo hasta ideal si el proyecto presenta alta rigideacutez (pocos o ninguacuten cambio no evolutivo) los requisitos son muy claros y estaacuten correctamente especificados8

Hay maacutes variantes similares al modelo refino de etapas (maacutes estapas menores y maacutes especiacuteficas) o incluso mostrar menos etapas de las indicadas aunque en tal

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

caso la faltante estaraacute dentro de alguna otra El orden de esas fases indicadas en el iacutetem previo es el loacutegico y adecuado pero advieacutertase como se dijo que normalmente habraacute realimentacioacuten hacia atraacutes

El modelo lineal o en Cascada es el paradigma maacutes antiguo y extensamente utilizado sin embargo las criacuteticas a eacutel (ver desventajas) han puesto en duda su eficacia Pese a todo tiene un lugar muy importante en la Ingenieriacutea de software y continuacutea siendo el maacutes utilizado y siempre es mejor que un enfoque al azar8

Desventajas del modelo cascada5

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto Si los cambios se producen en etapa madura (codificacioacuten o prueba) pueden ser catastroacuteficos para un proyecto grande

No es frecuente que el cliente o usuario final explicite clara y completamente los requisitos (etapa de inicio) y el modelo lineal lo requiere La incertidumbre natural en los comienzos es luego difiacutecil de acomodar8

El cliente debe tener paciencia ya que el software no estaraacute disponible hasta muy avanzado el proyecto Un error detectado por el cliente (en fase de operacioacuten) puede ser desastroso implicando reinicio del proyecto con altos costos

Modelos evolutivos

El software evoluciona con el tiempo Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo por lo que se debe introducir una versioacuten funcional limitada de alguna forma para aliviar las presiones competitivas

En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que esteacuten disentildeados para acomodarse a una evolucioacuten temporal o progresiva donde los requisitos centrales son conocidos de antemano aunque no esteacuten bien definidos a nivel detalle

En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software se plantea como estaacutetico con requisitos bien conocidos y definidos desde el inicio5

Los evolutivos son modelos iterativos permiten desarrollar versiones cada vez maacutes completas y complejas hasta llegar al objetivo final deseado incluso evolucionar maacutes allaacute durante la fase de operacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 4: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

movimiento social --el del software libre-- cuya historia reconstruiremos brevemente en las proacuteximas liacuteneas

En la informaacutetica de los antildeos sesenta y setenta y en la cultura hacker que surgioacute en torno a ella se disponiacutea libremente de las herramientas necesarias y del coacutedigo

fuente de la gran mayoriacutea de los programas La colaboracioacuten forma parte desde antiguo de los haacutebitos de la comunidad cientiacutefica y ademaacutes ante la diversidad de plataformas era necesario disponer del coacutedigo cuando se adquiriacutea el programa para poder portarlo al hardware de cada cual Era tan normal como compartir

recetas de cocina y ni siquiera se hablaba de ``software libre pues todo el que queriacutea programar se beneficiaba de ello y veiacutea loacutegico que los demaacutes se pudiesen

beneficiar a su vez Los hackers copiaban los programas intercambiaban sus fuentes podiacutean estudiarlas evaluarlas adaptarlas a sus necesidades y a su

hardware reutilizaban una parte del coacutedigo para hacer nuevos programasEl desarrollo de bienes puacuteblicos basados en ese modelo fue exponencial hasta el

punto de que gran parte de la tecnologiacutea en la que se basa hoy Internet --desde el sistema operativo UNIX hasta los protocolos de red-- procede de esos antildeos

Pero a principios de los antildeos ochenta ese modelo entra en crisis y raacutepidamente comienza a emerger un modelo privatizador y mercantilista Los ordenadores

hasta entonces escasos caros y poco potentes se hacen asequibles cada vez maacutes baratos y potentes y aparece un nuevo negocio el de los productores de software Los programas se empezaron a vender como productos comerciales independientes de las maacutequinas y soacutelo con el coacutedigo binario para ocultar las teacutecnicas de programacioacuten a la competencia La nueva industria del software

comienza a apoyarse en la legislacioacuten sobre propiedad intelectual El mundo UNIX se fragmenta en diversas versiones privatizadas y progresivamente incompatibles entre siacute que los programadores no pueden modificar Lo que era praacutectica habitual se convirtioacute en un delito el hacker que compartiacutea el coacutedigo y cooperaba con otras

personas pasoacute a ser considerado un ``pirata

Al tiempo que los sistemas van hacieacutendose incompatibles entre siacute la comunidad de investigadores se va desmembrando poco a poco Muchos hackers ficharon

por empresas y firmaron contratos en los que se comprometiacutean a no compartir con nadie de fuera los ``secretos de fabricacioacuten (el coacutedigo fuente) Por su parte los laboratorios de investigacioacuten comenzaron a hacer lo mismo y obligaban a sus

hackers a suscribir el mismo tipo de claacuteusulas Para cerrar el ciacuterculo los compiladores los depuradores los editores y demaacutes herramientas imprescindibles para programar eran propietarios y se vendiacutean a precios respetables se trataba de que la programacioacuten ``de verdad soacutelo estuviese en manos de la naciente industria

de software

Hubo hackers que no aceptaron esta nueva situacioacuten y continuaron con sus praacutecticas pero pareciacutea solo una cuestioacuten de tiempo que la industria del software

propietario arrinconara y dejara definitivamente fuera de la ley la cultura

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

cooperativa y confiada de las primeras comunidades de hackers4 Este contexto sirve de base y explica el auge posterior del imperio Microsoft y similares estaba

naciendo el negocio del software propietario y la proacutespera industria de los ordenadores personales

Definicioacuten de software

Probablemente la definicioacuten maacutes formal de software sea la siguiente

Es el conjunto de los programas de coacutemputo procedimientos reglas

documentacioacuten y datos asociados que forman parte de las operaciones de un

sistema de computacioacuten

Extraiacutedo del estaacutendar 729 del IEEE4

Considerando esta definicioacuten el concepto de software va maacutes allaacute de los programas de coacutemputo en sus distintos estados coacutedigo fuente binario o ejecutable tambieacuten su documentacioacuten datos a procesar e informacioacuten de usuario forman parte del software es decir abarca todo lo intangible todo lo no fiacutesico relacionado

El teacutermino laquosoftwareraquo fue usado por primera vez en este sentido por John W Tukey en 1957 En las ciencias de la computacioacuten y la ingenieriacutea de software el software es toda la informacioacuten procesada por los sistemas informaacuteticos programas y datos El concepto de leer diferentes secuencias de instrucciones desde la memoria de un dispositivo para controlar los caacutelculos fue introducido por Charles Babbage como parte de su maacutequina diferencial La teoriacutea que forma la base de la mayor parte del software moderno fue propuesta por vez primera por Alan Turing en su ensayo de 1936 Los nuacutemeros computables con una aplicacioacuten al problema de decisioacuten

Clasificacioacuten del software

Si bien esta distincioacuten es en cierto modo arbitraria y a veces confusa a los fines praacutecticos se puede clasificar al software en tres grandes tipos

Software de sistema Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles de la computadora en particular que se use aislaacutendolo especialmente del procesamiento referido a las caracteriacutesticas internas de memoria discos puertos y dispositivos de comunicaciones impresoras pantallas teclados etc El software de sistema le procura al usuario y programador adecuadas interfaces de alto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

nivel herramientas y utilidades de apoyo que permiten su mantenimiento Incluye entre otros

o Sistemas operativos o Controladores de dispositivos o Herramientas de diagnoacutestico o Herramientas de Correccioacuten y Optimizacioacuten o Servidores o Utilidades

Software de programacioacuten Es el conjunto de herramientas que permiten al programador desarrollar programas informaacuteticos usando diferentes alternativas y lenguajes de programacioacuten de una manera praacutectica Incluye entre otros

o Editores de texto o Compiladores o Inteacuterpretes o Enlazadores o Depuradores o Entornos de Desarrollo Integrados (IDE) Agrupan las anteriores

herramientas usualmente en un entorno visual de forma tal que el programador no necesite introducir muacuteltiples comandos para compilar interpretar depurar etc Habitualmente cuentan con una avanzada interfaz graacutefica de usuario (GUI)

Software de aplicacioacuten Es aquel que permite a los usuarios llevar a cabo una o varias tareas especiacuteficas en cualquier campo de actividad susceptible de ser automatizado o asistido con especial eacutenfasis en los negocios Incluye entre otros

o Aplicaciones para Control de sistemas y automatizacioacuten industrial o Aplicaciones ofimaacuteticas o Software educativo o Software empresarial o Bases de datos o Telecomunicaciones (pej internet y toda su estructura loacutegica) o Videojuegos o Software meacutedico o Software de Caacutelculo Numeacuterico y simboacutelico o Software de Disentildeo Asistido (CAD) o Software de Control Numeacuterico (CAM)

Proceso de creacioacuten del software

Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solucioacuten de un problema u obtencioacuten de un producto en este caso particular para lograr la obtencioacuten de un producto software que resuelva un problema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El proceso de creacioacuten de software puede llegar a ser muy complejo dependiendo de su porte caracteriacutesticas y criticidad del mismo Por ejemplo la creacioacuten de un sistema operativo es una tarea que requiere proyecto gestioacuten numerosos recursos y todo un equipo disciplinado de trabajo En el otro extremo si se trata de un sencillo programa (por ejemplo la resolucioacuten de una ecuacioacuten de segundo orden) eacuteste puede ser realizado por un solo programador (incluso aficionado) faacutecilmente Es asiacute que normalmente se dividen en tres categoriacuteas seguacuten su tamantildeo (liacuteneas de coacutedigo) yo costo de Pequentildeo Mediano y Gran porte Existen varias metodologiacuteas para estimarlo una de las maacutes populares es el sistema COCOMO que provee meacutetodos y un software (programa) que calcula y provee una estimacioacuten de todos los costos de produccioacuten en un proyecto software (relacioacuten horashombre costo monetario cantidad de liacuteneas fuente de acuerdo a lenguaje usado etc)

Considerando los de gran porte es necesario realizar tantas y tan complejas tareas tanto teacutecnicas de gerenciamiento fuerte gestioacuten y anaacutelisis diversos (entre otras) que toda una ingenieriacutea hace falta para su estudio y realizacioacuten es la Ingenieriacutea de Software

En tanto que en los de mediano porte pequentildeos equipos de trabajo (incluso un avezado analista-programador solitario) pueden realizar la tarea Aunque siempre en casos de mediano y gran porte (y a veces tambieacuten en algunos de pequentildeo porte seguacuten su complejidad) se deben seguir ciertas etapas que son necesarias para la construccioacuten del software Tales etapas si bien deben existir son flexibles en su forma de aplicacioacuten de acuerdo a la metodologiacutea o Proceso de Desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso)

Los procesos de desarrollo de software poseen reglas preestablecidas y deben ser aplicados en la creacioacuten del software de mediano y gran porte ya que en caso contrario lo maacutes seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos y con variedad de fallos inaceptables (fracasan en pocas palabras) Entre tales procesos los hay aacutegiles o livianos (ejemplo XP) pesados y lentos (ejemplo RUP) y variantes intermedias y normalmente se aplican de acuerdo al tipo porte y tipologiacutea del software a desarrollar a criterio del liacuteder (si lo hay) del equipo de desarrollo Algunos de esos procesos son Extreme Programming (XP) Rational Unified Process (RUP) Feature Driven Development (FDD) etc

Cualquiera sea el proceso utilizado y aplicado al desarrollo del software (RUP FDD etc) y casi independientemente de eacutel siempre se debe aplicar un Modelo de Ciclo de Vida5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Se estima que del total de proyectos software grandes emprendidos un 28 fracasan un 46 caen en severas modificaciones que lo retrasan y un 26 son totalmente exitosos 6

Cuando un proyecto fracasa rara vez es debido a fallas teacutecnicas la principal causa de fallos y fracasos es la falta de aplicacioacuten de una buena metodologiacutea o proceso de desarrollo Entre otras una fuerte tendencia desde hace pocas deacutecadas es mejorar las metodologiacuteas o procesos de desarrollo o crear nuevas y concientizar a los profesionales en su utilizacioacuten adecuada Normalmente los especialistas en el estudio y desarrollo de estas aacutereas (metodologiacuteas) y afines (tales como modelos y hasta la gestioacuten misma de los proyectos) son los Ingenieros en Software es su orientacioacuten Los especialistas en cualquier otra aacuterea de desarrollo informaacutetico (analista programador Lic en Informaacutetica Ingeniero en Informaacutetica Ingeniero de Sistemas etc) normalmente aplican sus conocimientos especializados pero utilizando modelos paradigmas y procesos ya elaborados

Es comuacuten para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologiacuteas normalmente un hiacutebrido de los procesos anteriores y a veces con criterios propios

El proceso de desarrollo puede involucrar numerosas y variadas tareas5 desde lo administrativo pasando por lo teacutecnico y hasta la gestioacuten y el gerenciamiento Pero casi rigurosamente siempre se cumplen ciertas etapas miacutenimas las que se pueden resumir como sigue

Captura Elicitacioacuten7 Especificacioacuten y Anaacutelisis de requisitos (ERS) Disentildeo Codificacioacuten Pruebas (unitarias y de integracioacuten) Instalacioacuten y paso a Produccioacuten Mantenimiento

En las anteriores etapas pueden variar ligeramente sus nombres o ser maacutes globales o contrariamente ser maacutes refinadas por ejemplo indicar como una uacutenica fase (a los fines documentales e interpretativos) de Anaacutelisis y Disentildeo o indicar como Implementacioacuten lo que estaacute dicho como Codificacioacuten pero en rigor todas existen e incluyen baacutesicamentelas mismas tareas especiacuteficas

En el apartado 4 del presente artiacuteculo se brindan mayores detalles de cada una de las listadas etapas

Modelos de proceso o ciclo de vida

Para cada una las fases o etapas listadas en el iacutetem anterior existen sub-etapas (o tareas) El modelo de proceso o modelo de ciclo de vida utilizado para el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

desarrollo define el orden para las tareas o actividades involucradas5 tambieacuten definen la coordinacioacuten entre ellas enlace y realimentacioacuten entre las mencionadas etapas Entre los maacutes conocidos se puede mencionar modelo en cascada o secuencial modelo espiral modelo iterativo incremental De los antedichos hay a su vez algunas variantes o alternativas maacutes o menos atractivas seguacuten sea la aplicacioacuten requerida y sus requisitos6

Modelo cascada

Este aunque es maacutes comuacutenmente conocido como modelo en cascada es tambieacuten llamado modelo claacutesico modelo tradicional o modelo lineal secuencial

El modelo en cascada puro difiacutecilmente se utilice tal cual pues esto implicariacutea un previo y absoluto conocimiento de los requisitos la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores ello soacutelo podriacutea ser aplicable a escasos y pequentildeos desarrollos de sistemas En estas circunstancias el paso de una etapa a otra de las mencionadas seriacutea sin retorno por ejemplo pasar del Disentildeo a la Codificacioacuten implicariacutea un disentildeo exacto y sin errores ni probable modificacioacuten o evolucioacuten codifique lo disentildeado que no habraacuten en absoluto variantes ni errores Esto es utoacutepico ya que intriacutensecamente el software es de caraacutecter evolutivo cambiante y difiacutecilmente libre de errores tanto durante su desarrollo como durante su vida operativa5

Fig 2 - Modelo cascada puro o secuencial para el ciclo de vida del software

Alguacuten cambio durante la ejecucioacuten de una cualquiera de las etapas en este modelo secuencial implicariacutea reiniciar desde el principio todo el ciclo completo lo cual redundariacutea en altos costos de tiempo y desarrollo La figura 2 muestra un posible esquema de el modelo en cuestioacuten5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Sin embargo el modelo cascada en algunas de sus variantes es uno de los actualmente maacutes utilizados8 por su eficacia y simplicidad maacutes que nada en software de pequentildeo y algunos de mediano porte pero nunca (o muy rara vez) se lo usa en su forma pura como se dijo anteriormente En lugar de ello siempre se produce alguna realimentacioacuten entre etapas que no es completamente predecible ni riacutegida esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas cambios o evoluciones durante el ciclo de vida Asiacute por ejemplo una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al disentildeo del sistema pero durante esta uacuteltima fase lo maacutes probable es que se deban realizar ajustes en los requisitos (aunque sean miacutenimos) ya sea por fallas detectadas ambiguumledades o bien por que los propios requisitos han cambiado o evolucionado con lo cual se debe retornar a la primera o previa etapa hacer los pertinentes reajustes y luego continuar nuevamente con el disentildeo esto uacuteltimo se conoce como realimentacioacuten Lo normal en el modelo cascada seraacute entonces la aplicacioacuten del mismo con sus etapas realimentadas de alguna forma permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido

De esta manera se obtiene un modelo cascada realimentado que puede ser esquematizado como lo ilustra la figura 3

Fig 3 - Modelo cascada realimentado para el ciclo de vida

Lo dicho es a grandes rasgos la forma y utilizacioacuten de este modelo uno de los maacutes usados y populares5 El modelo Cascada Realimentado resulta muy atractivo hasta ideal si el proyecto presenta alta rigideacutez (pocos o ninguacuten cambio no evolutivo) los requisitos son muy claros y estaacuten correctamente especificados8

Hay maacutes variantes similares al modelo refino de etapas (maacutes estapas menores y maacutes especiacuteficas) o incluso mostrar menos etapas de las indicadas aunque en tal

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

caso la faltante estaraacute dentro de alguna otra El orden de esas fases indicadas en el iacutetem previo es el loacutegico y adecuado pero advieacutertase como se dijo que normalmente habraacute realimentacioacuten hacia atraacutes

El modelo lineal o en Cascada es el paradigma maacutes antiguo y extensamente utilizado sin embargo las criacuteticas a eacutel (ver desventajas) han puesto en duda su eficacia Pese a todo tiene un lugar muy importante en la Ingenieriacutea de software y continuacutea siendo el maacutes utilizado y siempre es mejor que un enfoque al azar8

Desventajas del modelo cascada5

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto Si los cambios se producen en etapa madura (codificacioacuten o prueba) pueden ser catastroacuteficos para un proyecto grande

No es frecuente que el cliente o usuario final explicite clara y completamente los requisitos (etapa de inicio) y el modelo lineal lo requiere La incertidumbre natural en los comienzos es luego difiacutecil de acomodar8

El cliente debe tener paciencia ya que el software no estaraacute disponible hasta muy avanzado el proyecto Un error detectado por el cliente (en fase de operacioacuten) puede ser desastroso implicando reinicio del proyecto con altos costos

Modelos evolutivos

El software evoluciona con el tiempo Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo por lo que se debe introducir una versioacuten funcional limitada de alguna forma para aliviar las presiones competitivas

En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que esteacuten disentildeados para acomodarse a una evolucioacuten temporal o progresiva donde los requisitos centrales son conocidos de antemano aunque no esteacuten bien definidos a nivel detalle

En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software se plantea como estaacutetico con requisitos bien conocidos y definidos desde el inicio5

Los evolutivos son modelos iterativos permiten desarrollar versiones cada vez maacutes completas y complejas hasta llegar al objetivo final deseado incluso evolucionar maacutes allaacute durante la fase de operacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 5: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

cooperativa y confiada de las primeras comunidades de hackers4 Este contexto sirve de base y explica el auge posterior del imperio Microsoft y similares estaba

naciendo el negocio del software propietario y la proacutespera industria de los ordenadores personales

Definicioacuten de software

Probablemente la definicioacuten maacutes formal de software sea la siguiente

Es el conjunto de los programas de coacutemputo procedimientos reglas

documentacioacuten y datos asociados que forman parte de las operaciones de un

sistema de computacioacuten

Extraiacutedo del estaacutendar 729 del IEEE4

Considerando esta definicioacuten el concepto de software va maacutes allaacute de los programas de coacutemputo en sus distintos estados coacutedigo fuente binario o ejecutable tambieacuten su documentacioacuten datos a procesar e informacioacuten de usuario forman parte del software es decir abarca todo lo intangible todo lo no fiacutesico relacionado

El teacutermino laquosoftwareraquo fue usado por primera vez en este sentido por John W Tukey en 1957 En las ciencias de la computacioacuten y la ingenieriacutea de software el software es toda la informacioacuten procesada por los sistemas informaacuteticos programas y datos El concepto de leer diferentes secuencias de instrucciones desde la memoria de un dispositivo para controlar los caacutelculos fue introducido por Charles Babbage como parte de su maacutequina diferencial La teoriacutea que forma la base de la mayor parte del software moderno fue propuesta por vez primera por Alan Turing en su ensayo de 1936 Los nuacutemeros computables con una aplicacioacuten al problema de decisioacuten

Clasificacioacuten del software

Si bien esta distincioacuten es en cierto modo arbitraria y a veces confusa a los fines praacutecticos se puede clasificar al software en tres grandes tipos

Software de sistema Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles de la computadora en particular que se use aislaacutendolo especialmente del procesamiento referido a las caracteriacutesticas internas de memoria discos puertos y dispositivos de comunicaciones impresoras pantallas teclados etc El software de sistema le procura al usuario y programador adecuadas interfaces de alto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

nivel herramientas y utilidades de apoyo que permiten su mantenimiento Incluye entre otros

o Sistemas operativos o Controladores de dispositivos o Herramientas de diagnoacutestico o Herramientas de Correccioacuten y Optimizacioacuten o Servidores o Utilidades

Software de programacioacuten Es el conjunto de herramientas que permiten al programador desarrollar programas informaacuteticos usando diferentes alternativas y lenguajes de programacioacuten de una manera praacutectica Incluye entre otros

o Editores de texto o Compiladores o Inteacuterpretes o Enlazadores o Depuradores o Entornos de Desarrollo Integrados (IDE) Agrupan las anteriores

herramientas usualmente en un entorno visual de forma tal que el programador no necesite introducir muacuteltiples comandos para compilar interpretar depurar etc Habitualmente cuentan con una avanzada interfaz graacutefica de usuario (GUI)

Software de aplicacioacuten Es aquel que permite a los usuarios llevar a cabo una o varias tareas especiacuteficas en cualquier campo de actividad susceptible de ser automatizado o asistido con especial eacutenfasis en los negocios Incluye entre otros

o Aplicaciones para Control de sistemas y automatizacioacuten industrial o Aplicaciones ofimaacuteticas o Software educativo o Software empresarial o Bases de datos o Telecomunicaciones (pej internet y toda su estructura loacutegica) o Videojuegos o Software meacutedico o Software de Caacutelculo Numeacuterico y simboacutelico o Software de Disentildeo Asistido (CAD) o Software de Control Numeacuterico (CAM)

Proceso de creacioacuten del software

Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solucioacuten de un problema u obtencioacuten de un producto en este caso particular para lograr la obtencioacuten de un producto software que resuelva un problema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El proceso de creacioacuten de software puede llegar a ser muy complejo dependiendo de su porte caracteriacutesticas y criticidad del mismo Por ejemplo la creacioacuten de un sistema operativo es una tarea que requiere proyecto gestioacuten numerosos recursos y todo un equipo disciplinado de trabajo En el otro extremo si se trata de un sencillo programa (por ejemplo la resolucioacuten de una ecuacioacuten de segundo orden) eacuteste puede ser realizado por un solo programador (incluso aficionado) faacutecilmente Es asiacute que normalmente se dividen en tres categoriacuteas seguacuten su tamantildeo (liacuteneas de coacutedigo) yo costo de Pequentildeo Mediano y Gran porte Existen varias metodologiacuteas para estimarlo una de las maacutes populares es el sistema COCOMO que provee meacutetodos y un software (programa) que calcula y provee una estimacioacuten de todos los costos de produccioacuten en un proyecto software (relacioacuten horashombre costo monetario cantidad de liacuteneas fuente de acuerdo a lenguaje usado etc)

Considerando los de gran porte es necesario realizar tantas y tan complejas tareas tanto teacutecnicas de gerenciamiento fuerte gestioacuten y anaacutelisis diversos (entre otras) que toda una ingenieriacutea hace falta para su estudio y realizacioacuten es la Ingenieriacutea de Software

En tanto que en los de mediano porte pequentildeos equipos de trabajo (incluso un avezado analista-programador solitario) pueden realizar la tarea Aunque siempre en casos de mediano y gran porte (y a veces tambieacuten en algunos de pequentildeo porte seguacuten su complejidad) se deben seguir ciertas etapas que son necesarias para la construccioacuten del software Tales etapas si bien deben existir son flexibles en su forma de aplicacioacuten de acuerdo a la metodologiacutea o Proceso de Desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso)

Los procesos de desarrollo de software poseen reglas preestablecidas y deben ser aplicados en la creacioacuten del software de mediano y gran porte ya que en caso contrario lo maacutes seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos y con variedad de fallos inaceptables (fracasan en pocas palabras) Entre tales procesos los hay aacutegiles o livianos (ejemplo XP) pesados y lentos (ejemplo RUP) y variantes intermedias y normalmente se aplican de acuerdo al tipo porte y tipologiacutea del software a desarrollar a criterio del liacuteder (si lo hay) del equipo de desarrollo Algunos de esos procesos son Extreme Programming (XP) Rational Unified Process (RUP) Feature Driven Development (FDD) etc

Cualquiera sea el proceso utilizado y aplicado al desarrollo del software (RUP FDD etc) y casi independientemente de eacutel siempre se debe aplicar un Modelo de Ciclo de Vida5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Se estima que del total de proyectos software grandes emprendidos un 28 fracasan un 46 caen en severas modificaciones que lo retrasan y un 26 son totalmente exitosos 6

Cuando un proyecto fracasa rara vez es debido a fallas teacutecnicas la principal causa de fallos y fracasos es la falta de aplicacioacuten de una buena metodologiacutea o proceso de desarrollo Entre otras una fuerte tendencia desde hace pocas deacutecadas es mejorar las metodologiacuteas o procesos de desarrollo o crear nuevas y concientizar a los profesionales en su utilizacioacuten adecuada Normalmente los especialistas en el estudio y desarrollo de estas aacutereas (metodologiacuteas) y afines (tales como modelos y hasta la gestioacuten misma de los proyectos) son los Ingenieros en Software es su orientacioacuten Los especialistas en cualquier otra aacuterea de desarrollo informaacutetico (analista programador Lic en Informaacutetica Ingeniero en Informaacutetica Ingeniero de Sistemas etc) normalmente aplican sus conocimientos especializados pero utilizando modelos paradigmas y procesos ya elaborados

Es comuacuten para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologiacuteas normalmente un hiacutebrido de los procesos anteriores y a veces con criterios propios

El proceso de desarrollo puede involucrar numerosas y variadas tareas5 desde lo administrativo pasando por lo teacutecnico y hasta la gestioacuten y el gerenciamiento Pero casi rigurosamente siempre se cumplen ciertas etapas miacutenimas las que se pueden resumir como sigue

Captura Elicitacioacuten7 Especificacioacuten y Anaacutelisis de requisitos (ERS) Disentildeo Codificacioacuten Pruebas (unitarias y de integracioacuten) Instalacioacuten y paso a Produccioacuten Mantenimiento

En las anteriores etapas pueden variar ligeramente sus nombres o ser maacutes globales o contrariamente ser maacutes refinadas por ejemplo indicar como una uacutenica fase (a los fines documentales e interpretativos) de Anaacutelisis y Disentildeo o indicar como Implementacioacuten lo que estaacute dicho como Codificacioacuten pero en rigor todas existen e incluyen baacutesicamentelas mismas tareas especiacuteficas

En el apartado 4 del presente artiacuteculo se brindan mayores detalles de cada una de las listadas etapas

Modelos de proceso o ciclo de vida

Para cada una las fases o etapas listadas en el iacutetem anterior existen sub-etapas (o tareas) El modelo de proceso o modelo de ciclo de vida utilizado para el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

desarrollo define el orden para las tareas o actividades involucradas5 tambieacuten definen la coordinacioacuten entre ellas enlace y realimentacioacuten entre las mencionadas etapas Entre los maacutes conocidos se puede mencionar modelo en cascada o secuencial modelo espiral modelo iterativo incremental De los antedichos hay a su vez algunas variantes o alternativas maacutes o menos atractivas seguacuten sea la aplicacioacuten requerida y sus requisitos6

Modelo cascada

Este aunque es maacutes comuacutenmente conocido como modelo en cascada es tambieacuten llamado modelo claacutesico modelo tradicional o modelo lineal secuencial

El modelo en cascada puro difiacutecilmente se utilice tal cual pues esto implicariacutea un previo y absoluto conocimiento de los requisitos la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores ello soacutelo podriacutea ser aplicable a escasos y pequentildeos desarrollos de sistemas En estas circunstancias el paso de una etapa a otra de las mencionadas seriacutea sin retorno por ejemplo pasar del Disentildeo a la Codificacioacuten implicariacutea un disentildeo exacto y sin errores ni probable modificacioacuten o evolucioacuten codifique lo disentildeado que no habraacuten en absoluto variantes ni errores Esto es utoacutepico ya que intriacutensecamente el software es de caraacutecter evolutivo cambiante y difiacutecilmente libre de errores tanto durante su desarrollo como durante su vida operativa5

Fig 2 - Modelo cascada puro o secuencial para el ciclo de vida del software

Alguacuten cambio durante la ejecucioacuten de una cualquiera de las etapas en este modelo secuencial implicariacutea reiniciar desde el principio todo el ciclo completo lo cual redundariacutea en altos costos de tiempo y desarrollo La figura 2 muestra un posible esquema de el modelo en cuestioacuten5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Sin embargo el modelo cascada en algunas de sus variantes es uno de los actualmente maacutes utilizados8 por su eficacia y simplicidad maacutes que nada en software de pequentildeo y algunos de mediano porte pero nunca (o muy rara vez) se lo usa en su forma pura como se dijo anteriormente En lugar de ello siempre se produce alguna realimentacioacuten entre etapas que no es completamente predecible ni riacutegida esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas cambios o evoluciones durante el ciclo de vida Asiacute por ejemplo una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al disentildeo del sistema pero durante esta uacuteltima fase lo maacutes probable es que se deban realizar ajustes en los requisitos (aunque sean miacutenimos) ya sea por fallas detectadas ambiguumledades o bien por que los propios requisitos han cambiado o evolucionado con lo cual se debe retornar a la primera o previa etapa hacer los pertinentes reajustes y luego continuar nuevamente con el disentildeo esto uacuteltimo se conoce como realimentacioacuten Lo normal en el modelo cascada seraacute entonces la aplicacioacuten del mismo con sus etapas realimentadas de alguna forma permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido

De esta manera se obtiene un modelo cascada realimentado que puede ser esquematizado como lo ilustra la figura 3

Fig 3 - Modelo cascada realimentado para el ciclo de vida

Lo dicho es a grandes rasgos la forma y utilizacioacuten de este modelo uno de los maacutes usados y populares5 El modelo Cascada Realimentado resulta muy atractivo hasta ideal si el proyecto presenta alta rigideacutez (pocos o ninguacuten cambio no evolutivo) los requisitos son muy claros y estaacuten correctamente especificados8

Hay maacutes variantes similares al modelo refino de etapas (maacutes estapas menores y maacutes especiacuteficas) o incluso mostrar menos etapas de las indicadas aunque en tal

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

caso la faltante estaraacute dentro de alguna otra El orden de esas fases indicadas en el iacutetem previo es el loacutegico y adecuado pero advieacutertase como se dijo que normalmente habraacute realimentacioacuten hacia atraacutes

El modelo lineal o en Cascada es el paradigma maacutes antiguo y extensamente utilizado sin embargo las criacuteticas a eacutel (ver desventajas) han puesto en duda su eficacia Pese a todo tiene un lugar muy importante en la Ingenieriacutea de software y continuacutea siendo el maacutes utilizado y siempre es mejor que un enfoque al azar8

Desventajas del modelo cascada5

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto Si los cambios se producen en etapa madura (codificacioacuten o prueba) pueden ser catastroacuteficos para un proyecto grande

No es frecuente que el cliente o usuario final explicite clara y completamente los requisitos (etapa de inicio) y el modelo lineal lo requiere La incertidumbre natural en los comienzos es luego difiacutecil de acomodar8

El cliente debe tener paciencia ya que el software no estaraacute disponible hasta muy avanzado el proyecto Un error detectado por el cliente (en fase de operacioacuten) puede ser desastroso implicando reinicio del proyecto con altos costos

Modelos evolutivos

El software evoluciona con el tiempo Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo por lo que se debe introducir una versioacuten funcional limitada de alguna forma para aliviar las presiones competitivas

En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que esteacuten disentildeados para acomodarse a una evolucioacuten temporal o progresiva donde los requisitos centrales son conocidos de antemano aunque no esteacuten bien definidos a nivel detalle

En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software se plantea como estaacutetico con requisitos bien conocidos y definidos desde el inicio5

Los evolutivos son modelos iterativos permiten desarrollar versiones cada vez maacutes completas y complejas hasta llegar al objetivo final deseado incluso evolucionar maacutes allaacute durante la fase de operacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 6: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

nivel herramientas y utilidades de apoyo que permiten su mantenimiento Incluye entre otros

o Sistemas operativos o Controladores de dispositivos o Herramientas de diagnoacutestico o Herramientas de Correccioacuten y Optimizacioacuten o Servidores o Utilidades

Software de programacioacuten Es el conjunto de herramientas que permiten al programador desarrollar programas informaacuteticos usando diferentes alternativas y lenguajes de programacioacuten de una manera praacutectica Incluye entre otros

o Editores de texto o Compiladores o Inteacuterpretes o Enlazadores o Depuradores o Entornos de Desarrollo Integrados (IDE) Agrupan las anteriores

herramientas usualmente en un entorno visual de forma tal que el programador no necesite introducir muacuteltiples comandos para compilar interpretar depurar etc Habitualmente cuentan con una avanzada interfaz graacutefica de usuario (GUI)

Software de aplicacioacuten Es aquel que permite a los usuarios llevar a cabo una o varias tareas especiacuteficas en cualquier campo de actividad susceptible de ser automatizado o asistido con especial eacutenfasis en los negocios Incluye entre otros

o Aplicaciones para Control de sistemas y automatizacioacuten industrial o Aplicaciones ofimaacuteticas o Software educativo o Software empresarial o Bases de datos o Telecomunicaciones (pej internet y toda su estructura loacutegica) o Videojuegos o Software meacutedico o Software de Caacutelculo Numeacuterico y simboacutelico o Software de Disentildeo Asistido (CAD) o Software de Control Numeacuterico (CAM)

Proceso de creacioacuten del software

Se define como Proceso al conjunto ordenado de pasos a seguir para llegar a la solucioacuten de un problema u obtencioacuten de un producto en este caso particular para lograr la obtencioacuten de un producto software que resuelva un problema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El proceso de creacioacuten de software puede llegar a ser muy complejo dependiendo de su porte caracteriacutesticas y criticidad del mismo Por ejemplo la creacioacuten de un sistema operativo es una tarea que requiere proyecto gestioacuten numerosos recursos y todo un equipo disciplinado de trabajo En el otro extremo si se trata de un sencillo programa (por ejemplo la resolucioacuten de una ecuacioacuten de segundo orden) eacuteste puede ser realizado por un solo programador (incluso aficionado) faacutecilmente Es asiacute que normalmente se dividen en tres categoriacuteas seguacuten su tamantildeo (liacuteneas de coacutedigo) yo costo de Pequentildeo Mediano y Gran porte Existen varias metodologiacuteas para estimarlo una de las maacutes populares es el sistema COCOMO que provee meacutetodos y un software (programa) que calcula y provee una estimacioacuten de todos los costos de produccioacuten en un proyecto software (relacioacuten horashombre costo monetario cantidad de liacuteneas fuente de acuerdo a lenguaje usado etc)

Considerando los de gran porte es necesario realizar tantas y tan complejas tareas tanto teacutecnicas de gerenciamiento fuerte gestioacuten y anaacutelisis diversos (entre otras) que toda una ingenieriacutea hace falta para su estudio y realizacioacuten es la Ingenieriacutea de Software

En tanto que en los de mediano porte pequentildeos equipos de trabajo (incluso un avezado analista-programador solitario) pueden realizar la tarea Aunque siempre en casos de mediano y gran porte (y a veces tambieacuten en algunos de pequentildeo porte seguacuten su complejidad) se deben seguir ciertas etapas que son necesarias para la construccioacuten del software Tales etapas si bien deben existir son flexibles en su forma de aplicacioacuten de acuerdo a la metodologiacutea o Proceso de Desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso)

Los procesos de desarrollo de software poseen reglas preestablecidas y deben ser aplicados en la creacioacuten del software de mediano y gran porte ya que en caso contrario lo maacutes seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos y con variedad de fallos inaceptables (fracasan en pocas palabras) Entre tales procesos los hay aacutegiles o livianos (ejemplo XP) pesados y lentos (ejemplo RUP) y variantes intermedias y normalmente se aplican de acuerdo al tipo porte y tipologiacutea del software a desarrollar a criterio del liacuteder (si lo hay) del equipo de desarrollo Algunos de esos procesos son Extreme Programming (XP) Rational Unified Process (RUP) Feature Driven Development (FDD) etc

Cualquiera sea el proceso utilizado y aplicado al desarrollo del software (RUP FDD etc) y casi independientemente de eacutel siempre se debe aplicar un Modelo de Ciclo de Vida5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Se estima que del total de proyectos software grandes emprendidos un 28 fracasan un 46 caen en severas modificaciones que lo retrasan y un 26 son totalmente exitosos 6

Cuando un proyecto fracasa rara vez es debido a fallas teacutecnicas la principal causa de fallos y fracasos es la falta de aplicacioacuten de una buena metodologiacutea o proceso de desarrollo Entre otras una fuerte tendencia desde hace pocas deacutecadas es mejorar las metodologiacuteas o procesos de desarrollo o crear nuevas y concientizar a los profesionales en su utilizacioacuten adecuada Normalmente los especialistas en el estudio y desarrollo de estas aacutereas (metodologiacuteas) y afines (tales como modelos y hasta la gestioacuten misma de los proyectos) son los Ingenieros en Software es su orientacioacuten Los especialistas en cualquier otra aacuterea de desarrollo informaacutetico (analista programador Lic en Informaacutetica Ingeniero en Informaacutetica Ingeniero de Sistemas etc) normalmente aplican sus conocimientos especializados pero utilizando modelos paradigmas y procesos ya elaborados

Es comuacuten para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologiacuteas normalmente un hiacutebrido de los procesos anteriores y a veces con criterios propios

El proceso de desarrollo puede involucrar numerosas y variadas tareas5 desde lo administrativo pasando por lo teacutecnico y hasta la gestioacuten y el gerenciamiento Pero casi rigurosamente siempre se cumplen ciertas etapas miacutenimas las que se pueden resumir como sigue

Captura Elicitacioacuten7 Especificacioacuten y Anaacutelisis de requisitos (ERS) Disentildeo Codificacioacuten Pruebas (unitarias y de integracioacuten) Instalacioacuten y paso a Produccioacuten Mantenimiento

En las anteriores etapas pueden variar ligeramente sus nombres o ser maacutes globales o contrariamente ser maacutes refinadas por ejemplo indicar como una uacutenica fase (a los fines documentales e interpretativos) de Anaacutelisis y Disentildeo o indicar como Implementacioacuten lo que estaacute dicho como Codificacioacuten pero en rigor todas existen e incluyen baacutesicamentelas mismas tareas especiacuteficas

En el apartado 4 del presente artiacuteculo se brindan mayores detalles de cada una de las listadas etapas

Modelos de proceso o ciclo de vida

Para cada una las fases o etapas listadas en el iacutetem anterior existen sub-etapas (o tareas) El modelo de proceso o modelo de ciclo de vida utilizado para el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

desarrollo define el orden para las tareas o actividades involucradas5 tambieacuten definen la coordinacioacuten entre ellas enlace y realimentacioacuten entre las mencionadas etapas Entre los maacutes conocidos se puede mencionar modelo en cascada o secuencial modelo espiral modelo iterativo incremental De los antedichos hay a su vez algunas variantes o alternativas maacutes o menos atractivas seguacuten sea la aplicacioacuten requerida y sus requisitos6

Modelo cascada

Este aunque es maacutes comuacutenmente conocido como modelo en cascada es tambieacuten llamado modelo claacutesico modelo tradicional o modelo lineal secuencial

El modelo en cascada puro difiacutecilmente se utilice tal cual pues esto implicariacutea un previo y absoluto conocimiento de los requisitos la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores ello soacutelo podriacutea ser aplicable a escasos y pequentildeos desarrollos de sistemas En estas circunstancias el paso de una etapa a otra de las mencionadas seriacutea sin retorno por ejemplo pasar del Disentildeo a la Codificacioacuten implicariacutea un disentildeo exacto y sin errores ni probable modificacioacuten o evolucioacuten codifique lo disentildeado que no habraacuten en absoluto variantes ni errores Esto es utoacutepico ya que intriacutensecamente el software es de caraacutecter evolutivo cambiante y difiacutecilmente libre de errores tanto durante su desarrollo como durante su vida operativa5

Fig 2 - Modelo cascada puro o secuencial para el ciclo de vida del software

Alguacuten cambio durante la ejecucioacuten de una cualquiera de las etapas en este modelo secuencial implicariacutea reiniciar desde el principio todo el ciclo completo lo cual redundariacutea en altos costos de tiempo y desarrollo La figura 2 muestra un posible esquema de el modelo en cuestioacuten5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Sin embargo el modelo cascada en algunas de sus variantes es uno de los actualmente maacutes utilizados8 por su eficacia y simplicidad maacutes que nada en software de pequentildeo y algunos de mediano porte pero nunca (o muy rara vez) se lo usa en su forma pura como se dijo anteriormente En lugar de ello siempre se produce alguna realimentacioacuten entre etapas que no es completamente predecible ni riacutegida esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas cambios o evoluciones durante el ciclo de vida Asiacute por ejemplo una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al disentildeo del sistema pero durante esta uacuteltima fase lo maacutes probable es que se deban realizar ajustes en los requisitos (aunque sean miacutenimos) ya sea por fallas detectadas ambiguumledades o bien por que los propios requisitos han cambiado o evolucionado con lo cual se debe retornar a la primera o previa etapa hacer los pertinentes reajustes y luego continuar nuevamente con el disentildeo esto uacuteltimo se conoce como realimentacioacuten Lo normal en el modelo cascada seraacute entonces la aplicacioacuten del mismo con sus etapas realimentadas de alguna forma permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido

De esta manera se obtiene un modelo cascada realimentado que puede ser esquematizado como lo ilustra la figura 3

Fig 3 - Modelo cascada realimentado para el ciclo de vida

Lo dicho es a grandes rasgos la forma y utilizacioacuten de este modelo uno de los maacutes usados y populares5 El modelo Cascada Realimentado resulta muy atractivo hasta ideal si el proyecto presenta alta rigideacutez (pocos o ninguacuten cambio no evolutivo) los requisitos son muy claros y estaacuten correctamente especificados8

Hay maacutes variantes similares al modelo refino de etapas (maacutes estapas menores y maacutes especiacuteficas) o incluso mostrar menos etapas de las indicadas aunque en tal

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

caso la faltante estaraacute dentro de alguna otra El orden de esas fases indicadas en el iacutetem previo es el loacutegico y adecuado pero advieacutertase como se dijo que normalmente habraacute realimentacioacuten hacia atraacutes

El modelo lineal o en Cascada es el paradigma maacutes antiguo y extensamente utilizado sin embargo las criacuteticas a eacutel (ver desventajas) han puesto en duda su eficacia Pese a todo tiene un lugar muy importante en la Ingenieriacutea de software y continuacutea siendo el maacutes utilizado y siempre es mejor que un enfoque al azar8

Desventajas del modelo cascada5

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto Si los cambios se producen en etapa madura (codificacioacuten o prueba) pueden ser catastroacuteficos para un proyecto grande

No es frecuente que el cliente o usuario final explicite clara y completamente los requisitos (etapa de inicio) y el modelo lineal lo requiere La incertidumbre natural en los comienzos es luego difiacutecil de acomodar8

El cliente debe tener paciencia ya que el software no estaraacute disponible hasta muy avanzado el proyecto Un error detectado por el cliente (en fase de operacioacuten) puede ser desastroso implicando reinicio del proyecto con altos costos

Modelos evolutivos

El software evoluciona con el tiempo Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo por lo que se debe introducir una versioacuten funcional limitada de alguna forma para aliviar las presiones competitivas

En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que esteacuten disentildeados para acomodarse a una evolucioacuten temporal o progresiva donde los requisitos centrales son conocidos de antemano aunque no esteacuten bien definidos a nivel detalle

En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software se plantea como estaacutetico con requisitos bien conocidos y definidos desde el inicio5

Los evolutivos son modelos iterativos permiten desarrollar versiones cada vez maacutes completas y complejas hasta llegar al objetivo final deseado incluso evolucionar maacutes allaacute durante la fase de operacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 7: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El proceso de creacioacuten de software puede llegar a ser muy complejo dependiendo de su porte caracteriacutesticas y criticidad del mismo Por ejemplo la creacioacuten de un sistema operativo es una tarea que requiere proyecto gestioacuten numerosos recursos y todo un equipo disciplinado de trabajo En el otro extremo si se trata de un sencillo programa (por ejemplo la resolucioacuten de una ecuacioacuten de segundo orden) eacuteste puede ser realizado por un solo programador (incluso aficionado) faacutecilmente Es asiacute que normalmente se dividen en tres categoriacuteas seguacuten su tamantildeo (liacuteneas de coacutedigo) yo costo de Pequentildeo Mediano y Gran porte Existen varias metodologiacuteas para estimarlo una de las maacutes populares es el sistema COCOMO que provee meacutetodos y un software (programa) que calcula y provee una estimacioacuten de todos los costos de produccioacuten en un proyecto software (relacioacuten horashombre costo monetario cantidad de liacuteneas fuente de acuerdo a lenguaje usado etc)

Considerando los de gran porte es necesario realizar tantas y tan complejas tareas tanto teacutecnicas de gerenciamiento fuerte gestioacuten y anaacutelisis diversos (entre otras) que toda una ingenieriacutea hace falta para su estudio y realizacioacuten es la Ingenieriacutea de Software

En tanto que en los de mediano porte pequentildeos equipos de trabajo (incluso un avezado analista-programador solitario) pueden realizar la tarea Aunque siempre en casos de mediano y gran porte (y a veces tambieacuten en algunos de pequentildeo porte seguacuten su complejidad) se deben seguir ciertas etapas que son necesarias para la construccioacuten del software Tales etapas si bien deben existir son flexibles en su forma de aplicacioacuten de acuerdo a la metodologiacutea o Proceso de Desarrollo escogido y utilizado por el equipo de desarrollo o por el analista-programador solitario (si fuere el caso)

Los procesos de desarrollo de software poseen reglas preestablecidas y deben ser aplicados en la creacioacuten del software de mediano y gran porte ya que en caso contrario lo maacutes seguro es que el proyecto o no logre concluir o termine sin cumplir los objetivos previstos y con variedad de fallos inaceptables (fracasan en pocas palabras) Entre tales procesos los hay aacutegiles o livianos (ejemplo XP) pesados y lentos (ejemplo RUP) y variantes intermedias y normalmente se aplican de acuerdo al tipo porte y tipologiacutea del software a desarrollar a criterio del liacuteder (si lo hay) del equipo de desarrollo Algunos de esos procesos son Extreme Programming (XP) Rational Unified Process (RUP) Feature Driven Development (FDD) etc

Cualquiera sea el proceso utilizado y aplicado al desarrollo del software (RUP FDD etc) y casi independientemente de eacutel siempre se debe aplicar un Modelo de Ciclo de Vida5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Se estima que del total de proyectos software grandes emprendidos un 28 fracasan un 46 caen en severas modificaciones que lo retrasan y un 26 son totalmente exitosos 6

Cuando un proyecto fracasa rara vez es debido a fallas teacutecnicas la principal causa de fallos y fracasos es la falta de aplicacioacuten de una buena metodologiacutea o proceso de desarrollo Entre otras una fuerte tendencia desde hace pocas deacutecadas es mejorar las metodologiacuteas o procesos de desarrollo o crear nuevas y concientizar a los profesionales en su utilizacioacuten adecuada Normalmente los especialistas en el estudio y desarrollo de estas aacutereas (metodologiacuteas) y afines (tales como modelos y hasta la gestioacuten misma de los proyectos) son los Ingenieros en Software es su orientacioacuten Los especialistas en cualquier otra aacuterea de desarrollo informaacutetico (analista programador Lic en Informaacutetica Ingeniero en Informaacutetica Ingeniero de Sistemas etc) normalmente aplican sus conocimientos especializados pero utilizando modelos paradigmas y procesos ya elaborados

Es comuacuten para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologiacuteas normalmente un hiacutebrido de los procesos anteriores y a veces con criterios propios

El proceso de desarrollo puede involucrar numerosas y variadas tareas5 desde lo administrativo pasando por lo teacutecnico y hasta la gestioacuten y el gerenciamiento Pero casi rigurosamente siempre se cumplen ciertas etapas miacutenimas las que se pueden resumir como sigue

Captura Elicitacioacuten7 Especificacioacuten y Anaacutelisis de requisitos (ERS) Disentildeo Codificacioacuten Pruebas (unitarias y de integracioacuten) Instalacioacuten y paso a Produccioacuten Mantenimiento

En las anteriores etapas pueden variar ligeramente sus nombres o ser maacutes globales o contrariamente ser maacutes refinadas por ejemplo indicar como una uacutenica fase (a los fines documentales e interpretativos) de Anaacutelisis y Disentildeo o indicar como Implementacioacuten lo que estaacute dicho como Codificacioacuten pero en rigor todas existen e incluyen baacutesicamentelas mismas tareas especiacuteficas

En el apartado 4 del presente artiacuteculo se brindan mayores detalles de cada una de las listadas etapas

Modelos de proceso o ciclo de vida

Para cada una las fases o etapas listadas en el iacutetem anterior existen sub-etapas (o tareas) El modelo de proceso o modelo de ciclo de vida utilizado para el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

desarrollo define el orden para las tareas o actividades involucradas5 tambieacuten definen la coordinacioacuten entre ellas enlace y realimentacioacuten entre las mencionadas etapas Entre los maacutes conocidos se puede mencionar modelo en cascada o secuencial modelo espiral modelo iterativo incremental De los antedichos hay a su vez algunas variantes o alternativas maacutes o menos atractivas seguacuten sea la aplicacioacuten requerida y sus requisitos6

Modelo cascada

Este aunque es maacutes comuacutenmente conocido como modelo en cascada es tambieacuten llamado modelo claacutesico modelo tradicional o modelo lineal secuencial

El modelo en cascada puro difiacutecilmente se utilice tal cual pues esto implicariacutea un previo y absoluto conocimiento de los requisitos la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores ello soacutelo podriacutea ser aplicable a escasos y pequentildeos desarrollos de sistemas En estas circunstancias el paso de una etapa a otra de las mencionadas seriacutea sin retorno por ejemplo pasar del Disentildeo a la Codificacioacuten implicariacutea un disentildeo exacto y sin errores ni probable modificacioacuten o evolucioacuten codifique lo disentildeado que no habraacuten en absoluto variantes ni errores Esto es utoacutepico ya que intriacutensecamente el software es de caraacutecter evolutivo cambiante y difiacutecilmente libre de errores tanto durante su desarrollo como durante su vida operativa5

Fig 2 - Modelo cascada puro o secuencial para el ciclo de vida del software

Alguacuten cambio durante la ejecucioacuten de una cualquiera de las etapas en este modelo secuencial implicariacutea reiniciar desde el principio todo el ciclo completo lo cual redundariacutea en altos costos de tiempo y desarrollo La figura 2 muestra un posible esquema de el modelo en cuestioacuten5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Sin embargo el modelo cascada en algunas de sus variantes es uno de los actualmente maacutes utilizados8 por su eficacia y simplicidad maacutes que nada en software de pequentildeo y algunos de mediano porte pero nunca (o muy rara vez) se lo usa en su forma pura como se dijo anteriormente En lugar de ello siempre se produce alguna realimentacioacuten entre etapas que no es completamente predecible ni riacutegida esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas cambios o evoluciones durante el ciclo de vida Asiacute por ejemplo una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al disentildeo del sistema pero durante esta uacuteltima fase lo maacutes probable es que se deban realizar ajustes en los requisitos (aunque sean miacutenimos) ya sea por fallas detectadas ambiguumledades o bien por que los propios requisitos han cambiado o evolucionado con lo cual se debe retornar a la primera o previa etapa hacer los pertinentes reajustes y luego continuar nuevamente con el disentildeo esto uacuteltimo se conoce como realimentacioacuten Lo normal en el modelo cascada seraacute entonces la aplicacioacuten del mismo con sus etapas realimentadas de alguna forma permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido

De esta manera se obtiene un modelo cascada realimentado que puede ser esquematizado como lo ilustra la figura 3

Fig 3 - Modelo cascada realimentado para el ciclo de vida

Lo dicho es a grandes rasgos la forma y utilizacioacuten de este modelo uno de los maacutes usados y populares5 El modelo Cascada Realimentado resulta muy atractivo hasta ideal si el proyecto presenta alta rigideacutez (pocos o ninguacuten cambio no evolutivo) los requisitos son muy claros y estaacuten correctamente especificados8

Hay maacutes variantes similares al modelo refino de etapas (maacutes estapas menores y maacutes especiacuteficas) o incluso mostrar menos etapas de las indicadas aunque en tal

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

caso la faltante estaraacute dentro de alguna otra El orden de esas fases indicadas en el iacutetem previo es el loacutegico y adecuado pero advieacutertase como se dijo que normalmente habraacute realimentacioacuten hacia atraacutes

El modelo lineal o en Cascada es el paradigma maacutes antiguo y extensamente utilizado sin embargo las criacuteticas a eacutel (ver desventajas) han puesto en duda su eficacia Pese a todo tiene un lugar muy importante en la Ingenieriacutea de software y continuacutea siendo el maacutes utilizado y siempre es mejor que un enfoque al azar8

Desventajas del modelo cascada5

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto Si los cambios se producen en etapa madura (codificacioacuten o prueba) pueden ser catastroacuteficos para un proyecto grande

No es frecuente que el cliente o usuario final explicite clara y completamente los requisitos (etapa de inicio) y el modelo lineal lo requiere La incertidumbre natural en los comienzos es luego difiacutecil de acomodar8

El cliente debe tener paciencia ya que el software no estaraacute disponible hasta muy avanzado el proyecto Un error detectado por el cliente (en fase de operacioacuten) puede ser desastroso implicando reinicio del proyecto con altos costos

Modelos evolutivos

El software evoluciona con el tiempo Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo por lo que se debe introducir una versioacuten funcional limitada de alguna forma para aliviar las presiones competitivas

En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que esteacuten disentildeados para acomodarse a una evolucioacuten temporal o progresiva donde los requisitos centrales son conocidos de antemano aunque no esteacuten bien definidos a nivel detalle

En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software se plantea como estaacutetico con requisitos bien conocidos y definidos desde el inicio5

Los evolutivos son modelos iterativos permiten desarrollar versiones cada vez maacutes completas y complejas hasta llegar al objetivo final deseado incluso evolucionar maacutes allaacute durante la fase de operacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 8: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Se estima que del total de proyectos software grandes emprendidos un 28 fracasan un 46 caen en severas modificaciones que lo retrasan y un 26 son totalmente exitosos 6

Cuando un proyecto fracasa rara vez es debido a fallas teacutecnicas la principal causa de fallos y fracasos es la falta de aplicacioacuten de una buena metodologiacutea o proceso de desarrollo Entre otras una fuerte tendencia desde hace pocas deacutecadas es mejorar las metodologiacuteas o procesos de desarrollo o crear nuevas y concientizar a los profesionales en su utilizacioacuten adecuada Normalmente los especialistas en el estudio y desarrollo de estas aacutereas (metodologiacuteas) y afines (tales como modelos y hasta la gestioacuten misma de los proyectos) son los Ingenieros en Software es su orientacioacuten Los especialistas en cualquier otra aacuterea de desarrollo informaacutetico (analista programador Lic en Informaacutetica Ingeniero en Informaacutetica Ingeniero de Sistemas etc) normalmente aplican sus conocimientos especializados pero utilizando modelos paradigmas y procesos ya elaborados

Es comuacuten para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologiacuteas normalmente un hiacutebrido de los procesos anteriores y a veces con criterios propios

El proceso de desarrollo puede involucrar numerosas y variadas tareas5 desde lo administrativo pasando por lo teacutecnico y hasta la gestioacuten y el gerenciamiento Pero casi rigurosamente siempre se cumplen ciertas etapas miacutenimas las que se pueden resumir como sigue

Captura Elicitacioacuten7 Especificacioacuten y Anaacutelisis de requisitos (ERS) Disentildeo Codificacioacuten Pruebas (unitarias y de integracioacuten) Instalacioacuten y paso a Produccioacuten Mantenimiento

En las anteriores etapas pueden variar ligeramente sus nombres o ser maacutes globales o contrariamente ser maacutes refinadas por ejemplo indicar como una uacutenica fase (a los fines documentales e interpretativos) de Anaacutelisis y Disentildeo o indicar como Implementacioacuten lo que estaacute dicho como Codificacioacuten pero en rigor todas existen e incluyen baacutesicamentelas mismas tareas especiacuteficas

En el apartado 4 del presente artiacuteculo se brindan mayores detalles de cada una de las listadas etapas

Modelos de proceso o ciclo de vida

Para cada una las fases o etapas listadas en el iacutetem anterior existen sub-etapas (o tareas) El modelo de proceso o modelo de ciclo de vida utilizado para el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

desarrollo define el orden para las tareas o actividades involucradas5 tambieacuten definen la coordinacioacuten entre ellas enlace y realimentacioacuten entre las mencionadas etapas Entre los maacutes conocidos se puede mencionar modelo en cascada o secuencial modelo espiral modelo iterativo incremental De los antedichos hay a su vez algunas variantes o alternativas maacutes o menos atractivas seguacuten sea la aplicacioacuten requerida y sus requisitos6

Modelo cascada

Este aunque es maacutes comuacutenmente conocido como modelo en cascada es tambieacuten llamado modelo claacutesico modelo tradicional o modelo lineal secuencial

El modelo en cascada puro difiacutecilmente se utilice tal cual pues esto implicariacutea un previo y absoluto conocimiento de los requisitos la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores ello soacutelo podriacutea ser aplicable a escasos y pequentildeos desarrollos de sistemas En estas circunstancias el paso de una etapa a otra de las mencionadas seriacutea sin retorno por ejemplo pasar del Disentildeo a la Codificacioacuten implicariacutea un disentildeo exacto y sin errores ni probable modificacioacuten o evolucioacuten codifique lo disentildeado que no habraacuten en absoluto variantes ni errores Esto es utoacutepico ya que intriacutensecamente el software es de caraacutecter evolutivo cambiante y difiacutecilmente libre de errores tanto durante su desarrollo como durante su vida operativa5

Fig 2 - Modelo cascada puro o secuencial para el ciclo de vida del software

Alguacuten cambio durante la ejecucioacuten de una cualquiera de las etapas en este modelo secuencial implicariacutea reiniciar desde el principio todo el ciclo completo lo cual redundariacutea en altos costos de tiempo y desarrollo La figura 2 muestra un posible esquema de el modelo en cuestioacuten5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Sin embargo el modelo cascada en algunas de sus variantes es uno de los actualmente maacutes utilizados8 por su eficacia y simplicidad maacutes que nada en software de pequentildeo y algunos de mediano porte pero nunca (o muy rara vez) se lo usa en su forma pura como se dijo anteriormente En lugar de ello siempre se produce alguna realimentacioacuten entre etapas que no es completamente predecible ni riacutegida esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas cambios o evoluciones durante el ciclo de vida Asiacute por ejemplo una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al disentildeo del sistema pero durante esta uacuteltima fase lo maacutes probable es que se deban realizar ajustes en los requisitos (aunque sean miacutenimos) ya sea por fallas detectadas ambiguumledades o bien por que los propios requisitos han cambiado o evolucionado con lo cual se debe retornar a la primera o previa etapa hacer los pertinentes reajustes y luego continuar nuevamente con el disentildeo esto uacuteltimo se conoce como realimentacioacuten Lo normal en el modelo cascada seraacute entonces la aplicacioacuten del mismo con sus etapas realimentadas de alguna forma permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido

De esta manera se obtiene un modelo cascada realimentado que puede ser esquematizado como lo ilustra la figura 3

Fig 3 - Modelo cascada realimentado para el ciclo de vida

Lo dicho es a grandes rasgos la forma y utilizacioacuten de este modelo uno de los maacutes usados y populares5 El modelo Cascada Realimentado resulta muy atractivo hasta ideal si el proyecto presenta alta rigideacutez (pocos o ninguacuten cambio no evolutivo) los requisitos son muy claros y estaacuten correctamente especificados8

Hay maacutes variantes similares al modelo refino de etapas (maacutes estapas menores y maacutes especiacuteficas) o incluso mostrar menos etapas de las indicadas aunque en tal

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

caso la faltante estaraacute dentro de alguna otra El orden de esas fases indicadas en el iacutetem previo es el loacutegico y adecuado pero advieacutertase como se dijo que normalmente habraacute realimentacioacuten hacia atraacutes

El modelo lineal o en Cascada es el paradigma maacutes antiguo y extensamente utilizado sin embargo las criacuteticas a eacutel (ver desventajas) han puesto en duda su eficacia Pese a todo tiene un lugar muy importante en la Ingenieriacutea de software y continuacutea siendo el maacutes utilizado y siempre es mejor que un enfoque al azar8

Desventajas del modelo cascada5

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto Si los cambios se producen en etapa madura (codificacioacuten o prueba) pueden ser catastroacuteficos para un proyecto grande

No es frecuente que el cliente o usuario final explicite clara y completamente los requisitos (etapa de inicio) y el modelo lineal lo requiere La incertidumbre natural en los comienzos es luego difiacutecil de acomodar8

El cliente debe tener paciencia ya que el software no estaraacute disponible hasta muy avanzado el proyecto Un error detectado por el cliente (en fase de operacioacuten) puede ser desastroso implicando reinicio del proyecto con altos costos

Modelos evolutivos

El software evoluciona con el tiempo Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo por lo que se debe introducir una versioacuten funcional limitada de alguna forma para aliviar las presiones competitivas

En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que esteacuten disentildeados para acomodarse a una evolucioacuten temporal o progresiva donde los requisitos centrales son conocidos de antemano aunque no esteacuten bien definidos a nivel detalle

En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software se plantea como estaacutetico con requisitos bien conocidos y definidos desde el inicio5

Los evolutivos son modelos iterativos permiten desarrollar versiones cada vez maacutes completas y complejas hasta llegar al objetivo final deseado incluso evolucionar maacutes allaacute durante la fase de operacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 9: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

desarrollo define el orden para las tareas o actividades involucradas5 tambieacuten definen la coordinacioacuten entre ellas enlace y realimentacioacuten entre las mencionadas etapas Entre los maacutes conocidos se puede mencionar modelo en cascada o secuencial modelo espiral modelo iterativo incremental De los antedichos hay a su vez algunas variantes o alternativas maacutes o menos atractivas seguacuten sea la aplicacioacuten requerida y sus requisitos6

Modelo cascada

Este aunque es maacutes comuacutenmente conocido como modelo en cascada es tambieacuten llamado modelo claacutesico modelo tradicional o modelo lineal secuencial

El modelo en cascada puro difiacutecilmente se utilice tal cual pues esto implicariacutea un previo y absoluto conocimiento de los requisitos la no volatilidad de los mismos (o rigidez) y etapas subsiguientes libres de errores ello soacutelo podriacutea ser aplicable a escasos y pequentildeos desarrollos de sistemas En estas circunstancias el paso de una etapa a otra de las mencionadas seriacutea sin retorno por ejemplo pasar del Disentildeo a la Codificacioacuten implicariacutea un disentildeo exacto y sin errores ni probable modificacioacuten o evolucioacuten codifique lo disentildeado que no habraacuten en absoluto variantes ni errores Esto es utoacutepico ya que intriacutensecamente el software es de caraacutecter evolutivo cambiante y difiacutecilmente libre de errores tanto durante su desarrollo como durante su vida operativa5

Fig 2 - Modelo cascada puro o secuencial para el ciclo de vida del software

Alguacuten cambio durante la ejecucioacuten de una cualquiera de las etapas en este modelo secuencial implicariacutea reiniciar desde el principio todo el ciclo completo lo cual redundariacutea en altos costos de tiempo y desarrollo La figura 2 muestra un posible esquema de el modelo en cuestioacuten5

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Sin embargo el modelo cascada en algunas de sus variantes es uno de los actualmente maacutes utilizados8 por su eficacia y simplicidad maacutes que nada en software de pequentildeo y algunos de mediano porte pero nunca (o muy rara vez) se lo usa en su forma pura como se dijo anteriormente En lugar de ello siempre se produce alguna realimentacioacuten entre etapas que no es completamente predecible ni riacutegida esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas cambios o evoluciones durante el ciclo de vida Asiacute por ejemplo una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al disentildeo del sistema pero durante esta uacuteltima fase lo maacutes probable es que se deban realizar ajustes en los requisitos (aunque sean miacutenimos) ya sea por fallas detectadas ambiguumledades o bien por que los propios requisitos han cambiado o evolucionado con lo cual se debe retornar a la primera o previa etapa hacer los pertinentes reajustes y luego continuar nuevamente con el disentildeo esto uacuteltimo se conoce como realimentacioacuten Lo normal en el modelo cascada seraacute entonces la aplicacioacuten del mismo con sus etapas realimentadas de alguna forma permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido

De esta manera se obtiene un modelo cascada realimentado que puede ser esquematizado como lo ilustra la figura 3

Fig 3 - Modelo cascada realimentado para el ciclo de vida

Lo dicho es a grandes rasgos la forma y utilizacioacuten de este modelo uno de los maacutes usados y populares5 El modelo Cascada Realimentado resulta muy atractivo hasta ideal si el proyecto presenta alta rigideacutez (pocos o ninguacuten cambio no evolutivo) los requisitos son muy claros y estaacuten correctamente especificados8

Hay maacutes variantes similares al modelo refino de etapas (maacutes estapas menores y maacutes especiacuteficas) o incluso mostrar menos etapas de las indicadas aunque en tal

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

caso la faltante estaraacute dentro de alguna otra El orden de esas fases indicadas en el iacutetem previo es el loacutegico y adecuado pero advieacutertase como se dijo que normalmente habraacute realimentacioacuten hacia atraacutes

El modelo lineal o en Cascada es el paradigma maacutes antiguo y extensamente utilizado sin embargo las criacuteticas a eacutel (ver desventajas) han puesto en duda su eficacia Pese a todo tiene un lugar muy importante en la Ingenieriacutea de software y continuacutea siendo el maacutes utilizado y siempre es mejor que un enfoque al azar8

Desventajas del modelo cascada5

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto Si los cambios se producen en etapa madura (codificacioacuten o prueba) pueden ser catastroacuteficos para un proyecto grande

No es frecuente que el cliente o usuario final explicite clara y completamente los requisitos (etapa de inicio) y el modelo lineal lo requiere La incertidumbre natural en los comienzos es luego difiacutecil de acomodar8

El cliente debe tener paciencia ya que el software no estaraacute disponible hasta muy avanzado el proyecto Un error detectado por el cliente (en fase de operacioacuten) puede ser desastroso implicando reinicio del proyecto con altos costos

Modelos evolutivos

El software evoluciona con el tiempo Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo por lo que se debe introducir una versioacuten funcional limitada de alguna forma para aliviar las presiones competitivas

En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que esteacuten disentildeados para acomodarse a una evolucioacuten temporal o progresiva donde los requisitos centrales son conocidos de antemano aunque no esteacuten bien definidos a nivel detalle

En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software se plantea como estaacutetico con requisitos bien conocidos y definidos desde el inicio5

Los evolutivos son modelos iterativos permiten desarrollar versiones cada vez maacutes completas y complejas hasta llegar al objetivo final deseado incluso evolucionar maacutes allaacute durante la fase de operacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 10: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Sin embargo el modelo cascada en algunas de sus variantes es uno de los actualmente maacutes utilizados8 por su eficacia y simplicidad maacutes que nada en software de pequentildeo y algunos de mediano porte pero nunca (o muy rara vez) se lo usa en su forma pura como se dijo anteriormente En lugar de ello siempre se produce alguna realimentacioacuten entre etapas que no es completamente predecible ni riacutegida esto da oportunidad al desarrollo de productos software en los cuales hay ciertas incertezas cambios o evoluciones durante el ciclo de vida Asiacute por ejemplo una vez capturados (elicitados) y especificados los requisitos (primera etapa) se puede pasar al disentildeo del sistema pero durante esta uacuteltima fase lo maacutes probable es que se deban realizar ajustes en los requisitos (aunque sean miacutenimos) ya sea por fallas detectadas ambiguumledades o bien por que los propios requisitos han cambiado o evolucionado con lo cual se debe retornar a la primera o previa etapa hacer los pertinentes reajustes y luego continuar nuevamente con el disentildeo esto uacuteltimo se conoce como realimentacioacuten Lo normal en el modelo cascada seraacute entonces la aplicacioacuten del mismo con sus etapas realimentadas de alguna forma permitiendo retroceder de una a la anterior (e incluso poder saltar a varias anteriores) si es requerido

De esta manera se obtiene un modelo cascada realimentado que puede ser esquematizado como lo ilustra la figura 3

Fig 3 - Modelo cascada realimentado para el ciclo de vida

Lo dicho es a grandes rasgos la forma y utilizacioacuten de este modelo uno de los maacutes usados y populares5 El modelo Cascada Realimentado resulta muy atractivo hasta ideal si el proyecto presenta alta rigideacutez (pocos o ninguacuten cambio no evolutivo) los requisitos son muy claros y estaacuten correctamente especificados8

Hay maacutes variantes similares al modelo refino de etapas (maacutes estapas menores y maacutes especiacuteficas) o incluso mostrar menos etapas de las indicadas aunque en tal

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

caso la faltante estaraacute dentro de alguna otra El orden de esas fases indicadas en el iacutetem previo es el loacutegico y adecuado pero advieacutertase como se dijo que normalmente habraacute realimentacioacuten hacia atraacutes

El modelo lineal o en Cascada es el paradigma maacutes antiguo y extensamente utilizado sin embargo las criacuteticas a eacutel (ver desventajas) han puesto en duda su eficacia Pese a todo tiene un lugar muy importante en la Ingenieriacutea de software y continuacutea siendo el maacutes utilizado y siempre es mejor que un enfoque al azar8

Desventajas del modelo cascada5

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto Si los cambios se producen en etapa madura (codificacioacuten o prueba) pueden ser catastroacuteficos para un proyecto grande

No es frecuente que el cliente o usuario final explicite clara y completamente los requisitos (etapa de inicio) y el modelo lineal lo requiere La incertidumbre natural en los comienzos es luego difiacutecil de acomodar8

El cliente debe tener paciencia ya que el software no estaraacute disponible hasta muy avanzado el proyecto Un error detectado por el cliente (en fase de operacioacuten) puede ser desastroso implicando reinicio del proyecto con altos costos

Modelos evolutivos

El software evoluciona con el tiempo Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo por lo que se debe introducir una versioacuten funcional limitada de alguna forma para aliviar las presiones competitivas

En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que esteacuten disentildeados para acomodarse a una evolucioacuten temporal o progresiva donde los requisitos centrales son conocidos de antemano aunque no esteacuten bien definidos a nivel detalle

En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software se plantea como estaacutetico con requisitos bien conocidos y definidos desde el inicio5

Los evolutivos son modelos iterativos permiten desarrollar versiones cada vez maacutes completas y complejas hasta llegar al objetivo final deseado incluso evolucionar maacutes allaacute durante la fase de operacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 11: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

caso la faltante estaraacute dentro de alguna otra El orden de esas fases indicadas en el iacutetem previo es el loacutegico y adecuado pero advieacutertase como se dijo que normalmente habraacute realimentacioacuten hacia atraacutes

El modelo lineal o en Cascada es el paradigma maacutes antiguo y extensamente utilizado sin embargo las criacuteticas a eacutel (ver desventajas) han puesto en duda su eficacia Pese a todo tiene un lugar muy importante en la Ingenieriacutea de software y continuacutea siendo el maacutes utilizado y siempre es mejor que un enfoque al azar8

Desventajas del modelo cascada5

Los cambios introducidos durante el desarrollo pueden confundir al equipo profesional en las etapas tempranas del proyecto Si los cambios se producen en etapa madura (codificacioacuten o prueba) pueden ser catastroacuteficos para un proyecto grande

No es frecuente que el cliente o usuario final explicite clara y completamente los requisitos (etapa de inicio) y el modelo lineal lo requiere La incertidumbre natural en los comienzos es luego difiacutecil de acomodar8

El cliente debe tener paciencia ya que el software no estaraacute disponible hasta muy avanzado el proyecto Un error detectado por el cliente (en fase de operacioacuten) puede ser desastroso implicando reinicio del proyecto con altos costos

Modelos evolutivos

El software evoluciona con el tiempo Los requisitos del usuario y del producto suelen cambiar conforme se desarrolla el mismo Las fechas de mercado y la competencia hacen que no sea posible esperar a poner en el mercado un producto absolutamente completo por lo que se debe introducir una versioacuten funcional limitada de alguna forma para aliviar las presiones competitivas

En esas u otras situaciones similares los desarrolladores necesitan modelos de progreso que esteacuten disentildeados para acomodarse a una evolucioacuten temporal o progresiva donde los requisitos centrales son conocidos de antemano aunque no esteacuten bien definidos a nivel detalle

En el modelo Cascada y Cascada Realimentado no se tiene en cuenta la naturaleza evolutiva del software se plantea como estaacutetico con requisitos bien conocidos y definidos desde el inicio5

Los evolutivos son modelos iterativos permiten desarrollar versiones cada vez maacutes completas y complejas hasta llegar al objetivo final deseado incluso evolucionar maacutes allaacute durante la fase de operacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 12: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Los modelos ldquoIterativo Incrementalrdquo y ldquoEspiralrdquo (entre otros) son dos de los maacutes conocidos y utilizados del tipo evolutivo8

Modelo iterativo incremental

En teacuterminos generales podemos distinguir en la figura 4 los pasos generales que sigue el proceso de desarrollo de un producto software En el modelo de ciclo de vida seleccionado se identifican claramente dichos pasos La Descripcioacuten del Sistema es esencial para especificar y confeccionar los distintos incrementos hasta llegar al Producto global y final Las actividades concurrentes (Especificacioacuten Desarrollo y Validacioacuten) sintetizan el desarrollo pormenorizado de los incrementos que se haraacute posteriormente

Fig 4 - Diagrama geneacuterico del desarrollo evolutivo incremental

El diagrama 4 nos muestra en forma muy esquemaacutetica el funcionamiento de un ciclo iterativo incremental el cual permite la entrega de versiones parciales a medida que se va construyendo el producto final5 Es decir a medida que cada incremento definido llega a su etapa de operacioacuten y mantenimiento Cada versioacuten emitida incorpora a los anteriores incrementos las funcionalidades y requisitos que fueron analizados como necesarios

El incremental es un modelo de tipo evolutivo que estaacute basado en varios ciclos Cascada realimentados aplicados repetidamente con una filosofiacutea iterativa8 En la figura 5 se muestra un refino del diagrama previo bajo un esquema temporal para obtener finalmente el esquema del Modelo de ciclo de vida Iterativo Incremental con sus actividades geneacutericas asociadas Aquiacute se observa claramente cada ciclo cascada que es aplicado para la obtencioacuten de un incremento estos uacuteltimos se van integrando para obtener el producto final completo Cada incremento es un ciclo Cascada Realimentado aunque por simplicidad en la figura 5 se muestra como secuencial puro

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 13: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 5 - Modelo iterativo incremental para el ciclo de vida del software

Se observa que existen actividades de desarrollo (para cada incremento) que son realizadas en paralelo o concurrentemente asiacute por ejemplo en la figura mientras se realiza el disentildeo detalle del primer incremento ya se estaacute realizando en anaacutelisis del segundo La figura 5 es soacutelo esquemaacutetica un incremento no necesariamente se iniciaraacute durante la fase de disentildeo del anterior puede ser posterior (incluso antes) en cualquier tiempo de la etapa previa Cada incremento concluye con la actividad de ldquoOperacioacuten y Mantenimientordquo (indicada Operacioacuten en la figura) que es donde se produce la entrega del producto parcial al cliente El momento de inicio de cada incremento es dependiente de varios factores tipo de sistema independencia o dependencia entre incrementos (dos de ellos totalmente independientes pueden ser faacutecilmente iniciados al mismo tiempo si se dispone de personal suficiente) capacidad y cantidad de profesionales involucrados en el desarrollo etc

Bajo este modelo se entrega software ldquopor partes funcionales maacutes pequentildeasrdquo pero reutilizables llamadas incrementos En general cada incremento se construye sobre aquel que ya fue entregado5

Como se muestra en la figura 5 se aplican secuencias Cascada en forma escalonada mientras progresa el tiempo calendario Cada secuencia lineal o Cascada produce un incremento y a menudo el primer incremento es un sistema baacutesico con muchas funciones suplementarias (conocidas o no) sin entregar

El cliente utiliza inicialmente ese sistema baacutesico intertanto el resultado de su uso y evaluacioacuten puede aportar al plan para el desarrollo dellos siguientes incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 14: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

(o versiones) Ademaacutes tambieacuten aportan a ese plan otros factores como lo es la priorizacioacuten (mayor o menor urgencia en la necesidad de cada incremento) y la dependencia entre incrementos (o independencia)

Luego de cada integracioacuten se entrega un producto con mayor funcionalidad que el previo El proceso se repite hasta alcanzar el software final completo

Siendo iterativo con el modelo incremental se entrega un producto parcial pero completamente operacional en cada incremento y no una parte que sea usada para reajustar los requerimientos (como si ocurre en el modelo de construccioacuten de prototipos)8

El enfoque incremental resulta muy uacutetil con baja dotacioacuten de personal para el desarrollo tambieacuten si no hay disponible fecha liacutemite del proyecto por lo que se entregan versiones incompletas pero que proporcionan al usuario funcionalidad baacutesica (y cada vez mayor) Tambieacuten es un modelo uacutetil a los fines de evaluacioacuten

Nota Puede ser considerado y uacutetil en cualquier momento o incremento incorporar temporalmente el paradigma MCP como complemento teniendo asiacute una mixtura de modelos que mejoran el esquema y desarrollo general

Ejemplo

Un procesador de texto que sea desarrollado bajo el paradigma Incremental

podriacutea aportar en principio funciones baacutesicas de edicioacuten de archivos y

produccioacuten de documentos (algo como un editor simple) En un segundo

incremento se le podriacutea agregar edicioacuten maacutes sofisticada y de generacioacuten y

mezcla de documentos En un tercer incremento podriacutea considerarse el

agregado de funciones de correccioacuten ortograacutefica esquemas de paginado y

plantillas en un cuarto capacidades de dibujo propias y ecuaciones

matemaacuteticas Asiacute sucesivamente hasta llegar al procesador final requerido

Asiacute el producto va creciendo acercaacutendose a su meta final pero desde la

entrega del primer incremento ya es uacutetil y funcional para el cliente el cual

observa una respuesta raacutepida en cuanto a entrega temprana sin notar que

la fecha liacutemite del proyecto puede no estar acotada ni tan definida lo que

da margen de operacioacuten y alivia presiones al equipo de desarrollo

Como se dijo el Iterativo Incremental es un modelo del tipo evolutivo es decir donde se permiten y esperan probables cambios en los requisitos en tiempo de desarrollo se admite cierto margen para que el software pueda evolucionar Aplicable cuando los requisitos son medianamente bien conocidos pero no son completamente estaacuteticos y definidos cuestioacuten esa que si es indispensable para poder utilizar un modelo Cascada

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 15: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El modelo es aconsejable para el desarrollo de software en el cual se observe en su etapa inicial de anaacutelisis que posee aacutereas bastante bien definidas a cubrir con suficiente independencia como para ser desarrolladas en etapas sucesivas Tales aacutereas a cubrir suelen tener distintos grados de apremio por lo cual las mismas se deben priorizar en un anaacutelisis previo es decir definir cual seraacute la primera la segunda y asiacute sucesivamente esto se conoce como ldquodefinicioacuten de los incrementosrdquo en base a priorizacioacuten Pueden no existir prioridades funcionales por parte del cliente pero el desarrollador debe fijarlas de todos modos y con alguacuten criterio ya que en base a ellas se desarrollaraacuten y entregaraacuten los distintos incrementos

El hecho de que existan incrementos funcionales del software lleva inmediatamente a pensar en un esquema de desarrollo modular por tanto este modelo facilita tal paradigma de disentildeo

En resumen un modelo incremental lleva a pensar en un desarrollo modular con entregas parciales del producto software denominados ldquoincrementosrdquo del sistema que son escogidos en base a prioridades predefinidas de alguacuten modo El modelo permite una implementacioacuten con refinamientos sucesivos (ampliacioacuten yo mejora) Con cada incremento se agrega nueva funcionalidad o se cubren nuevos requisitos o bien se mejora la versioacuten previamente implementada del producto software

Este modelo brinda cierta flexibilidad para que durante el desarrollo se incluyan cambios en los requisitos por parte del usuario un cambio de requisitos propuesto y aprobado puede analizarse e implementarse como un nuevo incremento o eventualmente podraacute constituir una mejoraadecuacioacuten de uno ya planeado Aunque si se produce un cambio de requisitos por parte del cliente que afecte incrementos previos ya terminados (deteccioacutenincorporacioacuten tardiacutea) se debe evaluar la factibilidad y realizar un acuerdo con el cliente ya que puede impactar fuertemente en los costos

La seleccioacuten de este modelo permite realizar entregas funcionales tempranas al cliente (lo cual es beneficioso tanto para eacutel como para el grupo de desarrollo) Se priorizan las entregas de aquellos moacutedulos o incrementos en que surja la necesidad operativa de hacerlo por ejemplo para cargas previas de informacioacuten indispensable para los incrementos siguientes8

El modelo iterativo incremental no obliga a especificar con precisioacuten y detalle absolutamente todo lo que el sistema debe hacer (y coacutemo) antes de ser construido (como el caso del cascada con requisitos congelados) Soacutelo se hace en el incremento en desarrollo Esto torna maacutes manejable el proceso y reduce el impacto en los costos Esto es asiacute porque en caso de alterar o rehacer los requisitos solo afecta una parte del sistema Aunque loacutegicamente esta situacioacuten se agrava si se presenta en estado avanzado es decir en los uacuteltimos incrementos

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 16: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

En definitiva el modelo facilita la incorporacioacuten de nuevos requisitos durante el desarrollo

Con un paradigma incremental se reduce el tiempo de desarrollo inicial ya que se implementa funcionalidad parcial Tambieacuten provee un impacto ventajoso frente al cliente que es la entrega temprana de partes operativas del software

El modelo proporciona todas las ventajas del modelo en cascada realimentado reduciendo sus desventajas soacutelo al aacutembito de cada incremento

El modelo incremental no es recomendable para casos de sistemas de tiempo real de alto nivel de seguridad de procesamiento distribuido yo de alto iacutendice de riesgos

Modelo espiral

El modelo espiral fue propuesto inicialmente por Barry Boehm Es un modelo evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos controlados y sistemaacuteticos del Modelo Cascada Proporciona potencial para desarrollo raacutepido de versiones incrementales En el modelo Espiral el software se construye en una serie de versiones incrementales En las primeras iteraciones la versioacuten incremental podriacutea ser un modelo en papel o bien un prototipo En las uacuteltimas iteraciones se producen versiones cada vez maacutes completas del sistema disentildeado5 8

El modelo se divide en un nuacutemero de Actividades de marco de trabajo llamadas regiones de tareas En general existen entre tres y seis regiones de tareas (hay variantes del modelo) En la figura 6 se muestra el esquema de un Modelo Espiral con 6 regiones En este caso se explica una variante del modelo original de Boehm expuesto en su tratado de 1988 en 1998 expuso un tratado maacutes reciente

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 17: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Fig 6 - Modelo espiral para el ciclo de vida del software

Las regiones definidas en el modelo de la figura son

Regioacuten 1 - Tareas requeridas para establecer la comunicacioacuten entre el cliente y el desarrollador

Regioacuten 2 - Tareas inherentes a la definicioacuten de los recursos tiempo y otra informacioacuten relacionada con el proyecto

Regioacuten 3 - Tareas necesarias para evaluar los riesgos teacutecnicos y de gestioacuten del proyecto

Regioacuten 4 - Tareas para construir una o maacutes representaciones de la aplicacioacuten software

Regioacuten 5 - Tareas para construir la aplicacioacuten instalarla probarla y proporcionar soporte al usuario o cliente (Ej documentacioacuten y praacutectica)

Regioacuten 6 - Tareas para obtener la reaccioacuten del cliente seguacuten la evaluacioacuten de lo creado e instalado en los ciclos anteriores

Las actividades enunciadas para el marco de trabajo son generales y se aplican a cualquier proyecto grande mediano o pequentildeo complejo o no Las regiones que definen esas actividades comprenden un conjunto de tareas del trabajo ese conjunto siacute se debe adaptar a las caracteriacutesticas del proyecto en particular a emprender Noacutetese que lo listado en los iacutetems de 1 a 6 son conjuntos de tareas algunas de las ellas normalmente dependen del proyecto o desarrollo en si

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 18: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Proyectos pequentildeos requieren baja cantidad de tareas y tambieacuten de formalidad En proyectos mayores o criacuteticos cada regioacuten de tareas contiene labores de maacutes alto nivel de formalidad En cualquier caso se aplican actividades de proteccioacuten (por ejemplo gestioacuten de configuracioacuten del software garantiacutea de calidad etc)

Al inicio del ciclo o proceso evolutivo el equipo de ingenieriacutea gira alrededor del

espiral (metafoacutericamente hablando) comenzando por el centro (marcado con ๑ en la figura 6) y en el sentido indicado el primer circuito de la espiral puede producir el desarrollo de una especificacioacuten del producto los pasos siguientes podriacutean generar un prototipo y progresivamente versiones maacutes sofisticadas del software

Cada paso por la regioacuten de planificacioacuten provoca ajustes en el plan del proyecto el coste y planificacioacuten se realimentan en funcioacuten de la evaluacioacuten del cliente El gestor de proyectos debe ajustar el nuacutemero de iteraciones requeridas para completar el desarrollo

El modelo espiral puede ir adaptaacutendose y aplicarse a lo largo de todo el ciclo de vida del software (en el modelo claacutesico o cascada el proceso termina a la entrega del software)

Una visioacuten alternativa del modelo puede observarse examinando el eje de punto

de entrada de proyectos Cada uno de los circulitos () fijados a lo largo del eje representan puntos de arranque de los distintos proyectos (relacionados) a saber

Un proyecto de Desarrollo de Conceptos comienza al inicio de la espiral hace muacuteltiples iteraciones hasta que se completa es la zona marcada con verde

Si lo anterior se va a desarrollar como producto real se incia otro proyecto Desarrollo de nuevo Producto Que evolucionaraacute con iteraciones hasta culminar es la zona marcada en color azul

Eventual y anaacutelogamente se generaraacuten proyectos de Mejoras de Productos y de Mantenimiento de productos con las iteraciones necesarias en cada aacuterea (zonas roja y gris respectivamente)

Cuando la espiral se caracteriza de esta forma estaacute operativa hasta que el software se retira eventualmente puede estar inactiva (el proceso) pero cuando se produce un cambio el proceso arranca nuevamente en el punto de entrada apropiado (por ejemplo en Mejora del Producto)

El modelo espiral da un enfoque realista que evoluciona igual que el software se adapta muy bien para desarrollos a gran escala

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 19: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El Espiral utiliza el MCP para reducir riesgos y permite aplicarlo en cualquier etapa de la evolucioacuten Mantiene el enfoque claacutesico (cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la realidad

Este modelo requiere considerar riesgos teacutecnicos en todas las etapas del proyecto aplicado adecuadamente debe reducirlos antes de que sean un verdadero problema

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de Sistemas Operativos (complejos) tambieacuten en sistemas de altos riesgos o criacuteticos (Ej navegadores y controladores aeronaacuteuticos) y en todos aquellos en que sea necesaria una fuerte gestioacuten del proyecto y sus riesgos teacutecnicos o de gestioacuten

Desventajas importantes

Requiere mucha experiencia y habilidad para la evaluacioacuten de los riesgos lo cual es requisito para el eacutexito del proyecto

Es difiacutecil convencer a los grandes clientes que se podraacute controlar este enfoque evolutivo

Este modelo no se ha usado tanto como el Cascada (Incremental) o MCP por lo que no se tiene bien medida su eficacia es un paradigma relativamente nuevo y difiacutecil de implementar y controlar

Modelo espiral Win amp Win

Una variante interesante del Modelo Espiral previamente visto (Fig 6) es el Modelo espiral Win-Win6 (Barry Boehm) El Modelo Espiral previo (claacutesico) sugiere la comunicacioacuten con el cliente para fijar los requisitos en que simplemente se pregunta al cliente queacute necesita y eacutel proporciona la informacioacuten para continuar pero esto es en un contexto ideal que rara vez ocurre Normalmente cliente y desarrollador entran en una negociacioacuten se negocia coste frente a funcionalidad rendimiento calidad etc

Es asiacute que la obtencioacuten de requisitos requiere una negociacioacuten que tiene eacutexito cuando ambas partes ganan

Las mejores negociaciones se fuerzan en obtener Victoria amp Victoria (Win amp Win) es decir que el cliente gane obteniendo el producto que lo satisfaga y el desarrollador tambieacuten gane consiguiendo presupuesto y fecha de entrega realista Evidentemente este modelo requiere fuertes habilidades de negociacioacuten

El modelo Win-Win define un conjunto de actividades de negociacioacuten al principio de cada paso alrededor de la espiral se definen las siguientes actividades

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 20: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

1 Identificacioacuten del sistema o subsistemas clave de los directivos() (saber queacute quieren)

2 Determinacioacuten de condiciones de victoria de los directivos (saber queacute necesitan y los satisface)

3 Negociacioacuten de las condiciones victoria de los directivos para obtener condiciones Victoria amp Victoria (negociar para que ambos ganen)

() Directivo Cliente escogido con intereacutes directo en el producto que puede ser premiado por la organizacioacuten si tiene eacutexito o criticado si no

El modelo Win amp Win hace eacutenfasis en la negociacioacuten inicial tambieacuten introduce 3 hitos en el proceso llamados puntos de fijacioacuten que ayudan a establecer la completitud de un ciclo de la espiral y proporcionan hitos de decisioacuten antes de continuar el proyecto de desarrollo del software

Etapas en el desarrollo del software

Captura anaacutelisis y especificacioacuten de requisitos

Al inicio de un desarrollo (no de un proyecto) esta es la primera fase que se realiza y seguacuten el modelo de proceso adoptado puede casi terminar para pasar a la proacutexima etapa (caso de Modelo Cascada Realimentado) o puede hacerse parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de caraacutecter evolutivo)

En simple palabras y baacutesicamente durante esta fase se adquieren reuacutenen y especifican las caracteriacutesticas funcionales y no funcionales que deberaacute cumplir el futuro programa o sistema a desarrollar

Las bondades de las caracteriacutesticas tanto del sistema o programa a desarrollar como de su entorno paraacutemetros no funcionales y arquitectura dependen enormemente de lo bien lograda que esteacute esta etapa Esta es probablemente la de mayor importancia y una de las fases maacutes difiacuteciles de lograr certeramente pues no es automatizable no es muy teacutecnica y depende en gran medida de la habilidad y experiencia del analista que la realice

Involucra fuertemente al usuario o cliente del sistema por tanto tiene matices muy subjetivos y es difiacutecil de modelar con certeza yo aplicar una teacutecnica que sea la maacutes cercana a la adecuada (de hecho no existe la estrictamente adecuada) Si bien se han ideado varias metodologiacuteas incluso software de apoyo para captura elicitacioacuten y registro de requisitos no existe una forma infalible o absolutamente confiable y deben aplicarse conjuntamente buenos criterios y mucho sentido comuacuten por parte del o los analistas encargados de la tarea es fundamental tambieacuten lograr una fluida y adecuada comunicacioacuten y comprensioacuten con el usuario final o cliente del sistema

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 21: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

El artefacto maacutes importante resultado de la culminacioacuten de esta etapa es lo que se conoce como especificacioacuten de requisitos software o simplemente documento ERS

Como se dijo la habilidad del analista para interactuar con el cliente es fundamental lo comuacuten es que el cliente tenga un objetivo general o problema a resolver no conoce en absoluto el aacuterea (informaacutetica) ni su jerga ni siquiera sabe con precisioacuten queacute deberiacutea hacer el producto software (queacute y cuantas funciones) ni mucho menos coacutemo debe operar En otros casos menos frecuentes el cliente piensa que sabe precisamente lo que el software tiene que hacer y generalmente acierta muy parcialmente pero su empecinamiento entorpece la tarea de elicitacioacuten El analista debe tener la capacidad para lidiar con este tipo de problemas que incluyen relaciones humanas tiene que saber ponerse al nivel del usuario para permitir una adecuada comunicacioacuten y comprensioacuten

Escasas son las situaciones en que el cliente sabe con certeza e incluso con completitud lo que requiere de su futuro sistema este es el caso maacutes sencillo para el analista

La tareas relativas a captura elicitacioacuten modelado y registro de requerimientos ademaacutes de ser sumamente importante puede llegar a ser dificultosa de lograr acertadamente y llevar bastante tiempo relativo al proceso total del desarrollo al proceso y metodologiacuteas para llevar a cabo este conjunto de actividades normalmente se las asume parte propia de la Ingenieriacutea de Software pero dada la antedicha complejidad actualmente se habla de una Ingenieriacutea en Requisitos9 aunque ella auacuten no existe formalmente

Hay grupos de estudio e investigacioacuten en todo el mundo que estaacuten exclusivamente abocados a la idear modelos teacutecnicas y procesos para intentar lograr la correcta captura anaacutelisis y registro de requerimientos Estos grupos son los que normalmente hablan de la Ingenieriacutea en Requisitos es decir se plantea eacutesta como un aacuterea o disciplina pero no como una carrera universitaria en si misma

Algunos requisitos no necesitan la presencia del cliente para ser capturados yo analizados en ciertos casos los puede proponer el mismo analista o incluso adoptar unilateralmente decisiones que considera adecuadas (tanto en requerimientos funcionales como no funcionales) Por citar ejemplos probables Algunos requisitos sobre la arquitectura del sistema requisitos no funcionales tales como los relativos al rendimiento nivel de soporte a errores operativos plataformas de desarrollo relaciones internas o ligas entre la informacioacuten (entre registros o tablas de datos) a almacenar en caso de bases o bancos de datos etc Algunos funcionales tales como opciones secundarias o de soporte necesarias para una mejor o maacutes sencilla operatividad etc

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 22: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

La obtencioacuten de especificaciones a partir del cliente (u otros actores intervinientes) es un proceso humano muy interactivo e iterativo normalmente a medida que se captura la informacioacuten se la analiza y realimenta con el cliente refinaacutendola pulieacutendola y corrigiendo si es necesario cualquiera sea el meacutetodo de ERS utilizado EL analista siempre debe llegar a conocer la temaacutetica y el problema a resolver dominarlo hasta cierto punto hasta el aacutembito que el futuro sistema a desarrollar lo abarque Por ello el analista debe tener alta capacidad para comprender problemas de muy diversas aacutereas o disciplinas de trabajo (que no son especiacuteficamente suyas) asiacute por ejemplo si el sistema a desarrollar seraacute para gestionar informacioacuten de una aseguradora y sus sucursales remotas el analista se debe compenetrar en coacutemo ella trabaja y maneja su informacioacuten desde niveles muy bajos e incluso llegando hasta los gerenciales Dada a gran diversidad de campos a cubrir los analistas suelen ser asistidos por especialistas es decir gente que conoce profundamente el aacuterea para la cual se desarrollaraacute el software evidentemente una uacutenica persona (el analista) no puede abarcar tan vasta cantidad de aacutereas del conocimiento En empresas grandes de desarrollo de productos software es comuacuten tener analistas especializados en ciertas aacutereas de trabajo

Contrariamente no es problema del cliente es decir eacutel no tiene por queacute saber nada de software ni de disentildeos ni otras cosas relacionadas soacutelo se debe limitar a aportar objetivos datos e informacioacuten (de mano propia o de sus registros equipos empleados etc) al analista y guiado por eacutel para que en primera instancia defina el Universo de Discurso y con posterior trabajo logre confeccionar el adecuado documento ERS

Es bien conocida la presioacuten que sufren los desarrolladores de sistemas informaacuteticos para comprender yo rescatar las necesidades de los clientesusuarios Cuanto maacutes complejo es el contexto del problema maacutes difiacutecil es lograrlo a veces se fuerza a los desarrolladores a tener que convertirse en casi expertos de los dominios que analizan

Cuando esto no sucede es muy probable que se genere un conjunto de requisitos10 erroacuteneos o incompletos y por lo tanto un producto de software con alto grado de desaprobacioacuten por parte de los clientesusuarios y un altiacutesimo costo de reingenieriacutea y mantenimiento Todo aquello que no se detecte o resulte mal entendido en la etapa inicial provocaraacute un fuerte impacto negativo en los requisitos propagando esta corriente degradante a lo largo de todo el proceso de desarrollo e incrementando su perjuicio cuanto maacutes tardiacutea sea su deteccioacuten (Bell y Thayer 1976)(Davis 1993)

Procesos modelado y formas de elicitacioacuten de requisitos

Siendo que la captura elicitacioacuten y especificacioacuten de requisitos es una parte crucial en el proceso de desarrollo de software ya que de esta etapa depende el

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 23: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

logro de los objetivos finales previstos se han ideado modelos y diversas metodologiacuteas de trabajo para estos fines Tambieacuten existen herramientas software que apoyan las tareas relativas realizadas por el ingeniero en requisitos

El estaacutendar IEEE 830-1998 brinda una normalizacioacuten de las Praacutecticas Recomendadas para la Especificacioacuten de Requisitos Software11

A medida que se obtienen los requisitos normalmente se los va analizando el resultado de este anaacutelisis con o sin el cliente se plasma en un documento conocido como ERS o Especificacioacuten de Requisitos Software cuya estructura puede venir definida por varios estaacutendares tales como CMM-I

Un primer paso para realizar el relevamiento de informacioacuten es el conocimiento y definicioacuten acertada lo que se conoce como Universo de Discurso del problema que se define y entiende por

Universo de Discurso (UdeD) es el contexto general en el cual el software deberaacute ser desarrollado y deberaacute operar El UdeD incluye todas las fuentes de informacioacuten y todas las personas relacionadas con el software Esas personas son conocidas tambieacuten como actores de ese universo El UdeD es la realidad circunstanciada por el conjunto de objetivos definidos por quienes demandaron el software

A partir de la extraccioacuten y anaacutelisis de informacioacuten en su aacutembito se obtienen todas las especificaciones necesarias y tipos de requisitos para el futuro producto software

El objetivo de la Ingenieriacutea de Requisitos (IR) es sistematizar el proceso de definicioacuten de requisitos permitiendo elicitar modelar y analizar el problema generando un compromiso entre los Ingenieros de Requisitos y los clientesusuarios ya que ambos participan en la generacioacuten y definicioacuten de los requisitos del sistema La IR aporta un conjunto de meacutetodos teacutecnicas y herramientas que asisten a los ingenieros de requisitos (analistas) para obtener requerimientos lo maacutes seguros veraces completos y oportunos posibles permitiendo baacutesicamente

Comprender el problema Facilitar la obtencioacuten de las necesidades del clienteusuario Validar con el clienteusuario Garantizar las especificaciones de requisitos

Si bien existen diversas formas modelos y metodologiacuteas para elicitar definir y documentar requerimientos no se puede decir que alguna de ellas sea mejor o peor que la otra suelen tener muchiacutesimo en comuacuten y todas cumplen el mismo objetivo Sin embargo lo que si se puede decir sin dudas es que es indispensable

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 24: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

utilizar alguna de ellas para documentar las especificaciones del futuro producto software Asiacute por ejemplo hay un grupo de investigacioacuten argentino que desde hace varios antildeos ha propuesto y estudia el uso del LEL (Leacutexico Extendido del Lenguaje) y Escenarios como metodologiacutea aquiacute12 se presenta una de las tantas referencias y bibliografiacutea sobre ello Otra forma maacutes ortodoxa de capturar y documentar requisitos se puede obtener en detalle por ejemplo en el trabajo de la Universidad de Sevilla sobre Metodologiacutea para el Anaacutelisis de Requisitos de Sistemas Software13

En la Fig 7 se muestra un esquema maacutes o menos riguroso aunque no detallado de los pasos y tareas a seguir para realizar la captura anaacutelisis y especificacioacuten de requerimientos software Tambieacuten alliacute se observa queacute artefacto o documento se obtiene en cada etapa del proceso En el diagrama no se explicita metodologiacutea o modelo a utilizar sencillamente se pautan las tareas que deben cumplirse de alguna manera

Fig 7 - Diagrama de tareas para captura y anaacutelisis de requisitos

Una posible lista general y ordenada de tareas recomendadas para obtener la definicioacuten de lo que se debe realizarlos productos a obtener y las teacutecnicas a emplear durante la actividad de elicitacioacuten de requisitos en fase de Especificacioacuten de Requisitos Software es

1 Obtener informacioacuten sobre el dominio del problema y el sistema actual (UdeD)

2 Preparar y realizar las reuniones para elicitacioacutennegociacioacuten

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 25: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

3 Identificarrevisar los objetivos del usuario 4 Identificarrevisar los objetivos del sistema 5 Identificarrevisar los requisitos de informacioacuten 6 Identificarrevisar los requisitos funcionales 7 Identificarrevisar los requisitos no funcionales 8 Priorizar objetivos y requisitos

Algunos principios baacutesicos a tener en cuenta

Presentar y entender cabalmente el dominio de la informacioacuten del problema

Definir correctamente las funciones que debe realizar el Software Representar el comportamiento del software a consecuencias de

acontecimientos externos particulares incluso inesperados Reconocer requisitos incompletos ambiguos o contradictorios Dividir claramente los modelos que representan la informacioacuten las

funciones y comportamiento y caracteriacutesticas no funcionales

Clasificacioacuten e identificacioacuten de requerimientos

Se pueden identificar dos formas de requisitos

Requisitos de usuario Los requisitos de usuario son frases en lenguaje natural junto a diagramas con los servicios que el sistema debe proporcionar asiacute como las restricciones bajo las que debe operar

Requisitos de sistema Los requisitos de sistema determinan los servicios del sistema y pero con las restricciones en detalle Sirven como contrato

Es decir ambos son lo mismo pero con distinto nivel de detalle

Ejemplo de requisito de usuario El sistema debe hacer preacutestamos Ejemplo de requisito de sistema Funcioacuten preacutestamo entrada coacutedigo socio coacutedigo ejemplar salida fecha devolucioacuten etc

Se clasifican en tres los tipos de requisitos de sistema

Requisitos funcionales

Los requisitos funcionales describen

Los servicios que proporciona el sistema (funciones) La respuesta del sistema ante determinadas entradas El comportamiento del sistema en situaciones particulares

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 26: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Requisitos no funcionales

Los requisitos no funcionales son restricciones de los servicios o funciones que ofrece el sistema (ej cotas de tiempo proceso de desarrollo rendimiento etc)

Ejemplo 1 La biblioteca Central debe ser capaz de atender

simultaacuteneamente a todas las bibliotecas de la Universidad

Ejemplo 2 El tiempo de respuesta a una consulta remota no debe ser

superior a 12 s

A su vez hay tres tipos de requisitos no funcionales

Requisitos del producto Especifican el comportamiento del producto (Ej prestaciones memoria tasa de fallos etc)

Requisitos organizativos Se derivan de las poliacuteticas y procedimientos de las organizaciones de los clientes y desarrolladores (Ej estaacutendares de proceso lenguajes de programacioacuten etc)

Requisitos externos Se derivan de factores externos al sistema y al proceso de desarrollo (Ej requisitos legislativos eacuteticos etc)

Requisitos del dominio

Los requisitos del dominio se derivan del dominio de la aplicacioacuten y reflejan caracteriacutesticas de dicho dominio

Pueden ser funcionales o no funcionales

Ej El sistema de biblioteca de la Universidad debe ser capaz de exportar datos mediante el Lenguaje de Intercomunicacioacuten de Bibliotecas de Espantildea (LIBE) Ej El sistema de biblioteca no podraacute acceder a bibliotecas con material censurado

Disentildeo del sistema

Codificacioacuten del software

Durante esta la etapa se realizan las tareas que comuacutenmente se conocen como programacioacuten que consiste esencialmente en llevar a coacutedigo fuente en el lenguaje de programacioacuten elegido todo lo disentildeado en la fase anterior Esta tarea la realiza el programador siguiendo por completo los lineamientos impuestos en el disentildeo y en consideracioacuten siempre a los requisitos funcionales y no funcionales (ERS) especificados en la primera etapa

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 27: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Es comuacuten pensar que la etapa de programacioacuten o codificacioacuten (algunos la llaman implementacioacuten) es la que insume la mayor parte del trabajo de desarrollo del software sin embargo esto puede ser relativo (y generalmente aplicable a sistemas de pequentildeo porte) ya que las etapas previas son cruciales criacuteticas y pueden llevar bastante maacutes tiempo Se suele hacer estimaciones de un 30 del tiempo total insumido en la programacioacuten pero esta cifra no es consistente ya que depende en gran medida de las caracteriacutesticas del sistema su criticidad y el lenguaje de programacioacuten elegido6 En tanto menor es el nivel del lenguaje mayor seraacute el tiempo de programacioacuten requerido asiacute por ejemplo se tardariacutea maacutes tiempo en codificar un algoritmo en lenguaje ensamblador que el mismo programado en lenguaje C

Mientras se programa la aplicacioacuten sistema o software en general se realizan tambieacuten tareas de depuracioacuten esto es la labor de ir liberando al coacutedigo de los errores factibles de ser hallados en esta fase (de semaacutentica sintaacutectica y loacutegica) Hay una suerte de solapamiento con la fase siguiente ya que para depurar la loacutegica es necesario realizar pruebas unitarias normalmente con datos de prueba claro es que no todos los errores seraacuten encontrados soacutelo en la etapa de programacioacuten habraacuten otros que se encontraraacuten durante las etapas subsiguientes La aparicioacuten de alguacuten error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de disentildeo antes de continuar la codificacioacuten

Durante la fase de programacioacuten el coacutedigo puede adoptar varios estados dependiendo de la forma de trabajo y del lenguaje elegido a saber

Coacutedigo fuente es el escrito directamente por los programadores en editores de texto lo cual genera el programa Contiene el conjunto de instrucciones codificadas en alguacuten lenguaje de alto nivel Puede estar distribuido en paquetes procedimientos bibliotecas fuente etc

Coacutedigo objeto es el coacutedigo binario o intermedio resultante de procesar con un compilador el coacutedigo fuente Consiste en una traduccioacuten completa y de una sola vez de eacuteste uacuteltimo El coacutedigo objeto no es inteligible por el ser humano (normalmente es formato binario) pero tampoco es directamente ejecutable por la computadora Se trata de una representacioacuten intermedia entre el coacutedigo fuente y el coacutedigo ejecutable a los fines de un enlace final con las rutinas de biblioteca y entre procedimientos o bien para su uso con un pequentildeo inteacuterprete intermedio [a modo de distintos ejemplos veacutease EUPHORIA (inteacuterprete intermedio) FORTRAN (compilador puro) MSIL (Microsoft Intermediate Language) (inteacuterprete) y BASIC (inteacuterprete puro inteacuterprete intermedio compilador intermedio o compilador puro depende de la versioacuten utilizada)]

o El coacutedigo objeto no existe si el programador trabaja con un lenguaje a modo de inteacuterprete puro en este caso el mismo inteacuterprete se

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 28: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

encarga de traducir y ejecutar liacutenea por liacutenea el coacutedigo fuente (de acuerdo al flujo del programa) en tiempo de ejecucioacuten En este caso tampoco existe el o los archivos de coacutedigo ejecutable Una desventaja de esta modalidad es que la ejecucioacuten del programa o sistema es un poco maacutes lenta que si se hiciera con un inteacuterprete intermedio y bastante maacutes lenta que si existe el o los archivos de coacutedigo ejecutable Es decir no favorece el rendimiento en velocidad de ejecucioacuten Pero una gran ventaja de la modalidad inteacuterprete puro es que el esta forma de trabajo facilita enormemente la tarea de depuracioacuten del coacutedigo fuente (frente a la alternativa de hacerlo con un compilador puro) Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de programacioacuten elejido lo permite) es decir inicialmente trabajar a modo de inteacuterprete puro y una vez depurado el coacutedigo fuente (liberado de errores) se utiliza un compilador del mismo lenguaje para obtener el coacutedigo ejecutable completo con lo cual se agiliza la depuracioacuten y la velocidad de ejecucioacuten se optimiza

Coacutedigo ejecutable Es el coacutedigo binario resultado de enlazar uno o maacutes fragmentos de coacutedigo objeto con las rutinas y bibliotecas necesarias Constituye uno o maacutes archivos binarios con un formato tal que el sistema operativo es capaz de cargarlo en la memoria RAM (eventualmente tambieacuten parte en una memoria virtual) y proceder a su ejecucioacuten directa Por lo anterior se dice que el coacutedigo ejecutable es directamente inteligible por la computadora El coacutedigo ejecutable tambieacuten conocido como coacutedigo maacutequina no existe si se programa con modalidad de inteacuterprete puro

Pruebas (unitarias y de integracioacuten)

Entre las diversas pruebas que se le efectuan al software se pueden distinguir principalmente

Prueba unitarias Consisten en probar o testear piezas de software pequentildeas a nivel de secciones procedimientos funciones y moacutedulos aquellas que tengan funcionalidades especiacuteficas Dichas pruebas se utilizan para asegurar el correcto funcionamiento de secciones de coacutedigo mucho maacutes reducidas que el conjunto y que tienen funciones concretas con cierto grado de independencia

Pruebas de integracioacuten Se realizan una vez que las pruebas unitarias fueron concluidas exitosamente con eacutestas se intenta asegurar que el sistema completo incluso los subsistemas que componen las piezas individuales grandes del software funcionen correctamente al operar e inteoperar en conjunto

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 29: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Las pruebas normalmente se efectuacutean con los llamados datos de prueba que es un conjunto seleccionado de datos tiacutepicos a los que puede verse sometido el sistema yo moacutedulos yo bloques de coacutedigo Tambieacuten se escogen Datos que llevan a condiciones liacutemites al software a fin de probar su tolerancia y robustez datos de utilidad para mediciones de rendimiento datos que propocan condiciones eventuales o particulares poco comunes y a las que el software normalmente no estaraacute sometido pero pueden ocurrir etc Los datos de prueba no necesariamente son ficticios o creados pero normalmente si lo son los de poca probabilidad de ocurrencia

Generalmente existe un fase probatoria final y completa del software llamada Beta Test durante la cual el sistema instalado en condiciones normales de operacioacuten y trabajo es probado exhaustivamente a fin de encontrar errores inestabilidades respuestas erroacuteneas etc que hayan pasado los previos controles Estas son normalmente realizadas por personal idoacuteneo contratado o afectado especiacuteficamente a ello Los posibles errores encontrados se transmiten a los desarrolladores para su depuracioacuten En el caso de software de desarrollo a pedido el usuario final (cliente) es el que realiza el Beta Test teniendo para ello un periacuteodo de prueba pactado con el desarrollador

Instalacioacuten y paso a produccioacuten

La instalacioacuten del software es el proceso por el cual los programas desarrollados son transferidos apropiadamente al computador destino inicializados y eventualmente configurados todo ello con el propoacutesito de ser ya utilizados por el usuario final Constituye la etapa final en el desarrollo propiamente dicho del software Luego de eacutesta el producto entraraacute en la fase de funcionamiento y produccioacuten para el que fuera disentildeado

La instalacioacuten dependiendo del sistema desarrollado puede consistir en una simple copia al disco riacutegido destino (casos raros actualmente) o bien maacutes comunmente con una de complejidad intermedia en la que los distintos archivos componentes del software (ejecutables bibliotecas datos propios etc) son descomprimidos y copiados a lugares especiacuteficos preestablecidos del disco incluso se crean viacutenculos con otros productos ademaacutes del propio sistema operativo Este uacuteltimo caso comunmente es un proceso bastante automaacutetico que es creado y guiado con heramientas software especiacuteficas (empaquetado y distribucioacuten instaladores)

En productos de mayor complejidad la segunda alternativa es la utilizada pero es realizada yo guiada por especialistas puede incluso requerirse la instalacioacuten en varios y distintos computadores (instalacioacuten distribuiacuteda)

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 30: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

Tambieacuten en software de mediana y alta complejidad normalmente es requerido un proceso de configuracioacuten y chequeo por el cual se asignan adecuados paraacutemetros de funcionamiento y se testea la operatividad funcional del producto

En productos de venta masiva las instalaciones completas si son relativamente simples suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos paquetes de oficina utilitarios etc) con herramientas propias de instalacioacuten guiada incluso la configuracioacuten suele ser automaacutetica En productos de disentildeo especiacutefico o a medida la instalacioacuten queda restringida normalmente a personas especialistas involucradas en el desarrollo del software en cuestioacuten

Una vez realizada exitosamente la instalacioacuten del software el mismo pasa a la fase de produccioacuten (operatividad) durante la cual cumple las funciones para las que fue desarrollado es decir es finalmente utilizado por el (o los) usuario final produciendo los resultados esperados

Mantenimiento

El mantenimiento de software es el proceso de control mejora y optimizacioacuten del software ya desarrollado e instalado que tambieacuten incluye depuracioacuten de errores y defectos que puedan haberse filtrado de la fase de pruebas de control y beta test Esta fase es la uacuteltima (antes de iterar seguacuten el modelo empleado) que se aplica al ciclo de vida del desarrollo de software La fase de mantenimiento es la que viene despueacutes de que el software estaacute operativo y en produccioacuten

De un buen disentildeo y documentacioacuten del desarrollo dependeraacute coacutemo seraacute la fase de mantenimiento tanto en costo temporal como monetario Modificaciones realizadas a un software que fue elaborado con una documentacioacuten indebida o pobre y mal disentildeo puede llegar a ser tan costosa como el desarrollar el software desde el inicio Por ello es de fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y mantener adecuada y completa documentacioacuten

El periacuteodo de tiempo de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida6 Esta fase puede involucrar actualizaciones y evoluciones del software no necesariamente implica que el sistema tuvo errores Uno o maacutes cambios en el software por ejemplo de adaptacioacuten o evolutivos puede llevar incluso a rever y adaptar desde parte de las primeras fases del desarrollo inicial alterando todas las demaacutes dependiendo de cuaacuten profundos sean los cambios El modelo cascada comuacuten es particularmente costoso en mantenimiento ya que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes alteraciones en las demaacutes fases del ciclo de vida

Durante el periacuteodo de mantenimiento es comuacuten que surjan nuevas revisiones y versiones del producto que lo liberan maacutes depurado con mayor y mejor

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado

Page 31: La DefinicióN MáS Simple De Lo Que Es Un Hardware

MARIA GUADALUPE Y JONATAN LOPEZ TV 1A

funcionalidad mejor rendimiento etc Varias son las facetas que pueden ser alteradas para provocar cambios deseables evolutivos adaptaciones o ampliaciones y mejoras

Baacutesicamente se tienen los siguientes tipos de cambios

Perfectivos Aquellos que llevan a una mejora de la calidad interna del software en cualquier aspecto Reestructuracioacuten del coacutedigo definicioacuten maacutes clara del sistema y su documentacioacuten optimizacioacuten del rendimiento y eficiencia

Evolutivos Agregados modificaciones incluso eliminaciones necesarias en el software para cubrir su expansioacuten o cambio seguacuten las necesidades del usuario

Adaptivos Modificaciones que afectan a los entornos en los que el sistema opera tales como Cambios de configuracioacuten del hardware (por actualizacioacuten o mejora de componentes electroacutenicos) cambios en el software de base en gestores de base de datos en comunicaciones etc

Correctivos Alteraciones necesarias para corregir errores de cualquier tipo en el producto software desarrollado