viernes, 8 de febrero de 2013

Ingeniería del Software


Cortesia de ; La mente errabunda.

El software se ha convertido en el alma mater para el funcionamiento de los sistemas computacionales. Es el elemento que conduce a la toma de decisiones comerciales. Sirve como base para la investigación científica moderna y la resolución de problemas de ingeniería. Es el factor clave que diferencia los productos y servicios modernos. Está inmerso en sistemas de todo tipo: de transportes, médicos, de telecomunicaciones, militares, procesos industriales, entretenimientos, productos de oficina, etc., la lista es casi interminable. A medida que transcurra el siglo XXI, será uno de los pilares que conduzca a grandes cambios, desde la educación elemental hasta la ingeniería genética.

La ingeniería del software se caracteriza por ser una tecnología estratificada. Una definición desarrollada por el instituto de Ingenieros Electrónicos y Eléctricos de los Estados Unidos menciona: “La ingeniería del software es la aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software”.

La ingeniería del software fue definida por Bauer a finales de los años 1960 como el establecimiento y uso de principios de ingeniería para obtener software que fuera confiable y que funcionara eficientemente con las máquinas reales. A pesar de ser vieja, esta definición da el sentimiento correcto detrás de la disciplina. La importancia del uso de estas medidas es característica para todas las disciplinas de la ingeniería. En una estructura de ingeniería, la métrica se refiere a estándares de las medidas usadas para cuantificar aspectos específicos de un proceso, de un producto o de un proyecto de la ingeniería. Una medida es el mapa de un mundo empírico a un mundo más formal y más matemático.

Los desarrollos de la ingeniería del software comenzaron con la técnica de programación y después fueron utilizados en otras fases del ciclo vital del software. La programación estructurada fue seguida por otros métodos estructurados de análisis y también métodos estructurados de diseño. Además, comenzaron a surgir tecnologías orientadas a objeto. En épocas tempranas la programación era la tarea de oro de ingeniería del Software pero ahora la ingeniería de requerimientos, la ingeniería de diseño y la ingeniería de pruebas, todas ellas ubicadas al interior de la ingeniería del software, son más populares. En los años 1990 la gerencia de proyecto ganó interés y llego a ser un componente importante de la ingeniería del Software. En la década pasada, los estándares de la ingeniería del software y la madurez del proceso han caracterizado la industria del software como una disciplina bastante madura.

En un nivel técnico, la ingeniería de sistemas de información comienza con una serie de tareas que hacen modelos y que resultan en una especificación completa de requisitos y una representación comprensiva de diseño del software que será construido. Se han desarrollado muchos métodos para hacer modelos de sistemas de información. Sin embargo, los métodos orientados a objeto constituyen en este momento estándares obligados para el desarrollo de productos software. Para ciertos sistemas de información crítico, se han desarrollado métodos formales para producir sistemas con la integridad más alta. Los métodos formales confían en las técnicas matemáticas que expresan y modelan los requisitos de cualquier producto en el ciclo vital del software. El uso de métodos formales es recomendado cuando sea posible en un ciclo vital del software.

El desarrollo de software orientado a objetos comenzó en los años 1980 como una etapa natural de los métodos estructurados. El Lenguaje de Modelado Unificado ha emergido como una unificación de los diversos métodos orientados a objeto y se está convirtiendo en un estándar de la Organización Internacional de Estándares.

En los primeros años del siglo XXI, la tecnología de componentes es un método para desarrollar sistemas de información que está en pleno crecimiento. A diferencia de los métodos tradicionales, la tecnología de componente ensambla componentes para formar una solución de software. Los componentes de software son materiales reutilizables para construir sistemas de software. La tecnología basada en componentes es un método poderoso para una empresa de ingeniería de sistemas de información porque es una tecnología que reduce el conflicto entre sistemas de alta complejidad y de búsqueda, debido a su alta calidad y productividad.

La ingeniería del software es una tecnología multicapa. Los cimientos que son la base de la ingeniería del software están orientados hacia la calidad. La gestión de calidad total y las filosofías similares fomentan una cultura continua de mejora de proceso, y es esta cultura la que conduce últimamente al desarrollo de enfoques cada vez más robustos para la ingeniería del software. El fundamento de la ingeniería del software es la capa proceso. El proceso es la unión que mantiene juntas las capas de tecnología y que permite un desarrollo racional y oportuno de la ingeniería del software. Las áreas clave del proceso forman la base del control de gestión de proyectos del software y establecen en contexto en el que se aplican los métodos técnicos, se producen resultados del trabajo, se establecen hitos, se asegura la calidad y se gestiona el cambio de manera adecuada. Los métodos indican como construir de manera técnica el software. Los métodos abarcan una gama de tareas que incluyen análisis de requisitos, diseño, construcción de programas, pruebas y mantenimiento. Los métodos dependen de un conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen actividades de modelado y otras técnicas descriptivas. Las herramientas proporcionan un soporte automático o semi-automático para el proceso y para los métodos. Cuando se integran herramientas para que la información creada por una herramienta la pueda utilizar otra, se establece un sistema de soporte para el desarrollo de software denominada ingeniería de software asistida por computadora.

La ingeniería de software requiere llevar a cabo muchas tareas, sobre todo las siguientes: (1) Análisis de requisitos. Se encarga de extraer los requisitos de un producto software, es la primera etapa para crearlo. Mientras que los clientes piensan que ellos saben lo que el software tiene que hacer, se requiere de habilidad y experiencia para reconocer requisitos incompletos, ambiguos o contradictorios. El resultado del análisis de requisitos con el cliente se plasma en el documento de Especificación de Requerimientos del Sistema, cuya estructura puede venir definida por varios estándares. (2)Especificación. Es la tarea de describir detalladamente el software a ser escrito, en una forma matemáticamente rigurosa. En realidad, la mayoría de las buenas especificaciones han sido escritas para entender y afinar aplicaciones que ya estaban desarrolladas. Las especificaciones son más importantes para las interfaces externas, que deben permanecer estables. (3) Diseño y arquitectura. Se refiere a determinar como funcionará el producto software de forma general sin entrar en detalles. (4) Programación. Reducir un diseño a código debe ser la parte más obvia del trabajo de ingeniería del software, pero no es necesariamente la porción que más interés requiere. (5) Prueba. Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación. Una técnica de prueba es verificar por separado cada módulo del software, y luego probarlo de manera integral. (6) Documentación. Consiste en la realización del manual de usuario, y posiblemente un manual técnico con el propósito de mantenimiento futuro y ampliaciones al sistema. (7)Mantenimiento. Mantener y mejorar el software para enfrentar errores descubiertos y nuevos requisitos. Esto puede llevar más tiempo incluso que el desarrollo inicial del software. Alrededor de 2/3 de toda la ingeniería del software tiene que ver con dar mantenimiento.

Por estos días es cada vez más 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. La ingeniería del software trata con áreas muy diversas de la informática y de las ciencias de la computación, tales como la construcción de compiladores, sistemas operativos o desarrollos de 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, producción, logística, banca, medicina, redes, Internet, intranet, extranet, etc.
Guillermo Choque Aspiazu

No hay comentarios: