Definición y Tipos de Software

El software es un componente esencial en el mundo de la informática. Se clasifica en tres categorías principales:

  • Software de Sistema (Sistema Operativo): Es el software que permite que el hardware funcione. Administra los recursos del ordenador y facilita la interacción entre el usuario y los componentes físicos. Ejemplos incluyen sistemas operativos y controladores de dispositivos.
  • Software de Programación: Conjunto de herramientas que permiten a los desarrolladores crear programas informáticos. Proporcionan un entorno para escribir código en diferentes lenguajes de programación de forma práctica.
  • Software de Aplicación (Aplicaciones Informáticas): Programas diseñados para una finalidad específica. Ejemplos son los procesadores de texto, hojas de cálculo, reproductores de música y videojuegos.

Características del Lenguaje Orientado a Objetos

La programación orientada a objetos se basa en los siguientes conceptos:

  • Los objetos tienen atributos que los diferencian entre sí.
  • Una clase se define como una colección de objetos con características similares.
  • Los objetos se comunican entre sí mediante métodos, lo que produce un cambio en su estado.
  • Los objetos son unidades individuales que forman la base de este tipo de programación.

Fases del Ciclo de Vida del Software

El desarrollo de software sigue un ciclo de vida que consta de varias fases:

  • Análisis: Se construye un modelo de los requisitos, entendiendo en detalle el problema a resolver.
  • Diseño: Se define cómo se va a resolver el problema, basándose en el análisis previo.
  • Codificación: Se traduce el diseño a un formato legible por la máquina, generando el código ejecutable.
  • Pruebas: Se verifica que el software cumpla con los criterios de corrección y calidad.
  • Mantenimiento: Se lleva a cabo después de la entrega del software al cliente, asegurando que el sistema se adapte a los cambios y corrigiendo errores.

Tipos de Mantenimiento de Software

El mantenimiento de software es crucial para su longevidad y eficiencia. Existen varios tipos:

  • Perfectivo: Mejora la funcionalidad del software.
  • Evolutivo: Adapta el software a las nuevas necesidades del cliente, incluyendo modificaciones, expansiones o eliminaciones de código.
  • Adaptativo: Ajusta el software a las nuevas tendencias del mercado, nuevos componentes de hardware, etc.
  • Correctivo: Corrige errores que puedan surgir en el futuro.

Requisitos del Software

Para un desarrollo exitoso, es fundamental definir claramente los requisitos del software:

  • Planificación de las reuniones.
  • Relación de los objetivos del usuario, cliente y del sistema.
  • Relación de los requisitos funcionales y no funcionales del sistema.
  • Relación de objetivos prioritarios y su temporización.
  • Identificación de requisitos mal planteados o contradictorios.

Criterios para Elegir un IDE

Un Entorno de Desarrollo Integrado (IDE) puede soportar uno o varios lenguajes de programación. Es importante conocer el lenguaje en el que se va a codificar el software y qué lenguajes ofrecen los distintos IDEs. Además, se deben considerar las diferentes herramientas que estos proporcionan.

Verificación y Validación del Software

Verificación: Proceso que comprueba que un sistema, o parte de él, cumple con las condiciones impuestas. Asegura que la aplicación se está construyendo correctamente.

Validación: Proceso de evaluación del sistema, o de uno de sus componentes, para determinar si satisface los requisitos especificados.

Pruebas de Caja Negra y Caja Blanca

  • Prueba de la Caja Negra: Se centra en validar los requisitos funcionales sin considerar el funcionamiento interno del programa. Se comprueba que los resultados de la ejecución coincidan con los esperados según las entradas.
  • Prueba de la Caja Blanca: Se enfoca en validar la estructura interna del programa, requiriendo conocer los detalles del código.

Modelos de Desarrollo: Cascada vs. Evolutivos

El modelo en cascada asume la entrega de un producto completo, mientras que los modelos evolutivos permiten desarrollar versiones cada vez más completas hasta alcanzar el producto final. En los modelos evolutivos, se reconoce que las necesidades del usuario pueden no estar completas inicialmente, requiriendo una replanificación.

Definiciones Clave en Programación

  • Código Fuente: Texto escrito por los programadores en un editor, utilizando un lenguaje de programación de alto nivel.
  • Código Objeto: Resultado de compilar el código fuente. La compilación es la traducción única del programa mediante un compilador.
  • Código Ejecutable: Código binario resultante de enlazar los archivos de código objeto con las rutinas y bibliotecas necesarias. El sistema operativo carga y ejecuta este código en la memoria RAM.