La ingeniería del software es una disciplina formada por un conjunto de técnicas, métodos y herramientas que se utilizan para el desarrollo de los sistemas o programas informáticos los cuales nos permiten solucionar problemas de todo tipo y para todos los rubros
surgió en 1968, tras una conferencia en Garmisch (Alemania) que tuvo como objetivo resolver los problemas de la crisis del software.
Con el transcurso de los años se han desarrollado recursos que conforman la ingeniería del software, es decir, herramientas y técnicas de especificación, diseño e implementación del software: la programación estructurada, la programación orientada a objetos, las herramientas CASE, la documentación, los estándares, CORBA, los servicios web, el lenguaje UML, etc.
El software en la actualidad es de una importancia vital en todo los ámbitos y para todos los rubros, por ejemplo: los sistemas automatizados, entretenimiento, videojuegos, cine y televisión, la industria musical, restaurantera, comercial etc. Para los sistemas de educación, seguridad, políticos, gubernamentales, etcétera.
Estas dos carreras se complementan una a la otra y son capaces de trabajar juntas para la realización de un Proyecto. ya que la ingeniería de software se encarga de crear y mantener las aplicaciones de software aplicando tecnologías y la ingeniería de sistemas consiste en la aplicación de fundamentos de las ciencias computacionales, electronicas y los conocimientos de software, para el desarrollo de soluciones.se podría decir que la ingeniería de software es un complemento de la ingeniería en sistemas ya que en esta se ve a detalle el ciclo de vida del software.
Especificación
usuarios e ingenieros definen el software a producir y las restricciones en su funcionalidad.
Desarrollo
fase en la cual el software se diseña y se programa.
Validación
el software debe ser probado para asegurar que cumple con las necesidades del cliente.
Evolución
el software debe poder ser modificado para adaptarse a cambios en el mercado y en las necesidades de los usuarios.
Modelo en cascada
ordena rigurosamente las etapas del ciclo de vida del software, de tal forma que el inicio de cada etapa debe esperar a la finalización de la inmediatamente anterior
Prototipado
pertenece a los modelos de desarrollo evolutivo. El prototipo debe ser construido en poco tiempo, usando los programas adecuados y no se deben utilizar muchos recursos
Incremental e iterativo
Divide la funcionalidad del sistema en partes. En cada incremento, una parte de la funcionalidad es desarrollada, desde el análisis hasta las pruebas.
Espiral
Combinación de procesos en cascada y prototipado. Fue definido por Barry Boehm en 1986 en el artículo “A Spiral Model of Software Development and Enhancement”
RAD (Rapid Application Development)
emplea técnicas iterativas y de prototipado. Lo introdujo James Martin en 1991.
RUP (Rationa Unified Process)
El Rational Unified Process en inglés es un proceso de desarrollo de software iterativo y junto con el Lenguaje Unificado de Modelado (UML), constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos.
Upper CASE (U-CASE), herramientas que ayudan en las fases de planificación, análisis de requisitos y estrategia del desarrollo, usando, entre otros diagramas UML.
Middle CASE (M-CASE), herramientas para automatizar tareas en el análisis y diseño de la aplicación.
Lower CASE (L-CASE), herramientas que semi-automatizan la generación de código, crean programas de detección de errores, soportan la depuración de programas y pruebas. Además automatizan la documentación completa de la aplicación.
Los métodos de la ingeniería de software introducen frecuentemente una notación especial orientada al lenguaje o gráfica y a un conjunto de criterios para la calidad del software.
Programación estructurada
Esta forma de programar (paradigma) se basa en un famoso teorema, desarrollado por Edsger Dikjstra, que demuestra que todo programa puede escribirse utilizando únicamente las tres estructuras básicas de control
Programación orientada a objetos o POO
Los conceptos de la programación orientada a objetos tienen origen en Simula 67, un lenguaje diseñado en 1967 para hacer simulaciones de eventos discretos, creado por Ole-Johan Dahl y Kristen Nygaard del Centro de Cómputo Noruego en Oslo.
Extreme Programming
Enfoque formulado por Kent Beck en 1999, que se diferencia de las metodologías tradicionales principalmente en que pone más énfasis en la adaptabilidad que en la previsibilidad.