Vida digital en el siglo XXI y algo más.

Introducción a la Ingeniería de Software (IS)

Los problemas que se generaron para que se creara la IS fueron: Retrasos considerables en el avance de la creación de un sistema en comparación a lo planeado inicialmente, poca productividad, elevadas cargas de mantenimiento, demandas cada vez más desfasadas con las ofertas, baja calidad y fiabilidad del producto, dependencia de los realizadores.

Se le llamó crisis del software a un problema crónico en el desarrollo de software, y que dio origen a la IS. Había mucha demanda, pocos programadores, y los productos eran de baja calidad. La IS se creó como disciplina en una conferencia de la OTAN en 1968.

 

Definición

No existe una definición formal para la IS, por lo cual tratare de conglomerar la mayoría de conceptos de la siguiente manera:

Disciplina encargada del desarrollo sistemático del software fiable, económico y de calidad. Es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software; trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales.

Ian Sommerville en la séptima edición de su libro Ingeniería de Software define la IS como 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 éste después de que se utiliza. En esta definición, existen dos frases claves: disciplina de la ingeniería (todo el trabajo realizado por ingenieros como los son métodos, técnicas, herramientas, etc.) y todos los aspectos de producción de software (gestión de proyectos, creación de nuevas herramientas para automatizar procesos, teorías, entre otros).

 

Objetivos de la IS

Incrementar el software de calidad para el cliente, aumentar la productividad (en función del tiempo) y la satisfacción del programador. Los objetivos se resumen en la frase: “Realizar un sistema de software de calidad, en un tiempo mínimo y con el menor coste posible”.

 

Historia

La Ingeniería del Software, es el término utilizado por 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.

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

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

Esto es lo que se ha denominado comúnmente "crisis del software", que históricamente se ha generado en las siguientes fases:

  1. Primera fase.-Los albores (1945-1955): Programar no es una tarea diferenciada del diseño de una máquina, se hace uso de lenguaje máquina y ensamblador.
  2. Segunda fase.- El florecimiento (1955-1965): Aparecen multitud de lenguajes y se pensaba que era posible hacer casi todo.
  3. Tercera fase. La crisis (1965-1970): Desarrollo inacabable de grandes programas, ineficiencia, errores, coste impredecible. Ya no piensan que todos es casi posible de hacer.
  4. Cuarta fase. Innovación conceptual (1970-1980): Fundamentos de programación, verificación de programas, metodologías de diseño.
  5. Quinta fase. El diseño es el problema (1980-?): Entornos de programación, especificación formal del diseño, programación automática.

Durante los primeros años de la informática, el software se consideraba como un añadido. La programación era 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 se estableció el software como producto y aparecieron las empresas dedicadas al desarrollo y distribución masiva del mismo.

En la tercera época, los sistemas informáticos aumentaron mucho en su complejidad, y nacieron las redes de computadoras. Esto supuso mucha presión para los desarrolladores, aunque las computadoras para uso personal, apenas estaban difundiéndose. 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 las computadoras 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.

 

Características del software

  • El software se desarrolla o construye, no se manufactura en el sentido clásico.
  • No se desgasta, es decir, es inmune a los males ambientales que desgasten el hardware. Los defectos sin descubrir causan tasas de fallas altas en las primeras etapas de vida de un programa. El software no se desgasta pero si se deteriora.
  • A pesar de que la industria tiene una tendencia hacia la construcción por componentes, la mayoría del software aún se construye a la medida. Un componente de software se debe diseñar e implementar de forma que puede utilizarse en muchos programas diferentes.

 

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.

Tipos de mitos:

  • De administración: Los administradores de proyectos están normalmente bajo la presión de cumplir las propuestas, hacer que no se retrase el proyecto y mejorar la calidad. Ejemplo:
  1. Si se falla en la planificación, se puede añadir más programadores y adelantar el tiempo perdido.
  • Del cliente: Los mitos conducen a que el cliente se cree una falsa expectativa y, finalmente, quede insatisfecho con el desarrollador del software. Ejemplos:
  1. Si los requisitos del proyecto cambian continuamente, los cambios pueden acomodarse fácilmente, ya que el software es flexible.
  2. Cuando el cliente cree que los desarrolladores tenemos un libro que proporciona todo lo que se necesita (algoritmos, esquemas de diseño, etc.)
  • De los desarrolladores: Los mitos en los que aún 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.  Ejemplo:
  1. Una vez que escribimos el programa y hacemos que funcione, nuestro trabajo ha terminado.

 

Capas de la Ingeniería de Software

La IS es una disciplina multicapa, cualquier enfoque de ingeniería debe apoyarse sobre un compromiso de organización de calidad.

Las capas de la IS son: Herramientas, modelos, procesos y enfoque de calidad.

El fundamento de la ingeniería de software es la capa del proceso. El proceso de la Ingeniería de Software es la unión de las capas de tecnología que permiten un desarrollo racional y oportuno de software o sistemas. El proceso define un marco de trabajo para un conjunto de áreas clave del proceso que se deben establecerse para la entrega de algún sistema en particular.

  • Los métodos de la Ingeniería de Software indican cómo construir técnicamente el software. Abarcan una gran gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas, pruebas y mantenimiento.
  • Las herramientas de la ingeniería de software proporcionan un enfoque automático o semiautomático para el proceso y para los métodos.

 

El proceso del software

Un proceso del software es un conjunto de actividades que conducen a la creación de un producto de software.

Los procesos del software son complejos y, como todos los procesos intelectuales y creativos, dependen de las personas que toman decisiones y juicios. Debido a la necesidad de juzgar y crear, los intentos para automatizar estos procesos han tenido un éxito limitado. Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por computadora) pueden ayudar a algunas actividades del proceso.

Aunque existen muchos procesos diferentes de software, algunas actividades fundamentales son comunes para todos ellos:

  • Especificación del software. Se debe definir la funcionalidad del software y las restricciones en su operación.
  • Diseño e implementación del software. Se debe producir software que cumpla su especificación.
  • Validación del software. Se debe validar el software para asegurar que hace lo que el cliente desea.
  • Evolución del software. El software debe evolucionar para cubrir las necesidades cambiantes del cliente.

 

Software de alta calidad

La calidad del software está en función de los requisitos explícitos (que serán entregados al cliente) e implícitos (mantenimiento por programadores).

En todo desarrollo de software se debe incluir: Manual técnico, documentación del código (con prólogo, agregar comentarios, bien estructurado para que cualquier programador ajeno al proyecto pueda comprenderlo sin ambigüedad, con indentación). Es obvio que ¡no se entregara todo el código de un programa!

Factores en la calidad del software

Se consideran cualidades tales como la velocidad o la facilidad de uso, cuya presencia o ausencia en un producto de software puede ser detectada por sus usuarios. Estas propiedades pueden ser denominadas factores de calidad externos.

Otras cualidades aplicables a un producto de software, como la Modularidad o legibilidad son factores internos, perceptibles sólo por profesionales de la informática que tienen acceso al código fuente.

En última instancia, sólo importan los factores externos. La clave para obtener los factores externos radica en los internos: para que los usuarios disfruten de las cualidades visibles, los diseñadores y los implementadores deben aplicar técnicas internas que aseguren las cualidades ocultas.

El subtema Factores en la calidad del Software es algo extenso, y he decidido pasar el enlace:  http://bit.ly/aC3QGs

Referencias y bibliografía

 

Material para la unidad II de la materia Fundamentos de Desarrollo de Sistemas impartida en la carrera de Ingeniería en Sistemas Computacionales en todos los institutos tecnológicos de México.

Comments on: "¿Qué es la Ingeniería de Software?" (1)

  1. Hola! Amh…nOo see si mi pozt anterior se publiiqO (creo q nnO’) xkqee me maarqaba q no se habia podiidOp…zOoLo t keeria dziir q mee guuSstaa tuu bLoog, mUii infOrmaatiivaa, (aaunqee nO le haaia nthendiidho bnn’) y aaunqee vayy’a a sOñar hOii qonn’ La palabraa sOoftwaare d thanto qee la vii, mUii bnaa iinveesthiigaaziiOnn’, (o see hiiZzo qoon fLojeera? jaja ntc) y pss iaa veendre OtrO diia aa veer otRas nn’tradhas, aa veer Ssii aprendhO alGopp’, q zhiidO q tee haaiaas uuniidO a to2 loos q zthammz n bLogger.com, qOonn’graths! , te kuidas muuzhO, biie! =) [5 de octubre de 2008 16:20]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Tag Cloud

%d bloggers like this: