Informática Aplicada a la Gestión Pública.  Facultad Derecho. UMU

Capítulo 1. Ingeniería del software. Introducción.




1.1 ¿Qué son los sistemas informáticos?
1.2 Ingeniería del Software
1.3 Historia de la Ingeniería del Software




1.1 ¿Qué son los sistemas informáticos?

Un sistema informático es el conjunto de recursos disponibles para la resolución de problemas mediante el uso de las ciencias de la computación. Esto incluye:

  * Los equipos informáticos: ordenadores (computadoras), periféricos...

  * El software (programas) de dichos equipos: sistemas operativos, aplicaciones...

  * Los usuarios y administradores: las personas que utilizan dicho sistema y las que se encargan de que funcione.

  * Las relaciones entre todos estos elementos: esto incluye las políticas de uso, de cuota...

Un sistema informático típico emplea un ordenador que usa dispositivos y programas para capturar, almacenar y procesar datos. La computadora personal o PC, junto con la persona que la maneja y los periféricos disponibles, resultan de por sí un ejemplo de un sistema informático. Internet en cambio no lo es, sino que es una red de redes.

sistema computación
Un sistema informático utiliza ordenadores para almacenar datos (la información), procesarlos y ponerlos a disposición de quien se considere oportuno. Un sistema puede ser tan sencillo como: una persona con un microordenador al que le proporciona datos tan elementales como las ventas diarias de una pequeña empresa, se produce una entrada por cada venta y en ella se declara el elemento vendido, por ejemplo un yogur, la cantidad de elementos vendidos, por ejemplo cuatro y el precio de venta unitario, por ejemplo 0.16 euros. Cada entrada se almacena como un registro de un fichero en el disco. Al finalizar el día se puede generar un informe de las ventas y las tendencias. El usuario puede utilizar esta información para la gestión de almacén o planificar campañas publicitarias. Habitualmente una empresa tiene más de un ordenador, por ejemplo uno para la gestión de ventas y otro para la contabilidad y procesos asociados, sin embargo la mayor parte de los sistemas son más complejos.

1.2 Ingeniería del software

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 deberia de llamarse "Desarollo del Software" frente a Ingenieria del Software, Pete McBreen (autor de los libros: Software Craftsmanship and Questioning Extreme Programming) afirma que el termino ingenieria implica nivel de rigor y de pruebas mucho mayores que lo habitual en los desarollos 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".

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.

Definición del término "Ingeniería del Software"

El término 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 término ingeniero se define como "Persona que profesa o ejerce la ingeniería".

La Real Academia de Ciencias Exactas, Físicas y Naturales de España, define el término Ingeniería como "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".

Evidentemente, al ser una nueva ingeniería, no está incluida su definición en las referencias citadas, aunque si reúne sus propiedades.

Revisando definciones, a nivel internacional, se pueden citar como adecuadas, las siguientes:

    Definición 1:

    Es el estudio de los principios y metodologías para desarrollo de sistemas de software.

    Definición 2:

    Es la aplicación práctica del conocimiento científico en el diseño y construcción de programas de ordenador y la documentación adecuada para desarrollar, operar y mantenerlos.

    Definición 3:

    Se trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable.

    Definición 4:

    La aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software.
Seguidamente se dan algunas definiciones ampliamente aceptadas dentro de la informática:
    DEFINICIONES DE BOEHM

    - Software es el conjunto de programas, procedimientos y documentación asociados a un sistema, y particularmente a un sistema computacional.

    - Ingeniería es la aplicación de la ciencia y las matemáticas mediante lo cual las propiedades de la materia y las fuentes de energía de la naturaleza se hacen útiles al hombre en estructuras, máquinas, productos, sistemas y procesos.

    - Ingeniería de software es la aplicación de la ciencia y las matemáticas mediante la cual la capacidad de los equipos computacionales se hacen útiles al hombre a través de programas de computador, procedimientos y la documentación asociada.

    DEFINICION DE BAUER

    Ingeniería del software es el establecimiento y uso de firmes principios y métodos de ingeniería para la obtención económica de software fiable y que funcione en máquinas reales.

1.3.- Historia de la Ingeniería del Software

Durante los primeros años de la informática, el software era un añadido. La programación se consideraba un "arte", para el que no existían metodologías, era un proceso que se realizaba sin planificación alguna. En esta época toda la programación se desarrollaba a medida para cada necesidad concreta, y en consecuencia tenía muy poca difusión, habitualmente quien lo escribía era porque lo necesitaba, y era quien lo mantenía.

En una segunda época (a partir de mitad de la década de 1960) se estableció el software como producto y aparecieron las empresas dedicadas al desarrollo y distribución masiva del mismo. El origen del término Ingeniería del Software, como se ha visto previamente se atribuye a dos conferencias organizadas por la OTAN en 1967 y 1968

La tercera era comenzó a mediados de la década de 1970, época en la que los sistemas informáticos aumentaron mucho en su complejidad, y nacieron las redes de ordenadores. Esto supuso mucha presión para los desarrolladores, aunque los ordenadores para uso personal, apenas estaban difundidos. Esta época acabó con la aparición de los microprocesadores.

La cuarta era de la evolución de los sistemas informáticos, comienza hacia 1990 y se dirige al impacto colectivo de los ordenadores y el software, en todos los entornos. La industria del software tiene un gran peso en la economía mundial. Aparecen las técnicas de redes neuronales, junto con la lógica difusa, de interés en el campo de la Inteligencia Artificial.

El software en la actualidad

Hoy en día el software tiene un doble papel. Es un producto, pero simultáneamente es el vehículo para hacer entrega de un producto. Como producto permite el uso del hardware, ya sea, por ejemplo, un ordenador personal o un teléfono móvil celular. Como vehículo utilizado para hacer entrega del producto, actúa como base de control, por ejemplo un sistema operativo, o un sistema gestor de redes. El software hace entrega de lo que se considera como el producto más importante del siglo veintiuno, la información. El software transforma datos personales para que sean más útiles en un entorno local, gestiona información comercial para mejorar la competitividad, proporciona el acceso a redes a nivel mundial, y ofrece el medio de adquirir información en todas sus formas.

Actualmente se considera la Ingeniería del Software como una nueva área de la ingeniería, y la profesión de ingeniero informático es una de las más demandadas, aunque en España los salarios suelen ser bajos para la cualificación de estos profesionales. La palabra ingeniería tiene una connotación de prestigio que provoca que muchas ramas del conocimiento tiendan a autodenominarse así.

Actualmente existe sobredemanda de profesionales altamente cualificados, sucede principalmente en las grandes industrias, como Google, Facebook, Twitter y otras grandes compañías que más que competir, combaten entre sí para captar a los valiosos egresados de las principales universidades. Esta situación hace más que evidente la patente realidad del cambio de sistema y las tendencias laborales del nuevo ciclo, principalmente en el mercado norteamericano, ya que es el que mayor concentración y origen de empresas actores tecnológicos posee, aunque son datos fácilmente extrapolables a otras zonas con nivel de desarrollo análogo.

Por ejemplo, en el año 1991 menos de la mitad de la demanda de empleo en los EE.UU. requería de profesionales especializados, mientras que en 2015, de acuerdo a las proyecciones, el 60% de la oferta de empleo requerirá de especialización y habilidades que solo poseen el 20% de la población. la industria informática y de contenidos es de los escasos sectores productivos que crecen y demandan empleo y para muestra el estado de California, en el que el desempleo alcanza 11.7%, mientras que la demanda de empleo en Silicon Valley tiene una sobreoferta del 40%.

La ingeniería del software trata áreas muy diversas de la informática y de las Ciencias de la Computación, aplicables a un amplio espectro de campos, tales como negocios, investigación científica, medicina, producción, logística, banca, meteorología, derecho, redes, entre otras muchas.

