miércoles, 24 de abril de 2013

CRISIS DEL SOFTWARE


El término “Crisis del Software” fue acuñado a principios de los años 70, cuando la ingeniería de software era prácticamente inexistente. El término expresaba las dificultades del desarrollo de software frente al rápido crecimiento de la demanda por software, de la complexidad de los problemas a ser resueltos y de la inexistencia de técnicas establecidas para el desarrollo de sistemas que funcionaran adecuadamente o pudieran ser validados.

La percepción de que esta crisis existía empezó a mediados de los años 60. Una de las primeras referencias al término, y de las más notables, fue hecha por E.W.Dijkstra, en el discurso que pronuncio durante la entrega del premio Turing en 1972.


CAUSAS DE LA CRISIS DEL SOFTWARE

Durante finales de los años 50 y principios de los 60, la potencia computacional de las maquinas era bastante limitada. Es por esto que los programas que se desarrollaban eran “simples” desde nuestro punto de vista actual. Seguían un proceso de desarrollo bastante artesanal, sin una metodología o un camino a seguir para su desarrollo. En esta época se solían usar los lenguajes de bajo nivel para el desarrollo de Software.

Pero a finales de los 60, la potencia de las maquinas empezó a aumentar de forma considerable. Empezaron a aparecer los lenguajes de programación de alto nivel, y las maquinas necesitaban programas mucho más complejos de los desarrollados hasta la época. En definitiva, fue un salto tremendo en cuanto a potencial de hardware, que no fue acompañado por un salto en el desarrollo de software.

En esta época, se empezó a concebir el Software como producto, y se empezaron a desarrollar algunos proyectos para que funcionaran en las máquinas de la época. Pero aparecieron importantes problemas: los productos excedían la estimación de costes, había retrasos en las entregas, las prestaciones no eran las solicitadas, el mantenimiento se hacía extremadamente complicado y a veces imposible, las modificaciones tenían un coste prohibitivo…en resumen, se desarrollaba software de mala calidad, ya que la técnica utilizada para desarrollar pequeños programas para maquinas con mucho menos potencial se quedaba desfasada, y muchas veces este software acababa en el olvido. Como ejemplo, podemos ver este gráfico del año 1979, en el que se recoge la inversión en desarrollo de sistemas software en ese año ($6.8 Millones),y como acabó ese software



INGENIERÍA DEL SOFTWARE, LA SOLUCIÓN.


Viendo el camino directo al precipicio que estaba llevando el desarrollo de software, había que tomar medidas para solucionarlo. Y esas medidas se llamaron “Ingeniería del Software”.
Como mencioné en una entrada anterior, la ingeniería del software nace para contrarrestar a la crisis del software, ya que la ingeniería del software es  el establecimiento y uso de principios de ingeniería robustos orientados a obtener software económico que sea fiable y que funcione en máquinas reales. Comprendiendo todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema hasta el mantenimiento de este después que se utiliza. 

ING. SOFTWARE VS ING. SISTEMAS

La ingeniería del software dicho anteriormente es  una disciplina o área de la informática o ciencias de la computación, que ofrece método y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo, es decir; comprende todos los aspectos de la producción del software,  desde las etapas iniciales de la especificación del sistema hasta el mantenimiento de este después que se utiliza. 
Estableciendo el uso de principios de ingeniería robustos orientados a obtener software económico que sea fiable y que funcione en máquinas reales.

La ingeniería de sistemas puedo decir según fuentes de Internet que abarca varias especialidades, todas dirigidas a manejar la información apoyándose en el buen uso de la tecnología. Por ejemplo, la participación de la Ing. Sistemas en el diseño y construcción de los nuevos adelantos tecnológicos, equipos de redes, consolas y más, no solo el hardware sino también el software de dichos dispositivos. Ayudando a las empresas de negocio con las tecnologías de la información.

El ingeniero de sistemas es capaz de:

- Desarrollar, evaluar y optimizar software.

- Diseñar recursos computacionales.

- Crear modelos matemáticos, estadísticos y de simulación.

- Realizar investigaciones científicas, culturales y tecnológicas.

