Evolución del Software

13
Educación Presencial SISTEMAS DE INFORMACIÓN Ing. Gustavo Eduardo Medina Ramos Universitaria de Investigación y Desarrollo Bucaramanga - 2012

description

Evolución del Software

Transcript of Evolución del Software

Page 1: Evolución del Software

Educación Presencial

SISTEMAS DE INFORMACIÓN

Ing. Gustavo Eduardo Medina Ramos

Universitaria de Investigación y Desarrollo

Bucaramanga - 2012

Page 2: Evolución del Software

Página 2

Sistemas de Información

Copyright © UDI – Educación A Distancia

La Ingeniería del Software es la rama de la ingeniería que crea y mantiene las aplicaciones de software usando tecnologías y prácticas de las ciencias de la computación, manejo de proyectos, ingeniería, el ámbito de la aplicación, y otros campos. Hay quienes opinan que este proceso debería de llamarse "Desarrollo del Software" frente a Ingeniería del Software, Pete McBreen (autor de los libros: Software Craftsmanship and Questioning Extreme Programming) afirma que el termino ingeniería implica nivel de rigor y de pruebas mucho mayores que lo habitual en los desarrollos actuales. Según la definición del IEEE, "software es la suma total de los programas de ordenador, procedimientos, reglas, la documentación asociada y los datos que pertenecen a un sistema de cómputo" y "un producto de software es un producto diseñado para un usuario". En este contexto, la Ingeniería de Software (SE del inglés "Software Engineering") es un enfoque sistemático del desarrollo, operación, mantenimiento y retiro del software. Ingeniería del Software, es el término que utilizó Fritz Bauer en la primera conferencia sobre desarrollo de software patrocinada por el Comité de Ciencia de la OTAN celebrada en Garmisch (Alemania), en octubre de 1968, previamente había sido utilizado por el holandés Edsger Dijkstra en su obra The Humble Programmer. Puede definirse según Alan Davis como "la aplicación inteligente de principios probados, técnicas, lenguajes y herramientas para la creación y mantenimiento, dentro de un coste razonable, de software que satisfaga las necesidades de los usuarios".

CRISIS DEL SOFTWARE

Básicamente, la crisis del software se refiere a la dificultad en escribir programas libres de defectos, fácilmente comprensibles, y que sean verificables. Las causas son, entre otras, la complejidad que supone la tarea de programar, y los cambios a los que se tiene que ver sometido un programa para ser continuamente adaptado a las necesidades de los usuarios.

Page 3: Evolución del Software

Página 3

Sistemas de Información

Copyright © UDI – Educación A Distancia

Además, no existen todavía herramientas que permitan estimar de una manera exacta, antes de comenzar el proyecto, cuál es el esfuerzo que se necesitará para desarrollar un programa. Este hecho provoca que la mayoría de las veces no sea posible estimar cuánto tiempo llevará un proyecto, ni cuánto personal será necesario. Cuando se fijan plazos normalmente no se cumplen por este hecho. Del mismo modo, en muchas ocasiones el personal asignado a un proyecto se incrementa con la esperanza de disminuir el plazo de ejecución.

Por último, las aplicaciones de hoy en día son programas muy complejos, inabordables por una sola persona. En sus comienzos se valoró como causa también la inmadurez de la ingeniería de software, aunque todavía hoy en día no es posible realizar estimaciones precisas del coste y tiempo que necesitará un proyecto de software.

Englobó a una serie de sucesos que se venían observando en los proyectos de desarrollo de software:

Los proyectos no terminaban en plazo. Los proyectos no se ajustaban al presupuesto inicial.

Page 4: Evolución del Software

Página 4

Sistemas de Información

Copyright © UDI – Educación A Distancia

Baja calidad del software generado. Software que no cumplía las especificaciones. Código inmantenible que dificultaba la gestión y evolución del

proyecto.

Aunque se han propuesto diversas metodologías para intentar subsanar los problemas mencionados, lo cierto es que todavía hoy no existe ningún método que haya permitido estimar de manera fiable el coste y duración de un proyecto antes de su comienzo.

LÍNEA DE TIEMPO

ERA AÑOS CARACTERISITCAS RELEVANTES

1ª 1950 - 1965 Se trabajaba con la idea de “Codificar y Corregir”.

No existía un planteamiento previo.

No existía documentación de ningún tipo.

Existencia de pocos métodos formales y pocos creyentes en ellos.

Desarrollo a base de prueba y error.

2ª 1965 - 1972 Se busca simplificar código.

Aparición de Multiprogramación y Sistemas Multiusuarios.

Sistemas de Tiempo Real apoyan la toma de decisiones.

Aparición de Software como producto. (Casas de Software).

Inicio de la crisis del software.

Se buscan procedimientos para el desarrollo del Software.

3ª 1972 - 1989 Nuevo Concepto: Sistemas Distribuidos.

Complejidad en los Sistemas de Información.

Aparecen: Redes de área local y global, y Comunicadores Digitales.

Amplio Uso de Microprocesadores.

4ª 1989 - ¿? Impacto Colectivo de Software.

Aparecen: Redes de Información, Tecnologías Orientadas a Objetos.

Aparecen: Redes Neuronales, Sistemas Expertos y SW de Inteligencia Artificial.

La información como valor preponderante dentro de las Organizaciones.

Page 5: Evolución del Software

Página 5

Sistemas de Información

Copyright © UDI – Educación A Distancia

PRIMERA ERA

Durante los primeros años de la era de la computadora, el software se contemplaba como un añadido. Desde entonces el campo se ha desarrollado tremendamente. 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, hasta que los planes comenzaron a descalabrarse y los costos a correr. Los programadores trataban de hacer las cosas bien, y con un esfuerzo heroico, a menudo salían con éxito. Los problemas a ser resueltos eran principalmente de una naturaleza técnica, el énfasis estaba en expresar algoritmos conocidos eficazmente en algún lenguaje de programación.

En estos primeros años lo normal era que el hardware fuera de propósito general. Por otra parte, el software se diseña a medida para cada aplicación y tenía una distribución relativamente pequeña. El software como producto estaba en su infancia. La mayoría del software se desarrollaba y era utilizado por la misma persona en una 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, realizado en la mente de alguien, y la documentación normalmente no existía.

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 de la verdad, debemos reconocer que durante esa era se desarrollaron muchos sistemas informáticos excepcionales. Algunos de ellos todavía se siguen utilizando hoy y, por sus características, siguen siendo admirados con toda justicia.

SEGUNDA ERA

La segunda era en la evolución de los sistemas de computadora se extienden desde la mitad de la década de los sesenta hasta finales de los setenta. La multiprogramación y los sistemas multiusuario introdujeron nuevos conceptos de interacción hombre - máquina. Las técnicas interactivas abrieron un nuevo mundo de aplicaciones y

Page 6: Evolución del Software

Página 6

Sistemas de Información

Copyright © UDI – Educación A Distancia

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.

La segunda era se caracterizó también por el establecimiento del software ya se desarrollaba para tener una amplia distribución en un mercado multidisciplinario. Los programas se distribuían para computadoras grandes y para minicomputadoras, a cientos e incluso a miles de usuarios. Los patronos de la industria, del gobierno y de la universidad se aprestaban a “desarrollar el mejor paquete de software” y ganar así mucho dinero.

Conforme crecía el número de sistemas informáticos, comenzaron a extenderse as bibliotecas de software de computadora. Las casas desarrollaban proyectos en los que se producían programas de decenas de miles de sentencias fuente. Los productos de software comprados al exterior incorporaban cientos de miles de nuevas sentencias. Una nube negra apareció en el horizonte. Todos esos programas, todas esas sentencias fuente tenían que ser corregidos cuando se detectaban fallos, modificados cuando cambiaban los requisitos de los usuarios o adaptados a nuevos dispositivos hardware que se hubieran adquirido. Esta 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”

TERCERA ERA

La tercera era en la evolución de los sistemas de computadora comenzó a mediados de los años setenta y continuó más allá de una década. El sistema 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 creciente demanda

Page 7: Evolución del Software

Página 7

Sistemas de Información

Copyright © UDI – Educación A Distancia

de acceso “instantáneo” a los datos, supusieron una fuente presión sobre los desarrolladores del software. Aún más, los sistemas y el software que lo permitían continuaron residiendo dentro de la industria y de la academia. El uso personal era extraño.

La conclusión de la tercera era se caracterizó por la llegada y amplio uso de los microprocesadores. El microprocesador ha producido un extenso grupo de productos inteligentes, desde automóviles hasta hornos microondas, desde robots industriales a equipos de diagnóstico de suero sanguíneo, pero ninguno ha sido más importante que la computadora personal. En menos de una década, las computadoras llegarán a ser fácilmente accesibles al público.

CUARTA ERA

La cuarta era de la evolución de sistemas informáticos se aleja de las computadoras multiusuario y de los programas de computadoras, dirigiéndose al impacto colectivo de las microcomputadoras y del software. Potentes máquinas personales controladas por sistemas operativos sofisticados, en redes globales y locales, acompañadas por aplicaciones de software avanzadas se han convertido en la norma. Las arquitecturas informáticas están cambiando de entornos centralizados de grandes computadoras a entornos descentralizados cliente/servidor. Las redes de información en todo el mundo proporcionan una infraestructura que iguala a expertos y políticos en pensar sobre una “superautopista de información” y una “conexión del ciberespacio”. De hecho internet se puede observar como un “software” al que pueden acceder usuarios individuales.

