DISEÑO DE SISTEMAS DE SOFTWARE
fercoraya19 de Agosto de 2013
2.653 Palabras (11 Páginas)408 Visitas
Historia
El contexto en el que se ha desarrollado el software está fuertemente ligado a la evolución de los sistemas informáticos. Un mejor rendimiento del hardware, una reducción del tamaño y un costo más bajo, han dado lugar a sistemas informáticos más sofisticados.
La evolución del software dentro del contexto de las áreas de aplicación de los sistemas basados en computadoras, puede verse de la siguiente manera :
Los primeros años
La segunda era
La tercera era
La cuarta era
1950 - 1965
1965 - 1975
1975 - 1985
1985 -
Orientación por lotes
Distribución limitada
Software “a medida”
Multiusuario
Tiempo real
Bases de Datos
Software como producto
Sistemas distribuidos
Incorporación de “inteligencia”
Hardware de bajo costo
Impacto en el consumo
Potentes sistemas de escritorio
Tecnología orientada a objetos
Sistemas expertos
Redes neuronales artificiales
Computación paralela
En los primeros años de desarrollo de las computadoras, el hardware sufrió continuos cambios, mientras que el software se contemplaba simplemente como un añadido. La programación de computadoras era un arte para el cual existían pocos métodos sistemáticos. El desarrollo de software se realizaba virtualmente sin ninguna planificación (hasta que los planes comenzaron a desfazarse y los costos a crecer). Durante este período se utilizaba en la mayoría de los sistemas una orientación por lotes. Algunas excepciones fueron sistemas interactivos (Sistema de reservas de América Airlines) y sistemas de tiempo real para la defensa (SAGE). No obstante esto, 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.
Lo normal era 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. La mayoría del software se desarrollaba y era utilizado por la misma persona u organización. La misma persona lo escribía, lo ejecutaba y, si fallaba, lo depuraba.
Debido a este entorno personalizado del software, el diseño era un proceso implícito, realizado en la mente de alguien, y la documentación normalmente no existía.
La segunda era en la evolución de los sistemas de computadoras se extiende desde la mitad de la década de los 60 hasta finales de los setenta. La multiprogramación y los sistemas multiusuarios introdujeron nuevos conceptos de interacción hombre máquina. Las técnicas interactivas abrieron un nuevo mundo de aplicaciones y nuevos niveles de sofisticación del hardware y del 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 lugar de en minutos. Los avances en los dispositivos de almacenamiento en línea condujeron a la primera generación de sistemas de gestión de bases de datos.
Otra característica fue el establecimiento del software como producto y la llegada de las “casas de software”.
Conforme crecía el número de sistemas, comenzaron a extenderse las bibliotecas de software de computadora. Se desarrollaban proyectos en los que se producían programas de decenas de miles de sentencias fuente. Todos esos programas (todas esas sentencias fuentes) tenían que ser corregidos cuando se detectaban fallos, modificados cuando cambiaban los requisitos de los usuarios o adaptados a nuevos dispositivos que se hubieran incorporado. Estas actividades se llamaron mantenimiento del software. El esfuerzo gastado en el mantenimiento comenzó a absorber recursos en una medida alarmante. Había comenzado una “crisis del software”.
La tercera era en la evolución de los sistemas de computadoras comenzó a mediado de los setenta y llega hasta el momento actual. El procesamiento distribuido (múltiples computadoras, cada una ejecutando funciones concurrentemente y comunicándose con alguna otra) incrementó notablemente la complejidad de los sistemas informáticos. Las redes de área local y de área global, las comunicaciones digitales de alto ancho de banda y la creciente demanda de acceso “instantáneo” a los datos, pusieron una fuerte presión sobre los desarrolladores del software.
En esta era se produce la llegada de los microprocesadores y las computadoras personales.
Las computadoras personales han sido el catalizador del gran crecimiento de muchas compañías de software. Estas compañías venden decenas y centenares de copias de sus productos de software.
La cuarta era del software de computadora está comenzando ahora. Las tecnologías orientadas a objetos están comenzando a ser utilizadas en muchas áreas de aplicación. Las técnicas de cuarta generación para el desarrollo de software ya están cambiando la forma en que algunos segmentos de la comunidad informática construyen los programas. Los sistemas expertos y el software de inteligencia artificial se han trasladado del laboratorio a las aplicaciones prácticas. El software de redes neuronales artificiales ha abierto excitantes posibilidades para el reconocimiento de formas y habilidades de procesamiento de información al estilo de como lo hacen los humanos.
Conforme transitamos por la cuarta era, continúan intensificándose los problemas asociados con el software de computadoras :
La sofisticación del hardware ha dejado desfasada nuestra capacidad de construir software que pueda explotar el potencial del hardware.
Nuestra capacidad de construir nuevos programas no puede dar abasto a la demanda de nuevos programas.
Nuestra capacidad de mantener los programas existentes está amenazada por el mal diseño y el uso de recursos inadecuados.
Los principios básicos de la Ingeniería de Software
En los primeros días de la informática, 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.
Hoy, la distribución de costos en el desarrollo de sistemas informáticos ha cambiado drásticamente. El software, en lugar del hardware, es normalmente el elemento principal del costo.
Los problemas existentes en el desarrollo de software no va a desaparecer rápidamente. Las soluciones que se van elaborando tienden a asistir prácticamente al desarrollador de software, y mejorar la calidad del software.
Mediante la combinación de métodos completos para todas las fases de desarrollo de software, mejores herramientas para automatizar estos métodos, bloques de construcción más potentes para la implementación del software, mejores técnicas para la garantía de calidad del software y una filosofía predominante para la coordinación, control y gestión, puede conseguirse una disciplina para el desarrollo del software : Ingeniería del software.
Una definición :
“El establecimiento y uso de principios de ingeniería robustos, orientados a obtener software económico que sea fiable y funcione de manera eficiente sobre máquinas reales.” (Fritz Bauer)
La ingeniería de software cubre tres elementos claves :
Métodos
Herramientas, y
Procedimientos
que facilitan al gestor controlar el proceso de desarrollo de software y suministrar las bases para construir software de alta calidad de una forma productiva.
Los métodos indican “cómo” construir técnicamente el software. Estos métodos abarcan tareas que incluyen : planificación y estimación de proyectos, análisis de los requisitos del sistema y del software, diseño de estructuras de datos, arquitectura de programas y procedimientos algorítmicos, codificación, prueba y mantenimiento.
Las herramientas suministran un soporte automático o semiautomático para los métodos. Cuando se integran las herramientas de forma que la información creada por una herramienta pueda ser usada por otra, se establece un sistema de soporte llamada Ingeniería de Software Asistida por Computadora (CASE).
Los procedimientos son el pegamento que junta los métodos y las herramientas, y facilita un desarrollo racional y oportuno. Definen la secuencia en la que se aplican los métodos, las entregas (documentos, informes, formas, etc.) que se requieren, los controles para asegurar la calidad y coordinar los cambios, y las directrices que ayudan a los gestores de software a evaluar el progreso.
La complejidad de los problemas
No todos los sistemas de software son complejos. En particular las aplicaciones que son especificadas, construidas, mantenidas, y usadas por la misma persona, no pueden considerarse problemas complejos. Estos sistemas tienden a tener propósitos limitados y un ciclo de vida muy corto. Estas aplicaciones generalmente son más tediosas que difícil de desarrollar, y en consecuencia aprender cómo se diseñan no es de nuestro interés.
Las aplicaciones de mayor envergadura (las que presentan comportamiento variado, mantienen la integridad de cientos de transacciones
...