Carreras recomendadas.

Ingeniería de software

Ingeniería de software es la profesión que crea y mantiene las aplicando tecnologías y prácticas de las ciencias computacionales, manejo de proyectos, ingeniería, el ámbito de la aplicación, y otros campos.

Software es el conjunto de instrucciones que permite al hardware de la computadora desempeñar trabajo útil. En las últimas décadas del siglo XX, las reducciones de costo en hardware llevaron a que el software fuera un componente ubicuo de los dispositivos usados por las sociedades industrializadas.

La ingeniería de software, como las disciplinas tradicionales de ingeniería, tiene que ver con el costo y la confiabilidad. Algunas aplicaciones de software contienen millones de líneas de código que se espera que se desempeñen bien en condiciones siempre cambiantes.

En el 2002, en los Estados Unidos, la Oficina de Estadísticas del Trabajo (U. S. Bureau of Labor Statistics) contó 675,000 ingenieros de software de computadora con trabajo, y se estima que haya 1 millón y medio en Europa, Asia y el resto del mundo. Esto significa aproximadamente el 60% de los ingenieros de todas las áreas.

Orígenes

El término ingeniería de software fue usado ocasionalmente al final de la decada de los 50's e inicios de los 60's. El término fue popularizado por la Conferencia sobre Ingenieria de Software de la OTAN en 1968 que tuvo lugar en Garmish, Alemania, y ha sido ampliamente utilizado desde entonces.

Significados

El término ingeniería de software se usa con una variedad de significados diferentes:

·      Como el término usual contemporáneo de un amplio rango de actividades que se solía llamar programación y análisis de sistemas.

·      Como un término amplio de todos los aspectos de la práctica de la programación de computadoras, en oposición a la teoría, que es llamada ciencia computacional o computación.

·      La ingeniería de software es "(1) la aplicación de un método sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento de software, esto es, la aplicación de la ingeniería al software" y "(2) el estudio de los métodos de (1)", estándar IEEE 610.12

·      El modelo de IS parte del mundo real. Como el mundo real cambia, el software debe cambiar también, y la IS estudia la evolución de estos modelos y como se enfrentan a los requisitos cambiantes.

La ingeniería de software es practicada por los ingenieros de software.

Debate sobre quien es ingeniero de software.

Algunas personas piensan que Desarrollo de Software es un término más apropiado que Ingeniería de Software para el proceso de crear software. Personas como Pete McBreen (autor de "Software Craftmanship") cree que el término IS implica niveles de rigor y prueba de procesos que no son apropiados para todo tipo de desarrollo de software.

Otras personas creen que el campo de la IS es suficientemente maduro para garantizar el título de "ingeniería".

No hay actualmente un criterio aceptado para distinguir alguien que es ingeniero de software de alguien que no lo es. Además la industria está inmersa en un complejo debate sobre el licenciamiento de los ingenieros de software practicantes.

La ingeniería de software en nuestros días.

La ingeniería de software afecta a la economía y las sociedades de muchas maneras.

Económicamente en los EEUU, el software contribuyó a 1/4 de todo el incremento del PIB durante los 90's (alrededor de 90,000 millones de dólares por año), y 1/6 de todo el crecimiento de productividad durante los últimos años de la década (alrededor de 33,000 millones de dólares por año). La ingeniería de software contribuyó a $1 billón de crecimiento económico y productividad en esa década. Alrededor del globo, el software contribuye al crecimiento económico en formas similares, aunque es dificil de encontrar estadísticas confiables.

 

Socialmente la ingeniería de software cambia la cultura del mundo debido al extendido uso de la computadora. El correo electrónico (E-mail), la WWW y la mensajería instantánea permiten a la gente interactuar en nuevas formas. El software baja el costo y mejora la calidad de los servicios de salud, los departamentos de bomberos, las dependencias gubernamentales y otros servicios sociales. Los proyectos exitosos donde se han usado métodos de ingeniería de software incluyen a Linux, el software del transbordador espacial, los cajeros automáticos y muchos otros.

Metodología.

Un objetivo de décadas ha sido el encontrar procesos o metodologías predecibles y repetibles que mejoren la productividad y la calidad.

Pasos del proceso.

La ingeniería de software requiere llevar a cabo muchas tareas, sobre todo las siguientes:

Análisis de requisitos. 

Extraer los requisitos de un producto de 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 en la ingeniería de software para reconocer requisitos incompletos, ambiguos o contradictorios.

Especificación. 

Es la tarea de describir detalladamente el software a ser escrito, en una forma matemáticamente rigurosa. En la 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.

Diseño y arquitectura. 

Se refiere a determinar como funcionará en forma general de forma general sin entrar en detalles. Yourdon dice que consiste en incorporar consideraciones de la implementación tecnológica, como el hardware, la red, etc.

Programación. 

Reducir un diseño a código puede ser la parte más obvia del trabajo de ingeniería de software, pero no es necesariamente la porción más larga.

Prueba. 

Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación. Una técnica de prueba es probar por separado cada módulo del software, y luego probarlo de forma integral.

Documentación. 

Realización del manual de usuario, y posiblemente un manual técnico con el propósito de mantenimiento futuro y ampliaciones al sistema.

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 de software tiene que ver con dar mantenimiento. Una pequeña parte de este trabajo consiste en arreglar errores, o bugs. La mayor parte consiste en extender el sistema para hacer nuevas cosas. De manera similar, alrededor de 2/3 de toda la ingeniería civil, arquitectura y trabajo de construcción es dar mantenimiento.

Naturaleza de la Ingeniería del Software.

La Ingeniería de Software tiene que ver con muchos campos en diferentes formas:

Matemáticas. 

Los programas tienen muchas propiedades matemáticas. Por ejemplo la correctitud y la complejidad de muchos algoritmos son conceptos matemáticos que pueden ser rigurosamente probados. El uso de matemáticas en la IS es llamado métodos formales. Edsger Dijkstra ha dicho que la IS es una rama de las matemáticas.

Ciencia. 

Los programas tienen muchas propiedades científicas que se pueden medir. Por ejemplo, el desempeño y la escalabilidad de programas bajo diferentes cargas de trabajo puede ser medida. La efectividad de los cachés, procesadores más grandes, redes más rápidas, nuevas tecnologías de base de datos tienen que ver con la ciencia. Se pueden deducir ecuaciones matemáticas de las medidas.

Ingeniería.

La Ingeniería de Software es considerada por muchos como una disciplina ingenieril porque tiene los puntos de vistas pragmáticos y las características esperadas de los ingenieros. Análisis, documentación, y código comentado son signos de un ingeniero. David Parnas ha argumentado que es una ingeniería.

Manufactura.

Los programas son construidos en una secuencia de pasos. El hecho de definir propiamente y llevar a cabo estos pasos, como en una línea de ensamblaje, es necesario para mejorar la productividad de los desarrolladores y la calidad final de los programas. Este punto de vista inspira los diferentes procesos y metodologías que encontramos en la IS.

Manejo de Proyectos. 

El software comercial (y mucho no comercial) requiere manejo de proyectos. Hay presupuestos y calendarizaciones establecidas. Gente para liderear. Recursos (espacio de oficina, computadoras) por adquirir. Todo esto encaja apropiadamente con la visión del Manejo de Proyectos.

Arte. 

Los programas contienen muchos elementos artísticos. Las interfaces de usuario, la codificación, etc. Incluso la decisión para un nombre de una variable o una clase. Donald Knuth es famoso por que ha argumentado que la programación es un arte.

Organizaciones:

·      Software Engineering Institute (SEI).

·      Association for Computing Machinery (ACM).

·      British Computer Society (BCS).

·      IEEE Computer Society.

·      RUSSOFT Association.

·      Society of Software Engineers.

Ingeniería de sistemas.

Definición de la carrera.

La carrera de Sistemas y Computación, en los niveles de Ingeniería y Tecnología, tiene como objetivo preparar un profesional especializado en la gestión eficiente de los recursos relacionados con las tecnologías de información, el cual es capaz de desarrollar e implementar soluciones tecnológicas pertinentes a las necesidades de la organización. Además, es un profesional cuya creatividad, capacidad analítica y habilidades tecnológicas le permiten identificar y concretizar oportunidades de implementación y desarrollo de sistemas y tecnologías de información orientadas al logro de los objetivos de las organizaciones.

Sin embargo cabe aclarar que el termino Sistemas no hacen relación únicamente a sistemas computaciones (o por lo menos no en los orígenes de este). La Teoría de Sistemas o Pensamiento Sistémico va mucho más allá de la aplicación meramente tecnológica. Sin embargo las sociedades actuales han olvidado casi en su totalidad este hecho para llamar a los sistemas computacionales únicamente "Sistemas".

Objetivos.

Los programas de Tecnología e Ingeniería de Sistemas y Computación tienen como objetivos principales la preparación de un profesional:

Capaz de realizar la gestión eficiente y efectiva de la considerable variedad de recursos que representan las tecnologías de información dentro de las organizaciones.

Consciente de las relaciones y el impacto de las tecnologías de información dentro de las estructuras y estrategias de las organizaciones.

Actualizado y capacitado en el uso e implementación de las herramientas y tecnologías relacionadas con la informática en general.

 

Ingeniería informática

La Ingeniería Informática es una rama de la ingeniería que consiste en la aplicación de la tecnología a la planificación, organización y construcción de sistemas capaces de procesar y almacenar la información de manera automática, aplicados a cualquier ámbito.

Uno de los componentes fundamentales de estos sistemas es el software, y la Ingeniería Informática comprende multitud de técnicas y conocimientos específicos para el diseño, construcción y mantenimiento de software, sujetos a restricciones de calidad, tiempo y coste. Muchas de estas técnicas se agrupan en lo que se conoce como Ingeniería de Software.

Por lo que se refiere al soporte físico de sus procesos, la Ingeniería Informática se fundamenta en la actualidad en la tecnología electrónica, en particular en la integración de cientos de miles o millones de transistores en circuitos lógicos. El conjunto de dispositivos físicos capaces de cumplir las funciones de la Ingeniería Informática se denomina hardware.

Además de los aspectos puramente técnicos de los sistemas informáticos, la Ingeniería Informática se ocupa de muchos otros aspectos de tipo organizativo, social o legal. Por ejemplo, los relacionados con la planificación, dirección y control de proyectos informáticos; la auditoría y control de sistemas de información; la realización de peritajes informáticos, etc.

Asignaturas.

Dentro de la carrera se dan asignaturas importantes relacionadas con el mundo de la computación:

·      Metodología y técnicas de programación.

·      Estructuras de datos.

·      Diseño/Análisis de sistemas.

·      Inteligencia Artificial e Ingeniería del Conocimiento.

·      Bases de datos.

·      Teoría de circuitos.

·      Arquitectura de computadores.

·      Sistemas operativos.

·      Redes.

·      Ingeniería del Software.

·      Compiladores.

Aunque también matemáticas y física sin olvidar también algunas de gestión empresarial, puesto que un ingeniero en informática se dedica a dirigir, coordinar y diseñar sistemas de información y en menor medida a tratar con los sistemas en una empresa.

Problemática actual de estudios en Europa.

En España son cinco años de carrera, aunque se está deliberando la posibilidad de reducirla a cuatro debido al tratado de Bolonia y se equiparará el número de créditos actuales al sistema ECTS ó crédito europeo.