La industria del software ya es la cuna de la economía del mundo. Las decisiones tomadas por gigantes de la industria tales como Microsoft arriesgan billones de dólares. A medida que la cuarta generación progresa, han comenzado a surgir nuevas tecnologías. Las tecnologías orientadas a objetos están desplazando rápidamente los enfoques de desarrollo de software más convencionales en muchas áreas de aplicaciones. Aunque las predicciones de las computadoras de “quinta generación”” continúan eludiéndonos, “las técnicas de cuarta generación” para el desarrollo del software están cambiando en forma en que la comunidad del software construye programas informáticos. Los sistemas expertos y el software de inteligencia artificial han salido del laboratorio para entrar en aplicaciones prácticas de una gran

Page 8: Evolución del Software

Página 8

Sistemas de Información

Copyright © UDI – Educación A Distancia

variedad de problemas del mundo real. El software de redes neuronales artificiales junto con la aplicación de lógica difusa ha abierto posibilidades excitantes para el reconocimiento de patrones y habilidades de procesamiento de información de carácter humano. La programación de realidad virtual y los sistemas multimedia ofrecen formas radicalmente diferentes de comunicar información al usuario final. “Los algoritmos genéricos” ofrecen el potencial para el software que reside dentro de las computadoras biológicas masivamente en paralelo.

Sin embargo, un conjunto de problemas relacionados con el software ha persistido a través de la evolución de los sistemas basados en computadora, y estos problemas continúan aumentado.

Page 9: Evolución del Software

Página 9

Sistemas de Información

Copyright © UDI – Educación A Distancia

EVOLUCION DE LOS LENGUAJES DE PROGRAMACION

ERA LENGUAJES CARACTERISITCAS RELEVANTES

1ª Fortran

Basic

Logo

Cobol

Fue el primer y principal lenguaje Científico.

Diseñado por IBM.

Utilizado también para aplicaciones comerciales.

Desarrollado como lenguaje de tiempo compartido.

Traza elementos gráficos estableciendo la geometría de lápiz.

Ampliamente usado en programación en minicomputadores.

2ª Pascal

Prolog

Mumps

Lisp

Lenguaje Académico.

Sus características son copiadas por otros lenguajes.

Éxito comercial a través de Borland.

Desarrollado en Francia, 1973.

Aplicaciones en Inteligencia Artificial (IA).

Sistema de Multiprogramación.

Incluye su propia base de datos.

Utilizado en aplicaciones médicas.

Sintaxis muy diferente de los demás lenguajes.

Programa aplicaciones en IA.

3ª C, C++

Modula-2

dBase

Nuevo Concepto: Sistemas Distribuidos.

Complejidad en los Sistemas de Información.

Aparecen: Redes de área local y global, y Comunicadores Digitales.

Amplio Uso de Microprocesadores.

4ª Visual C++

Visual Basic

Java

Desarrollado por Microsoft.

Principalmente orientado a la tecnología de objetos.

Se utiliza para aplicaciones comerciales.

Principalmente para aplicaciones comerciales.

Versión cotizada, ya que permite interactuar con tablas de

manejadores de bases de datos y lenguaje SQL.

Page 10: Evolución del Software

Página 10

Sistemas de Información

Copyright © UDI – Educación A Distancia

LA NATURALEZA CAMBIANTE DEL SOFTWARE

En la actualidad existen siete categorías del software que presentan continuos retos a los Ingenieros del software: Software de Sistemas Es una colección de programas escritos para servir a otros programas. Se cuentan entre esto: Los editores, compiladores, organizadores de archivos, controladores, software de red, software de comunicaciones, componentes del sistema operativo, exploradores de red, analizadores de rendimiento, organizadores de escritorio, sincronizadores de relojes, calendarios, defragmentadores de espacios en disco, etc. Todos ellos comparten algunas características en común: Alta interacción con el hardware de la computadora, múltiples usuarios en operaciones concurrentes, que requieren de la administración de itinerarios, de compartir recursos y de procesamiento sofisticado, con estructuras de datos complejas y múltiples interfaces externas de usuario. Software de Aplicación Son programas independientes que resuelven una necesidad de negocios específica. Procesan un sinnúmero de información que facilita las operaciones de negocios, la toma de decisiones administrativa y/o técnica. Igualmente, soporta la administración de los negocios en tiempo real (puntos de venta, plataformas educativas, procesos industriales, etc). Software Científico y de Ingeniería Se caracteriza por algoritmos que procesan grandes cantidades de números. Las aplicaciones científicas son exigentes en cuanto a la exactitud de los cálculos: software de posicionamiento global, análisis sísmicos, ubicación astronómica, son algunas de las aplicaciones prácticas de este tipo de software. En la actualidad, ha tomado nuevos derroteros orientadose al procesamiento de imágenes, visión artificial, diseño asistido por computador, simuladores en tiempo real, que empiezan a tomar características del software de sistemas.

