1.4 – Software, concepto y clases

Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de las operaciones de un sistema de computación.

Sin su software, el ordenador es básicamente un montón de metal inútil. Con su software, una computadora puede almacenar, procesar y recuperar información.

El término software hace alusión a la sumatoria de aquellas reglas, programas, datos, documentación e instrucciones que permiten la ejecución de múltiples tareas en un ordenador. Es su parte lógica e intangible y actúa como nexo entre el usuario y el hardware, es decir, la parte tangible de la computadora.

Un ordenador moderno consiste en uno o más procesadores, memoria principal, discos, impresoras, interfaces de red y otros dispositivos de entrada/salida. Es un sistema complejo. Escribir programas que sigan la pista a todos estos componentes y los usen correctamente, ya no digamos óptimamente, es una tarea extremadamente difícil. Si todos los programadores tuviesen que ocuparse de saber cómo trabajan las unidades de disco, y de las docenas de cosas que pueden fallar al leer un bloque de disco, es poco probable que pudieran escribirse muchos programas.

Hace años se hizo evidente que debía encontrarse alguna forma de proteger a los programadores de la complejidad del hardware. La solución fue poner una capa de software encima del hardware que se encargue de administrar todas las partes del sistema y presente al usuario una interfaz que sea más fácil de entender y programar.

A grandes rasgos, se puede decir que existen tres tipos de software:

Software de Aplicación: aquí se incluyen todos aquellos programas que permiten al usuario realizar una o varias tareas específicas, como por ejemplo escribir texto, edición de fotografías, gestionar bases de datos, navegadores de internet, videojuegos etc. También podemos incluir:

  • Aplicaciones para Control de sistemas y automatización industrial
  • Aplicaciones ofimáticas
  • Software educativo
  • Software empresarial
  • Bases de datos
  • Telecomunicaciones (por ejemplo Internet y toda su estructura lógica)
  • Videojuegos
  • Software médico
  • Software de cálculo numérico y simbólico.
  • Software de diseño asistido (CAD)
  • Software de control numérico (CAM)

Software de Programación o programas de sistema: son aquellas herramientas que un programador utiliza para poder desarrollar programas informáticos. Para esto, el programador se vale de distintos lenguajes de programación. Como ejemplo se pueden tomar compiladores, programas de diseño asistido por computador, paquetes integrados, editores de texto, enlazadores, depuradores, intérpretes, entre otros.

  • Editores de texto
  • Compiladores
  • Intérpretes
  • Enlazadores
  • Depuradores
  • Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).

Software de Sistema: es aquel que permite a los usuarios interactuar con el sistema operativo así como también controlarlo. Está compuesto por una serie de programas que tienen como objetivo administrar los recursos del hardware y, al mismo tiempo, le otorgan al usuario una interfaz. El sistema operativo permite facilitar la utilización del ordenador a sus usuarios ya que es el que le da la posibilidad de asignar y administrar los recursos del sistema, como ejemplo de esta clase de software se puede mencionar a Windows, Linux y Mac OS X, entre otros. Además de los sistemas operativos, dentro del software de sistema se ubican las herramientas de diagnóstico, los servidores (aplicación), las utilidades, los controladores de dispositivos y las herramientas de corrección y optimización, etc.

  • Sistemas operativos
  • Controladores de dispositivos
  • Herramientas de diagnóstico
  • Herramientas de Corrección y Optimización
  • Servidores
  • Utilidades

En el siguiente apartado vamos a conocer qué es un programa y los pasos que hay que realizar para crear una aplicación en un lenguaje de programación.

Programa: Algoritmo (secuencia no ambigua, finita y ordenada de instrucciones para la resolución de un determinado problema) traducido a un lenguaje de programación, de modo que un ordenador es capaz de ejecutarlo.

Programación: Elaboración de un programa de manera que éste sea:

  • Correcto: Un programa será correcto si hace lo que debe hacer, de modo que se deben especificar de manera muy clara cuáles son los datos sobre los que se trabajarán y lo que se debe hacer con ellos. Todo debe ser documentado y probado antes de desarrollarlo.
  • Eficiente: Debe consumir la menor cantidad de recursos (tiempo y/o memoria) posible.
  • Claro: Es muy importante la claridad y legibilidad de todo programa, ya que facilitará al máximo la tarea de mantenimiento posterior del software.
  • Modular: Los programas suelen subdividirse en subprogramas (módulos), para reducir la complejidad de aquella parte que se está implementando y facilitar la reutilización de código.
compilador

Fase 1. Proceso de transformación de un programa fuente a un programa ejecutable

Para la elaboración de un programa hay que distinguir entre las siguientes dos fases:

  1. Fase de compilación y linkado (link, montado o enlace)
  2. Fase de ejecución de un programa

Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado directamente por un ordenador, sino que debe ser traducido a lenguaje máquina.

Las etapas por las que debe pasar un programa escrito en un lenguaje de programación, hasta poder ser ejecutable son:

Fase de compilación y linkado. Ver imagen Fase 1.

  • Programa fuente: Programa escrito en un lenguaje de alto nivel (texto ordinario que contiene las sentencias del programa en un lenguaje de programación). Necesita ser traducido a código máquina para poder ser ejecutado.
  • Compilador: Programa encargado de traducir los programas fuentes escritos en un lenguaje de alto nivel a lenguaje máquina y de comprobar que las llamadas a las funciones de librería se realizan correctamente.
  • Programa (o código) objeto: Es el programa fuente traducido (por el compilador) a código máquina. Aún no es directamente ejecutable.
  • Programa Ejecutable: Traducción completa a código máquina, realizada por el enlazador, del programa fuente y que ya es directamente ejecutable.
  • Linker (montador o enlazador): Es el programa encargado de insertar al programa objeto el código máquina de las funciones de las librerías (archivos de biblioteca) usadas en el programa y realizar el proceso de montaje, que producirá un programa ejecutable .exe. Las librerias son una colección de código (funciones) ya programado y traducido a código máquina, listo para
    utilizar en un programa y que facilita la labor del programador.

compilateporfavorUn depurador (debugger), es un programa diseñado específicamente para la detección, verificación y corrección de errores. Los depuradores nos permiten trazar el programa (ejecutarlo sentencia a sentencia) y visualizar el contenido de las variables y direcciones de memoria durante la ejecución del programa. Además permiten alterar el flujo de ejecución del mismo, cambiar los valores de
las variables e introducir puntos de parada.

Fase de ejecución de un programa

Una vez que tenemos el programa en lenguaje máquina, para poderlo ejecutar hay que introducirlo en la memoria.

  1. Una utilidad del S.O. llamada cargador colocará el programa, y sus datos de entrada, en memoria principal, preparándolo para su ejecución.
  2. El S.O. le pasa el control a la C.P.U. para que comience la ejecución del programa, realizando la Unidad de Control los siguientes pasos (fases):
    1. Captación de la instrucción: Lee de la Memoria Principal la instrucción a ejecutar.
    2. Ejecución de la instrucción: Interpreta la instrucción leída y envía señales de control a las unidades que deban intervenir en su ejecución. Tras dicha ejecución se establece cuál será la siguiente instrucción a ejecutar.

Deja un comentario