El software a nivel mundial se empieza a desarrollar en la década de los 40; “El acto de programar estas máquinas en los años 40 tenía poco de soft y mucho de hard, dado que se realizaba primero mediante la manipulación del propio cableado y luego mediante instrucciones en tarjetas de cartón perforado (elementos físicos todos)”.
En ese momento, el reto mayor era programar los algoritmos para que los computadores hicieran los cálculos, procesos y reportes que se requerían para las diferentes funciones.
Fue a mediados de la década de los 60 y hasta 1985 que se genera la crisis del software. Esta crisis se evidencia en el estudio del Standish Group (“Reporte del Caos”), en donde se muestra que solo el 16% de los proyectos de software son exitosos. En general, los proyectos de software tuvieron fuertes sobrecostos y los tiempos fueron varias veces más altos de los planeados. Adicionalmente, los errores en el software llevaron a pérdidas en las empresas e incluso de vidas. En este momento, nace la conciencia que desarrollar es mucho más que codificar: se le hace énfasis a la calidad. Dentro del concepto de calidad, cabe la definición intuitiva que el software no contenga errores, pero también incluye el hecho que los proyectos cumplan los tiempos y los costos planeados.
A este tema hay que sumarle el avance que ha tenido la tecnología y el concepto de sistemas de información. Inicialmente, los programas eran una cola de programas a ejecutar, uno detrás de otro, en donde la salida de uno era la entrada del otro.
Actualmente los sistemas de información están orientados a la interacción con el usuario, con respuestas en tiempo real y fuerte integración con otros sistemas, dentro de la misma empresa o fuera de ella. La interconexión es cada vez mayor, aumentando los riesgos de seguridad, los caminos posibles de utilización del software y por tanto la probabilidad de errores en las aplicaciones.
La crisis del software lleva a la necesidad de crear e implantar metodologías de software. Se ve por ejemplo, que las revistas de la ACIS desde 1977 se refieren principalmente a algorítmica y máquinas de cómputo. Es sólo hasta 1985, que hay un artículo de Alberto García sobre la “Metodología CIFI – Uniandes para el desarrollo de sistemas de información”, en donde se incluyen las fases basados en la metodología de Tom de Marco, de Análisis de la situación actual, Diseño lógico, Diseño físico, Programación, Implantación y Operación y mantenimiento, básicamente en un concepto cascada puro (llama la atención que no existe la fase de Pruebas).
Competitividad del Software
Durante muchos años, los desarrolladores de software empleados por grandes y pequeñas compañías eran los únicos en este campo. Como todos los programas se construían de forma personalizada, los desarrolladores de este software domestico dictaban los costes, planificación y calidad. Hoy, todo esto ha cambiado.
El software ahora es una empresa extremadamente competitiva. El software que se construía internamente ahora se puede adquirir en tiendas. Muchas empresas que en su momento pagaban legiones de programadores para crear aplicaciones especializadas ahora ofrecen a un tercero mucho del trabajo del software.
El Software
La descripción de software en un libro de texto podría tomar la forma siguiente: el software es (1) instrucciones que cuando se ejecutan proporcionan la función y el rendimiento deseados, (2) estructuras de datos que permiten a los programas manipular adecuadamente la información, y (3) documentos que describen la operación y el uso de programas.
Características del Software
Para poder comprender lo que es el software (y consecuentemente la Ingeniería del Software), es importante examinar las características del software que lo diferencian de otras cosas que los hombres pueden construir.
El software es un elemento del sistema que es lógico, en lugar de físico. Por lo tanto el software tiene unas características considerablemente distintas a las del hardware:
El software se desarrolla, no se fabrica en un sentido clásico. Aunque existen similitudes entre el desarrollo del software y la construcción del hardware, ambas actividades son fundamentalmente diferentes. En ambas actividades la buena calidad se adquiere mediante un buen diseño, pero la fase de construcción del hardware puede introducir problemas de calidad que no existen (o son fácilmente corregibles) en el software. Ambas actividades dependen de las personas, pero la relación entre las personas dedicadas y el trabajo realizado es completamente diferente para el software. Ambas actividades requieren de la construcción de un producto, pero los métodos son diferentes.
Los costes del software se encuentran en la ingeniería. Esto significa que los proyectos de software no se pueden gestionar como si fueran proyectos de fabricación.
El software no se estropea. El software no es susceptible a los males del entorno que hacen que el hardware se estropee. Otro aspecto de ese deterioro ilustra la diferencia entre el hardware y el software. Cuando un componente se estropea, se sustituye por una pieza de repuesto. No hay pieza de repuesto para el software. Cada fallo en el software indica un error en el diseño o en el proceso mediante el que se tradujo el diseño a código maquina ejecutable. Por tanto, el mantenimiento del software tiene una complejidad considerablemente mayor que la del mantenimiento del hardware.
La mayoría del software se construye a medida, en vez de ensamblar componentes existentes. No existen catálogos de componentes de software. Se puede comprar software ya desarrollado, pero solo como una unidad completa, no como componentes que pueden reensamblarse en nuevos programas, importante para un componente de software de alta calidad. El componente debería diseñarse.
El desarrollo de Software
Es un proceso, donde se utilizan técnicas y herramientas adecuadas a fin de conseguir los requerimientos de un cliente. Es la solución ajustada a los requerimientos de una empresa u otro ente particular, surgiendo de una idea, necesidad o problema. Implica un Proceso, basado en Técnicas y Herramientas.
Técnicas para el desarrollo del software
- Técnica para la Recopilación de Datos
- Técnica de Costo-Beneficios
- Técnica de Planificación y Control de Proyectos
Técnicas para la Recopilación de Datos Las técnicas de recolección de datos es una base fundamental en el desarrollo del software. Son técnicas utilizadas por el analista con el fin de desarrollar sistemas de información, estas son: encuestas, entrevistas, observación, cuestionarios.
Entrevistas, Consiste en una serie de preguntas, diseñadas específicamente para recolectar información de un tema específico, suele ser útil para recolectar datos y adecuarse a las necesidades del usuario.
Encuestas, Consiste en una serie de preguntas destinada, no a uno, si no a varias personas con el fin de comparar resultados y sacar la conclusión de cuál es la mejor solución para diseñar un producto.
La observación, es caracterizada por ser sistemática controlada y mecanizada destinada a evitar errores de subjetividad, confusiones etc.
Cuestionarios, es un conjunto de preguntas sobre los hechos o aspectos que interesan en una investigación y son contestados por los encuestados. Se trata de un instrumento fundamental para la obtención de datos.
Técnicas Costo-Beneficio, es una técnica analítica que enumera y compara el costo neto de una intervención con los beneficios que surgen como consecuencia de aplicar dicha intervención. Para esta técnica, los costos y los beneficios de la intervención se expresan en unidades monetarias. Sirve como guía para lograr una respuesta de viabilidad, que si bien nos es para nada definitiva, aterriza las expectativas que pueden ser profundizadas de ser necesario.
Que es la Ingeniería del Software ?
La Ingeniería del software es una disciplina o área de la Informática o Ciencias de la Computación, que ofrece métodos 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 una 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, ya, reconocida consideración social en el mundo empresarial y, por suerte, para esas personas con brillante futuro.
La ingeniería del software trata con áreas muy diversas de la Informática y de las Ciencias de la Computación, tales como construcción de compiladores, sistemas operativos o desarrollos de Intranet/Internet, abordando todas las fases del ciclo de vida del desarrollo de cualquier tipo de sistemas de información y aplicables a una infinidad de áreas tales como: negocios, investigación científica, medicina, producción, logística, banca, control de trafico, meteorología, el mundo del derecho, la red de redes Internet, redes Intranet y Extranet, etc.
Definición del termino Ingeniería del Software
El termino Ingeniería se define en el Diccionario de la Real Academia Española de la Lengua como: «1. Conjunto de conocimientos y técnicas que permiten aplicar el saber científico a la utilización de la materia y de las fuentes de energía. 2. Profesión y ejercicio del Ingeniero» y el termino Ingeniero se define como: persona que profesa o ejerce la Ingeniería. De igual modo la Real Academia de Ciencias Exactas, Físicas y Naturales de España define el termino Ingeniería como: » Un conjunto de conocimientos y técnicas cuya aplicación permite la utilización racional de los materiales y de los recursos naturales, mediante invenciones, construcciones u otras realizaciones provechosas para el hombre».