Software desde la Perspectiva del Ingeniero
La Ingeniera de software es la rama de la ingeniería que crea y mantiene las aplicaciones de software aplicando tecnologías y prácticas de las ciencias computacionales, manejo de proyectos, ingeniería, el ámbito de la aplicación, y otros campos.
El software es el conjunto de instrucciones que permite al hardware de la computadora desempear trabajo útil.
La ingeniería de software, como las disciplinas tradicionales de ingeniera, 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.
La Ingeniera del Software puede definirse 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"..
Algunas personas 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 "ingeniera". El criterio más común para distinguir al ingeniero de software es el conocimiento y aplicación de las técnicas y herramientas de las metodologías de la Ingeniera del Software (típicamente estudiadas en las ingenieras informáticas y, en algunos casos, en otras carreras técnicas).
La ingeniería de software afecta a la economía y las sociedades de muchas maneras.
Económicamente
En los EEUU, el software contribuye 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 contribuye 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 difícil de encontrar estadísticas fiables.
Socialmente
La ingeniería de software cambia la cultura del mundo debido al extendido uso de la computadora. El correo electrnico (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.
La ingeniera de software se puede considerar como la ingeniera aplicada al software, esto es en base a herramientas preestablecidas, la aplicación de las mismas de la forma ms eficiente y óptima; objetivos que siempre busca la ingeniería.
No es solo de la resolución de problemas, sino más bien teniendo en cuenta las diferentes soluciones, elegir la más apropiada.
La ingeniería de software requiere llevar a cabo muchas tareas, sobre todo las siguientes:
- Análisis de requisitos
- Programación
- Prueba
- Documentación
- Mantenimiento
La ingeniería de software tiene varios modelos o paradigmas de desarrollo en los cuales se puede apoyar para la realizacin de software, de los cuales podemos destacar a éstos por ser los más utilizados y los más completos:
- Modelo en cascada (ciclo de vida clásico)
- Modelo en espiral
- Modelo de prototipos
- Método en V
- Desarrollo por etapas
La Ingeniera de Software tiene que ver con muchos campos en diferentes formas:
Matemáticas
Los programas tienen muchas propiedades matemáticas. Por ejemplo la corrección 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 cientficas que se pueden medir. Por ejemplo, el desempeo 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 Ingeniera de Software es considerada por muchos como una disciplina ingenieril porque tiene los puntos de vistas pragmáticos y las caractersticas 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 liderar. 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 porque ha argumentado que la programación es un arte.