Sin embargo, es frecuente que en la práctica diaria profesional no se incluya prácticamente ninguna de las recomendaciones más elementales de la ingeniería del software. Es habitual que el desarrollo de software se parezca más al descontrol del cuento de «si los programadores fueran albañiles...» que a una idílica y bien organizada "factoría de software" (concepto de gran vigencia a finales de los ochenta). De hecho, las evaluaciones de los procesos productivos de software realizadas a raíz de los modelos de procesos de software confirman que el desarrollo de software suele estar básicamente en estado caótico. Y no sólo en pequeñas empresas de países como España, sino en grandes proyectos en naciones como EE.UU. y Japón.

Como ejemplo de que la ingeniería del software es en la actualidad imprescindible, la revista satírica inglesa Private Eye dio detalles sobre importantes proyectos de software que han dado resultados malos. Entre ellos destacan los del servicio de ambulancias Asinfor de Londres, el servicio de sanidad regional de Wessex, la Sociedad para los derechos de autor y el sistema de manejo de equipajes del aeropuerto de Denver.

Algunos desastres informáticos:

Coincidiendo con la pérdida por el gobierno británico de los datos personales y bancarios, de 25 millones de personas perceptores de ayudas infantiles, los redactores de ZDNet comentaron algunos de los mayores desastres ocurridos a su juicio en el mundo de las tecnologías de la información (TI).

Si bien la tecnología casi nunca es la culpable, hay gran cantidad de ejemplos de fallos de software, hardware o humanos que han costado caro a empresas o administraciones, tanto financieramente como en términos de reputación y que han resultado verdaderos bombazos informativos.

Aclarando que el orden es subjetivo según sus autores, vamos con ellos:

1. El sistema de alerta temprana de la Unión Soviética estuvo a punto en 1983 de causar la III Guerra Mundial cuando un error en el software indicó que cinco misiles balísticos habían sido lanzados por los Estados Unidos.

2. La red de AT&T se hundió en 1990 y dejó sin respuesta a 75 millones de llamadas por un error en una sola línea de código.

3. Un software mal diseñado fue el responsable en 1996 de la explosión de la lanzadera europea Ariane-5 el 4 de Junio de 1996, cuando a 40 segundos después de la iniciación de la secuencia de vuelo, la lanzadera se desvió de su ruta, se partió y explotó.

4. Algunos de los problemas y retrasos del lanzamiento del avión más grande del mundo, el Airbus A380, se debieron a la incompatibilidad de las diferentes versiones usadas del software de diseño CATIA. Mientras los socios franceses utilizaban la última versión, la factoría alemana habían empleado otra.

5. Un error en la navegación de la nave espacial Mars Polar Lander hizo que volara demasiado baja y se estrellara. El fallo fue debido a un subcontratista que confundió el sistema de medidas americano y el europeo.

6. Un fallo en la actualización del software empleado en el Ministerio de Trabajo y Pensiones británico por la empresa de tecnologías de la información EDS, costó a los contribuyentes más de mil millones de libras en 2004.

7. El efecto 2000 y los miles de millones gastados para evitar el temido desastre que afortunadamente no sucedió.

8. Las baterías explosivas de los portátiles y otros dispositivos como teléfonos móviles están siendo uno de los últimos fiascos de la industria del sector con pérdidas cuantiosas para su reemplazo.

9. Un nuevo sistema informático de Siemens implantado en 1999 sin probarse suficientemente y sin personal cualificado para su manejo, amargó las vacaciones a medio millón de británicos.

10. En 2007, una simple tarjeta de red defectuosa dejó en tierra a una parte de los 17000 aviones que maneja el aeropuerto de Los Angeles.

