Fundamentos de Informática: Software, Lenguajes y Ciclo de Desarrollo


1. Concepto y Clasificación del Software

Definiciones Clave

  • Definición RAE: Conjunto de programas, instrucciones y reglas informáticas para ejecutar ciertas tareas en una computadora.
  • Definición IEEE: Conjunto de programas, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación.

1.1 Tipos de Software Según su Función

  • Software de Sistema: Permite que el ordenador funcione. Incluye sistemas operativos, controladores (*drivers*) y utilidades del sistema. Ejemplo: Windows, Linux, macOS.
  • Software de Aplicación: Diseñado para realizar tareas específicas para el usuario. Ejemplo: Procesadores de texto, hojas de cálculo, navegadores web, editores de imagen.
  • Software de Desarrollo: Proporciona herramientas para crear otros programas. Ejemplo: Compiladores, intérpretes, editores de código, IDEs como Visual Studio o IntelliJ.

1.2 Tipos de Software Según su Licencia

  • Software Propietario: Protegido por derechos de autor y propiedad intelectual. Su copia o distribución sin permiso es ilegal. Se distribuye bajo contrato o licencia.
  • Software Libre: Permite usar, estudiar, modificar y distribuir el código. No siempre es gratuito. Ejemplo: Linux, LibreOffice, Firefox.

2. Relación Hardware – Software

El software necesita del hardware para poder ejecutarse. Los componentes principales involucrados son:

  • CPU: Interpreta y ejecuta las instrucciones.
  • RAM: Guarda temporalmente código y datos mientras el programa se ejecuta.
  • Almacenamiento Secundario: Conserva los programas y los datos de forma permanente.
  • Periféricos: Permiten la entrada y salida de información (teclado, ratón, pantalla, impresora).

Compatibilidad

Hardware y software deben ser compatibles. Un programa no funcionará correctamente si requiere más recursos de los que el hardware puede ofrecer.

3. Lenguajes de Programación

Definición: Conjunto de símbolos, reglas y sintaxis que permiten construir programas informáticos.

3.1 Componentes de un Lenguaje de Programación

  • Alfabeto: Símbolos permitidos (letras, números, operadores, caracteres especiales).
  • Sintaxis: Reglas que determinan cómo combinar los símbolos.
  • Semántica: Significado de las estructuras sintácticas.

3.2 Lenguajes de Programación vs. Lenguajes de Marcas

  • Lenguaje de Programación: Permite crear algoritmos y controlar el flujo de ejecución (ej. Java, Python).
  • Lenguaje de Marcas: Estructura o presenta información, pero no ejecuta instrucciones (ej. HTML, XML).

3.3 Clasificación de los Lenguajes

Según Nivel de Abstracción:

  • Bajo Nivel: Cercano al lenguaje máquina (0 y 1) o ensamblador (nemotécnicos).
  • Alto Nivel: Cercano al lenguaje humano, independiente del hardware (C++, Java, Python).

Según Propósito:

  • General: Sirve para cualquier tipo de programa (Java, Python).
  • Específico: Orientado a un área concreta (SQL para bases de datos).

Según Forma de Ejecución:

  • Compilado: Se traduce todo el programa antes de ejecutarse (C, C++).
  • Interpretado: Se traduce línea por línea (Python, JavaScript).
  • Mixto: Java genera bytecode, que se interpreta después.

Según Paradigma:

  • Estructurado: Uso de secuencias, selecciones y bucles.
  • Modular: Programa dividido en módulos reutilizables.
  • Orientado a Objetos (POO): Se basa en objetos y clases con atributos y métodos (Java, C++).
  • Visual: Se programa mediante elementos gráficos (Scratch, App Inventor).

4. Ciclo de Vida del Software

Proceso que se sigue desde la idea inicial hasta la puesta en marcha y mantenimiento del programa.

Fases Principales

  1. Análisis:

    • Se identifican los requerimientos funcionales (qué hace el sistema) y los no funcionales (cómo lo hace: rendimiento, seguridad, fiabilidad).
    • Se elabora el Documento de Especificación de Requisitos del Software (ERS).
    • Es la fase más importante, ya que errores aquí afectan a todo el proyecto.
  2. Diseño:

    • Se transforma el análisis en una estructura técnica que guiará la codificación.
    • Se usan diagramas UML (casos de uso, clases, secuencia).
    • Un buen diseño debe ser completo, claro y comprensible.
  3. Codificación o Programación:

    • Se convierte el diseño en código fuente.
    • Etapas: Código fuente (escrito por el programador), Código objeto (tras la compilación), Código ejecutable (generado por el linker o enlazador).
    • Reglas: Claridad, modularidad, eficiencia, portabilidad y uso de comentarios.
  4. Pruebas:

    • Detectar errores y verificar el funcionamiento.
    • Tipos: Unitarias (módulos), Integración (conexión entre módulos), Sistema (con hardware), Aceptación (con el cliente).
  5. Documentación:

    Describe el uso y funcionamiento del software. La norma IEEE 1063-2001 regula la estructura de la documentación.

  6. Explotación:

    Instalación y configuración del software en el entorno real. Incluye verificación final (Beta test).

  7. Mantenimiento:

    Fase más larga.

    • Correctivo: Corrige errores.
    • Evolutivo: Añade funciones nuevas.
    • Perfectivo: Adapta a nuevos entornos.

5. Traductores

Programas que convierten el código fuente en código ejecutable.

Tipos

  • Compilador:

    • Traduce todo el programa antes de ejecutarlo.
    • Ejecución rápida, pero requiere recompilar para cada plataforma.
  • Intérprete:

    • Traduce y ejecuta línea por línea.
    • Más lento, pero fácil de portar y depurar.

Dejar un Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *