You are on page 1of 5

Ingeniera del Software Definicin 1: Ingeniera del Software es el

de obtener software de modo rentable que sea fiable y trabaje en

estudio de los principios y metodologas para desarrollo y

mquinas reales. [Bauer, 1972]

mantenimiento de sistemas de software. [Zelkovitz, 1978]


Ingeniera del Software Definicin 4: 1. La aplicacin de un enfoque
Ingeniera del Software Definicin 2: Ingeniera del Software es la
aplicacin prctica del conocimiento cientfico en eldiseo y
construccin de programas de computadora y la documentacin
asociada requerida para desarrollar, operar y mantenerlos. Se conoce

sistemtico, disciplinado y cuantificable al desarrollo, operacin


(funcionamiento) y mantenimiento del software; es decir, la aplicacin
de ingeniera al software. 2. El estudio de enfoques como en (1) [IEEE,
1993]

tambin como desarrollo de software o produccin de software.


[Bohem, 1976]

Ingeniera del Software Definicin 5: Es una disciplina que


comprende todos los aspectos de la produccin de software desde las

Ingeniera del Software Definicin 3: Ingeniera del software trata


del establecimiento de los principios y mtodos de la ingeniera a fin

etapas iniciales de la especificacin del sistema, hasta el


mantenimiento de ste despus de que se utiliza. {Sommerville}.

Hoy en da el software tiene un doble papel. Es un producto y, al mismo tiempo, el vehculo para entregarlo.
Como producto, hace entrega de la potencia informtica
que incorpora el hardware informtico o, ms ampliamente, una red de computadoras que es accesible por
hardware local. Si reside dentro de un telfono celular u
opera dentro de una computadora central, el software es un
transformador de informacin, produciendo, gestionando,
adquiriendo, modificando, mostrando o transmitiendo
informacin que puede ser tan simple como un solo bit, o
tan complejo como una presentacin en multimedia. Como
vehculo utilizado para hacer entrega del producto, el
software acta como la base de control de la computadora
(sistemas operativos), la comunicacin de informacin
(redes) y la creacin y control de otros programas
(herramientas de software y entornos).

El papel del software informtico ha sufrido un cambio


significativo durante un periodo de tiempo superior a 50
aos. Enormes mejoras en rendimiento del hardware,
profundos cambios de arquitecturas informticas, grandes
aumentos de memoria y capacidad de almacenamiento y
una gran variedad de opciones de entrada y salida han
conducido a sistemas ms sofisticados y ms complejos
basados en computadora. La sofisticacin y la complejidad
pueden producir resultados deslumbrantes cuando un
sistema tiene xito, pero tambin pueden suponer grandes
problemas para aquellos que deben construir sistemas
complejos.
Libros populares publicados durante los aos 70 Y 80
proporcionan una visin histrica til dentro de la percepcin cambiante de las computadoras y del software, y
de su impacto en nuestra cultura. Osborne [OSB79]
hablaba de una nueva revolucin industrial. Toffler
[TOF80] llam a la llegada de componentes microelectrnicos la tercera ola del cambio en la historia de la
humanidad, y Naisbitt [NAI82] predijo la transformacin
de la sociedad industrial a una sociedad de informacin.
Feigenbaum y McCorduck [FEI83] sugirieron que la
informacin y el conocimiento (controlados por computadora) seran el foco de poder del siglo veintiuno, y
Stoll [ST089] argument que la "comunidad electrnica"
creada mediante redes y software es la clave para el
intercambio de conocimiento alrededor del mundo.
Al comienzo de los aos 90, Toffler [TOF90] describi
un cambio de poder en el que las viejas estructuras de
poder
(gubernamentales,
educativas,
industriales,
econmicas y militares) se desintegraran a medida que