De una forma humorística se hace la siguiente comparación con otras ingenierías:

    - Ingeniería mecánica como buscar un gato negro en una habitación iluminada.

    - Ingeniería química como buscar un gato negro en una habitación oscura.

    - Ingeniería del software como buscar un gato negro en una habitación oscura donde no hay ningún gato.

    - Ingeniería de sistemas como buscar un gato negro en una habitación oscura donde no hay gato y alguien dice !!!lo encontré!!!.
La industria envejece

En los años 50 y 60 del siglo XX, muchos comentaristas especializados criticaban a la industria del metal en EE.UU. por la falta de inversión en las fábricas. Las fábricas habían comenzado a deteriorarse, no se aplicaban los métodos de producción modernos, la calidad quedaba en entredicho, y sin embargo el coste del producto final subía, como consecuencia la competencia externa ganó una cuota de mercado considerable.

La dirección de esas industrias no decidió invertir para mantenerse competitivas en el entorno industrial. Como consecuencia, la industria del metal perdió una parte de mercado muy significativa, beneficiando a las empresas extranjeras, que tenían fábricas más modernas en todos sus aspectos.

Actualmente la industria del software está en una situación análoga. A todos los niveles se tiene una "fábrica de software" que envejece, hay miles de aplicaciones basadas en software en una situación crítica y necesitan su renovación urgente, aunque con la llegada del año 2000 y sus temidos efectos, parte del software se puso al día.

El futuro no pasa por "reparar" lo que está mal, y cambiar la imagen de las aplicaciones, se necesita una reingeniería o reestructuración, de lo contrario no serán competitivos en este nuevo siglo. Desafortunadamente, muchos directores de empresas no están dispuestos a comprometer los recursos, pues piensan que en funcionando una aplicación, no es necesario nada más.

Mitos

Actualmente permanecemos en esta crisis del software y desafortunadamente los profesionistas siguen sin hacer uso de metodologías o herramientas CASE que actualmente se comercializan y las cuales nos alejan de ciertos mitos que suelen escucharse y se extienden en tres partes: de gestión, del cliente, y del desarrollador.

De forma general estos mitos son:
    * Ya tenemos el mejor libro para construir software,
    * Lo ultimo en ordenadores para desarrollar,
    * Poco importa la planificación,
    * Sólo basta conocer el problema de forma general,
    * Si requiere un cambio el sistema el software fácilmente lo hará,
    * Hasta que se ponga en uso el programa se ve la calidad de este,
    * Sólo es necesario entregar el programa funcionando.
Abaratar costes

Con la obsesión de reducir el coste hora de programación, una empresa de San Diego (EE.UU.) se propuso unir los reducidos costes que supone subcontratar personal en países lejanos como la India y las ventajas de tener al trabajador a pocos kilómetros de distancia. ¿La solución? Alojar en un barco desarrolladores indios y situarlo frente a las costas de EE.UU. El SeaCode, más concretamente.

"Todo son ventajas", según la empresa del SeaCode, que hasta promete a sus clientes en EE.UU. que con este procedimiento "90 centavos de cada dólar que pagan retornarán a EE.UU.". Y además no hay problemas con los visados, pues los programadores al estar en aguas rinternaccionales no están sujetos a las leyes estadounidenses. Parece que este modelo de esclavitud de programadores no ha dado resultados, la empresa sigue existiendo pero no hay información actual sobre el proyecto

Enlaces de interés:

Algo pasa con la ingeniería del software
http://www.espinosa.nom.es/2007/03/05/algo-pasa-con-la-ingenieria-del-software/

Ingeniería del software en entornos del software libre. UOC
http://ocw.uoc.edu/informatica-tecnologia-y-multimedia/ingenieria-del-software-en-entornos-del-software-libre/materiales/



Capitulo previoInicioCapitulo siguiente
Subscribe Share/Bookmark





Aquí puedes cambiar el tamaño y color del texto

Agrégame en tus círculos
Rafael Barzanallana
Rafael Barzanallana en Google Plus
Escepticismo, ciencia, informática, ...


Escepticismo en España


Escepticismo en América



TUTORÍAS