El tema de hoy, como seguro que has adivinado al leer el título de este post, es la programación de sistemas. Pero antes de hablar de lo que es la programación de sistemas, deberíamos abordar lo que es un sistema dentro de este contexto.

¿Qué es un sistema?

La definición de diccionario de un sistema es "un conjunto de cosas que trabajan juntas como partes de un mecanismo o una red de interconexión". Esta es una forma bastante acertada de pensar en los sistemas en lo que respecta específicamente al mundo de la informática. Un sistema informático es un conjunto de componentes (tanto de hardware como de software) que funcionan como parte de un todo.

Un sistema consta de cinco elementos principales: arquitectura, módulos, componentes, interfaces y datos:

Arquitectura

La arquitectura es el modelo conceptual que define la estructura y el comportamiento del sistema. A menudo se representa gráficamente mediante el uso de diagramas de flujo que ilustran cómo funcionan los procesos y cómo se relaciona cada componente entre sí.

Módulos

Los módulos son piezas (hardware o software) de un sistema que se encargan de tareas específicas dentro de él. Cada módulo tiene una función definida que detalla exactamente cuál es su propósito.

Componentes

Los componentes son grupos de módulos que realizan funciones relacionadas. Los componentes son como microsistemas dentro del sistema en general. El uso de componentes y módulos de este modo se denomina diseño modular, y es lo que permite a los sistemas reutilizar ciertas piezas o eliminarlas y reemplazarlas sin paralizar el sistema. Cada componente puede funcionar por sí mismo y puede intercambiarse o colocarse en nuevos sistemas.

Interfaces

Las interfaces abarcan dos entidades distintas: las interfaces de usuario y las interfaces de sistema. El diseño de la interfaz de usuario (UI) define la forma en que se presenta la información a los usuarios y cómo interactúan con el sistema. El diseño de la interfaz del sistema se ocupa de cómo los componentes interactúan entre sí y con otros sistemas de la programación.

Datos

Los datos son la información utilizada y producida por el sistema. Los diseñadores del sistema dictan qué datos son pertinentes para cada componente del sistema y deciden cómo se van a tratar.

Cada componente complementa el sistema a su manera para que todo funcione correctamente. Si una pieza del rompecabezas se desajusta, todo el sistema puede verse afectado. Como la tecnología evoluciona constantemente, los componentes se modifican, se añaden o se eliminan constantemente. Para asegurarse de que estas modificaciones dentro de la programación tienen el efecto deseado, se utiliza el diseño de sistemas para orquestar todo el asunto.

¿Qué es el diseño de sistemas y programación?

El diseño de sistemas consiste en definir cada elemento de un sistema y cómo encaja cada componente en la arquitectura del sistema. Los diseñadores de sistemas se centran en conceptos de alto nivel sobre cómo debe incorporarse cada componente al producto final. Para ello, utilizan principalmente el Lenguaje de Modelado Unificado (UML) y diagramas de flujo que ofrecen una visión general gráfica de cómo se vincula cada componente dentro del sistema.

El diseño de sistemas y programación tiene tres áreas principales: diseño arquitectónico, diseño lógico y diseño físico. El diseño arquitectónico se ocupa de la estructura del sistema y de cómo se comporta cada componente dentro de él. El diseño lógico se ocupa de las representaciones abstractas del flujo de datos (entradas y salidas dentro del sistema).

El diseño físico dentro de la programación se ocupa de las entradas y salidas reales. El diseño físico establece los requisitos específicos de los componentes del sistema, como los requisitos de entrada, los requisitos de salida, los requisitos de almacenamiento, los requisitos de procesamiento y los protocolos de copia de seguridad y recuperación del sistema. Otra forma de expresar esto es decir que el diseño físico se ocupa del diseño de la interfaz de usuario, el diseño de los datos y el diseño del proceso.