las computadoras y el software nos llevaran a la democratizacin del conocimiento. A Yourdon [YOU92] le
preocupaba que las compaas en Estados Unidos pudieran perder su competitividad en empresas relativas al
software y predijo el declive y la cada del programador
americano. Hammer y Champy [HAM93] argumentaron
que las tecnologas de informacin iban a desempear el
papel principal en la reingeniera de la compaa. A
mediados de los aos 90, la persistencia de las
computadoras y del software gener una erupcin de libros
por neo-Luddites (por ejemplo: Resisting the Virtual
Life, editado por James Brook y Ian Boal, y The Future
Does not Compute de Stephen Talbot). Estos autores
critican enormemente la computadora, haciendo nfasis en
preocupaciones legtimas pero ignorando los profundos
beneficios que se han llevado a cabo [LEV95].

Al final de los aos 90, Yourdon [YOU96] volvi a


evaluar las perspectivas del software profesional y sugiri
la resurreccin y elevacin del programador americano.
A medida que Internet creci en importancia, su cambio de
pensamiento demostr ser correcto. Al final del siglo
veinte, el enfoque cambi una vez ms. Aqu tuvo lugar el
impacto de la bomba de relojera Y2K (por ejemplo:
[YOU98b], [DEJ98], [KAR99]). Aunque muchos vieron
las predicciones de los crticos del Y2K como reacciones,
sus populares lecturas devolvieron la difusin del software
a sus vidas. Hoy en da, la computacin omnipresente
[NOR98] ha producido una generacin de aplicaciones de
informacin que tienen conexin en banda ancha a la Web
para proporcionar una capa de conexin sobre nuestras
casas, oficinas, y autopistas [LEV99]. El papel del
software contina su expansin.
El programador solitario de antao ha sido reemplazado por un equipo de especialistas del software, cada uno
centrado en una parte de la tecnologa requerida para
entregar una aplicacin concreta. Y de este modo, las
cuestiones que se preguntaba el programador solitario son
las mismas cuestiones que nos preguntamos cuando construimos sistemas modernos basados en computadoras:

En 1970, menos del uno por ciento de las personas podra


haber descrito inteligentemente lo que significaba
software de computadora. Hoy, la mayora de los
profesionales y muchas personas en general piensan en su
mayora que comprenden el software. Pero lo entienden
realmente?
1.2.1. Caractersticas del software
Para poder comprender lo que es el software (y consecuentemente la ingeniera del software), es importante
examinar las caractersticas del software que lo
diferencian de otras cosas que los hombres pueden
construir. Cuando se construye hardware, el proceso
creativo humano (anlisis, diseo, construccin, prueba)
se traduce finalmente en una forma fsica. Si construimos
una nueva computadora, nuestro boceto inicial, diagramas
formales de diseo y prototipo de prueba, evolucionan
hacia un producto fsico (chips, tarjetas de circuitos
impresos, fuentes de potencia, etc.).
El software es un elemento del sistema que es lgico,
en lugar de fsico. Por tanto el software tiene unas
caractersticas considerablemente distintas a las del
hardware:
1. El software se desarrolla,
no se fabrica en un sentido clsico.
Aunque existen similitudes entre el desarrollo del software
y la construccin del hardware, ambas actividades son
fundamentalmente diferentes. En ambas actividades la
buena calidad se adquiere mediante un buen diseo, pero
la fase de construccin del hardware puede introducir
problemas de calidad que no existen (o son fcilmente
corregibles) en el software. Ambas actividades dependen
de las personas, pero la relacin entre las personas
dedicadas y el trabajo realizado es completamente
diferente para el software (vase el Captulo 7). Ambas
actividades requieren la construccin de un producto
pero los enfoques son diferentes.

Los costes del software se encuentran en la ingeniera.


