¿Qué es la ingeniería de software? Definición, Fundamentos, Características
¿Qué es la ingeniería de software?
La ingeniería de software se define como un proceso de análisis de los requisitos del usuario y luego diseño, construcción y prueba de aplicaciones de software que satisfagan esos requisitos.
Veamos las diversas definiciones de ingeniería de software:
- El IEEE, en su estándar 610.12-1990, define la ingeniería de software como la aplicación de un enfoque sistemático, disciplinado y computable para el desarrollo, operación y mantenimiento de software.
- Fritz Bauer lo definió como “el establecimiento y uso de principios de ingeniería estándar”. Le ayuda a obtener, de forma económica, un software fiable y que funcione eficientemente en máquinas reales.
- Boehm define la ingeniería de software como "la aplicación práctica del conocimiento científico al diseño creativo y la creación de programas informáticos. También incluye la documentación asociada necesaria para desarrollarlos, operarlos y mantenerlos".
¿Por qué Ingeniería de Software? Crisis de software y su solución
¿Qué fue la crisis del software?
- Fue a finales de los años 1960 cuando muchos proyectos de software fracasaron.
- Muchos programas superaron el presupuesto. El resultado fue un software poco fiable y costoso de mantener.
- El mantenimiento de software más grande era difícil y bastante caro.
- Gran cantidad de software no puede satisfacer las crecientes necesidades de los clientes.
- La complejidad de los proyectos de software aumentó a medida que aumentó su capacidad de hardware.
- La demanda de nuevo software aumentó más rápido en comparación con la capacidad de generar nuevo software.
Todos los problemas anteriores conducen a una "crisis del software".
La Solución
La solución al problema fue transformar el trabajo de codificación desorganizado en una disciplina de ingeniería de software. Estos modelos de ingeniería ayudaron a las empresas a optimizar las operaciones y a entregar software que satisficiera los requisitos del cliente.
- A finales de la década de 1970 se produjeron usos generalizados de los principios de la ingeniería de software.
- En la década de 1980 se produjo la automatización del proceso de ingeniería de software y el crecimiento de la ingeniería de software asistida por computadora (CASE).
- La década de 1990 ha visto un mayor énfasis en los aspectos de "gestión" de los estándares de calidad y procesos de los proyectos, como la norma ISO 9001.
¿Por qué la ingeniería de software es popular?
A continuación se presentan razones importantes detrás de la popularidad de la ingeniería de software:
- software grande – En nuestra vida real, es bastante más cómodo construir un muro que una casa o un edificio. De la misma manera, a medida que el tamaño del software aumenta, la ingeniería de software le ayuda a crear software.
- Escalabilidad Si el proceso de desarrollo de software se basara en conceptos científicos y de ingeniería, sería más fácil recrear un nuevo software para escalar uno existente.
- Adaptabilidad: Siempre que el proceso del software se basó en principios científicos y de ingeniería, es fácil recrear nuevo software con la ayuda de la ingeniería de software.
- Costo- La industria del hardware ha demostrado sus habilidades y la enorme producción ha reducido el coste de las computadoras y el hardware electrónico.
- Naturaleza dinámica– Naturaleza del software en constante crecimiento y adaptación. Depende del entorno en el que trabaja el usuario.
- Manejo de calidad: Ofrece un mejor método de desarrollo de software para proporcionar productos de software de calidad.
Relación de la Ingeniería del Software con Otras Disciplinas
Aquí, cómo se relaciona la ingeniería de software con otras disciplinas:
- Ciencias de la Computación: Proporciona la base científica para el software, ya que la ingeniería eléctrica depende principalmente de la física.
- Ciencias de la gestión: La ingeniería de software es un trabajo que requiere mucha mano de obra y exige control tanto técnico como de gestión. Por lo tanto, se utiliza ampliamente en las ciencias de la gestión.
- Ciencias económicas: En este sector, la ingeniería de software te ayuda en la estimación de recursos y el control de costes. Se debe desarrollar un sistema informático y los datos deben mantenerse periódicamente dentro de un presupuesto determinado.
- Ingeniería de sistemas: La mayor parte del software es un componente de un sistema mucho más grande. Por ejemplo, el software de un sistema de seguimiento industrial o el software de vuelo de un avión. Se deben aplicar métodos de ingeniería de software al estudio de este tipo de sistemas.
Desafíos de la ingeniería de software
A continuación se presentan algunos desafíos críticos que enfrentan los ingenieros de software:
- En áreas críticas para la seguridad, como el espacio, la aviación, las plantas de energía nuclear, etc., el costo de una falla del software puede ser enorme porque hay vidas en riesgo.
- Aumento de las demandas del mercado de tiempos de respuesta rápidos.
- Para afrontar la creciente complejidad del software es necesario crear nuevas aplicaciones.
- La diversidad de sistemas de software debería comunicarse entre sí.
Atributos de productos de software
Las características de cualquier producto de software incluyen funciones que muestra el producto cuando se instala y se pone en uso.
No son los servicios que proporciona el producto. En cambio, se han relacionado con el comportamiento dinámico del producto y el uso que se hace del producto.
Ejemplos de estos atributos son:
Efficiency, reliability, robustness, maintainability, etc.
Sin embargo, la importancia relativa de estas características varía de un sistema de software a otro.
Características del Producto | Descripciones |
---|---|
Mantenibilidad | El software debe evolucionar para satisfacer las demandas cambiantes de los clientes. |
Confianza | La confiabilidad incluye varias características. Un software confiable nunca debería causar ningún daño físico o económico en el momento de una falla del sistema. |
Eficiencia: | La aplicación de software debería abusar de los recursos del sistema, como la memoria y el ciclo del procesador. |
usabilidad | La aplicación de software debe tener una interfaz de usuario y documentación específicas. |
Optimizar el atributo anterior es un gran desafío. Por ejemplo, ofrecer una mejor interfaz de usuario puede reducir la eficiencia del sistema.
Características de un buen software
Cualquier software debe juzgarse por lo que ofrece y cuáles son los métodos que le ayudan a utilizarlo.
Todo software debe satisfacer los siguientes atributos:
- OperaFuncional
- Transicional
- Mantenimiento
Estas son algunas características importantes del buen software desarrollado por profesionales del software.
OperaFuncional
Esta característica nos permite saber qué tan bien funciona el software en las operaciones, lo cual se puede medir en:
- Presupuesto
- Eficiencia:
- usabilidad
- Confianza
- Exactitud
- Funcionalidad
- Seguridad
- Seguridad
Transicional
Este es un aspecto esencial cuando el software se traslada de una plataforma a otra:
- Interoperabilidad
- Reutilización
- Portabilidad
- Adaptabilidad
Mantenimiento
Este aspecto habla de qué tan bien el software tiene la capacidad de adaptarse en un entorno que cambia rápidamente:
- Flexibilidad
- Mantenibilidad
- Modularidad
- Escalabilidad
Resumen
- La ingeniería de software es un proceso de análisis de los requisitos del usuario y luego diseño, construcción y prueba de aplicaciones de software que satisfagan esos requisitos.
- Las razones importantes para utilizar la ingeniería de software son: 1) Software de gran tamaño, 2) Escalabilidad, 3) Adaptabilidad, 4) Costo y 5) Naturaleza dinámica.
- A finales de la década de 1960, muchos programas de software superan el presupuesto. Por lo tanto, ofrece software poco fiable y caro de mantener.
- A finales de la década de 1970 se produjeron usos generalizados de los principios de la ingeniería de software.
- Concepto de ingeniería de software 1) Ciencias de la Computación 2) Ciencias de la Gestión 3) Ingeniería de sistemas y 4) Economía
- Las crecientes demandas del mercado de tiempos de respuesta rápidos son los mayores desafíos del campo de la ingeniería de software.
- 1) Mantenibilidad, 2) Confiabilidad, 3) Eficiencia y 4) Usabilidad son los atributos más importantes de los productos de software.
- Las tres características más importantes de un buen software son 1) Operacional 2)Transicional 3)Mantenimiento.