La importancia del software

Anuncio
Roger S. Presuman
Ingeniería de Software un Enfoque practico
LA IMPORTANCIA DEL SOFTWARE
Durante las tres primeras décadas de la informática, el principal desafió era desarrollar el
hardware de las computadoras de forma que se redujera el coste de procesamiento y
almacenamiento de datos. A lo largo de la década de los 80, los avances en
microelectrónica han dado como resultado una mayor potencia de cálculo a la vez que una
reducción del coste.
Hoy el problema es diferente. El principal desafío es reducir el coste y mejorar la calidad de
las soluciones basadas en computadoras —soluciones que se implementan con el software.
La potencia de las grandes computadoras de ayer está hoy disponible en un simple circuito
integrado. Las imponentes capacidades de procesamiento y almacenamiento del hardware
moderno representa un gran potencial de cálculo. El software es el mecanismo que nos
facilita utilizar y explotar este potencial.
La evolución del software
El contexto en el que se ha desarrollado el software esta fuertemente ligado a las cuatro
décadas de evolución de los sistemas informáticos. Un mejor rendimiento del hardware, un
tamaño más pequeño y un coste más bajo, han dado lugar a sistemas informáticos más
sofisticados. Nos hemos trasladado de los procesadores con tubos de vacío a dispositivos
electrónicos. En sus libros populares sobre “la revolución de las computadoras”, Osborne
[0SB79] la caracteriza como una “nueva revolución industrial”; Toffler [TOF8O] llamó a la
llegada de piezas microelectrónicas la “tercera ola de cambio” en la historia de la
humanidad; y NAISBITT [NA1821 predijo que la transformación de la sociedad industrial
en una “sociedad de la información” tendrá un profundo impacto en nuestras vidas.
La Figura 1. 3 describe la evolución del software dentro del contexto de las áreas de
aplicación de los sistemas basados en computadoras. Durante los primeros años de
desarrollo de las computadoras, el hardware sufrió continuos cambios, mientras que el
software se veía simplemente como un añadido. La programación de computadoras era un
arte de “andar por casa” para el que existían pocos métodos sistemáticos. El desarrollo del
software se realizaba virtualmente sin ninguna planificación, aunque comenzaron a
aparecer algunos deslices en los costes o planificación. Durante este período se utilizaba en
la mayoría de los sistemas una orientación por lotes. Algunas excepciones notables fueron
algunos sistemas interactivos tales como el sistema de reserva de billetes de la American
Airlines y los sistemas de tiempo real orientados a la defensa, tales como SAGE. Sin
embargo, la mayor parte del hardware se dedicaba a la ejecución de un único programa que
a su vez se dedicaba a una aplicación específica.
Durante los primeros años era normal que el hardware fuera de propósito general. Por otra
parte, el software se diseñaba a medida para cada aplicación y tenía una distribución
relativamente pequeña.
Roger S. Presuman
Ingeniería de Software un Enfoque practico
La producción de software (es decir, de programas desarrollados para ser vendidos a uno o
más clientes) estaba en su infancia. La mayoría del software se desarrollaba y utilizaba por
la misma persona u organización. La misma persona lo escribía, lo ejecutaba y si fallaba lo
depuraba. Debido a que la movilidad en el trabajo era baja, los ejecutivos estaban seguros
de que esa persona estaría allí cuando se encontrara algún error. Debido a este entorno
personalizado del software, el diseño era un proceso implícito, ejecutado en la cabeza de
alguien, y la documentación no existía normalmente.
Figura 1.3
A lo largo de los primeros años aprendimos mucho sobre la implementación de sistemas
informáticos, pero relativamente poco sobre la ingeniería de las computadoras. Sin
embargo, en honor a la verdad, debemos reconocer que durante esta era se desarrollaron
muchos sistemas informáticos excepcionales. Algunos de éstos permanecen en uso hoy, y
por sus características, continúan admirándose con toda justicia.
La segunda era de la evolución de los sistemas de computadora (Figura 1.3) se extiende
desde la mitad de la década de los 60 hasta finales de los 70. La multiprogramación, los
sistemas multiusuarios, introdujeron nuevos conceptos de interacción hombre-maquina. Las
técnicas interactivas abrieron un nuevo mundo de aplicaciones y nuevos niveles de
sofisticación del hardware y software. Los sistemas de tiempo real podían recoger, analizar
y transformar datos de múltiples fuentes, controlando así los procesos y produciendo
salidas en milisegundos en vez de minutos. Los avances en los dispositivos de
almacenamiento en línea condujeron a la primera generación de sistemas de gestión de base
de datos.
La segunda era se caracterizó también por el uso del software como producto y la llegada
de las “casas de software”. El software se desarrollaba para una amplia distribución en un
mercado multidisciplinario. Se distribuían los programas para computadoras grandes y
minicomputadoras a ciento y a veces miles de usuarios. Los patronos de la industria,
gobierno y universidad se aprestaban a “desarrollar el último paquete de software” y ganar
así mucho dinero.
Conforme creció el número de sistemas informáticos, comenzaron a extenderse las
bibliotecas de software de computadoras. Las casas desarrollaron proyectos que producían
Roger S. Presuman
Ingeniería de Software un Enfoque practico
programas de decenas de miles de sentencias fuente. Los productos software comprados al
exterior añadieron cientos de miles de nuevas sentencias. Una nube negra apareció en el
horizonte: todos estos programas —todas estas sentencias fuente— tenían que ser
corregidos cuando se detectaran fallos, se modificaran por cambios en los requerimientos
del usuario o se adaptaran a un nuevo hardware que se hubiera comprado. Estas actividades
se llamaron colectivamente mantenimiento del software. El esfuerzo gastado en el
mantenimiento del software comenzó a absorber recursos en una medida alarmante. Aún
peor, la naturaleza personalizada de muchos programas los hacía virtualmente imposibles
de mantener. Había comenzado una crisis del software.
La tercera era de la evolución de los sistemas de computadoras comenzó a mediados de los
70 y continúa hoy. El sistema distribuido —computadoras múltiples, cada una ejecutando
funciones concurrentemente y comunicándose con alguna otra— incrementó notablemente
la complejidad de los sistemas informáticos. Redes de área local y global, comunicaciones
digitales de alto ancho de banda y creciente demanda de acceso “instantáneo” a los datos,
supusieron una fuerte presión sobre los desarrolladores de software. La tercera era también
se caracteriza por la llegada y amplio uso de los microprocesadores y computadoras
personales. El microprocesador es una parte integral de un amplio espectro de productos
“inteligentes” que incluyen a automóviles, hornos microondas, robots industriales, equipos
de diagnóstico de suero sanguíneo. En muchos casos, la tecnología del software es
integrada en estos productos por equipos técnicos que conocen el hardware, pero
normalmente son novatos en el desarrollo de software.
Las computadoras personales han sido la catálisis para el crecimiento de muchas compañías
de software. Mientras que las compañías de software de la segunda era vendían cientos o
miles de copias de sus programas, las compañías de software de la tercera era venden
decenas e incluso centenas de miles de copias. El hardware de las computadoras personales
se ha convertido rápidamente en un producto estándar, mientras que el software
suministrado con el mismo marca la diferencia. De hecho, mientras que las ventas de
computadoras personales se estabilizaron hacia mitad de los 80, las ventas de productos
software continuaron creciendo. Mucha gente en la industria y como particular gasta más
dinero en software, de lo que gastaron en la computadora sobre la que se ejecuta el
software.
La cuarta era en software de computadora está ahora empezando. Autores tales como
Feigenbaum y McCorduck [FE183] predijeron que las computadoras de la “quinta
generación” y su correspondiente software tendrá un profundo impacto en el equilibrio de
la potencia política e industrial de todo el mundo. Ya, las técnicas de la cuarta generación
para el desarrollo de software (tratado más adelante en este capítulo) están cambiando la
forma en que algunos segmentos de la comunidad informática construye los programas de
computadora. Los sistemas expertos y el software de inteligencia artificial se han trasladado
finalmente del laboratorio a aplicaciones prácticas, en un amplio rango de problemas del
mundo real.
Conforme nos movemos en la cuarta era, continúa intensificándose la crisis del software.
Por ahora podemos describir la crisis del software de la siguiente forma:
Roger S. Presuman
Ingeniería de Software un Enfoque practico
1. La sofisticación del hardware ha dejado atrás nuestra capacidad de construir software
que pueda explotar el potencial del hardware.
2. Nuestra capacidad de construir nuevos programas no puede descansar, debido a la
demanda de nuevos programas.
3. Nuestra capacidad de mantener los programas existentes está amenazada por el mal
diseño y el uso de recursos inadecuados.
Como respuesta a la crisis del software, muchas industrias están adoptando prácticas de
ingeniería del software —el tema al que se dedica este libro.
Una perspectiva industrial
En 105 primeros días de la informática, los sistemas basados en computadoras se
desarrollaban usando técnicas de gestión orientadas al hardware. Los gestores del proyecto
se centraban en el hardware, debido a que el factor principal del presupuesto en el
desarrollo del sistema. Para controlar los costes del hardware los gestores instituyeron
controles formales y estándares técnicos. Exigían un análisis y diseño completo antes de
que algo se construyera. Medían el proceso para determinar dónde podían hacerse mejoras.
Dicho sencillamente, aplicaban los controles, métodos y herramientas que reconocemos
como ingeniería del hardware. Desgraciadamente, el software no era normalmente más que
un añadido.
En los primeros días, la programación se veía como un arte. Existían pocos métodos
formales y pocas personas los usaban. El programador aprendía normalmente su oficio
mediante prueba y error. La jerga y desafíos de la construcción del software de
computadoras crearon una mística que pocos ejecutivos se preocuparon de penetrar. El
mundo del software era virtualmente indisciplinado, ¡y muchos practicantes de entonces lo
amaban!
Hoy, la distribución de costes para el desarrollo de sistemas informáticos ha cambiado
dramáticamente. El software, en vez del hardware, es normalmente el elemento principal
del coste. En las pasadas décadas los ejecutivos y muchos practicantes técnicos se habían
hecho las siguientes preguntas:
• ¿Por qué lleva tanto tiempo terminar los programas?
• ¿Por qué es el coste tan alto?
• ¿Por qué no podemos encontrar todos los errores antes de darle el software a nuestros
clientes?
• ¿Por qué tenemos dificultad en medir el progreso conforme se desarrolla el software?
Estas, y muchas otras preguntas, son una manifestación de la característica del software y la
forma en que se desarrolla —un problema que ha llevado a la adopción de la práctica de la
ingeniería del software.
Documentos relacionados
Descargar