Esto significa que los proyectos de software no se pueden
gestionar como si fueran proyectos de fabricacin.
2. El software no se estropea.
La Figura 1.1 describe, para el hardware, la proporcin
de fallos como una funcin del tiempo. Esa relacin,
denominada frecuentemente curva de baera, indica
qu el hardware exhibe relativamente muchos fallos al
principio de su vida (estos fallos son atribuibles
normalmente a defectos del diseo o de la fabricacin);
una vez corregidos los defectos, la tasa de fallos cae hasta
un nivel estacionario (bastante bajo, con un poco de
optimismo) donde permanece durante un cierto periodo de
tiempo. Sin embargo, conforme pasa el tiempo, el
hardware empieza a desgastarse y la tasa de fallos se
incrementa.
El software no es susceptible a los males del entorno
que hacen que el hardware se estropee. Por tanto, en
teora, la curva de fallos para el software tendra la forma
que muestra la Figura 1.2. Los defectos no detectados
harn que falle el programa durante las primeras etapas de
su vida. Sin embargo, una vez que se corrigen
(suponiendo que no se introducen nuevos errores) la curva
se aplana, como se muestra. La curva idealizada es una
gran simplificacin de los modelos reales de fallos del
software. Sin embargo la implicacin es clara, el software
no se estropea. Pero se deteriora!

Se estropea

Esto que parece una contradiccin, puede comprenderse mejor considerando la curva actual mostrada en la
Figura 1.2. Durante su vida, el software sufre cambios
(mantenimiento). Conforme se hacen los cambios, es
bastante probable que se introduzcan nuevos defectos,
haciendo que la curva de fallos tenga picos como se ve en
la Figura 1.2. Antes de que la curva pueda volver al estado
estacionario original, se solicita otro cambio, haciendo que
de nuevo se cree otro pico. Lentamente, el nivel mnimo
de fallos comienza a crecer ---el software se va
deteriorando debido a los cambios-o
Otro aspecto de ese deterioro ilustra la diferencia entre
el hardware y el software. Cuando un componente de
hardware se estropea se sustituye por una pieza de repuesto. No hay piezas de repuesto para el software. Cada fallo
en el software indica un error en el diseo o en el proceso
mediante el que se tradujo el diseo a cdigo mquina
ejecutable. Por tanto, el mantenimiento del software tiene
una complejidad considerablemente mayor que la del
mantenimiento del hardware.
3. Aunque la industria tiende a ensamblar componen
, la mayora del software se construye a medida.
Consideremos la forma en la que se disea y se construye
el hardware de control para un producto basado en
computadora. El ingeniero de diseo construye un sencillo
esquema de la circuitera digital, hace algn anlisis
fundamental para asegurar que se consigue la funcin
adecuada y va al armario donde se encuentran los
catlogos de componentes digitales. Despus de
seleccionar cada componente, puede solicitarse la compra.
Incremento del ndice
de fallos por efectos
laterales

Tiempo
FIGURA 1.1. Curva de fallos del hardware.

Curva idealizada
Tiempo
FIGURA 1.2. Curvas de fallos real e idealizada del software.

A medida que la disciplina del software evoluciona, se


