viernes, 19 de febrero de 2010

CRISIS DEL SOFTWARE



Su origen se debió a que el entorno de desarrollo de sistemas software adolecía de:

* Retrasos considerables en la planificación
* Poca productividad
* Elevadas cargas de mantenimiento
* Demandas cada vez más desfasadas frente a las ofertas
* Baja calidad y fiabilidad del producto
* Dependencia de los realizadores

Esto es lo que se ha denominado habitualmente "crisis del software", que históricamente se generó en los siguientes pasos:

- Primera Fase. Los albores (1945-1955)

Programar no es una tarea diferenciada del diseño de una máquina
Uso de lenguaje máquina y ensamblador.

- Segunda Fase. El florecimiento (1955-1965)

Aparecen multitud de lenguajes
Se pensaba que era posible hacer casi todo.

- Tercera Fase. La crisis (1965-1970)

Desarrollo inacabable de grandes programas
Ineficiencia, errores, coste impredecible
Nada es posible.

- Cuarta Fase. Innovación conceptual (1970-1980)

Fundamentos de programación
Verificación de programas
Metodologías de diseño.

- Quinta Fase. El diseño es el problema (1980-?)

Entornos de programación
Especificación formal
Programación automática.

¿Cómo se define crisis?

La palabra crisis se define en el diccionario como "un punto decisivo en el curso de algo; momento, etapa, o evento decisivo o crucial". Sin embargo para el software no ha habido ningún punto crucial, sólo una lenta evolución.

La crisis en la industria del software permanece durante muchos años, lo cual parece una contradicción para el término. Lo que si se podría decir es que hay un problema crónico en el desarrollo de software.

Que ha venido originado por una falta de:

* Formalismo y metodología
* Herramientas de soporte
* Administración eficaz

Actualmente está surgiendo una gran expectativa ante la evolución de la Ingeniería del Software, al ir apareciendo nuevos métodos y herramientas formales que van a permitir en el futuro un planteamiento de ingeniería en el proceso de elaboración de software. Dicho planteamiento vendrá a paliar la demanda creciente por parte de los usuarios, permitiendo dar respuesta a los problemas de:

* Administración
* Calidad
* Productividad
* Fácil mantenimiento

Este último es uno de los grandes problemas, pues puede llegar a suponer un importe superior al 60% del total del coste del software.

Las nuevas metodologías suponen un enfoque integral del problema, abarcando todas las fases, que en su mayoría no se consideraban en los desarrollos tradicionales. En particular son fundamentales la reducción de costes y plazos, así como la calidad del producto final. Estas tecnologías constituyen la denominada "Ingeniería del Software", que se puede definir como "el tratamiento sistemático de todas las fases del ciclo de vida del software". Hay otras definiciones, pero todas inciden en la importancia de una disciplina de ingeniería para el desarrollo de software.



La crisis del software se fundamentó en el tiempo de creación de software, ya que en la creación del mismo no se obtenían los resultados deseados, además de un gran costo y poca flexibilidad.
Es un término informático acuñado en 1968, en la primera conferencia organizada por la OTAN sobre desarrollo de software, de la cual nació formalmente la rama de la ingeniería de software. El término se adjudica a F. L. Bauer, aunque previamente había sido utilizado por Edsger Dijkstra en su obra The Humble Programmer.
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.
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.
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 comienzos.





La crisis del software es el hecho de que el software que se construye no solamente no satisface los requerimientos ni las necesidades pedidos por el cliente, sino que además excede los presupuestos y los horarios de tiempos. La industria del software no ha podido satisfacer la demanda, la complejidad del software producido y demandado se incrementa constantemente, el software es solicitado para ejecutar las tareas demandantes de hoy y está presente en todos los sistemas que van desde los más sencillos hasta los de misión crítica. Las aplicaciones de software son complejas porque modelan la complejidad del mundo real. En estos días, las aplicaciones típicas son muy grandes y complejas para que un individuo las entienda y, por ello, lleva gran tiempo implementar software.

Síntomas

Uno de los principales problemas en el desarrollo de software de hoy en día es que muchos proyectos empiezan la programación tan pronto se definen y concentran mucho de su esfuerzo en la escritura de código. Últimamente el desarrollo de software se ralentizado. El estudio de este fenómeno es importante porque la existencia de software científico libre facilita que cualquier laboratorio del mundo pueda desarrollar ciencia libre usando este software como herramienta de trabajo.

Algunos "síntomas" que indican que el software se encuentra en un periodo de crisis son:

* Baja Calidad del Software.
* Tiempo y Presupuesto Excedido.
* Confiabilidad Cuestionable.
* Altos Requerimientos de Personal para desarrollo y mantenimiento.

Factores de Influencia

Para poder llevar el estado del proceso de software como un estado de crisis, los críticos han destacado ciertas características que han permitido esta postura del
software respecto a otras etapas de su corta historia. Algunos de esos factores son:

* Aumento del poder computacional.
* Reducción del costo del hardware.
* Rápida obsolescencia de hardware y software.
* Aceptación de la computarización en las empresas.
* Incremento en el número de usuarios de los sistemas de software.
* Tipo de usuario no homogéneo aun en sistemas hechos a la medida.
* Personal de desarrollado y mantenimiento diferente.
* La magnitud del proyecto impacta en:
* Tiempo costo y número de desarrolladores,
* Control administrativo y detalles técnicos
* Aumento en el conocimiento del problema.

Cambios en el entorno

* Tecnológicos (Internet, redes, ERP, CRM, SCM).
* Económicos (crisis económicas, globalización, etcétera).
* Sociales (nuevas necesidades, costumbres nuevas, etcétera).

Posibles causas de la crisis del software

Hay varias razones que pueden ser propuestas como causa de la crisis. No son mutuamente excluyentes; de hecho, es posible que la verdadera causa sea una mezcla de todas ellas. Sin embargo, todas tienen en común que son causadas por el método de valorar los avances científicos y el mecanismo actual de financiación de la actividad científica. Las causas de la crisis del software fueron vinculadas a la complejidad en general del proceso de software y a la relativa inmadurez de la ingeniería de software como una profesión. La crisis se manifestó a sí misma en varias maneras:

* Proyectos gestionados con un sobre-presupuesto.
* Proyectos gestionados con sobre tiempo.
* Software de baja calidad.
* El software a menudo no satisfacía los requerimientos deseados.
* Los proyectos fueron inmanejables, con un código difícil de mantener.






No hay comentarios:

Publicar un comentario en la entrada