Page 11: Evolución del Software

Página 11

Sistemas de Información

Copyright © UDI – Educación A Distancia

Software Empotrado Reside en la memoria de sólo lectura de la computadora y está orientado a controlar e implementar características básicas, tanto para los usuarios como para el sistema mismo. Software de Línea de Productos Diseñado para proporcionar una capacidad específica y la utilización de muchos clientes diferentes, se puede enfocar en un nicho del mercado limitado (aplicaciones contables, financieras, educativas, de entretenimiento) o hacia los mercados masivos (procesamiento de palabras, manejos de base de datos, entornos de programación, chats, etc). Software basado en Web Las WebApps han tomado un gran auge en los últimos tiempos, a medida que el comercio electrónico y la B2B se han venido desarrollando, llegando a evolucionar hacia ambientes computacionales sofisticados integradas en bases de datos corporativas y de aplicación de negocios que proporcionan funciones de computo y contenidos independientes al usuario final. Software de Inteligencia Artificial Utiliza algoritmos no numéricos en la solución de problemas complejos imposibles de abordar mediante un análisis directo. Se incluyen en esta área, los sistemas expertos, la robótica, la visión artificial, el reconocimiento de patrones, las redes neuronales, la comprobación de teoremas y los juegos de computador. Existen cientos de miles de programas en activo y todos pertenecen a alguna de las siete grandes categorías del software. Si bien, algunos de ellos son de vanguardia, la mayoría son viejos o mucho más que eso. Con frecuencia nos referimos a ellos como Software heredado.

Page 12: Evolución del Software

Página 12

Sistemas de Información

Copyright © UDI – Educación A Distancia

CALIDAD DEL SOFTWARE HEREDADO Lamentablemente la baja calidad es una característica común del software heredado. Diseños imposibles de extender, codificación complicada, escasa documentación y en muchos casos inexistente, pruebas que no fueron archivadas, historial de cambios pobremente manejado, etc. Sin embargo, estos sistemas siguen siendo el soporte de los negocios empresariales e indispensables. ¿Qué se puede hacer? Parecer ser que la única respuesta razonable sería no hacer nada. Si el sistema satisface las necesidades de los usuarios y funciona de manera confiable, el sistema no está roto y no requiere arreglos. Sin embargo, a medida que pasa el tiempo, los sistemas heredados evolucionan de acuerdo a algunas o varias de las siguientes premisas:

Se debe adaptar para satisfacer las necesidades de los nuevos ambientes o las nuevas tecnologías de cómputo.

Debe mejorarse para implementar los nuevos requerimientos de los negocios.

Debe extenderse para hacerlo operable con sistemas y bases de datos más modernos.

Debe rediseñarse para hacerlo viable en un ambiente de red. Cuando esto sucede, el software heredado debe someterse a un proceso de reingeniería de modo que pueda conservar su viabilidad en el futuro.

“Los sistemas de software cambian de manera continua, los nuevos sistemas de software se construyen a partir de

los viejos, y… todos deben interactuar y cooperar con los demás.”

Page 13: Evolución del Software

Página 13

Sistemas de Información

Copyright © UDI – Educación A Distancia

MITOS DEL SOFTWARE Los mitos del software -creencias acerca del software y de los procesos empleados para construirlo- se pueden rastrear hasta los primeros días de la computación. Los mitos tienen ciertos atributos que los convierten en insidiosos.

Mitos de la administración

Los gestores con responsabilidad sobre el software, como los gestores en la mayoría de las disciplinas, están normalmente bajo la presión de cumplir las propuestas, hacer que no se retrase el proyecto y mejorar la calidad. Un gestor de software se agarra frecuentemente a un mito del software.

Mito: Si se falla en la planificación, se puede añadir mas programadores y adelantar el tiempo perdido.

Mitos del cliente

En muchos casos, el cliente cree en los mitos que existen sobre el software, debido a que los gestores y desarrolladores de software hacen muy poco para corregir la mala información. Los mitos conducen a que el cliente se cree una falsa expectativa y, finalmente, quede insatisfecho con el desarrollador del software.

Mito: Si los requisitos del proyecto cambian continuamente, los cambios pueden acomodarse fácilmente, ya que el software es flexible.

Mitos de los desarrolladores

Los mitos en los que aun creen muchos desarrolladores se han ido fomentando durante 50 años de cultura informática. Durante los primeros días del desarrollo del software, la programación se veía como un arte. Las viejas formas y actitudes tardan en morir.

Mito: Una vez que escribimos el programa y hacemos que funcione, nuestro trabajo ha terminado.