El proceso
de estndar.
la informacin
creaSoftware
un grupodede gestin.
componentes
de diseo
Tomicomercial
constituye
la
mayor
de
las
reas
aplicacin
llos estndar y circuitos integrados preparadosdepara
la vendel
software.
Loslossistemas
discretos (por
ejemplo:
ta son
solamente
dos mil componentes
estndar
que
nminas,
cuentas
de
haberes-dbitos,
inventarios,
han
utilizan ingenieros mecnicos y elctricos cuandoetc.)
disean
evolucionado
haciaLos
el software
de sistemas
de informacin
nuevos sistemas.
componentes
reutilizables
se han
de
gestin
a una
o msconcentrarse
bases de datos
creado
para(SIG)
queque
el accede
ingeniero
pueda
en
que
contienen
informacin innovadores
comercial. Las
en
elementos
verdaderamente
de aplicaciones
un diseo, por
esta
rea reestructuran
datosque
existentes
para algo
facilitar
las
ejemplo,
las partes del los
diseo
representan
nuevo.
operaciones
comerciales
o gestionar
la toma de decisiones.
En el mundo
del hardware,
la reutilizacin
de comAdems
las tareas
convencionales
de de
procesamiento
ponentes de
es una
parte natural
del proceso
ingeniera. Ens
el mundo
delaplicaciones
software es de
algo
que slo
comenzado
de
datos, las
software
de ha
gestin
tambina
lograrse clculo
en una escala
amplia.
realizan
interactivo
(por ejemplo: el procesamiento
El componente
de software
de transacciones
en puntos
de ventas).debera disearse e
implementarse
para
que
pueda
volver a serElreutilizado
en
Software de ingeniera y cientfcos.
software de
muchos
programas
diferentes.
En
los
aos
60,
se
ingeniera y cientfico est caracterizado por los algoritmos
construyeron
de aplicaciones
subrutinas vancientficas
de
manejo de bibliotecas
nmeros. Las
desde la
reutilizables aen la
unavulcanologa,
amplia serie de
aplicaciones
cientficas
astronoma
desde
el anlisis
de la
y de ingeniera.
Esas bibliotecas
subrutinas
reutilizaban
presin
de los automotores
a ladedinmica
orbital
de las
de forma efectiva
algoritmos
bien
pero tenana un
lanzaderas
espaciales
y desde
la definidos,
biologa molecular
la
dominio de automtica.
aplicacin limitado.
Hoy en las
da, nuevas
hemos
fabricacin
Sin embargo,
extendido
nuestra
visin
de reutilizacin para
abarcar
no
aplicaciones
del rea
de ingeniera/ciencia
se han
alejado
slo
los
algoritmos,
sino
tambin
estructuras
de
datos.
Los
de los algoritmos convencionales numricos. El diseo
componentes
reutilizables(delmodernos
encapsulan
tanto
asistido por computadora
ingls CAD),
la simulacin
datos
como
procesos
que
se
aplican
a
los
datos,
de sistemas y otras aplicaciones interactivas, han comenpermitiendo
al ingeniero del
del software
softwarede crear
zado a coger caractersticas
tiemponuevas
real e
aplicaciones
a
partir
de
las
partes
reutilizables.
Por
incluso del software de sistemas.
ejemplo, las interfaces grficas de Software
usuario de hoy
en
da
se
empotrado.
construyen
frecuentemente
a
partir
de
componentes
reuLos productos inteligentes se han convertido en algo
tilizables
quecasi
permiten
de ventanas
grficas, dee
comn en
todosla creacin
los mercados
de consumo
mens
despleglables
y
de
una
amplia
variedad
industriales. El software empotrado reside en memoria de
de
mecanismos
slo lectura ydeseinteraccin.
utiliza para controlar productos y sistemas
de los mercados industriales y de consumo. El software
empotrado puede ejecutar funciones muy limitadas y
1.2.2.
Aplicaciones
del el
software
curiosas
(por ejemplo:
control de las teclas de un horno
de
microondas)
o suministrar
funcin situacin
significativa
El software
puede
aplicarse enuna
cualquier
en lay
con
de control
(por ejemplo:
funcionesespecfico
digitales
que capacidad
se haya definido
previamente
un conjunto
en
automvil,
tales como
gasolina,
de un
pasos
procedimentales
(es control
decir, de
un laalgoritmo)
indicadores
en
el
salpicadero,
sistemas
de
frenado,
(excepciones notables a esta regla son el softwareetc.).
de los
sistemas expertos y de redes neuronales). El contenido y el
determinismo
la informacinpersonales.
son factores
Software dedecomputadoras
Elimportantes
mercado dela
considerar
para
determinar
la
naturaleza
de
una
aplicacin
software de computadoras personales ha germinado
en las
de
software.
El
contenido
se
refiere
al
significado
a la
pasadas dos dcadas. El procesamiento de textos, lasyhojas
forma
de
la
informacin
de
entrada
y
salida.
Por
ejemplo,
de clculo, los grficos por computadora, multimedia,
muchas
aplicaciones
bancarias
usande
unos
datosaplicaciones
de entrada
entretenimientos,
gestin
de bases
datos,
muy estructurados
(unay base
de datos)
financieras,
de negocios
personales
y redesy o producen
acceso a
informes
con externas
determinados
formatos.deEllossoftware
bases
de datos
son algunas
cientos que
de
controla
una mquina automtica (por ejemplo: un control
aplicaciones.
numrico) acepta elementos de datos discretos con una
estructura limitada y produce rdenes concretas para la
mquina en rpida sucesin.

El determinismo de la informacin se refiere a la predecibilidad del orden y del tiempo de llegada de los
datos. Un programa de anlisis de ingeniera acepta datos
que estn en un orden predefinido, ejecuta el algoritmo(s)
de anlisis sin interrupcin y produce los datos
resultantes en un informe o formato grfico. Se dice que
tales aplicaciones son determinadas. Un sistema operativo multiusuario, por otra parte, acepta entradas que
tienen un contenido variado y que se producen en instantes arbitrarios, ejecuta algoritmo s que pueden ser
interrumpidos por condiciones externas y produce una
salida que depende de una funcin del entorno y del
tiempo. Las aplicaciones con estas caractersticas se dice
que son indeterminadas.
Algunas veces es difcil establecer categoras gen_
ricas para las aplicaciones del software que sean significativas. Conforme aumenta la complejidad del
software, es ms difcil establecer compartimentos
ntidamente separados. Las siguientes reas del software
indican la amplitud de las aplicaciones potenciales:
Software de sistemas. El software de sistemas es un
conjunto de programas que han sido escritos para servir a
otros programas. Algunos programas de sistemas (por
ejemplo: compiladores, editores y utilidades de gestin de
archivos) procesan estructuras de informacin complejas
pero determinadas. Otras aplicaciones de sistemas (por
ejemplo: ciertos componentes del sistema operativo,
utilidades de manejo de perifricos,
procesadores de telecomunicaciones) procesan datos en
gran medida indeterminados. En cualquier caso, el rea del
software de sistemas se caracteriza por una fuerte
interaccin con el hardware de la computadora; una gran
utilizacin por mltiples usuarios; una operacin concurrente que requiere una planificacin, una comparticin
de recursos y una sofisticada gestin de procesos; unas
estructuras de datos complejas y mltiples interfaces
externas.
Software de tiempo real. El software que coordina/analiza/controla sucesos del mundo real conforme
ocurren, se denomina de tiempo real. Entre los elementos
del software de tiempo real se incluyen: un componente de
adquisicin de datos que recolecta y da formato a la
informacin recibida del entorno externo, un componente
de anlisis que transforma la informacin segn lo
requiera la aplicacin, un componente de contro/salida
que responda al entorno externo, y un componente de
monitorizacin que coordina todos los dems componentes, de forma que pueda mantenerse la repuesta en
tiempo real (tpicamente en el rango de un milisegundo a
un segundo).

Software basado en Web. Las paginas Web buscadas por un


explorador son software que incorpora instrucciones ejecutables
(por ejemplo, CGI, HTML, Perl, o Java), y datos (por ejemplo,
hipertexto y una variedad de formatos de audio y visuales). En
esencia, la red viene a ser una gran computadora que proporciona
un recurso software casi ilimitado que puede ser accedido por
cualquiera con un modem.
Software de inteligencia artificial. EI software de inteligencia
artificial (IA) hace uso de algoritmos no numricos para resolver
problemas complejos para los que no son adecuados el calculo 0 el
anlisis directo. Los sistemas expertos, tambin llamados sistemas
basados en el conocimiento, reconocimiento de patrones (imgenes

You might also like