Tema 1.1. Introducción y conceptos previos

¿Qué es la ingeniería?


📖
Conjunto de conocimientos, técnicas científicas y empíricas y procedimientos aplicados a la resolución de problemas prácticos.
Incluye tareas como
  • La invención
  • El diseño
  • La construcción
  • El mantenimiento
  • El perfeccionamiento
📖
Busca la transformación del conocimiento en aplicación.
Se aplica sobre
  • Tecnologías
  • Estructuras
  • Máquinas
  • Herramientas
  • Sistemas
  • Materiales
  • Procesos
 
Se tienen en cuenta las restricciones económicas del modelo de negocio de la organización.

¿Cuál es la labor de un ingeniero?


📖
La labor de un ingeniero es…
  • Aplicar teorías, métodos y herramientas donde son adecuadas con el fin de dar soluciones a problemas.
  • Adaptarse para trabajar con restricciones (organizacionales, financieras, políticas, etc.).

¿Qué es la Ingeniería del Software?


🏷️
Disciplina de la ingeniería que se interesa por todos los aspectos de la producción de software, desde sus etapas más tempranas, hasta el mantenimiento del sistema tras su puesta en macha.
(Sommerville, 2011)
🏷️
Proceso, colección de métodos (prácticas), y conjunto de herramientas que permiten a los profesionales construir software de calidad.
(Pressman, 2014)
🏷️
Aplicación de un enfoque sistemático, disciplinado y cuantificable del desarrollo, operación, y mantenimiento del software.
(IEEE)
🏷️
Área de la informática que se encarga de la construcción de sistemas software muy grandes y muy complejos, teniéndose que realizar por un equipo o equipos de ingenieros.
(Ghezzi, 2003)
🏷️
Aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantener el software.
(Bohem, 1976)
🏷️
Estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software.
(Zelkovitz, 1978)

Elementos de la Ingeniería Software


🚀
Niveles de la Ingeniería del Software
🛠️
Herramientas
  • Programas o recursos utilizados para facilitar el desarrollo, la prueba y el mantenimiento del software.
Ejemplos
  • Entornos de desarrollo
  • Sistemas de control de versiones
  • Herramientas de depuración
🧰
Métodos
  • Enfoques sistemáticos y estructurados utilizados para planificar, diseñar, implementar y evaluar sistemas de software.
  • Proporcionan pautas y reglas para llevar a cabo las distintas etapas del desarrollo de software de manera eficiente.
🔃
Proceso
  • Referido a la serie de pasos y actividades que se llevan a cabo para desarrollar, mantener y mejorar el software.
  • Incluye la definición de requisitos, el diseño, la implementación, la prueba y la documentación, entre otras fases.
💍
Compromiso con la calidad del Software
  • Implica adoptar prácticas y estándares que aseguren que el producto final cumpla con los requisitos y expectativas del cliente.
  • Incluye pruebas exhaustivas, revisión de código, documentación clara y la mejora continua de los procesos de desarrollo.
notion image
Pentágono de la Ingeniería Software
🧬
Ciclo de vida de desarrollo
  • Referido a las distintas fases que atraviesa un software desde su concepción hasta su retirada.
  • Incluyen la planificación, el diseño, la implementación, la prueba y el mantenimiento.
💬
Lenguaje de modelado
  • Conjunto de notaciones y reglas que permiten representar visualmente aspectos del software, como sus estructuras, procesos y comportamientos.
  • Ayudan a comprender, comunicar y documentar de manera efectiva los diferentes aspectos del software.
🛠️
Herramientas de Ingeniería Software
  • Aplicaciones y recursos que facilitan tareas en el proceso de desarrollo de software.
  • Pueden incluir herramientas de programación, entornos de desarrollo integrados, sistemas de control de versiones y herramientas de análisis estático, entre otras.
📽️
Planificación del proyecto
  • Definir objetivos, estimar recursos necesarios, establecer plazos y asignar tareas.
  • Plan de proyecto sólido ayuda a gestionar eficientemente los recursos y garantizar que el desarrollo del software se realice de manera ordenada y dentro del tiempo previsto.
Gestión del proceso
  • Supervisar y mejorar continuamente los procesos de desarrollo de software.
  • Incluye la identificación de áreas de mejora, la aplicación de buenas prácticas, la gestión de riesgos y la adaptación a cambios durante el desarrollo.
 
notion image

¿Qué es el software?


🏷️
Suma total de los programas de ordenador, procedimientos, reglas, la documentación asociada y los datos que pertenecen a un sistema de cómputo.
 
(I. Sommerville)
📖
Colección de códigos junto con las bibliotecas necesarias para ser ejecutado.
Existen distintos tipos de software:
Software de sistemas.
📖
El software de sistemas separa usuarios y programadores de los detalles técnicos del hardware.
Proporciona una capa de abstracción para gestionar aspectos como:
  • Memoria.
  • Almacenamiento.
  • Periféricos.
Simplifica la interacción con la máquina sin requerir una comprensión detallada del hardware.
Ejemplos
  • Sistema Operativo
  • Herramientas de diagnóstico
  • Controladores de dispositivos (drivers)
 
Software de programación.
📖
Conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes librerías y lenguajes de programación.
Ejemplos
  • Compiladores e intérpretes
  • Enlazadores
  • Depuradores
  • Entornos de desarrollo integrados
 
Software de aplicación.
📖
Conjunto de programas diseñados para ejecutar tareas específicas, automatizando o asistiendo diversas actividades en diversos campos, con un enfoque particular en aplicaciones empresariales.
Ejemplos
  • Software educativo, software médico, etc.
  • Bases de datos
  • Telecomunicaciones
  • Software de gestión
 

¿Qué es un producto software?


📖
Aquel software creado para cubrir un conjunto de requisitos específicos (diseñado para un usuario tipo o un cliente determinado).
Tipos de productos software:
🧰
Genéricos
  • Productos de uso genérico orientados a un usuario tipo.
Ejemplos
  • Sistemas operativos.
  • Procesadores.
  • Bases de Datos.
🪛
A medida
  • Productos específicos diseñados para un cliente determinado.

Producto software: Usuario vs Cliente


👤
Usuario
Persona o personas que van a manipular de manera directa un producto software.
👔
Cliente
Persona, entidad u organización que encarga el desarrollo de un producto software y que invierte en dicho producto.
📖
¿El cliente y el usuario coinciden?
En el caso del software genérico, el cliente o comprador es por lo general el mismo que el usuario final.
 
En el caso del software a medida, el cliente o comprador puede ser una compañía, pero el usuario final puede ser solamente un empleado o grupo de empleados dentro de la misma.

Diferencias del software con otros productos


🛸
Algunas diferencias son:
  • El software es intangible.
  • El software se desarrolla, no se fabrica.
  • Los costes se centran en el proceso de ingeniería, no en la fabricación.
  • La gestión es diferente de la gestión de otros productos de la ingeniería.
El software no se estropea, se deteriora
Curva de fallos del SOFTWARE a los largo del tiempo
notion image
Curva de fallos de HARDWARE a lo largo del tiempo
notion image

Características del Software


📖
Doble naturaleza del software
🎁
Software como Producto
Programas que gestionan y transforman la información.
🛠️
Software como Herramienta
Software que se utiliza para desarrollar productos. Ejm.: SOs, IDEs, …

Calidad del producto software


📖
La calidad del software se mide basándose en atributos
  • 🛠️ Mantenibilidad
  • 🕷️ Fiabilidad
  • 🪫 Eficiencia
  • 👨🏻‍💻 Usabilidad
  • 🛡️ Seguridad
  • 💰 Coste
📖
Características del software de calidad
Características del producto
Descripción
Mantenimiento
Debe ser desarrollado para que pueda evolucionar.
Confianza y seguridad
Debe ser fiable (no causar daño físico ni económico) y seguro en el acceso al sistema.
Eficiencia
Debe aprovechar los recursos del sistema: memoria, tiempo de proceso, tiempo de respuesta, etc.
Aceptación
Debe ser aceptado por los usuarios para los que ha sido diseñado.