- Dirigir y coordinar grupos de trabajo.

- Evaluar e instalar equipos.

- Desarrollar la organización y arquitectura de equipos.

- Seleccionar y administrar el personal y el equipo de unidades de servicios de computación.

INGENIERÍA DEL SOFTWARE



INTRODUCCIÓN

Actualmente el software se ha vuelvo indispensable en la vida diaria: gobierno, finanzas, educación, transporte, medicina.

Así como este se ha vuelvo indispensable, la complejidad de los sistemas ha crecido de forma dramática, y anualmente se gastan miles de millones de dolares en cuestiones de desarrollo de software.

Pero si analizamos a fondo lo relacionado a la materia, aunque los sistemas de software nos han permitido se más eficientes y productivos,  aún sigue habiendo problemas en el desarrollo de los mismo, problemas como el tiempo, costes y el más importante, la calidad del software.

Para estas y otras necesidades y problemas relacionados con el desarrollo y producción del software, y todos los procesos involucrados en ello, así como el mantenimiento posterior a su implantación; nace lo que hoy conocemos Ingeniería del software.

Analizando como precedente de esta rama, podemos decir que antiguamente las funciones de un ingeniero en software las realizaba por separado, la parte de hardware un ingeniero en electrónica y la parte de software netamente los científicos en computación. Pero el software que realizaban lo hacían de forma artesanal, sin aplicar lo que hoy en día se utiliza, las técnicas y métodos para desarrollo de software.

Comparando la ingeniería de software con otras ramas de la ingeniería, se puede apreciar que la primera es diferente de las otras debido a:

  • La naturaleza intangible del software. 
  • El mantenimiento se refiere al desarrollo continuo y a la evolución y no tanto al desgaste
  • El enfoque está en entidades abstractas/lógicas en vez de artefactos concretos/físicos


INGENIERÍA DEL SOFTWARE



Es una disciplina o área de la informática o ciencias de la computación, que ofrece método y técnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. 

Hoy día es cada vez mas frecuente la consideración de la Ingeniería del Software como un nueva área de la ingeniería y el Ingeniero del Software comienza a ser una profesión implantada en el mundo laboral internacional, con derechos, deberes y responsabilidades que cumplir, junto a una, y reconocida consideración social en el mundo empresarial y, por suerte, para esas personas con brillante futuro.

En términos sencillos podemos decir que la ingeniería del software es: 

* Una disciplina de la ingeniería que comprende todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema hasta el mantenimiento de este después que se utiliza. 
* El establecimiento y uso de principios de ingeniería robustos orientados a obtener software económico que sea fiable y que funcione en máquinas reales.

O también podemos ampliar la información en el siguiente enlace:




Objetivos de la Ingeniería del software

* Diseñar aplicaciones informáticas que se ajusten a las necesidades de las organizaciones.
* Dirigir y coordinar el desarrollo de aplicaciones complejas.
* Intervenir en todas las fases del ciclo de vida de un producto.
* Estimar los costes de un proyecto y determinar los tiempos de desarrollo.
* Hacer el seguimiento de costes y plazos.
* Dirigir equipos de trabajo de desarrollo software.
* Organizar la realización de pruebas que verifiquen el correcto funcionamiento de los programas y que se ajustan a los requisitos de análisis y diseño.
* Diseñar, construir y administrar bases de datos.
* Dirigir y asesorar a los programadores durante el desarrollo de aplicaciones.
* Introducir procedimientos de calidad en los sistemas, evaluando métricas e indicadores y controlando la calidad del software producido.
* Organizar y supervisar el trabajo de su equipo de los técnicos de mantenimiento y los ingenieros de sistemas y redes.


CARÁTULA


UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES
“UNIANDES”

EXTENSIÓN  SANTO DOMINGO

FACULTAD  DE SISTEMAS

MODULO:
INGENIERÍA DE SOFTWARE I


AUTOR
VELASCO RAMOS CARLOS VICENTE

TUTOR:
ING. SEGUNDO MENA




SANTO DOMINGO DE LOS TSACHILAS -  ECUADOR
PERIODO ABRIL - OCTUBRE 2013