Está en la página 1de 121

TECNOLÓGICO NACIONAL DE MÉXICO

INSTITUTO TECNOLÓGICO DE LEÓN

30-8-2021

UNIDAD 1
INTRODUCCIÓN A LA
COMPUTACIÓN
Carrera: Ingeniería industrial.
Profesor: Miguel Ángel Vázquez Rivas.
Materia: Algoritmos y lenguajes de programación.
Horario: Lunes y miércoles (19:20 – 21:00).
Equipo 2.
Integrantes:
Franco Meza Natalia Abigail.

Esparza Martínez Tadeo Alejandro.

Galindo Rangel Martha Ivette.

Granados Mares Ángel Gabriel.

Hernández González Citlalli.

López Paz Jonathan Uriel.


Índice
Introducción ………………………………………………………………………………4
1.1 Tecnologías de la información………………………………………………………6
1.2 Elementos de un sistema computacional…………………………………………10
1.2.1Software………………………………………………………………….…………14
1.2.1.1 Historia del software……………………………………………….………15
1.2.1.2 Evolución del software……………………………………………….……17
1.2.1.2.1 Primera etapa (1950-1965)…………………………………….……17
1.2.1.2.2 Segunda etapa (1965-1975)…………………………………..……18
1.2.1.2.3 Tercera etapa (1975-1985)…………………………………….……19
1.2.1.2.4 Cuarta etapa (1985-2000)…………………………………………...19
1.2.1.3 El software en la actualidad………………………………………………20
1.2.1.4 Características de un software…………………………...………………21
1.2.1.5 Clasificación de un software………………………………………...……24
1.2.1.6 Proceso de creación de un software…………………….………………25
1.2.1.7 Modelos para el diseño de un software…………………………………27
1.2.1.8 Etapas en el desarrollo de un software…………………………………38
1.2.1.1 Sistemas………………………………………………………………………40
1.2.1.2 Historia de los sistemas informáticos………………...……….…………41
1.2.1.3 Tipos de sistemas informáticos que existen………………….…………42
1.2.1.4 Comparación con un sistema de información…………………..………44
1.2.1.5 Base de datos………………………………………………………………44
1.2.1.6 Componentes de un sistema de información…………………...………44
1.2.1.7 Clasificación de los sistemas informáticos……………………...………45
1.2.1.2 Programación…………………………………………………………………46
1.2.1.2.1 Historia de la programación…………………………………….………47
1.2.1.2.2 Funcionamiento de un programa………………………………………49
1.2.1.2.3 Léxico y programación……………………………………….…………50

1
1.2.1.2.4 Objetivos de la programación………………………………….….….…50
1.2.1.2.5 Clasificación de los diferentes tipos de programación………….……52
1.2.1.2.6 Lenguajes de programación ……………………………………………55
1.2.1.3 Aplicación……………………………………………………………….………57
1.2.2 Hardware…………………………………………………………………………...66
1.2.2.1 CPU……………………………………………………………………………79
1.2.2.1.1 Historia del CPU…………………………………………………………80
1.2.2.1.1.1 CPU de transistores y circuitos integrados discretos……………82
1.2.2.1.1.2 Microprocesadores………………………………………….………83
1.2.2.1.2 Identificación y composición del CPU…………………………………85
1.2.2.1.3 Operación del CPU………………………………………………………86
1.2.2.1.4 Diseño e implementación…………………………………….…………89
1.2.2.5 Desempeño……………………………………………………..……………97
1.2.2.1.4 Función general de CPU……………………………….……….………98
1.2.2.2 Memoria principal…………………………………………………..…………99
1.2.2.2.1 Tipos……………………………………………………………………...100
1.2.2.3 Periféricos……………………………………………………………………102
1.2.2.3.1 Clasificación de los periféricos………………………………..….……102
1.2.2.3.2 Periféricos de entrada…………………………………………….……104
1.2.2.3.3 Periféricos de salida…………………………………………….………106
1.2.2.3.4 Periféricos de almacenamiento………………………………………109
1.2.2.3.5 Periféricos de comunicación…………………………………….……111
1.2.3 Firmware…………………………………………………………………………113
Conclusiones……………………………………………………………………………118
Bibliografía………………………………………………………………………………119

2
Introducción

La tecnología hoy en día es realmente avanzada, el hombre ha sido capaz de


desarrollar tecnologías que nos permiten y facilitan realizar tareas importantes en
nuestra vida cotidiana. Un ejemplo claro es el desarrollo de las tecnologías de los
sistemas computacionales que se son esenciales para diferentes aplicaciones en
diferentes áreas como la educación, las comunicaciones, el desarrollo de la
ciencia moderna entre otras áreas.
En mundo donde existe una demanda tecnológica constante es necesario innovar
día con día para satisfacer las necesidades humanas, implementando el uso de
nuevos y avanzados sistemas operativos, que cuenten con mayor rapidez y
precisión para realizar cálculos más sofisticados.
Esto se ha convertido en todo un reto para toda la comunidad responsable de
crear nuevos sistemas y software, constantemente se esta actualizando el
conociendo sobre las aplicaciones que se le puede dar al desarrollo de estas
tecnologías.
Hablamos de que se tiene que desarrollar y actualizar la tecnología de varios
dispositivos electrónicos como es: computadoras, celulares, laptops, smartphone,
televisores entre otros dispositivos de comunicación y la base de estos
dispositivos son los sistemas operativos, donde existe una gran competencia
sobre cual es el mejor y más eficaz para nosotros.
Sistemas operativos como Windows, iOS, Android, Mac os x, Linux, entre otros
son los que dominan el mercado actual de tecnología, dominar dicho mercado es
una demanda constante para la innovación de nuevos sistemas más actualizados
con la creación de modelos de dispositivos que incluyan nuevas características y
los hagan únicos en su diseño.
Esto implica una responsabilidad considerable para hacer un uso adecuado de
estos nuevos y mejorados sistemas computacionales, en smartphone y en
cualquier otra tecnología que cuente con alguno de estos sistemas operativos, en
necesario tener un conocimiento amplio sobre las diferentes aplicaciones que se le
pueden dar a estas nuevas tecnologías.
Es impresionante ver como hemos avanzado en cuestiones de desarrollo de
nuevas tecnologías de la información, eso es un claro ejemplo de que tan
dependientes somos de estas tecnologías aplicadas a nuestras vidas cotidianas,
en todo ámbito en necesario contar con estas tecnologías de la información.

3
Como ejemplo nos damos cuenta con esta pandemia lo necesario que son las
tecnologías de la información y comunicación, para entrar mas en contexto
pongamos como ejemplo el aprendizaje a distancia, esto demanda la dependencia
de estos sistemas y tecnologías.
El conocimiento sobre el desarrollo de estos sistemas y estas nuevas tecnologías
es verdaderamente amplio, existe demasiada información que están al alcance de
nosotros, abordaremos de manera precisa cada tema a profundidad sobre los
conceptos mas importantes que se distinguen sobre los sistemas computacionales
y como se han estado desarrollando a lo largo del tiempo.

4
1.1 Tecnologías de la información
¿Qué son las tecnologías de la información?
La tecnología de la información es un proceso que utiliza una combinación de
medios y métodos de recopilación, procesamiento y transmisión de datos para
obtener nueva información de calidad sobre el estado de un objeto, proceso o
fenómeno. El propósito de la tecnología de la información es la producción de
información para su análisis por las personas y la toma de decisiones sobre la
base de esta para realizar una acción.

La introducción de una
computadora personal en el ámbito
de la información y la aplicación de
los medios de comunicación de
telecomunicaciones han
determinado una nueva etapa en
el desarrollo de la tecnología de la
información. La TI moderna es una
tecnología de la información con
una interfaz de usuario "amigable"
que utiliza computadoras
personales e instalaciones de
telecomunicaciones. La nueva
tecnología de la información se
basa en los siguientes principios básicos.
1. Modo interactivo (diálogo) de trabajar con una computadora.
2. Integración con otros productos de software.
3. Flexibilidad en el proceso de cambio de datos y definiciones de tareas.
Como un conjunto de herramientas de tecnología de la información, se utilizan
muchos tipos de programas informáticos: procesadores de texto, sistemas de
publicación, hojas de cálculo, sistemas de gestión de bases de datos, calendarios
electrónicos, sistemas de información de propósito funcional.
Características de las tecnologías de la información:
• Operación del usuario en el modo de manipulación de datos (sin
programación). El usuario no debe saber y recordar, sino que debe ver
(dispositivos de salida) y actuar (dispositivos de entrada).
• Soporte de información transversal en todas las etapas de la transmisión de
información sobre el apoyo de una base de datos integrada, que

5
proporciona una forma única de introducir, buscar, mostrar, actualizar
y proteger la información.
• Procesamiento de documentos sin papel durante el cual sólo se registra la
versión final del documento en papel, las versiones intermedias y los datos
necesarios registrados en los medios se entregan al usuario a través de la
pantalla de visualización del PC.
• Modo de solución de tareas interactivo (de diálogo) con una amplia gama
de posibilidades para el usuario.
• Producción colectiva de un documento sobre la base de un grupo de
ordenadores unidos por medios de comunicación.
• Procesamiento adaptativo de la forma y los modos de presentación de la
información en el
proceso de resolución
de problemas.

Tipos de tecnologías
de la información
Los principales tipos de
tecnología de la
información incluyen
los siguientes.
• La tecnología de
la información para el
procesamiento de
datos está diseñada
para resolver
problemas bien
estructurados, cuyos
algoritmos de solución son bien conocidos y para los cuales existen todos
los datos de entrada necesarios. Esta tecnología se aplica al nivel de
rendimiento del personal de baja calificación con el fin de automatizar
algunas operaciones rutinarias y constantemente repetidas del trabajo
administrativo.

6
• La tecnología de información de gestión está destinada al servicio de
información de todos los empleados de las empresas, relacionado con la
aceptación de las decisiones administrativas. En este caso, la información
suele presentarse en forma de informes de gestión ordinarios o especiales
y contiene información sobre el pasado, el presente y el posible futuro de la
empresa.
• La tecnología de la información de la oficina automatizada está diseñada
para complementar el sistema de comunicación existente del personal de la
empresa. La automatización de la oficina asume la organización y el apoyo
de los procesos de comunicación tanto dentro de la empresa, como con el
entorno externo sobre la base de redes informáticas y otros medios
modernos de transferencia y trabajo con la información.
• La tecnología de la información para el soporte de decisiones está diseñada
para desarrollar una decisión de gestión que se produce como resultado de
un proceso iterativo en el que participan un sistema de soporte de
decisiones (un enlace informático y el objeto de la gestión) y una persona
(el enlace de gestión, que establece datos de entrada y evalúa el
resultado).
La tecnología de la información de los sistemas expertos se basa en el uso
de inteligencia artificial. Los sistemas expertos permiten a los gerentes recibir
asesoramiento experto sobre cualquier problema sobre el cual se haya acumulado
conocimiento en estos sistemas.
¿Qué alcance tiene el TI?
El campo de la tecnología de la información es muy amplio. Cubre áreas como:
• Soporte, administración y diseño de telecomunicaciones y sistemas
informáticos.
• Programadores de software.
• Informáticos y control de redes.
Se trata de habilidades que puedes aprender si cursas alguna licenciatura de las
referidas a este campo de las tecnologías, como una Ingeniería en Sistemas
Computacionales o Tecnología de la Información, ya que podrás aprender la teoría
y la técnica.

7
¿Qué sectores o
trabajos cubre un
profesional en TI?
Casi todos los trabajos
que realizan un
profesional en TI se
basan
fundamentalmente en
cuatro categorías:
• Informáticos.
• Ingenieros
informáticos.
• Analistas de
sistemas.
• Programadores informáticos.
¿Qué habilidades se debe tener?
Si te llama la atención el mundo de la informática y estás pensando estudiar una
carrera para especializarte en TI, debes tomar en cuenta algunas habilidades que
debes tener.
• Debes tener un pensamiento crítico y lógico.
• También debes tener destreza para mantener una buena comunicación y
disposición para ayudar a otros.
• Un punto que también te aportará valor es la creatividad. Un profesional en
TI debe estar constantemente mirando opciones a futuro para ayudar a
desarrollar soluciones a posibles problemas tecnológicos.
• Por lo general, los empleadores buscan personas con capacidad
estratégica, resolución de problemas, capacidad de análisis y, sobre todo,
tener una mente dispuesta al cambio.

8
1.2 Elementos de un sistema computacional.
Para entender cómo funciona un sistema operativo, es necesario conocer qué
lugar ocupa en un sistema informático y cuáles son sus elementos funcionales
básicos.
En primer lugar, hay que decir que el sistema operativo constituye una parte
importante en cualquier sistema informático. Un sistema informático consta ….
• El hardware (CPU, impresora y otros dispositivos periféricos)
El hardware es “el cuerpo” de la computadora y el software “el alma”. La unidad
central de procesamiento (CPU), monitor, teclado e impresora son los cuatro
componentes físicos más importantes de la computadora. El CPU es el “cerebro”
de la computadora.
El software:
Es el conjunto de programas que le dan vida al hardware, si no hay software,
entonces el hardware no funciona, la computadora en si no hace nada. No tiene
sentido usarlo porque no hay programas para trabajar para él.
El Software se puede clasificar en: Firmware, Sistemas Operativos y Aplicaciones.
• El sistema operativo
El sistema operativo es el primer programa que funciona cuando se pone en
marcha el ordenador y gestiona los procesos de ejecución de otros programas y
aplicaciones que funcionan sobre él, actuando como intermediario entre los
usuarios y el hardware, administra todos los recursos como discos, impresoras y
memorias.
• Las aplicaciones (programas que realizan tareas y actividades diversas:
procesadores, bases de datos, hojas de cálculo, juegos...)
Aplicaciones instaladas sobre gusto personar sobre los usuarios, para ayuda de
manera personalizada, ya sea para trabajo y entretenimiento
Son programas para tareas específicas tales como Word (para escribir textos),
Paint (para dibujar), Ares (para descargar música), Internet Explorer (para navegar
en Internet).

9
Los usuarios

Personas encargadas del uso de aquellas dichas formas del elemento


computacional.
Los usuarios:
Son las personas que usan la computadora. Sin los usuarios no tendría sentido la
existencia de la computadora. Porque nadie la usaría y tenerla en casa seria como
un instrumento de decoración
Los Usuarios se clasifican en:
a) desarrolladores: son las personas que utilizan la computadora con el fin de
crear nuevo hardware o software. generalmente son ingenieros o personal con
conocimientos especializados.
b) técnicos: son las personas encargadas de instalar y dar mantenimiento al
hardware o al software.
c) operarios: son los usuarios finales, es decir, todas las personas que utilizan el
computador como ayuda para sus actividades cotidianas. ejemplo: los estudiantes,
usan el computador para consultar tareas, imprimir trabajos escritos, escuchar
música, conocer gente en Facebook, etc.

10
Funcionamiento de un sistema operativo
El sistema operativo es el encargado de gestionar los recursos del hardware y
controlar las aplicaciones de forma que el usuario obtenga los mejores resultados
en su interacción con el ordenador. Eso es posible a través de los siguientes
elementos:
• La gestión de memoria: la memoria es uno de los recursos más importantes
de un ordenador ya que todas las aplicaciones o programas informáticos
requieren para su ejecución una gran capacidad de memoria. Los sistemas
operativos se encargan de administrar y gestionar la capacidad de la
memoria del ordenador mientras los programas se están ejecutando. “La
parte del sistema operativo que administra la memoria se llama
administrador de memoria y su labor consiste en llevar un registro de las
partes de memoria que se estén utilizando y aquellas que no, con el fin de
asignar espacio en memoria a los procesos cuando éstos la necesiten y
liberándola cuando terminen, así como administrar el intercambio entre la
memoria principal y el disco en los casos en los que la memoria principal no
le pueda dar capacidad a todos los procesos que tienen necesidad de ella”.
El sistema operativo debe además de disponer de varias opciones de
administración de la memoria para optimizar los resultados.
• El sistema de archivos: un sistema de archivos es un conjunto de carpetas
y directorios necesarios para almacenar, organizar, crear, manejar y
acceder a los datos. Los sistemas operativos disponen de su propio sistema
de archivos que son representados de forma gráfica o textual
mediante gestores de archivo. Estos facilitan el control de acceso a los
archivos y la ejecución de otras actividades como copiar, eliminar, crear,
mover, renombrar...
• La gestión de procesos: Los procesos son los programas en ejecución, que
requieren ser gestionados para que funcionen correctamente. Los sistemas
operativos disponen de módulos encargados de administrarlos para que se
ejecuten, basándose en la planificación y teniendo en cuenta la
concurrencia de procesos.
La gestión de los elementos de Entrada y Salida (los periféricos): Dispositivos de
entrada y salida son “cada una de las interfaces o abstracciones proporcionadas
por un sistema operativo, para permitir que las aplicaciones accedan y hagan uso
de los dispositivos hardware de entrada/salida. La funcionalidad disponible a
través de estas interfaces suele estar proporcionada por los sistemas operativos
se pueden clasificar atendiendo a:

11
• elemento del sistema operativo llamado controlador de dispositivo que
corresponda al dispositivo en cuestión”.
Sistema operativo
• Un sistema operativo es un conjunto de programas o software destinado a
permitir la comunicación del usuario con un ordenador y gestionar sus
recursos de manera cómoda y eficiente. Comienza a trabajar cuando se
enciende el ordenador, y gestiona el hardware de la máquina desde los
niveles más básicos.
• El sistema operativo es el primer programa que funciona cuando se pone
en marcha el ordenador, y gestiona los procesos de ejecución de otros
programas y aplicaciones, que funcionan sobre él, actuando como
intermediario entre los usuarios y el hardware. El sistema operativo
administra todos los recursos como discos, impresoras, memoria, monitor,
altavoces y demás dispositivos. Por ello, resulta imprescindible para el
funcionamiento del ordenador.
Clasificación de los sistemas operativos
• Administración de tareas.
monotarea: los que permiten sólo ejecutar un programa a la vez.
multitarea: los que permiten ejecutar varias tareas o programas al mismo tiempo
• Administración de usuarios.
monousuario: aquellos que sólo permiten trabajar a un usuario, como es el caso
de los ordenadores personales.
multiusuario: los que permiten que varios usuarios ejecuten sus programas a la
vez.
• Organización interna o estructura.
1. Monolítico.
2. Jerárquico.
3. Cliente-servidor.
• Manejo de recursos o acceso a servicios.
centralizados: si permite utilizar los recursos de un solo ordenador.
distribuidos: si permite utilizar los recursos (CPU, memoria, periféricos...) de más
de un ordenador al mismo tiempo.

12
1.2.1 Software
Software es un término informático que hace referencia a un programa o conjunto
de programas de cómputo, así como datos, procedimientos y pautas que permiten
realizar distintas tareas en un sistema informático.
Comúnmente se utiliza este término para referirse de una forma muy genérica a
los programas de un dispositivo informático, sin embargo, el software abarca todo
aquello que es intangible en un sistema computacional.
Software es un término procedente del idioma
inglés, que es aceptado por la RAE y que no
posee una traducción que se ajuste al español.
Se conoce como software, logicial o soporte
lógico al sistema formal de un sistema informático,
que comprende el conjunto de los componentes
lógicos necesarios que hacen posible la
realización de tareas específicas, en
contraposición a los componentes físicos que son llamados hardware. La
interacción entre el software y el hardware hace operativo un ordenador (u otro
dispositivo), es decir, el software envía instrucciones que el hardware ejecuta,
haciendo posible su funcionamiento.
Los componentes lógicos incluyen, entre muchos otros, las aplicaciones
informáticas, tales como el procesador de texto, que permite al usuario realizar
todas las tareas concernientes a la edición de textos; el llamado software de
sistema, tal como el sistema operativo, que básicamente permite al resto de los
programas funcionar adecuadamente, facilitando también la interacción entre los
componentes físicos y el resto de las aplicaciones, y proporcionando
una interfaz con el usuario.
El software, en su gran mayoría, está escrito en lenguajes de programación de alto
nivel, ya que son más fáciles y eficientes para que los programadores los usen,
porque son más cercanos al Lenguaje natural respecto del lenguaje de máquina.3
Los lenguajes de alto nivel se traducen a lenguaje de máquina utilizando
un compilador o un intérprete, o bien una combinación de ambos.
El software también puede estar escrito en lenguaje ensamblador, que es de bajo
nivel y tiene una alta correspondencia con las instrucciones de lenguaje máquina;
se traduce al lenguaje de la máquina utilizando un ensamblador.
El anglicismo software es el más ampliamente difundido al referirse a este
concepto, especialmente en la jerga técnica; en tanto que el término sinónimo
logicial, derivado del término francés logiciel, es utilizado mayormente en países y
zonas de influencia francesa.

13
Existen varias definiciones similares aceptadas para software, pero probablemente
la más formal sea la siguiente:
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.
Considerando esta definición, el concepto de software va más allá de los
programas de computación en sus distintos estados: código
fuente, binario o ejecutable; también su documentación, los datos a procesar e
incluso la información de usuario forman parte del software: es decir, abarca todo
lo intangible, todo lo «no físico» relacionado.
El término software fue usado por primera vez en este sentido por John W.
Tukey en 1957. En la ingeniería de software y las ciencias de la computación,
el software es toda la información procesada por los sistemas informáticos:
programas y datos.
El concepto de leer diferentes
secuencias de instrucciones
(programa) desde la memoria de un
dispositivo para controlar los
cálculos fue introducido por Charles
Babbage como parte de su máquina
diferencial. La teoría que forma la
base de la mayor parte
del software moderno fue propuesta
por Alan Turing en su ensayo de
1936, “los números computables”, con una aplicación al problema de decisión.

1.2.1.1 Historia del software


La primera teoría sobre el software fue propuesta por Alan Turing en su ensayo de
1935 sobre números computables, con una aplicación destinada a la toma de
decisiones. El término "software" fue utilizado por primera vez de forma escrita por
John W. Tukey en 1958. El estudio de los campos académicos sobre el software
se divide en informática y la ingeniería de software.
Como los programas cada vez entraban más en el reino de firmware y el hardware
por si sólo se hacía más pequeño, más barato y rápido debido a la ley de Moore,
los elementos de la computación que primero se consideraban software, pasan a
ser hardware. La mayoría de las compañías de hardware hoy en día tienen más
programadores de software en nómina que diseñadores de hardware, ya que las
herramientas de software han automatizado muchas de las tareas de los
ingenieros de circuitos. Al igual que la industria automotriz, la industria del

14
software ha crecido de unos pocos visionarios que operaban en su garaje con sus
prototipos.
Steve Jobs y Bill Gates fueron los Henry Ford y Chevrolet Luis de sus tiempos. En
el caso del desarrollo de software, el despegue final es generalmente aceptado
que se produce con la publicación en la década de 1980 de las especificaciones
para el IBM Personal Computer. Hoy su movimiento sería visto como un tipo de
público sourcing.
Hasta ese momento, el software se incluye con el hardware de los fabricantes de
equipos originales (OEM), tales como Data General, Digital Equipment y de IBM.
Cuando un cliente compra una minicomputadora, esta incluye el software que es
instalado por los ingenieros empleados por el OEM. Las empresas de informática
de hardware no sólo incluyen sus paquetes de software, sino que también
asesoren sobre la ubicación de los equipos normalmente en un espacio
refrigerado llamo sala de ordenadores. La mayoría de las empresas tenían su
software en su contabilidad valorados 0 ya que no podían venderlo. Cuando Data
General introdujo su software Data General Nova, una compañía llamada Digidyne
intentó instalar este software que ya había adquirido en un equipo distinto. Data
Gerenal se negó a darle una licencia para poder hacerlo y fueron a los Tribunales.
La Corte Suprema dijo que si Digidyne había pagado era propietaria de ese
software debía poder instalarlo en el equipo que quisiese, lo que se llamó Digidyne
v. Poco después IBM publicó los registros de DOS y nació Microsoft. La decisión
de la Corte Suprema permitió valorar el software, patentarlo y comerciar con él. Es
difícil imaginar hoy que una vez la gente sentía que el software no valía nada sin
una máquina. Hay muchas empresas de éxito hoy en día que venden sólo
productos de software, aunque todavía hay muchos problemas comunes de
concesión de licencias de software debido a la complejidad de los diseños y
documentación, lo que lleva a los trolls de patentes.
Con las especificaciones de software de código abierto y la posibilidad de
concesión de licencias de software, nuevas oportunidades se levantaron de
herramientas de software que luego se convirtieron en el estándar de facto, como
DOS para los sistemas operativos, sino también diversos programas de
procesamiento de texto y hojas de cálculo. En un patrón de crecimiento similar, los
métodos de desarrollo de propiedad se convirtieron en la metodología estándar de
desarrollo de software.

15
1.2.1.2 Evolución del software.
El software es el soporte lógico que administra nuestras computadoras, el cual ha
surgido a partir de varias etapas y al igual que el hardware es fundamental para
que nuestros ordenadores funcionen correctamente con una estructura completa y
óptima para la solución de nuestros problemas tecnológicos. La ingeniería de
software es una disciplina que lleva más de cincuenta años evolucionando,
creando nuevas tendencias en programación y estilos de vida dedicados al estudio
de la tecnología.
La historia del software se ha dividido en cuatro etapas, de importante avance y
una quinta, que es la actual en la cual se ha reforzado muchos de los trabajos
anteriormente creados y con la aparición de la web se han repotenciado.
A continuación, explicaremos la evolución en el tiempo, del software dentro del
contexto tecnológico explicando los más importantes ingenios dentro del campo.

1.2.1.2.1 Primera etapa (1950-1965)


▪ La aparición del software estaba en su cuna.
▪ La mayoría del software se desarrollaba y era utilizado por la misma
persona u organización. La misma persona lo escribía, lo ejecutaba y, si
fallaba, lo depuraba. Debido a que la movilidad en el trabajo era baja.
▪ El software era un añadido en algunos mecanismos por lo cual no era tan
comercial.
▪ En esta etapa el software no se elaboraba con un diseño algorítmico y se
elaboraba sin ninguna planeación, puesto que solo se realizaban
experimentos de resultado y no existían muchos métodos para la
programación.
▪ El diseño del software era realizado a pura mente y solo el diseñador
trabajaba en su realización, por lo cual no era documentado.

16
▪ Aparecieron algunos tipos de programación, como el lenguaje ensamblador
FORTRAN y COBOL el cual era orientado a negocios. Eran escritos en
Tarjetas Perforadas y posteriormente llevados a cuartos de entrada, esto
con la aparición de los transistores y sistemas de procesamiento por lotes
(Segunda generación de los Sistemas Operativos).

1.2.1.2.2 segunda etapa (1965-1975)


▪ Aparecieron la Multiprogramación y sistemas multiusuarios, introducen
nuevos conceptos de interacción hombre-máquina y realizando mucho más
eficientes algunos procedimientos.
▪ Sistemas de tiempo real que podían recoger, analizar y transformar datos
de múltiples fuentes y ayudaban a tomar decisiones de una manera más
práctica y correcta.
▪ Se empieza a realizar software como producto.
produciéndose así una amplia distribución en el
mercado, dándole creación a barias empresa
encargadas al diseño de software y ayudando a
el funcionamiento de grandes computadoras y
microcomputadores.
▪ Debido a avances en los dispositivos de almacenamiento en línea, inicio la
primera generación de sistemas de gestión de Base de Datos, puesto que
era más fácil la administración de datos de entrada y salida, debido a que
aparecieron algunas formas más eficientes para guardar dicha información.
▪ Empieza la crisis del software. Debido a que el diseño del software era
autónomo, en cada uno de los programadores y este era distribuido por
medio de llamadas “casas de software” a diferentes empresas en el
exterior. Los costos del mantenimiento eran extensos, ya que era
conformado por muchas líneas de código, además tocaba realizarle
correcciones en caso de fallos o modificaciones cuando cambiaba los
requisitos por lo cual apareció el mantenimiento de software como resultado
de esta crisis ya que el software se estaba quedando como nublado por los
altos costos del mantenimiento.
▪ Durante estos años y como innovación importante para el software apareció
el lenguaje de programación C en 1972, el cual incluso en la actualidad es
muy utilizado por los programadores y es la base de otros tipos de
programación.

17
1.2.1.2.3 Tercera etapa (1975-1985)
▪ Procesamiento Distribuido. El cual permitía realizar trabajos en conjunto,
permitiendo interconectar computadores bajo funciones concurrentes.
▪ Debido a lo anterior incrementó notablemente la complejidad de los
sistemas informáticos.
▪ Redes de área local y de área global. Comunicaciones digitales de alto
ancho de banda y la creciente demanda de acceso “instantáneo” a los
datos.
▪ Aparecieron los microprocesadores.
▪ Amplio uso de microprocesadores y
computadoras personales (hardware de bajo
costo). Incorporación de “inteligencia” (autos,
hornos de microondas, robots industriales y
equipos de diagnóstico de suero sanguíneo),
los cuales fueron de alto impacto en el
mercado.

1.2.1.2.4 Cuarta etapa (1985-2000)


▪ Aparece la tecnología orientada a objetos, la cual facilita la elaboración de
proyectos, realizando desde otra perspectiva de programación.
▪ En 1990 se creó Java. Ratificándose como un lenguaje de programación
muy eficiente y usado por los programadores en la solución de problemas
informáticos.
▪ Los sistemas expertos y la inteligencia artificial se han trasladado del
laboratorio a las aplicaciones prácticas, dándole vida a miles de proyectos
investigativos como robótica o aplicaciones en la biotecnología entre otras.
▪ Se crea Software para redes neuronales artificiales simulando acciones de
los humanos y sistemas de aprendizaje por sí mismo, creando maquinas
capases de pensar autónomamente.
▪ Sistemas operativos sofisticados , en redes globales y locales.
▪ Aparece la arquitectura cliente servidor la cual hace más eficiente las
interacciones entre ordenadores y crea funciones en cada una de las
entidades encargadas se administrar información.

18
▪ EL software al igual que la red se vuelven parte fundamental en la
economía por el gran acceso de la población a la información y la
orientación a los negocios.

1.2.1.3 El software en la actualidad


Con la creciente demanda de software en organizaciones cada vez más
pequeñas, surge la necesidad de soluciones de software de bajo costo. Esta
circunstancia, llevó al crecimiento de metodologías de desarrollo y programación
más simples que desarrollaran software en ejecución, desde los requisitos hasta la
implementación, de manera más rápida y sencilla. El uso de prototipos rápidos
evolucionó a metodologías livianas completas, como Extreme Programming (XP),
que intenta simplificar muchas áreas de la ingeniería de software, incluida la
recopilación de requisitos y las pruebas de confianza para la creciente cantidad de
pequeños sistemas de software.
Los sistemas de software más grandes todavía utilizaban metodologías muy
documentadas, con muchos volúmenes en el conjunto de documentación; sin
embargo, los sistemas más pequeños tienen un enfoque alternativo más simple y
rápido para administrar el desarrollo y mantenimiento de cálculos y algoritmos de
software, así como el almacenamiento/recuperación de información y su
visualización.

19
1.2.1.4 características de un software

Las características deseables en un producto de software son:

• Corrección.

En informática, las herramientas de corrección y optimización son las


encargadas de modificar un software para que funcione con más eficiencia o
con un menor uso de recursos. Normalmente a los programas informáticos se
les optimiza para que funcionen de manera más rápida, que sean capaces de
trabajar con un menor uso de memoria o que usen menos energía.
Aunque la palabra optimización tiene la misma raíz
que óptima, raramente se produce
un software óptimo con el simple uso de dichas
herramientas. El sistema optimizado será óptimo
únicamente para una aplicación o una simple
audiencia. Uno puede reducir el tiempo que tarda un
programa en ejecutarse a cambio de que utilice más
memoria. En casos donde la memoria sea escasa se deberá elegir que el
programa funcione más lento.
Normalmente no existe una "configuración perfecta", así que los ingenieros
suelen optimizar los atributos dependiendo de los intereses de dicha
aplicación. Además, el esfuerzo necesario para crear un software óptimo
(imposible de mejorar) es mucho mayor a las ventajas que este recibiría, así
pues, el proceso de optimización puede ser parado antes de llegar a una
opción totalmente óptima. Afortunadamente, las mayores mejoras suelen ser
las primeras en aplicarse.

• Usabilidad.

La Usabilidad es la medida de la calidad de la experiencia que tiene un usuario


cuando interactúa con un producto o sistema. Esto se mide a través del estudio
de la relación que se produce entre las herramientas (entendidas en un Sitio
Web el conjunto integrado por el sistema de navegación, las funcionalidades y
los contenidos ofrecidos) y quienes las utilizan, para determinar la eficiencia en
el uso de los diferentes elementos ofrecidos en las pantallas y la efectividad en
el cumplimiento de las tareas que se pueden llevar a cabo a través de ellas.

Otra definición es la que entrega el académico Yusef Hassan (Universidad de


Granada) al indicar que "la usabilidad es la disciplina que estudia la forma de
diseñar Sitios Web para que los usuarios puedan interactuar con ellos de la
forma más fácil, cómoda e intuitiva posible" y agregar que "la mejor forma de
crear un Sitio Web usable es realizando un diseño centrado en el usuario,
diseñando para y por el usuario, en contraposición a lo que podría ser un
20
diseño centrado en la tecnología o uno centrado en la creatividad u
originalidad".

Además, el profesor Ricardo Baeza-Yates en un artículo del año 2002 define a


la disciplina como "un concepto que engloba a una serie de métricas y métodos
que buscan hacer que un sistema sea fácil de usar y de aprender. Al hablar de
sistema la referencia se hace a cualquier dispositivo que tenga que ser
operado por un usuario. En esta categoría caen los Sitios Web, aplicaciones de
software, hardware, etc.".

Cabe indicar, finalmente, que la norma


internacional ISO 9241-11: Guidance on Usability
(1998) hace referencia a la Usabilidad y ofrece una
definición de su contenido y alcance:

[La Usabilidad se refiere al] grado en que un


producto puede ser usado por usuarios específicos
para conseguir metas específicas con efectividad,
eficiencia y satisfacción dado un contexto específico de uso.

Es importante indicar que la Usabilidad es una disciplina que nace en Estados


Unidos y florece gracias al desarrollo computacional, consolidándose como una
práctica habitual con la aparición de los Sitios Web en la década de los 90s.

Adicionalmente se debe anotar que la palabra Usabilidad deriva del


inglés Usability, cuya traducción más acertada es "facilidad y simplicidad de
uso de un artículo u objeto". Se ha considerado adecuado utilizar la palabra
usabilidad con dicha traducción debido a que en idioma español no existen
palabras que describan con tanta precisión este concepto. En este sentido, lo
más cercano sería Utilidad, palabra que de acuerdo con el Diccionario de la
Real Academia Espaola, significa "que trae o produce provecho, comodidad,
fruto o interés". Sin embargo, debido a que dicho término no engloba la idea de
facilidad o simplicidad en el uso de un objeto o espacio por parte de quien lo
emplea, se ha preferido utilizar la derivación de la palabra originalmente en
idioma inglés.

• Seguridad.

La seguridad de software se utiliza para proteger el software contra ataques


maliciosos de hackers y otros riesgos, de forma que nuestro software siga
funcionando correctamente con este tipo de riesgos potenciales. Esta seguridad
de software es necesaria para proporcionar integridad, autenticación y
disponibilidad. Entre los tipos de seguridad informática, este campo de la
seguridad de software es relativamente nuevo. Los primeros libros y clases
académicas sobre este tema aparecieron en 2001, lo que demuestra que ha sido
recientemente cuando desarrolladores, arquitectos de software y científicos
informáticos han comenzado a estudiar sistemáticamente cómo construir software
21
seguro. Los defectos de software tienen diversas ramificaciones de seguridad,
tales como errores de implementación, desbordamientos de buffer, defectos de
diseño, mal manejo de errores, etc. Con demasiada frecuencia, intrusos
maliciosos pueden introducirse en nuestros sistemas mediante la explotación de
algunos de estos defectos de software. Las aplicaciones que tienen salida a
Internet presentan además un riesgo de seguridad más alto. Se trata del más
común hoy en día. Los agujeros de seguridad en el software son habituales y el
problema es cada vez mayor. La seguridad de software aprovecha las mejores
prácticas de la ingeniería de software e intenta hacer pensar en la seguridad
desde el primer momento del ciclo de vida del software.

• Flexibilidad.

Software de mercado horizontal, que se utiliza en


múltiples industrias, es un tipo común de software
flexible. Hoja de cálculo Los programas, por ejemplo,
son flexibles porque proporcionan una variedad de
usos, como la gestión de listas de equipos, el
seguimiento del inventario y la organización de las
finanzas. Un programa de diseño profesional como
Adobe InDesign puede considerarse flexible, ya que
puede usarse para crear digital diseños para
publicaciones impresas, web y electrónicas. Web Browser son flexibles ya que
sirven para muchos propósitos diferentes. Además de navegar por la web, puede
usar un navegador para verificar correo electrónico, interactuar con a través de las
redes sociales sitios, jugar juegos y ejecutar varios aplicaciones web.

• Portabilidad.

La 'portabilidad' es uno de los conceptos clave en la programación de alto nivel.


Se define como la característica que posee un software para ejecutarse en
diferentes plataformas, es decir, la portabilidad se refiere exclusivamente a la
propiedad que posee un software que le permite ser ejecutado en diferentes
plataformas y/o sistemas operativos. De este modo, si un determinado software
compilado pudiere ser ejecutado en cualquier sistema operativo, diríamos que ese
software es 100% portable. Este es el núcleo del concepto de portabilidad. En este
sentido, la afirmación precedente: "El código fuente del software es capaz de
reutilizarse en vez de crearse un nuevo código cuando el software pasa de una
plataforma a otra", tiene como supuesto erróneo que tenemos acceso al código
fuente, el cual podría reutilizarse (como es la meta que buscan los diseñadores de
los lenguajes cuyos códigos corren sobre máquinas virtuales, como es el caso de
Java y la familia DOT NET). Esto es incorrecto: la portabilidad es un concepto que
se refiere exclusivamente a la relación software <-> plataforma).

22
El prerrequisito para la portabilidad es la abstracción generalizada entre la
aplicación lógica y las interfaces del sistema. Cuando un software se puede
compilar en diversas plataformas (x86, IA64, amd64, etc.), se dice que este es
multiplataforma. Esta característica es importante para el desarrollo de reducción
de costos cuando se quiere hacer una misma aplicación.

En algunos casos el software es "independiente" de


la plataforma y puede ejecutarse en plataformas
diversas sin necesidad de ser compilado
específicamente para cada una de ellas, a este tipo
de software se le llama interpretado, donde un
"intérprete" traduce (propiamente interpreta) las
instrucciones en tiempo de ejecución para que sean
entendidas por diferentes plataformas.

1.2.1.5 Clasificación de un software.

• Software de sistema: Su objetivo es desvincular adecuadamente al usuario


y al programador de los detalles del sistema informático en particular que se
use, aislándolo especialmente del procesamiento referido a las
características internas de: memoria, discos, puertos y dispositivos de
comunicaciones, impresoras, pantallas, teclados, etc. El software de
sistema le procura al usuario y programador adecuadas interfaces de alto
nivel, controladores, herramientas y utilidades de apoyo que permiten
el mantenimiento del sistema global. Incluye entre otros:
o Sistemas operativos.
o Controladores de dispositivos.
o Herramientas de diagnóstico.
o Herramientas de corrección y optimización.
o Servidores.
o Utilidades.
• Software de programación: Es el conjunto de herramientas que permiten
al programador desarrollar programas de informática, usando diferentes
alternativas y lenguajes de programación, de una manera práctica. Incluyen
en forma básica:
o Editores de texto.
o Compiladores.
o Intérpretes.
o Enlazadores.
o Depuradores.
o 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

23
compilar, interpretar, depurar, etc. Habitualmente cuentan con una
avanzada interfaz gráfica de usuario (GUI).
• Software de aplicación: Es aquel que permite a los usuarios llevar a cabo
una o varias tareas específicas, en cualquier campo de actividad
susceptible de ser automatizado o asistido, con especial énfasis en los
negocios. Incluye entre muchos otros:
o Aplicaciones para Control de sistemas y automatización industrial.
o Aplicaciones ofimáticas.
o Software educativo.
o Software empresarial.
o Bases de datos.
o Telecomunicaciones (por ejemplo, Internet y toda su estructura
lógica).
o Videojuegos.
o Software médico.
o Software de cálculo numérico y simbólico.
o Software de diseño asistido (CAD).
o Software de control numérico (CAM).

1.2.1.6 Proceso de creación de un software

Se define como proceso al conjunto ordenado de pasos a seguir para llegar a la


solución de un problema u obtención de un producto, en este caso particular, para
lograr un producto software que resuelva un problema específico.

El proceso de creación de software puede llegar


a ser muy complejo, dependiendo de su porte,
características y criticidad de este. Por ejemplo,
la creación de un sistema operativo es una tarea
que requiere proyecto, gestión, numerosos
recursos y todo un equipo disciplinado de
trabajo. En el otro extremo, si se trata de un
sencillo programa (por ejemplo, la resolución de
una ecuación de segundo orden), este puede
ser realizado por un solo programador (incluso
aficionado) fácilmente. Es así como
normalmente se dividen en tres categorías según su tamaño (líneas de código) o
costo: de pequeño, mediano y gran porte. Existen varias metodologías para
estimarlo, una de las más populares es el sistema COCOMO que provee métodos
y un software (programa) que calcula y provee una aproximación de todos los
costos de producción en un proyecto software (relación horas/hombre, costo
monetario, cantidad de líneas fuente de acuerdo con lenguaje usado, etc.).

24
Considerando los de gran porte, es necesario realizar complejas tareas, tanto
técnicas como de gerencia, una fuerte gestión y análisis diversos (entre otras
cosas), la complejidad de ello ha llevado a que desarrolle una ingeniería específica
para tratar su estudio y realización: es conocida como ingeniería de Software.

En tanto que en los de mediano porte, pequeños equipos de trabajo (incluso un


avezado analista-programador solitario) pueden realizar la tarea. Aunque, siempre
en casos de mediano y gran porte (y a veces también en algunos de pequeño
porte, según su complejidad), se deben seguir ciertas etapas que son necesarias
para la construcción del software. Tales etapas, si bien deben existir, son flexibles
en su forma de aplicación, de acuerdo con la metodología o proceso de desarrollo
escogido y utilizado por el equipo de desarrollo o por el analista-programador
solitario (si fuere el caso).

Los procesos de desarrollo de software poseen reglas preestablecidas, y deben


ser aplicados en la creación del software de mediano y gran porte, ya que en caso
contrario lo más seguro es que el proyecto no logre concluir o termine sin cumplir
los objetivos previstos, y con variedad de fallos inaceptables (fracasan, en pocas
palabras). Entre tales «procesos» los hay ágiles o livianos (ejemplo XP), pesados
y lentos (ejemplo RUP), y variantes intermedias. Normalmente se aplican de
acuerdo con el tipo y porte del software a desarrollar, a criterio del líder (si lo hay)
del equipo de desarrollo. Algunos de esos procesos son Programación Extrema
(en inglés eXtreme Programming o XP), Proceso Unificado de Rational (en inglés
Rational Unified Process o RUP), Feature Driven
Development (FDD), etc.

Cualquiera sea el proceso utilizado y aplicado al


desarrollo del software (RUP, FDD, XP, etc.), y
casi independientemente de él, siempre se debe
aplicar un «modelo de ciclo de vida.

Se estima que, del total de proyectos software


grandes emprendidos, un 28 % fracasan, un 46 %
caen en severas modificaciones que lo retrasan y
un 26 % son totalmente exitosos.

Cuando un proyecto fracasa, rara vez es debido a fallas técnicas, la principal


causa de fallos y fracasos es la falta de aplicación de una buena metodología o
proceso de desarrollo. Entre otras, una fuerte tendencia, desde hace pocas
décadas, es mejorar las metodologías o procesos de desarrollo, o crear nuevas y
concientizar a los profesionales de la informática a su utilización adecuada.
Normalmente los especialistas en el estudio y desarrollo de estas áreas
(metodologías) y afines (tales como modelos y hasta la gestión misma de los
proyectos) son los ingenieros en software, es su orientación. Los especialistas en
cualquier otra área de desarrollo informático (analista, programador, Lic. en
informática, ingeniero en informática, ingeniero de sistemas, etc.) normalmente

25
aplican sus conocimientos especializados, pero utilizando modelos, paradigmas y
procesos ya elaborados.

Es común para el desarrollo de software de mediano porte que los equipos


humanos involucrados apliquen metodologías propias, normalmente un híbrido de
los procesos anteriores y a veces con criterios propios.

El proceso de desarrollo puede involucrar numerosas y variadas tareas, desde lo


administrativo, pasando por lo técnico y hasta la gestión y el gerenciamiento. Pero,
casi rigurosamente, siempre se cumplen ciertas etapas mínimas; las que se
pueden resumir como sigue:

1. Captura, elicitación,especificación y análisis de requisitos (ERS).


2. Diseño.
3. Codificación.
4. Pruebas (unitarias y de integración).
5. Instalación y paso a producción.
6. Mantenimiento.

En las anteriores etapas pueden variar ligeramente sus


nombres, o ser más globales, o contrariamente, ser más
refinadas; por ejemplo, indicar como una única fase (a
los fines documentales e interpretativos) de análisis y
diseño; o indicar como «implementación» lo que está
dicho como codificación; pero en rigor, todas existen e
incluyen, básicamente, las mismas tareas específicas.

1.2.1.7 Modelos para el diseño de un software

• Modelos de proceso o ciclo de vida.

Para cada una de las fases o etapas listadas en el ítem anterior, existen
subetapas (o tareas). El modelo de proceso o modelo de ciclo de vida utilizado
para el desarrollo, define el orden de las tareas o actividades involucradas, 13
también define la coordinación entre ellas, y su enlace y realimentación. Entre los
más conocidos se puede mencionar: modelo en cascada o secuencial, modelo
espiral, modelo iterativo incremental. De los antedichos hay a su vez algunas
variantes o alternativas, más o menos atractivas según sea la aplicación requerida
y sus requisitos.

26
• Modelo cascada.

Este, aunque es más comúnmente conocido como modelo en cascada es también


llamado modelo clásico, modelo tradicional o modelo lineal secuencial.

El modelo en cascada puro «difícilmente se utiliza tal cual», pues esto implicaría
un previo y absoluto conocimiento de los requisitos, la no volatilidad de estos (o
rigidez) y etapas subsiguientes libres de errores; ello sólo podría ser aplicable a
escasos y pequeños sistemas a desarrollar. En estas circunstancias, el paso de
una etapa a otra de las mencionadas sería sin retorno, por ejemplo, pasar del
diseño a la codificación implicaría un diseño exacto y sin errores ni probable
modificación o evolución: codifique lo diseñado sin errores, no habrá en absoluto
variantes futuras. Esto es utópico; ya que intrínsecamente el software es de
carácter evolutivo, cambiante y difícilmente libre de errores, tanto durante su
desarrollo como durante su vida operativa.

Algún cambio durante la ejecución de una cualquiera de las etapas en este


modelo secuencial podría implicar reiniciar desde el principio todo el ciclo
completo, lo cual redundaría en altos costos de tiempo y desarrollo.

Sin embargo, la modelo cascada en algunas de sus variantes es uno de los


actualmente más utilizados, por su eficacia y simplicidad, más que nada
en software de pequeño y algunos de mediano porte; pero nunca (o muy rara vez)
se lo usa en su "forma pura", como se dijo anteriormente. En lugar de ello, siempre
se produce alguna realimentación entre etapas, que no es completamente
predecible ni rígida; esto da oportunidad al desarrollo de productos software en los
cuales hay ciertas incertezas, cambios o evoluciones durante el ciclo de vida. Así
por ejemplo, una vez capturados y especificados los requisitos (primera etapa) se
puede pasar al diseño del sistema, pero durante esta última fase lo más probable
es que se deban realizar ajustes en los requisitos (aunque sean mínimos), ya sea
por fallas detectadas, ambigüedades o bien porque los propios requisitos han
cambiado o evolucionado; con lo cual se debe retornar a la primera o previa etapa,
hacer los reajustes pertinentes y luego continuar nuevamente con el diseño; esto
último se conoce como realimentación. Lo normal en la modelo cascada es

27
entonces la aplicación de este con sus etapas realimentadas de alguna forma,
permitiendo retroceder de una a la anterior (e incluso poder saltar a varias
anteriores) si es requerido.

Lo dicho es, a grandes rasgos, la forma y utilización de este modelo, uno de los
más usados y populares. La modelo cascada realimentado resulta muy atractivo,
hasta ideal, si el proyecto presenta alta rigidez (pocos cambios, previsto no
evolutivo), los requisitos son muy claros y están correctamente especificados.

Hay más variantes similares al modelo: refino de etapas (más etapas, menores y
más específicas) o incluso mostrar menos etapas de las indicadas, aunque en tal
caso la faltante estará dentro de alguna otra. El orden de esas fases indicadas en
el ítem previo es el lógico y adecuado, pero adviértase, como se dijo, que
normalmente habrá realimentación hacia atrás.

El modelo lineal o en cascada es el paradigma más antiguo y extensamente


utilizado, sin embargo, las críticas a él (ver desventajas) han puesto en duda su
eficacia. Pese a todo, tiene un lugar muy importante en la ingeniería de software y
continúa siendo el más utilizado; y siempre es mejor que un enfoque al azar.

Desventajas de la modelo cascada:

• Los cambios introducidos durante el desarrollo pueden confundir al equipo


profesional en las etapas tempranas del proyecto. Si los cambios se
producen en etapa madura (codificación o prueba) pueden ser catastróficos
para un proyecto grande.
• No es frecuente que el cliente o usuario final explicite clara y
completamente los requisitos (etapa de inicio); y el modelo lineal así lo
requiere. La incertidumbre natural en los comienzos es luego difícil de
acomodar.
• El cliente debe tener paciencia ya que el software no estará disponible
hasta muy avanzado el proyecto. Un error importante detectado por el
cliente (en fase de operación) puede ser desastroso, implicando reinicio del
proyecto, con altos costos.

28
• Modelos evolutivos.
El software evoluciona con el tiempo.
Los requisitos del usuario y del
producto suelen cambiar conforme se
desarrolla el mismo. Las fechas de
mercado y la competencia hacen que
no sea posible esperar a poner en el
mercado un producto absolutamente
completo, por lo que se aconseja
introducir una versión funcional
limitada de alguna forma para aliviar las presiones competitivas.
En esas u otras situaciones similares, los desarrolladores necesitan modelos
de progreso que estén diseñados para acomodarse a una evolución temporal o
progresiva, donde los requisitos centrales son conocidos de antemano, aunque
no estén bien definidos a nivel detalle.
En el modelo cascada y cascada realimentado no se tiene demasiado en
cuenta la naturaleza evolutiva del software, se plantea como estático, con
requisitos bien conocidos y definidos desde el inicio.
Los evolutivos son modelos iterativos, permiten desarrollar versiones cada vez
más completas y complejas, hasta llegar al objetivo final deseado; incluso
evolucionar más allá, durante la fase de operación.
Los modelos iterativo incremental y espiral (entre otros) son dos de los más
conocidos y utilizados del tipo evolutivo.
• Modelo iterativo incremental.
En términos generales, se puede distinguir, los pasos generales que sigue el
proceso de desarrollo de un producto software. En el modelo de ciclo de vida
seleccionado, se identifican claramente dichos pasos. La descripción del
sistema es esencial para especificar y confeccionar los distintos incrementos
hasta llegar al producto global y final. Las actividades concurrentes
(especificación, desarrollo y validación) sintetizan el desarrollo pormenorizado
de los incrementos, que se hará posteriormente.

29
.

El funcionamiento de un ciclo iterativo incremental, el cual permite la entrega


de versiones parciales a medida que se va construyendo el producto final. Es
decir, a medida que cada incremento definido llega a su etapa de operación y
mantenimiento. Cada versión emitida incorpora a los anteriores incrementos
las funcionalidades y requisitos que fueron analizados como necesarios.
El incremental es un modelo de tipo evolutivo que está basado en varios ciclos
cascada realimentados aplicados repetidamente, con una filosofía iterativa.
Bajo un esquema temporal, para obtener finalmente el esquema del modelo de
ciclo de vida iterativo incremental, con sus actividades genéricas asociadas.
Aquí se observa claramente cada ciclo cascado que es aplicado para la
obtención de un incremento; estos últimos se van integrando para obtener el
producto final completo. Cada incremento es un ciclo cascado realimentado,
aunque, por simplicidad, en la figura 5 se muestra como secuencial puro.

Se observa que existen actividades de desarrollo (para cada incremento) que


son realizadas en paralelo o concurrentemente, así, por ejemplo, en la Figura,
mientras se realiza el diseño detalle del primer incremento ya se está
realizando en análisis del segundo. Un incremento no necesariamente se
iniciará durante la fase de diseño del anterior, puede ser posterior (incluso
antes), en cualquier tiempo de la etapa previa. Cada incremento concluye con
la actividad de operación y mantenimiento (indicada como operación en la
figura), que es donde se produce la entrega del producto parcial al cliente. El
momento de inicio de cada incremento es dependiente de varios factores: tipo
de sistema; independencia o dependencia entre incrementos (dos de ellos
totalmente independientes pueden ser fácilmente iniciados al mismo tiempo si
se dispone de personal suficiente); capacidad y cantidad de profesionales
involucrados en el desarrollo; etc.
30
Bajo este modelo se entrega software por partes funcionales más pequeñas,
pero reutilizables, llamadas incrementos. En general cada incremento se
construye sobre aquel que ya fue entregado.
Se aplican secuencias Cascada en forma escalonada, mientras progresa el
tiempo calendario. Cada secuencia lineal o Cascada produce un incremento y
a menudo el primer incremento es un sistema básico, con muchas funciones
suplementarias (conocidas o no) sin entregar.
El cliente utiliza inicialmente ese sistema básico, intertanto, el resultado de su
uso y evaluación puede aportar al plan para el desarrollo del/los siguientes
incrementos (o versiones). Además, también aportan a ese plan otros factores,
como lo es la priorización (mayor o menor urgencia en la necesidad de cada
incremento en particular) y la dependencia entre incrementos (o
independencia).
Luego de cada integración se entrega un producto con mayor funcionalidad que el
previo. El proceso se repite hasta alcanzar el software final completo.
Siendo iterativo, con el modelo incremental se entrega un producto parcial pero
completamente operacional en cada incremento, y no una parte que sea usada
para reajustar los requisitos (como si ocurre en el modelo de construcción de
prototipos).
El enfoque incremental resulta muy útil cuando se dispone de baja dotación de
personal para el desarrollo; también si no hay disponible fecha límite del proyecto
por lo que se entregan versiones incompletas pero que proporcionan al usuario
funcionalidad básica (y cada vez mayor). También es un modelo útil a los fines de
versiones de evaluación.
Nota: Puede ser considerado y útil, en cualquier
momento o incremento incorporar temporalmente el
paradigma MCP como complemento, teniendo así
una mixtura de modelos que mejoran el esquema y
desarrollo general.
Ejemplo:
• Un procesador de texto que sea desarrollado bajo el paradigma incremental
podría aportar, en principio, funciones básicas de edición de archivos y
producción de documentos (algo como un editor simple). En un segundo
incremento se le podría agregar edición más sofisticada, y de generación y
mezcla de documentos. En un tercer incremento podría considerarse el
agregado de funciones de corrección ortográfica, esquemas de paginado
y plantillas; en un cuarto capacidades de dibujo propias y ecuaciones
matemáticas. Así sucesivamente hasta llegar al procesador final requerido.
Así, el producto va creciendo, acercándose a su meta final, pero desde la
entrega del primer incremento ya es útil y funcional para el cliente, el cual

31
observa una respuesta rápida en cuanto a entrega temprana; sin notar que
la fecha límite del proyecto puede no estar acotada ni tan definida, lo que
da margen de operación y alivia presiones al equipo de desarrollo.
Como se dijo, el iterativo incremental es un modelo del tipo evolutivo, es decir
donde se permiten y esperan probables cambios en los requisitos en tiempo de
desarrollo; se admite cierto margen para que el software pueda evolucionar.
Aplicable cuando los requisitos son medianamente bien conocidos, pero no son
completamente estáticos y definidos, la cuestión es que si es indispensable para
poder utilizar un modelo Cascada.
El modelo es aconsejable para el desarrollo de software en el cual se observe, en
su etapa inicial de análisis, que posee áreas bastante bien definidas a cubrir, con
suficiente independencia como para ser desarrolladas en etapas sucesivas. Tales
áreas para cubrir suelen tener distintos grados de apremio por lo cual las mismas
se deben priorizar en un análisis previo, es decir, definir cuál será la primera, la
segunda, y así sucesivamente; esto se conoce como definición de los incrementos
con base en la priorización. Pueden no existir prioridades funcionales por parte del
cliente, pero el desarrollador debe fijarlas de todos modos y con algún criterio, ya
que basándose en ellas se desarrollarán y entregarán los distintos incrementos.
El hecho de que existan incrementos funcionales del software lleva
inmediatamente a pensar en un esquema de desarrollo modular, por tanto, este
modelo facilita tal paradigma de diseño.
En resumen, un modelo incremental lleva a pensar en un desarrollo modular, con
entregas parciales del producto software denominados incrementos del sistema,
que son escogidos según prioridades predefinidas de algún modo. El modelo
permite una implementación con refinamientos sucesivos (ampliación o mejora).
Con cada incremento se agrega nueva funcionalidad o se cubren nuevos
requisitos o bien se mejora la versión previamente implementada del
producto software.
Este modelo brinda cierta flexibilidad
para que durante el desarrollo se
incluyan cambios en los requisitos por
parte del usuario, un cambio de
requisitos propuesto y aprobado puede
analizarse e implementarse como un
nuevo incremento o, eventualmente,
podrá constituir una mejora/adecuación
de uno ya planeado. Aunque si se
produce un cambio de requisitos por parte del cliente que afecte incrementos
previos ya terminados (detección/incorporación tardía) se debe evaluar la
factibilidad y realizar un acuerdo con el cliente, ya que puede impactar fuertemente
en los costos.

32
La selección de este modelo permite realizar entregas funcionales tempranas al
cliente (lo cual es beneficioso tanto para él como para el grupo de desarrollo). Se
priorizan las entregas de aquellos módulos o incrementos en que surja la
necesidad operativa de hacerlo, por ejemplo, para cargas previas de información,
indispensable para los incrementos siguientes.
El modelo iterativo incremental no obliga a especificar con precisión y detalle
absolutamente todo lo que el sistema debe hacer, (y cómo), antes de ser
construido (como el caso de la cascada, con requisitos congelados). Solo se hace
en el incremento en desarrollo. Esto torna más manejable el proceso y reduce el
impacto en los costos. Esto es así, porque en caso de alterar o rehacer los
requisitos, solo afecta una parte del sistema. Aunque, lógicamente, esta situación
se agrava si se presenta en estado avanzado, es decir en los últimos
incrementos. En definitiva, el modelo facilita la incorporación de nuevos requisitos
durante el desarrollo.
Con un paradigma incremental se reduce el tiempo de desarrollo inicial, ya que se
implementa funcionalidad parcial. También provee un impacto ventajoso frente al
cliente, que es la entrega temprana de partes operativas del software.
El modelo proporciona todas las ventajas del modelo en cascada realimentado,
reduciendo sus desventajas sólo al ámbito de cada incremento.
El modelo incremental no es recomendable para casos de sistemas de tiempo
real, de alto nivel de seguridad, de procesamiento distribuido, o de alto índice de
riesgos.

• Modelo espiral.

El modelo espiral fue propuesto inicialmente por Barry Boehm. Es un modelo


evolutivo que conjuga la naturaleza iterativa del modelo MCP con los aspectos
controlados y sistemáticos del Modelo Cascada. Proporciona potencial para
desarrollo rápido de versiones incrementales. En el modelo espiral el software se
construye en una serie de versiones incrementales.
En las primeras iteraciones la versión incremental
podría ser un modelo en papel o bien un prototipo.
En las últimas iteraciones se producen versiones
cada vez más completas del sistema diseñado.

El modelo se divide en un número de Actividades


de marco de trabajo, llamadas regiones de tareas.
En general existen entre tres y seis regiones de
tareas (hay variantes del modelo). En la figura 6 se
muestra el esquema de un modelo espiral con seis
regiones. En este caso se explica una variante del

33
modelo original de Boehm, expuesto en su tratado de 1988; en 1998 expuso un
tratado más reciente.

Las regiones definidas en el modelo de la figura son:

• Región 1 — Tareas requeridas para establecer la comunicación entre el


cliente y el desarrollador.
• Región 2 — Tareas inherentes a la definición de los recursos, tiempo y otra
información relacionada con el proyecto.
• Región 3 — Tareas necesarias para evaluar los riesgos técnicos y de
gestión del proyecto.
• Región 4 — Tareas para construir una o más representaciones de la
aplicación software.
• Región 5 — Tareas para construir la aplicación, instalarla, probarla y
proporcionar soporte al usuario o cliente (Ej. documentación y práctica).
• Región 6 — Tareas para obtener la reacción del cliente, según la
evaluación de lo creado e instalado en los ciclos anteriores.

Las actividades enunciadas para el marco de trabajo son generales y se aplican a


cualquier proyecto, grande, mediano o pequeño, complejo o no. Las regiones que
definen esas actividades comprenden un conjunto de tareas del trabajo: ese
conjunto sí se debe adaptar a las características del proyecto en particular a
emprender. Nótese que lo listado en los ítems de 1 a 6 son conjuntos de tareas,
algunas de las ellas normalmente dependen del proyecto o desarrollo en sí.

Proyectos pequeños requieren baja cantidad de tareas y también de formalidad.


En proyectos mayores o críticos cada región de tareas contiene labores de más
alto nivel de formalidad. En cualquier caso, se aplican actividades de protección,
por ejemplo, gestión de configuración del software,
garantía de calidad, etc.

Al inicio del ciclo, o proceso evolutivo, el equipo de


ingeniería gira alrededor del espiral (metafóricamente
hablando) comenzando por el centro y en el sentido
indicado; el primer circuito de la espiral puede producir
el desarrollo de una especificación del producto; los
pasos siguientes podrían generar un prototipo y
progresivamente versiones más sofisticadas
del software.

Cada paso por la región de planificación provoca ajustes en el plan del proyecto; el
coste y planificación se realimentan en función de la evaluación del cliente. El
gestor de proyectos debe ajustar el número de iteraciones requeridas para
completar el desarrollo.

34
El modelo espiral puede ir adaptándose y aplicarse a lo largo de todo el Ciclo de
vida del software (en el modelo clásico, o cascada, el proceso termina a la entrega
del software).

Una visión alternativa del modelo puede observarse examinando el eje de punto
de entrada de proyectos. Cada uno de los circulitos fijados a lo largo del eje
representan puntos de arranque de los distintos proyectos (relacionados); a saber:

Un proyecto de desarrollo de conceptos comienza al inicio de la espiral, hace


múltiples iteraciones hasta que se completa, es la zona marcada con verde.

Si lo anterior se va a desarrollar como producto real, se inicia otro proyecto:


Desarrollo de nuevo Producto. Que evolucionará con iteraciones hasta culminar;
es la zona marcada en color azul.

Eventual y análogamente se generarán proyectos de mejoras de productos y de


mantenimiento de productos, con las iteraciones necesarias en cada área (zonas
roja y gris, respectivamente).

Cuando la espiral se caracteriza de esta forma, está operativa hasta que


el software se retira, eventualmente puede estar inactiva (el proceso), pero cuando
se produce un cambio el proceso arranca nuevamente en el punto de entrada
apropiado (por ejemplo, en «mejora del
producto»).

El modelo espiral da un enfoque realista, que


evoluciona igual que el software; se adapta
muy bien para desarrollos a gran escala.

El Espiral utiliza el MCP para reducir riesgos y


permite aplicarlo en cualquier etapa de la
evolución. Mantiene el enfoque clásico
(cascada) pero incorpora un marco de trabajo iterativo que refleja mejor la
realidad.

Este modelo requiere considerar riesgos técnicos en todas las etapas del
proyecto; aplicado adecuadamente debe reducirlos antes de que sean un
verdadero problema.

El Modelo evolutivo como el Espiral es particularmente apto para el desarrollo de


Sistemas Operativos (complejos); también en sistemas de altos riesgos o críticos
(Ej. navegadores y controladores aeronáuticos) y en todos aquellos en que sea
necesaria una fuerte gestión del proyecto y sus riesgos, técnicos o de gestión.

35
Desventajas importantes:

• Requiere mucha experiencia y habilidad para la evaluación de los riesgos,


lo cual es requisito para el éxito del proyecto.
• Es difícil convencer a los grandes clientes que se podrá controlar este
enfoque evolutivo.

Este modelo no se ha usado tanto, como el Cascada (Incremental) o MCP, por lo


que no se tiene bien medida su eficacia, es un paradigma relativamente nuevo y
difícil de implementar y controlar.

Modelo espiral Win & Win.


Una variante interesante del Modelo Espiral
previamente visto es el Modelo espiral Win-
Win. El Modelo Espiral previo (clásico)
sugiere la comunicación con el cliente para
fijar los requisitos, en que simplemente se
pregunta al cliente qué necesita y él
proporciona la información para continuar;
pero esto es en un contexto ideal que rara
vez ocurre. Normalmente cliente y desarrollador entran en una negociación, se
negocia coste frente a funcionalidad, rendimiento, calidad, etc.
Las mejores negociaciones se fuerzan en obtener Victoria & Victoria (Win & Win),
es decir que el cliente gane obteniendo el producto que lo satisfaga, y el
desarrollador también gane consiguiendo presupuesto y fecha de entrega realista.
Evidentemente, este modelo requiere fuertes habilidades de negociación.
El modelo Win-Win define un conjunto de actividades de negociación al principio
de cada paso alrededor de la espiral; se definen las siguientes actividades:
1. Identificación del sistema o subsistemas clave de los directivos * (saber qué
quieren).
2. Determinación de «condiciones de victoria» de los directivos (saber qué
necesitan y los satisface)
3. Negociación de las condiciones «victoria» de los directivos para obtener
condiciones «Victoria & Victoria» (negociar para que ambos ganen).
Directivo: Cliente escogido con interés directo en el producto, que puede ser
premiado por la organización si tiene éxito o criticado si no.
El modelo Win & Win hace énfasis en la negociación inicial, también introduce 3
hitos en el proceso llamados puntos de fijación, que ayudan a establecer la
completitud de un ciclo de la espiral, y proporcionan hitos de decisión antes de
continuar el proyecto de desarrollo del software.

36
1.2.1.8 Etapas en el desarrollo del software
• Captura, análisis y especificación de requisitos.
Al inicio de un desarrollo (no de un proyecto), esta es la primera fase que se
realiza, y, según el modelo de proceso adoptado, puede casi terminar para pasar a
la próxima etapa (caso de Modelo Cascada Realimentado) o puede hacerse
parcialmente para luego retomarla (caso Modelo Iterativo Incremental u otros de
carácter evolutivo).
En simples palabras y básicamente, durante esta fase, se adquieren, reúnen y
especifican las características funcionales y no funcionales que deberá cumplir el
futuro programa o sistema a desarrollar.
• Procesos, modelado y formas de elicitación de requisitos.
Siendo que la captura, elicitación y especificación de requisitos, es una parte
crucial en el proceso de desarrollo de software, ya que de esta etapa depende el
logro de los objetivos finales previstos, se han ideado modelos y diversas
metodologías de trabajo para estos fines. También existen
herramientas software que apoyan las tareas relativas realizadas por el ingeniero
en requisitos.

• Clasificación e identificación de requisitos.


• Diseño del sistema.
En ingeniería de software, el diseño es una fase de ciclo de vida del software. Se
basa en la especificación de requisitos producido por el análisis de los requisitos
(fase de análisis), el diseño define cómo estos requisitos se cumplirán, la
estructura que debe darse al sistema de software para que se haga realidad.

37
El diseño sigue siendo una fase separada de la programación o codificación, esta
última corresponde a la traducción en un determinado lenguaje de programación
de las premisas adoptadas en el diseño.
• Codificación del software.
Durante esta etapa se realizan las tareas que
comúnmente se conocen como programación;
que consiste, esencialmente, en llevar a código
fuente, en el lenguaje de programación elegido,
todo lo diseñado en la fase anterior. Esta tarea
la realiza el programador, siguiendo por
completo los lineamientos impuestos en el
diseño y en consideración siempre a los
requisitos funcionales y no funcionales (ERS)
especificados en la primera etapa.
• Pruebas (unitarias y de integración).
Entre las diversas pruebas que se le efectúan al software se pueden distinguir
principalmente:
➢ Pruebas unitarias: Consisten en probar o testear piezas de software
pequeñas; a nivel de secciones, procedimientos, funciones y módulos;
aquellas que tengan funcionalidades específicas. Dichas pruebas se utilizan
para asegurar el correcto funcionamiento de secciones de código, mucho
más reducidas que el conjunto, y que tienen funciones concretas con cierto
grado de independencia.
➢ Pruebas de integración: Se realizan una vez que las pruebas unitarias
fueron concluidas exitosamente; con éstas se intenta asegurar que el
sistema completo, incluso los subsistemas que componen las piezas
individuales grandes del software funcionen correctamente al operar en
conjunto.
• Instalación y paso a producción.
La instalación del software es el proceso por el cual los programas
desarrollados son transferidos apropiadamente al computador destino,
inicializados, y, eventualmente, configurados; todo ello con el propósito de ser
ya utilizados por el usuario final. Constituye la etapa final en el desarrollo
propiamente dicho del software. Luego de esta el producto entrará en la fase
de funcionamiento y producción, para el que fuera diseñado.
• Mantenimiento.
El mantenimiento de software es el proceso de control, mejora y optimización
del software ya desarrollado e instalado, que también incluye depuración de
errores y defectos que puedan haberse filtrado de la fase de pruebas de control y
beta test. Esta fase es la última (antes de iterar, según el modelo empleado) que

38
se aplica al ciclo de vida del desarrollo de software. La fase de mantenimiento es
la que viene después de que el software está operativo y en producción.
De un buen diseño y documentación del desarrollo dependerá cómo será la fase
de mantenimiento, tanto en costo temporal como monetario.
Modificaciones realizadas a un software que fue
elaborado con una documentación indebida o pobre
y mal diseño puede llegar a ser tanto o más costosa
que desarrollar el software desde el inicio. Por ello,
es de fundamental importancia respetar
debidamente todas las tareas de las fases del
desarrollo y mantener adecuada y completa la
documentación.
1.2.1.1 sistemas
Un sistema informático es un sistema que permite almacenar y
procesar información; es el conjunto de partes
interrelacionadas: hardware, software y personal informático.
El hardware incluye computadoras o cualquier tipo de dispositivo electrónico, que
consisten en procesadores, memoria, sistemas de almacenamiento externo, etc.
El software incluye al sistema operativo, firmware y aplicaciones, siendo
especialmente importante los sistemas de gestión de bases de datos. Por último,
el componente humano incluye al personal técnico que apoya y mantienen el
sistema (analistas, programadores, operarios, etc.) y a los usuarios que lo utilizan.

Por sistema informático (SI) se entiende un sistema automatizado de


almacenamiento, procesamiento y recuperación de datos, que aprovecha las
herramientas de la computación y la electrónica para llevar a cabo su serie
compleja de procesos y operaciones. En otras palabras, un sistema informático es
un computador de alguna índole.

Los sistemas informáticos son tipos de sistemas de información, o sea, sistemas


que se organizan en torno al manejo de datos de diversa naturaleza, aunque no
todos los sistemas de información sean informáticos. Esto es, no todos son
digitales, ni automatizados, ni electrónicos.
Los sistemas informáticos ocupan en el mundo contemporáneo un lugar clave
para la organización humana de sus procesos productivos y de otras naturalezas.
Es una herramienta poderosa para el intercambio de información y la construcción
de redes informáticas que superan la dificultad de las distancias.

39
Los sistemas informáticos son tipos de sistemas de información, o sea, sistemas que se
organizan en torno al manejo de datos de diversa naturaleza, aunque no todos los
sistemas de información sean informáticos. Esto es, no todos son digitales, ni
automatizados, ni electrónicos.

Los sistemas informáticos ocupan en el


mundo contemporáneo un lugar clave
para la organización humana de sus
procesos productivos y de otras
naturalezas. Es una herramienta poderosa
para el intercambio de información y la
construcción de redes informáticas que
superan la dificultad de las distancias.

1.2.1.2 Historia de los sistemas informáticos


Los sistemas informáticos son herederos de diversas tecnologías previas.
Cada una de esas tecnologías revolucionó en su momento el modo en que
los seres humanos comprendemos, almacenamos o compartimos la información.
Comienzan con el remoto invento de la escritura, e incluyen la invención de la
imprenta a mediados del siglo XV y la primera calculadora mecánica de Blaise
Pascal en el siglo XVII.
El primer sistema informático a gran escala fue la máquina tabuladora de Herman
Hollerith, creada en 1890. Empleaba una serie de tarjetas perforadas eléctricas,
basándose en la lógica de Boole.
Este aparato logró tabular el censo nacional de los Estados Unidos de aquel año.
Su éxito inspiró el advenimiento de nuevas y mejores computadoras, como la
Eniac (1946) o UNIVAC I (1951) desarrolladas en ese mismo país con fines
bélicos y contables respectivamente.
A partir de entonces el descubrimiento de nuevos materiales eléctricos y
electrónicos permitió la aparición de los circuitos integrados. Con ellos surgieron
nuevas posibilidades para los aparatos informáticos, que iniciaron entonces su
miniaturización.
Así surgieron a finales del siglo XX los primeros computadores personales y las
primeras redes cibernéticas. De esta manera cambió para siempre el modo en que
comprendemos y valoramos la información en el mundo.

40
1.2.1.3 Tipos de sistemas informáticos que existen
Hoy en día existen diferentes tipos de sistemas
informáticos, donde cada uno de ellos ejerce
una acción fundamental para lo que es el
funcionamiento de una máquina
electrónica. Teniendo en cuenta que sin ellos no
se podría realizar casi ninguna actividad.
Debido a todas las funciones que ellos realizan,
es importante que exista una clasificación según
el tipo y su función. Por lo tanto, aquí te vamos a
enseñar cómo se clasifican los SI que existen
actualmente:
• Sistema de apoyo a la toma de decisiones: Estos sistemas también son
conocidos como el soporte a la toma de decisiones o Decision Support
System o por sus siglas DSS.
El mismo ha sido diseñado para llevar a cabo lo que son los procesos de la toma
de decisiones, y el mismo puede ser usado por una gerencia para así resolver los
problemas y estar en la capacidad de escoger la opción más viable y
poder predecir cuales son los futuros escenarios y así estar preparados
para cualquier eventualidad:
• Sistema de colaboración empresarial: También conocidos como Enterprise
resource planning o por sus siglas ERP, son un sistema de colaboración
empresarial utilizado por la mayoría de las empresas de todo el mundo, ya
que les da la facilidad a las distintas compañías de poder gestionar toda la
información que circula dentro de la empresa.

• Sistema de información ejecutiva: Este sistema es capaz de proporcionarle


a los usuarios un acceso inmediato a toda la información crítica que se
maneja dentro de la empresa, ya sean de fuentes externas o internas. Toda
esta información suele presentarse de forma variada.

41
Básicamente todos estos sistemas son
desarrollados para poder generar cualquier tipo
de información que sea capaz de satisfacer y
responder a los problemas del usuario. Es decir,
que los mismos pasan a ser una versión
simplificada donde se presentan todas las
operaciones que se realizan en la empresa:
• Sistema de procesamiento de
transacciones: Estos sistemas informáticos
están implementados para lo que es la
gestión de todo lo que se encuentra
relacionado con el nivel operacional de la
empresa. Se trata de un sistema que se
encarga de procesar las transacciones de un sistema que almacena y
procesa todas las transacciones realizadas durante el día y que son
fundamentales tener para el manejo adecuado de la empresa.
• Sistema de Información de Gestión: Estos SI son capaces de
poder gestionar y almacenar todos los datos de múltiples niveles con el
objetivo de poder crear una visión más clara al momento de la toma de
decisiones. Su especialidad es generar reportes los cuales facilitan la
información para gestión operativa y lo que es el control de todas las
actividades en el proceso de transacciones de la empresa.
• Sistema de control de procesos de negocio: Estos sistemas son los
encargados de poder monitorear, gestionar y controlar cualquier proceso de
industrialización que se lleve a cabo. Es en este tipo de sistema
informático donde se manejan los sensores electrónicos conectados a los
ordenadores para así poder establecer un monitoreo directo y a la misma
vez poder controlar todos los procesos de las maquinarias.
Los sistemas informáticos se emplean hoy en día en una enorme multiplicidad de
ámbitos. Por ejemplo, en el trabajo empresarial, tienen funciones contables como
administrativas. También son aliados de la investigación científica, para procesar
gran cantidad de datos.
En todos los ámbitos se utiliza para salvaguardar información confidencial o
personal. Por otro lado, también pueden distribuir la información a lo largo de
numerosos solicitantes y enviarla a través de sistemas de comunicación sobre
largas distancias.
El mundo global contemporáneo, en el que compramos en línea y generamos
tanta información, no podría existir sin vastas y complejas redes de sistemas
informáticos.

42
1.2.1.4 Comparación con un sistema
de información
Todos los sistemas informáticos son sistemas
de información, ya que lidian con datos
inscriptos en diversos lenguajes, pero no es
cierto lo contrario.
La gran diferencia allí es la presencia de
computadores, que brindan su potencia de procesamiento al sistema para que la
recuperación de información sea lo más veloz, precisa y masiva posible. No
obstante, existen sistemas de información en base en papel, la palabra escrita u
otros métodos.

1.2.1.5 Base de datos


Se llama bases de datos a los inmensos volúmenes de datos que se encuentran
almacenados en distintos tipos de sistemas informáticos. Su recuperación es
rápida y puntual ante el requerimiento de los usuarios.
La convivencia e interrelación de diversas bases de datos es lo que, entre otras
cosas, dio origen a la necesidad de las redes informáticas: interconexiones de
computadores que comparten acceso a diversa información y establecen para ello
reglas determinadas.

1.2.1.6 Componentes de un sistema informático


Componente físico: está formado por todos los aparatos electrónicos y mecánicos
que realizan los cálculos y el manejo de la información.
• Componente lógico: se trata de las aplicaciones y los datos con los que
trabajan los componentes físicos del sistema.
• Componente humano: está compuesto tanto por los usuarios que trabajan
con los equipos como por aquellos que elaboran las aplicaciones.
Un ejemplo de sistema informático sería
uno o varios ordenadores personales o PC
(Personal Computer, computadora
personal), junto con la persona que lo
maneja, los programas que contiene y los
periféricos que los envuelven (impresora,
teclado, altavoces…).

43
1.2.1.7 Clasificación de los sistemas informáticos
Los sistemas informáticos pueden clasificarse con base a numerosos criterios. Las
clasificaciones no son estancas y es común encontrar sistemas híbridos que no
encajen en una única categoría.
Por su uso.
• Sistemas de uso específico. En sistemas complejos es frecuente tener
subsistemas que se encargan de tareas específicas como por ejemplo
el sistema de detección de intrusos o el sistema de monitorización.
• Sistemas de uso general.
Por el paralelismo de los procesadores.
• MIMD, Multiple Instruction Multiple Data.
• SIMD, Single Instruction Multiple Data.
• SISD, Single Instruction Single Data.
Por el tipo de computadora utilizado en el sistema.
• Estaciones de trabajo (workstations).
• Macrocomputadoras (servidores de gran capacidad).
• Minicomputadoras (por ejemplo, computadoras personales).
• Microcomputadoras (servidores pequeños).
• Supercomputadoras.
• Terminales ligeros (thin clients).
Por la arquitectura.
• Arquitectura cliente-servidor.
• Arquitectura de 3 capas.
• Arquitectura de 4 capas.
• Arquitectura de n capas.
• Monitor de teleproceso o servidor de transacciones.
• Servidor de aplicaciones.
• Sistema aislado.

44
1.2.1.2 programación
La programación es el proceso
utilizado para idear y ordenar las
acciones necesarias para realizar un
proyecto, preparar ciertas máquinas o
aparatos para que empiecen a
funcionar en el momento y en la forma
deseados o elaborar programas para
su empleo en computadoras.
En la actualidad, la noción de programación se encuentra muy asociada a la
creación de aplicaciones de informática y videojuegos. En este sentido, es el
proceso por el cual una persona desarrolla un programa, valiéndose de una
herramienta que le permita escribir el código (el cual puede estar en uno o varios
lenguajes, como C++, Java y Python, entre otros) y de otra que sea capaz de
“traducirlo” a lo que se conoce como lenguaje de máquina, que puede
"comprender" el microprocesador.
Programación es el proceso de tomar un algoritmo y codificarlo en una notación,
un lenguaje de programación, de modo que pueda ser ejecutado por una
computadora. Aunque existen muchos lenguajes de programación y muchos tipos
diferentes de computadoras, el primer paso es la necesidad de tener una solución.
Sin un algoritmo no puede haber un programa.
Las ciencias de la programación no son el estudio de la programación. La
programación, sin embargo, es una parte importante de lo que hace un científico
de la computación. La programación es a menudo la manera en la que creamos
una representación para nuestras soluciones. Por tanto, esta representación en un
lenguaje y el proceso de crearla se convierte en una parte fundamental de la
disciplina.
Los algoritmos describen la solución a un problema en términos de los datos
requeridos para representar el caso del problema y el conjunto de pasos
necesarios para producir el resultado pretendido. Los lenguajes de programación
deben suministrar un modo dotacional para representar tanto el proceso como los
datos. Para este fin, los lenguajes suministran estructuras de control y tipos de
datos.
Las estructuras de control permiten que los pasos algorítmicos sean
representados de una manera conveniente, pero sin ambigüedades. Como
mínimo, los algoritmos requieren estructuras que lleven a cabo procesamiento
secuencial, selección para toma de decisiones e iteraciones para control repetitivo.
Siempre y cuando el lenguaje proporcione estas instrucciones básicas, éste puede
ser usado para la representación del algoritmo.

45
Todos los ítems de datos en la computadora están representados como cadenas
de dígitos binarios. Con el fin de darle significado a estas cadenas, necesitamos
tener tipos de datos. Los tipos de datos brindan una interpretación para estos
datos binarios de modo que podamos considerarlos en términos que tengan
sentido con respecto al problema que está siendo resuelto. Estos tipos de datos
incorporados de bajo nivel (a menudo denominados tipos de datos primitivos)
proporcionan los bloques constructivos para el desarrollo de algoritmos.
Por ejemplo, la mayoría de los lenguajes de
programación proporcionan un tipo de datos
para los enteros. Las cadenas de dígitos
binarios en la memoria de la computadora
pueden interpretarse como enteros y se les dan
los significados típicos que comúnmente
asociamos con los enteros. Además, un tipo de
datos también proporciona una descripción de
las operaciones en las que los ítems de datos pueden participar. Con enteros, son
comunes las operaciones tales como la suma, la resta y la multiplicación.
Podemos dar por sentado que los tipos de datos numéricos puedan participar en
estas operaciones aritméticas.
La dificultad que a menudo nos surge es el hecho que los problemas y sus
soluciones son muy complejos. Estas estructuras y tipos de datos simples,
suministrados por el lenguaje, si bien son ciertamente suficientes para representar
soluciones complejas, están típicamente en desventaja a medida que trabajamos
en el proceso de solución de problemas. Requerimos maneras de controlar esta
complejidad y contribuir con la creación de soluciones.

1.2.1.2.1 Historia de la programación


La historia de la Programación está relacionada
directamente con la aparición de los computadores,
que ya desde el siglo XV tuvo sus inicios con la
construcción de una máquina que realizaba
operaciones básicas y raíces cuadradas (Gottfried
Wilheml von Leibniz); aunque en realidad la primera
gran influencia hacia la creación de los computadores
fue la máquina diferencial para el cálculo de polinomios, proyecto no
concluido de Charles Babbage (1793-1871) con el apoyo de Lady Ada Countess
of Lovelace (1815-1852), primera persona que incursionó en la programación y de
quien proviene el nombre del lenguaje de programación ADA creado por el DoD
(Departamento de defensa de Estados Unidos) en la década de 1970.

46
Personaje Aporte
Gottfried Wilheml von Leibniz Máquinas de operaciones básicas
Máquina diferencial para el cálculo de
Charles Babbage
polinomios
Lady Ada Countess of Lovelace Almacenamiento en tarjetas perforadas
Creador de un sistema para automatizar la
Herman Hollerit
pesada tarea del censo
Máquina de Turing - una máquina capaz de
Alan Mathison Turing resolver problemas - Aportes de Lógica
Matemática - Computadora con tubos de vacío
Contribuyó al algebra binaria y a los sistemas
George Boole de circuitos de computadora (álgebra
booleana).
Primera computadora digital electrónica
John Vincent Atanasoff
patentada - Atanasoff Berry Computer (ABC)
En colaboración con IBM desarrolló el Mark 1,
una computadora electromecánica de 16
metros de largo y más de dos de alto que
Howard Aiken
podía realizar las cuatro operaciones básicas y
trabajar con información almacenada en forma
de tablas.
Junto a John Presper Eckert desarrolló una
computadora electrónica completamente
John W. Mauchly
operacional a gran escala llamada Electronic
Numerical Integrator And Computer (ENIAC).
Propuso guardar en memoria no solo la
Johann Ludwig Von Neumann información, sino también los programas,
acelerando los procesos.

47
1.2.1.2.2 Funcionamiento de un programa
Para crear un programa, y que la computadora lo interprete y ejecute, las
instrucciones deben escribirse en un lenguaje de programación. En sus comienzos
las computadoras interpretaban solo instrucciones en un lenguaje específico, del
más bajo nivel, conocido como código máquina, siendo éste excesivamente
complicado para programar. De hecho, solo consiste en cadenas de números 1 y
0 (sistema binario). Para facilitar el trabajo de programación, los primeros
científicos, que trabajaban en el área, decidieron reemplazar las instrucciones,
secuencias de unos y ceros, por mnemónicos, que son abreviaturas en inglés de
la función que cumple la instrucción; las codificaron y crearon así un lenguaje de
mayor nivel, que se conoce como Assembly o lenguaje ensamblador. Por ejemplo,
para sumar se podría usar la letra A de la palabra inglesa add (sumar). En
realidad, escribir en lenguaje ensamblador es básicamente lo mismo que hacerlo
en lenguaje máquina, pero las letras y palabras son bastante más fáciles de
recordar y entender que secuencias de números binarios. A medida que la
complejidad de las tareas que realizaban las computadoras aumentaba, se hizo
necesario disponer de un método más sencillo para programar. Entonces, se
crearon los lenguajes de alto nivel. Mientras que una tarea tan trivial como
multiplicar dos números puede necesitar un conjunto de instrucciones en lenguaje
ensamblador, en un lenguaje de alto nivel bastará con solo una. Una vez que se
termina de escribir un programa, sea en ensamblador o en algunos casos,
lenguajes de alto nivel, es necesario compilarlo, es decir, traducirlo completo a
lenguaje máquina.Eventualmente será necesaria otra fase denominada
comúnmente link o enlace, durante la cual se anexan al código, generado durante
la compilación, los recursos necesarios de alguna biblioteca. En algunos lenguajes
de programación, puede no ser requerido el proceso de compilación y enlace, ya
que se puede trabajar en modo intérprete. Esta modalidad de trabajo es
equivalente, pero se realiza instrucción por instrucción, se traduce a medida que
es ejecutado el programa.

48
1.2.1.2.3 Léxico y programación
La programación se rige por reglas y un
conjunto más o menos reducido de órdenes,
expresiones, instrucciones y comandos que
tienden a asemejarse a una lengua
natural acotada (en inglés); y que además tienen
la particularidad de una reducida ambigüedad.
Cuanto menos ambiguo es un lenguaje de
programación se dice que es más potente. Bajo
esta premisa, y en el extremo, el lenguaje más
potente existente es el binario, con ambigüedad
nula (lo cual lleva a pensar así del lenguaje
ensamblador).
En los lenguajes de programación de alto nivel se distinguen diversos elementos
entre los que se incluyen el léxico propio del lenguaje y las reglas semánticas y
sintácticas. Estos lenguajes tienen la particularidad de utilizar palabras del idioma
inglés dentro de su léxico, por lo que muchas de ellas tienen una función
específica dentro del lenguaje con el que se está trabajando y no se las puede
utilizar de manera diferente, son las denominadas palabras reservadas. Por otro
lado, otra particularidad de los lenguajes de programación de alto nivel y
sus herramientas de desarrollo es el permitir a los programadores el uso de
comentarios (frases o párrafos sin funcionalidad en el programa), a fin de que
otros programadores entiendan más fácilmente la funcionalidad del código creado.

1.2.1.2.4 Objetivos de la programación


La programación debe perseguir la obtención de programas de calidad. Para ello
se establece una serie de factores que determinan la calidad de un programa.
Algunos de los factores de calidad más importantes son los siguientes:
• Correctitud. Un programa es correcto si hace lo que debe hacer tal y como
se estableció en las fases previas a su desarrollo. Para determinar si un
programa hace lo que debe, es muy importante especificar claramente qué
debe hacer el programa antes de su desarrollo y, una vez acabado,
compararlo con lo que realmente hace. Al verificar este comportamiento
está cumpliendo dicho objetivo.

49
• Claridad. Es muy importante que el programa sea lo más claro y legible
posible, para facilitar tanto su desarrollo como su posterior mantenimiento.
Al elaborar un programa se debe intentar que su estructura sea sencilla y
coherente, así como cuidar el estilo de programación. De esta forma se ve
facilitado el trabajo del programador, tanto en la fase de creación como en
las fases posteriores de corrección de errores, ampliaciones,
modificaciones, etc. Fases que pueden ser realizadas incluso por otro
programador, con lo cual la claridad es aún más necesaria para que otros
puedan continuar el trabajo fácilmente. Algunos programadores llegan
incluso a utilizar Arte ASCII para delimitar secciones de código; una práctica
común es realizar aclaraciones en el mismo código fuente utilizando líneas
de comentarios. Contrariamente, algunos programadores realizan acciones
que tienden a introducir confusión para impedir un análisis cómodo a otros
programadores, recurren al uso de código ofuscado,
• Eficiencia. Se trata de que el
programa, además de
realizar aquello para lo que
fue creado (es decir, que sea
correcto), lo haga
gestionando de la mejor
forma posible los recursos
que utiliza. Normalmente, al
hablar de eficiencia de un
programa, se suele hacer referencia al tiempo que tarda en realizar la tarea
para la que ha sido creado y a la cantidad de memoria que necesita, pero
hay otros recursos que también pueden ser de consideración para mejorar
la eficiencia de un programa, dependiendo de su naturaleza (espacio en
disco que utiliza, tráfico en la red que genera, etc.).
• Portabilidad. Un programa es portable cuando tiene la capacidad de poder
ejecutarse en una plataforma, ya sea hardware o software, diferente a
aquella en la que se desarrolló. La portabilidad es una característica muy
deseable para un programa, ya que permite, por ejemplo, a un programa
que se ha elaborado para el sistema GNU/Linux que también pueda
ejecutarse en la familia de sistemas operativos Windows.
Consecuentemente el programa puede llegar a más usuarios.

50
1.2.1.2.5 Clasificación de los diferentes tipos de programación
• Programación estructurada
La programación estructurada es un paradigma de programación orientado a
mejorar la claridad, calidad y tiempo de desarrollo de un programa de
computadora recurriendo únicamente a subrutinas y tres estructuras
básicas: secuencia, selección (if y switch) e iteración (bucles for y while);
asimismo, se considera innecesario y contraproducente el uso de la instrucción
de transferencia incondicional (GOTO), que podría conducir a código espagueti,
mucho más difícil de seguir y de mantener, y fuente de numerosos errores de
programación.
Surgió en la década de 1960, particularmente del trabajo de Böhm y Jacopini, y un
famoso escrito de 1968: La sentencia goto, considerada perjudicial, de Edsger
Dijkstra. Sus postulados se verían reforzados, a nivel teórico, por el teorema del
programa estructurado y, a nivel práctico, por la aparición de lenguajes
como ALGOL, dotado de estructuras de control consistentes y bien formadas.

• Programación modular

Diagrama del funcionamiento de un subprograma.


La programación modular es un paradigma de programación que consiste en
dividir un programa en módulos o subprogramas con el fin de hacerlo más legible
y manejable
Se presenta históricamente como una evolución de la programación
estructurada para solucionar problemas de programación más grandes y
complejos de lo que esta puede resolver.
Al aplicar la programación modular, un problema complejo debe ser dividido en
varios subproblemas más simples, y estos a su vez en otros subproblemas más
simples aún. Esto debe hacerse hasta obtener subproblemas lo suficientemente

51
simples como para poder ser resueltos fácilmente con algún lenguaje de
programación. Esta técnica se llama refinamiento sucesivo, divide y vencerás o
análisis descendente (Top-Down).
Un 'módulo' es cada una de las partes de un programa que resuelve uno de los
subproblemas en que se divide el problema complejo original. Cada uno de estos
módulos tiene una tarea bien definida y algunos necesitan de otros para poder
operar. En caso de que un módulo necesite de otro, puede comunicarse con este
mediante una interfaz de comunicación que también debe estar bien definida.
Si bien un módulo puede entenderse como una parte de un programa en
cualquiera de sus formas y variados contextos, en la práctica se los suele tomar
como sinónimos de procedimientos y funciones. Pero no necesaria ni
estrictamente un módulo es una función o un procedimiento, ya que el mismo
puede contener muchos de ellos. No debe confundirse el término "módulo" (en el
sentido de programación modular) con términos como "función" o "procedimiento",
propios del lenguaje que lo soporte.

• Programación orientada a objetos


La Programación Orientada a Objetos (POO, en español; OOP, según sus siglas
en inglés) es un paradigma de programación que viene a innovar la forma de
obtener resultados. Los objetos se utilizan como metáfora para emular las
entidades reales del negocio a modelar.
Muchos de los objetos prediseñados de los lenguajes de programación actuales
permiten la agrupación en bibliotecas o librerías, sin embargo, muchos de estos
lenguajes permiten al usuario la creación de sus propias bibliotecas.
Está basada en varias técnicas del
sexenio: herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsula
miento.
Su uso se popularizó a principios de la década de 1990. En la actualidad, existe
una gran variedad de lenguajes de programación que soportan la orientación a
objetos.

52
• Programación dirigida por eventos
La programación dirigida por eventos es un paradigma de programación en el que
tanto la estructura como la ejecución de los programas van determinados por los
sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos
provoquen.
Para entender la programación
dirigida por eventos, podemos
oponerla a lo que no es: mientras en
la programación secuencial
(o estructurada) es el programador el
que define cuál va a ser el flujo del
programa, en la programación
dirigida por eventos será el propio
usuario o lo que sea que esté
accionando el programa el que dirija
el flujo del programa. Aunque en la programación secuencial puede haber
intervención de un agente externo al programa, estas intervenciones ocurrirán
cuando el programador lo haya determinado, y no en cualquier momento como
puede ser en el caso de la programación dirigida por eventos.
El creador de un programa dirigido por eventos debe definir los eventos que
manejarán su programa y las acciones que se realizarán al producirse cada uno
de ellos, lo que se conoce como el administrador de evento. Los eventos
soportados estarán determinados por el lenguaje de programación utilizado, por
el sistema operativo e incluso por eventos creados por el mismo programador.
En la programación dirigida por eventos, al comenzar la ejecución del programa se
llevarán a cabo las inicializaciones y demás código inicial y a continuación el
programa quedará bloqueado hasta que se produzca algún evento. Cuando
alguno de los eventos esperados por el programa tenga lugar, el programa pasará
a ejecutar el código del correspondiente administrador de evento. Por ejemplo, si
el evento consiste en que el usuario ha hecho clic en el botón de play de un
reproductor de películas, se ejecutará el código del administrador de evento, que
será el que haga que la película se muestre por pantalla.
Un ejemplo claro lo tenemos en los sistemas de programación Léxico y Visual
Basic, en los que a cada elemento del programa (objetos, controles, etcétera) se le
asignan una serie de eventos que generará dicho elemento, como la pulsación de
un botón del ratón sobre él o el redibujado del control. O en Javascript que asigna
manejadores de eventos a los que responder a eventos en una web en el caso del
navegador o a eventos producidos por objetos emisores en el caso de NodeJS.

53
La programación dirigida por eventos es la base de lo que llamamos interfaz de
usuario, aunque puede emplearse también para desarrollar interfaces entre
componentes de Software o módulos del núcleo.
En los primeros tiempos de la computación, los programas eran secuenciales,
también llamados Batch. Un programa secuencial arranca, lee parámetros de
entrada, procesa estos parámetros, y produce un resultado, todo de manera lineal
y sin intervención del usuario mientras se ejecuta.
Con la aparición y popularización de los PC, el software empezó a ser demandado
para usos alejados de los clásicos académicos y empresariales para los cuales
era necesitado hasta entonces, y quedó patente que el paradigma clásico de
programación no podía responder a las nuevas necesidades de interacción con el
usuario que surgieron a raíz de este hecho.

1.2.1.2.6 Lenguajes de programación


Un lenguaje de programación es un conjunto de símbolos y códigos usados para
orientar la programación de estructuras en el desarrollo web. Conocer cómo
funciona el lenguaje de programación y cómo se interrelaciona con nosotros a
través de software nos permite mejorar nuestra productividad y conseguir ese algo
que nos diferencie de la competencia.
A lo largo de los años, los lenguajes de
programación han aumentado su potencia y
flexibilidad para, de esa forma, llevar a cabo
las tareas complejas que la innovación y
las nuevas tecnologías de información y
comunicación (TIC) nos exigen.
Todas las máquinas y dispositivos requieren
un lenguaje de programación para cumplir
sus funciones. Si conoces cuáles permiten
que estos las realicen adecuadamente,
entonces tendrás un plus que te permitirá alcanzar tus objetivos en menos tiempo.
Es un lenguaje formal que, mediante una serie de instrucciones, le permite a un
programador escribir un conjunto de órdenes, acciones consecutivas, datos
y algoritmos para, de esa forma, crear programas que controlen el comportamiento
físico y lógico de una máquina.

54
Mediante este lenguaje se comunican el programador y la máquina, permitiendo
especificar, de forma precisa, aspectos como:
• cuáles datos debe operar un software específico.
• cómo deben ser almacenados o transmitidos esos datos.
• las acciones que debe tomar el software dependiendo de las circunstancias
variables.
Para explicarlo mejor (en otras y con menos palabras), el lenguaje de
programación es un sistema estructurado de comunicación, el cual está
conformado por conjuntos de símbolos, palabras claves, reglas semánticas y
sintácticas que permiten el entendimiento entre un programador y una máquina.
Es importante recalcar que existe el error común de usar como sinónimos el
lenguaje de programación y el lenguaje informático, pero ¿por qué no debemos
confundirlos?
Pues, es debido a que el lenguaje de programación
obedece a un conjunto de reglas que permiten
expresar las instrucciones que serán interpretadas
por el programador. Y el lenguaje informático
comprende otros lenguajes que dan formato a un
texto, pero no son programación en sí mismos.
Entonces, no todos los lenguajes informáticos son de
programación, pero todos los lenguajes de
programación son a la vez informáticos.

55
1.2.1.3 Aplicación
¿Qué es el software de aplicación?
En informática, se entiende por software de aplicación, programas de
aplicaciones o en algunos casos aplicaciones, al conjunto de los programas
informáticos generalmente instalados en el sistema por el usuario, y diseñados
para llevar a cabo un objetivo determinado y concreto, de tipo lúdico, instrumental,
comunicativo, informativo, etc.
Dicho de otro modo: todos aquellos programas que no tienen que ver con el
funcionamiento del computador, sino que instalamos en él para darle funciones
determinadas como herramienta de trabajo (hoja de cálculo, procesador de
palabras, programas de diseño gráfico, etc.), de ocio (videojuegos, reproductores
de audio o video, etc.) o de información (enciclopedias digitales, navegador de
Internet, etc.), entre otras.
El software de aplicación normalmente es diseñado y comercializado aparte del
software de sistema que viene incorporado de fábrica al computador, y su
selección e instalación en el sistema es a total libre albedrío del usuario. No es, sin
embargo, imposible que muchos programas de este tipo vengan preinstalados –
debido a convenios empresariales y promociones específicas- en el disco rígido de
un computador recién comprado.
La tecnología ha avanzado considerablemente los últimos años, creando medios
que facilitan a las personas la posibilidad de resolver todo tipo de problemas por
medio del uso de computadoras y software. Por eso, cada día se crean y
actualizan nuevos softwares de aplicación con el fin de mejorar sus
funcionalidades y cumplir de manera más eficaz con sus funciones. Dicho esto, es
más que seguro que exista un software de aplicación programado para casi
cualquier cosa que se nos ocurra.

Funciones

Las funciones de un software de aplicación dependen de la intención con la cual


fue desarrollada, por eso, no se pueden definir funciones específicas a este
término desde un punto de vista global. No obstante, según el tipo de software de
aplicación, éste contará con unas u otras funciones.

En este sentido, se debe recordar que los programas u aplicaciones pueden


cumplir con todo tipo de tareas. Tanto así, que actualmente se pueden encontrar
softwares de aplicaciones capaces de resolver casi cualquier problema de forma
rápida, eficiente y sencilla. Desde permitir la edición de películas y producciones
audiovisuales, hasta permitir el desarrollo de otros softwares de aplicación.

56
Características de un software de aplicación

Una manera sencilla de identificar y entender qué es un software de aplicación se


basa en conocer sus principales características. A continuación, se detallan cada
una de ellas:

Independientes
Generalmente, un programa u aplicación posee independencia del software de
sistema y el sistema operativo. A pesar de que necesita de la existencia de ambos
para poder ser utilizado, un software de aplicación puede ser utilizado solamente
cuando el usuario lo necesita, por lo que puede ser desinstalado o simplemente no
usado cuando éste no es necesario.

Compatibilidad
Los softwares de aplicación son programados para ejecutarse en plataformas
concretas. A pesar de que la gran mayoría se encuentra adaptado para correr en
diferentes sistemas operativos, es necesario tomar en cuenta que no siempre son
compatibles con todos los existentes.

Enfoque
El enfoque u objetivo de un software de aplicación no es otro que permitir realizar
tareas concretas para el usuario. Para ello, las aplicaciones son programadas de
manera tal que el usuario pueda interactuar con las variables del programa.

Requisitos de hardware
Al igual que como ocurre con otros tipos de softwares, el software de
aplicación necesita ser respaldado por un soporte de hardware capaz de permitir
que se lleven a cabo todas las tareas que realiza el programa durante su
ejecución. En este sentido, los softwares de aplicación más exigentes necesitan
un mínimo de memoria RAM, un procesador de mayor o menor potencia y otros
elementos de hardware.

Adquisición
Una de las particularidades de este tipo de programas se basa en el acceso que
se puede tener a él. En este sentido, existen softwares de aplicación de licencia
libre que pueden ser adquiridos de forma gratuita, sin embargo, siempre existen
programas homólogos de pago que cumplen funciones similares. En muchos
casos, estos últimos cuentan con paquetes o funciones extras que pueden dar una
gran ventaja a los usuarios.

Instalación
Los softwares más complejos o que permiten realizar tareas particulares,
generalmente deben ser adquiridos, comprados o descargados, ya que éstos no
vienen preinstalados en un ordenador. Esto ocurre cuando se trata de programas
para llevar a cabo funciones muy específicas.

57
Tipos de software de aplicación

Actualmente, se pueden encontrar una gran variedad de software de aplicación. A


partir de esto, los softwares de aplicación se dividen en distintos tipos según el uso
u objetivo con el cual se programan. A continuación, se presentan los más
relevantes:

Suit de aplicaciones
Consiste en múltiples aplicaciones que se encuentran agrupadas. La intención de
una suit de aplicaciones es la de ofrecer un catálogo de programas con funciones
específicas. Sin embargo, cuando se observa de manera global, todos y cada uno
de los elementos que la compone se encuentra relacionado entre sí.

Software empresarial
Se refiere a cualquier software que aborde todas las necesidades que posea una
organización o empresa. Además de esto, también se encarga de organizar los
procesos y flujos de información de dicha organización. Este software
generalmente se encuentra dividido en varios departamentos.

Software departamental
Este software es un subtipo de software empresarial, se enfoca en pequeñas
empresas subdivididas en pequeñas organizaciones que conforman un solo
sistema.

Software para trabajadores en información


Se refiere a cualquier software que permita a los usuarios crear y editar
informaciones dentro de un departamento, o también para crear información en
proyectos individuales. Este software contrasta con el software de gestión
empresarial.

58
Software de acceso de contenido
Permite a los usuarios ingresar a contenidos sin editar y editarlos, casi siempre
posee un software que admite la edición de esos contenidos.

Software educativo
Este software se encuentra relacionado con el software de acceso de contenido.
Es utilizado por estudiantes y profesores, y se enfoca en ofrecer herramientas
relacionadas a la pedagogía, el aprendizaje y la gestión de centros educativos

Software de desarrollo de medios


Este tipo de software de aplicación se emplea para generar información impresa y
electrónica que suele ser consumido por otras personas, la mayoría del tiempo
dentro de un entorno educativo.

Software de ingeniería de productos


Permite el uso y desarrollo de
software y hardware. En este grupo
se encuentran aplicaciones de
Diseño Asistido por Computadora
(CAD) y otros similares.
Generalmente se utilizan en el
campo de la ingeniería y la
informática.

59
Ejemplos de softwares de aplicación

Debido a que se trata de los softwares más utilizados por los usuarios, existe una
infinidad de ejemplos de softwares de aplicación que pueden detallarse. A
continuación, enlistamos algunos:

Paquete de Microsoft Office


Se trata de una suite de aplicaciones desarrollada y distribuida por Microsoft para
el sistema operativo Microsoft Windows. El paquete de Office cuenta con una
serie de aplicaciones orientadas a ofrecer una plataforma para llevar a cabo
distintas tareas de enfoque académico, laboral y empresarial. Desde un editor de
texto, hasta un planificador de tareas, se trata de uno de los ejemplos de softwares
de aplicación más utilizados en todo el mundo.

Adobe Reader
Adobe Reader es un software de aplicación que permite a los usuarios visualizar y
editar archivos PDF. A pesar de ser un programa gratuito, el acceso a algunas de
sus funciones solo es permitido cuando se adquiere una licencia.

60
Adobe Ilustrator

Al igual que el ejemplo anterior, se trata de un programa desarrollado por Adobe.


Esta aplicación está orientada a ofrecer un medio de trabajo para la edición gráfica
y representación visual. En este programa, el usuario puede crear diseños
artísticos de todo tipo por medio de herramientas especialmente diseñadas para
este fin.

Opera
Opera es una aplicación disponible para computadoras y dispositivos móviles,
teniendo en ambos casos la misma función. Opera funciona como un navegador
web que permite a los usuarios acceder a páginas web por medio de una
conexión de internet. Se trata de un software gratuito y uno de los navegadores
más populares de la actualidad.

61
Internet Download Manager
Internet Download Manager (IDM) es un software de aplicación que permite
gestionar la descarga de todo tipo de archivos alojados en los diferentes
servidores de internet. Debido a sus funciones, es un programa que
constantemente recibe nuevas actualizaciones que buscan mejorar la experiencia
del usuario.

Skype
Diseñado con el fin de brindar un medio de comunicación virtual a través de la red,
Skype es un software de aplicación perteneciente a Microsoft. Skype cuenta con
funciones que hacen posible realizar llamadas de voz, video llamadas y
comunicación por chat. Igualmente, su plataforma permite compartir archivos
multimedia.

VLC
También conocido como VLC Media Player, se trata de un software de
aplicación que funciona como reproductor multimedia. Es un software libre de
código abierto, por lo que además de permitir la reproducción de archivos de audio
o video en un gran número de formatos, ofrece la posibilidad de alterar sus
funciones para adecuarlas a las necesidades particulares de los usuarios.

62
FIFA 20
FIFA 20 es un software de aplicación enfocado al entretenimiento. En este sentido,
se trata de un videojuego desarrollado por EA Sports. FIFA 20 es un videojuego
que permite a los usuarios sumergirse en una experiencia de simulación
futbolística a través de partidos de balón pie que pueden disputarse contra una
inteligencia artificial u otros jugadores de forma local o por medio de una red.

Google Chrome
Google Chrome, al igual que Opera, es un navegador web desarrollado por
Google Inc. Su uso es gratuito y permite a los usuarios la posibilidad de acceder a
páginas webs por medio de una conexión a internet. Actualmente, Google Chrome
es uno de los líderes en cuanto a navegadores de internet, algo que se debe
principalmente a su velocidad, bajos requisitos de hardware y cómoda interfaz.

63
Ventajas y desventajas del software de aplicación

Como cualquier tipo de software, los programas o aplicaciones poseen ventajas y


desventajas, por lo que vale la pena conocerlas.

Ventajas
• La gran mayoría de softwares de aplicación son gratuitos, en cuanto a
los pagos, generalmente tienen un precio de adquisición bajo.
• Una vez que se adquiere y se instala un software de aplicación en un
ordenador, este puede ser ejecutado y utilizado las veces que el
usuario lo desee.
• Todos los softwares de aplicación permiten llevar a cabo tareas,
resolver problemas y en términos generales, facilitar la vida de los
usuarios.
• Las aplicaciones están diseñadas para mejorar la calidad de vida de
las personas y mejorar la experiencia de los usuarios.
• Muchos de los softwares de aplicación reciben actualizaciones
periódicas con el fin de resolver problemas mejorar su funcionabilidad.
• Los softwares de aplicación pueden ejecutarse en computadoras o
teléfonos, por lo que pueden ser de utilidad tanto en oficinas como en
la calle.
• Permite automatizar procesos, facilitar la gestión y obtener resultados
de manera eficaz, confiable y en menor tiempo.
Desventajas
• Los softwares de aplicación están desarrollados para sectores
concretos, por lo que es posible en muchas ocasiones que no se
pueda adquirir el producto en el idioma deseado o con las funciones
específicas que el usuario necesita.

64
• Los softwares de pago ofrecen un código único que no puede ser
reutilizado después de su instalación.
• El desarrollo de softwares de aplicación resulta muchas veces
complejo y costoso, por lo que no cualquier usuario ni programador
puede desarrollar uno.
• Los programas más exigentes requieren de un hardware capaz de
ejecutarlo, por eso, en algunos casos los ordenadores o dispositivos
móviles más antiguos no son compatibles.
• Algunos softwares de aplicación no son compatibles con ciertos
sistemas operativos o computadoras.

1.2.2 Hardware

Hardware es una palabra inglesa que hace referencia a las partes físicas tangibles
de un sistema informático, es decir, todo aquello que podemos tocar con las
manos. Dentro del hardware encontramos una gran variedad de componentes
eléctricos, electrónicos, electromecánicos y mecánicos. El hardware es el chasis
del ordenador, los cables, los ventiladores, los periféricos y todos los componentes
que se pueden encontrar en un dispositivo electrónico. La Real Academia
Española lo define como «Conjunto de los componentes que integran la parte
material de una computadora».
El término no solamente se aplica a los ordenadores, ya que es a menudo
utilizado en otras áreas de la vida diaria y la tecnología como robots, teléfonos
móviles, cámaras fotográficas, reproductores digitales o cualquier otro dispositivo
electrónico. El hardware representa un concepto contrario al Software, la parte
intangible de un sistema informático, es decir todo aquello que no podemos tocar
físicamente.
Una forma de clasificar el hardware es en dos categorías: el hardware principal,
que abarca el conjunto de componentes indispensables necesarios para otorgar la
funcionalidad mínima y, por otro lado, el hardware complementario, que es el
utilizado para realizar funciones específicas más allá de las básicas, no
estrictamente necesarias para el funcionamiento del sistema informático.
La historia del hardware de computador se puede clasificar en cuatro
generaciones, cada una caracterizada por un cambio tecnológico de gran
importancia.

65
• Primera generación (1945-1956): electrónica implementada con tubos de
vacío, que desplazaron los componentes electromecánicos (relés).
• Segunda generación (1957-1963): electrónica desarrollada
con transistores. La lógica discreta era muy parecida a la anterior, pero
con una implementación mucho más pequeña, reduciendo el tamaño de
un ordenador en gran medida.
• Tercera generación (1964-hoy): electrónica basada en circuitos
integrados, la cual permite integrar cientos de transistores y otros
componentes electrónicos en un único circuito integrado impreso en una
pastilla de silicio. Esto vuelve a suponer una notable reducción en el
coste, consumo y tamaño.
• Cuarta generación (futuro): se originará cuando los circuitos de silicio
sean reemplazados por un nuevo tipo de material o tecnología, las más
prometedoras son el grafeno y los procesadores cuánticos.

La historia del hardware comienza en el ya lejano año 1960, un momento que está
marcado por el paso de los tubos de vacío a los circuitos integrados basados en el
silicio, la misma tecnología que se sigue usando hoy en día. Este importante
cambio viene marcado por los transistores discretos, que empezaron a ser
suficientemente viables desde el punto de vista de la economía y la fiabilidad, por
lo que ya no había ninguna razón para seguir usando los tubos de vacío.
La memoria principal de los ordenadores vio una gran evolución con el paso de las
cintas magnéticas a los chips basados en transistores de silicio, este
movimiento permitió reducir de forma muy importante el consumo de energía, el
tamaño y el coste de fabricación de los equipos informáticos. Los años seguían
pasando y la tecnología de los circuitos integrados era cada vez más barata, lo
que hizo posible la aparición de los ordenadores personales. Un hardware más
pequeño y asequible, también provocó el desarrollo de importantes nuevos
sistemas operativos como Unix.
El primer circuito integrado se creó en 1958, aunque tuvieron que pasar algunos
años hasta que se empezaron a usar en los ordenadores. La NASA fue una de las
pioneras en el uso de esta tecnología, el Apollo Guidance Computer del programa
Apolo, y el misil balístico incontinentemente LGM-30 Minuteman fueron las
primeras creaciones de la agencia espacial en usar ordenadores con circuitos
integrados.

66
No fue hasta el 15 de noviembre de 1971, cuando Intel lanzó el primer
microprocesador comercial del mundo, el famoso Intel 4004. Este procesador fue
desarrollado para Busicom, una compañía japonesa de calculadoras, que buscaba
una alternativa al circuito cableado. Las grandes capacidades de este procesador
hicieron que fuera usado para el desarrollo de ordenadores. Este procesador
era capaz de ejecutar 60.000 instrucciones por segundo, un número que fue
aumentando en los futuros procesadores Intel 8008, 8080, 8086 y 8088. El Intel
4004 funcionaba acompañado de un chip de RAM de varios kilobits, basado en
una invención por Robert Dennard de IBM.

Hasta la aparición del microprocesador, los ordenadores eran en general grandes


y caros, sus dueños eran instituciones grandes como corporaciones,
universidades, agencias de gobierno, y similares. Sus usuarios eran especialistas,
que no interactuaban con la máquina en sí misma, sino que preparaban tareas
para el ordenador en equipos fuera de línea, tal como perforadores de tarjetas. Un
número de asignaciones para el ordenador serían recolectadas y procesadas en
una modalidad de procesamiento por lotes. Después, los usuarios podían recoger
las salidas en listados impresos y en tarjetas perforadas. En algunas
organizaciones este proceso podía tardar horas o días en completarse.
Después de que el procesador fuera comercializado, el coste de producir un
sistema de computación cayó dramáticamente. La aritmética, la lógica, y las
funciones de control que previamente ocuparon varias y costosas tarjetas de
circuitos, ahora estaban disponibles en un circuito integrado que era muy costoso
de diseñar, pero barato de producir en grandes cantidades una vez diseñado.

67
Los primeros ordenadores personales en comercializarse fueron el Altair 8800 y el
IMSAI 8080. Ambos equipos eran esencialmente minicomputadores reducidos e
incompletos, pues para conectar un teclado o un teletipo a ellos se requerían
accesorios pesados y costosos. Ambas máquinas ofrecían un panel delantero con
interruptores y luces, que se comunicaban con el usuario en binario.

Tipos de hardware

Una vez que tenemos claro el concepto de hardware, vamos a dar un repaso a los
componentes más importantes de un ordenador o un sistema informático, así
como sus características más importantes.

Procesador o CPU (Unidad central de procesamiento)

La Unidad Central de Procesamiento, más conocida por sus siglas en inglés CPU,
es el componente fundamental de un ordenador, pues se trata del encargado de
interpretar y ejecutar instrucciones y procesar datos. En el caso de que la CPU
sea manufacturada como un único circuito integrado se conoce como
microprocesador, abreviado comúnmente como procesador. Los ordenadores más
potentes, como los utilizados en la supercomputación, pueden tener multitud de
microprocesadores funcionando de forma conjunta, el conjunto de todos ellos
conforma la unidad central de procesamiento.
Las unidades centrales de procesamiento no sólo están presentes en los
ordenadores, sino que se incluyen en todo tipo de dispositivos que incorporan una
cierta capacidad de proceso, algunos ejemplos de ellos son los controladores de
procesos industriales, videoconsolas, televisores, automóviles, calculadoras,
aviones, teléfonos móviles, electrodomésticos, juguetes y muchos más. AMD e
Intel son los diseñadores de las CPUs para ordenadores, mientras que los
modelos utilizados en dispositivos móviles y de bajo consumo están diseñados por

68
multitud de compañías como Samsung, Qualcomm, Texas Instruments, MediaTek,
Nvidia e Intel.
El microprocesador se monta en la placa base sobre el zócalo de la CPU, que
permite las conexiones eléctricas entre los circuitos de la placa y el procesador.
Sobre el procesador se fija un disipador térmico que es indispensable en los
modelos que consumen mucha energía, la cual, en gran parte, es emitida en
forma de calor. También podemos encontrarnos con procesador soldados en la
propia placa base: Intel BGA. Esto es bastante habitual en consolas, portátiles
muy finos o en los mini PC de tamaño super reducido.

Placa base

La placa base, también conocida como placa madre, placa principal, motherboard
o mainboard es un gran circuito impreso sobre el que se conectan el resto de los
componentes de un ordenador. En la placa base se coloca el chipset, las ranuras
de expansión, el zócalo del procesador, los conectores, diversos circuitos
integrados y muchos otros elementos. Se trata del soporte fundamental que aloja y
comunica a todos los demás componentes, para ello posee una serie de buses
mediante los cuales se transmiten los datos hacia dentro y fuera del sistema.
La tendencia actual es integrar en la placa base el mayor número posible de
elementos encargados de las funciones básicas, como vídeo, audio, red y puertos
de varios tipos. Estas funciones antes se realizaban con tarjetas de expansión, las
cuales encarecían el precio final del ordenador. La integración ha ido incluso más
allá en los últimos años, moviendo muchos de estos elementos dentro del
procesador, algo que abarata aún más los costes de fabricación. En ese sentido
actualmente se encuentran los sistemas denominados System on a Chip (SoC)
que consiste en un único circuito integrado que consta de varios módulos

69
electrónicos en su interior, como un procesador, un controlador de memoria, una
GPU, tarjeta de sonido con resistencia a una alta impedancia o la conectividad Wi-
Fi y Bluetooth.
Hay que tener muy en cuenta varios factores a la hora de elegir una placa base:

• Componentes internos: Fases de alimentación, CHOKES y


condensadores japoneses.
• Refrigeración: Super importante para aguantar altas temperaturas y
para que el procesador no haga throttling (Estrangulamiento).
Disipadores robustos tanto en las VRM como en el chipset son claves
para hacer un buen overclock al procesador.
• Factor de forma: Las placas base también tienen un tamaño, ya que
deben caber en determinados chasis, para cubrir las necesidades de la
empresa o el usuario final. Lo más comunes son: ATX-XL, E-ATX, ATX,
mATX e ITX (ordenados de mayor a menor).
• Conexiones: Es muy importante conocer el número y tipo de conexiones
que nos ofrece la placa base. Por ejemplo, depende de cuantas
conexiones SATA tengamos disponibles, si tiene habilitada una o varias
conexiones M.2 NVME, los conectores PCI Express, que tipo de tarjeta
de red o la cantidad de conexiones USB.

Memoria RAM

La memoria RAM es la memoria principal con la que trabaja un sistema


informático, se trata de un conjunto de chips que almacenan información, a la cual
es posible acceder de una forma muy rápida, algo importante para que el
procesador no tenga que esperar a que le lleguen los datos que necesita para
seguir trabajando.
RAM significa Random Access Memory, literalmente memoria de acceso aleatorio.
Este término tiene relación con la característica de presentar iguales tiempos de
acceso a cualquiera de sus posiciones tanto para lectura como para escritura.

70
Esta particularidad también se conoce como acceso directo, en contraposición al
acceso secuencial de otros tipos de memoria.
En la RAM se almacena temporalmente la información, datos y programas que la
CPU lee, procesa y ejecuta. Este tipo de memoria es volátil, lo que significa
que los datos almacenados se pierden al interrumpir su alimentación eléctrica. Es
decir, cuando apagamos o reiniciamos nuestro PC.
La memoria RAM de un ordenador se presenta en lo que se conoce
como módulos, los cuales albergan varios circuitos integrados de memoria
DRAM que, conjuntamente, conforman toda la memoria principal.
La memoria RAM más usada en la actualidad es la DDR4 SDRAM. Los módulos
tienen un total de 288 pines DIMM, cada uno de los cuales ofrece una velocidad
de datos que va de un mínimo de 1,6 GT/s hasta un objetivo máximo inicial de 3,2
GT/s. Las memorias DDR4 SDRAM tienen un mayor rendimiento y menor
consumo que las memorias DDR3 predecesoras.
Las memorias DDR4 se presentan en dos formatos diferentes:

• DIMM: usadas en ordenadores de sobremesa.


• SO-DIMM: usadas en ordenadores portátiles, minipc y algunas placas
base de formato ITX.
• RAM Soldada en la misma placa base: Estas son las más
complicadas, ya que cuando se averían, no podremos sustituirla por otra,
si no, tendremos que cambiar la placa base al completo. Son muy
habituales en equipos portátiles muy finos (ultrabooks) y en algunos
miniordenadores con sistema operativo Android.
Disco duro (HDD)

Una unidad de disco duro es un dispositivo de almacenamiento de datos que se


basa en un sistema de grabación magnética para almacenar archivos digitales. Un
disco duro está formado por uno o más platos unidos por un eje que gira a gran

71
velocidad dentro de una caja metálica sellada. Sobre cada una de las caras de
cada plato se sitúa un cabezal de lectura y escritura que se mantiene en
suspensión sobre una delgada lámina de aire generada por la rotación de los
platos.
El primer disco duro fue inventado por IBM en 1956, desde entonces ha
multiplicado su capacidad y se han hecho más compactos. En la actualidad,
podemos encontrar modelos de 3,5 pulgadas y 2,5 pulgadas, siendo los primeros
usados principalmente en PCs de escritorio y servidores, y los segundos en
portátiles. Todos los discos duros se comunican con el PC mediante una interfaz
estandarizada, la más común hasta los años 2000 fue IDE en el entorno
doméstico y SCSI en servidores y estaciones de trabajo. Desde el 2000 en
adelante ha ido masificándose el uso de la interfaz SATA.

Unidad de estado sólido (SSD)

Una unidad de estado sólido es un dispositivo de almacenamiento de datos que


utiliza memoria flash no volátil para almacenar datos, en lugar de los platos o
discos magnéticos de las unidades de disco duro convencionales. Los SSD no
disponen de partes mecánicas en su interior, lo que hace que sean menos
sensibles a los golpes, no hacen ruido, poseen un menor tiempo de acceso y de
latencia, y consumen menos energía. Su principal inconveniente es que tienen un
número limitado de ciclos de escritura, pudiendo producirse la pérdida absoluta de
los datos de forma inesperada e irrecuperable.
Las unidades de estado sólido pueden utilizar la interfaz SATA o la interfaz PCI
Express para comunicarse con el resto del PC. Los más rápidos son los basados
en PCI Express, aunque su coste de fabricación también es mucho más elevado.
Los SSD basados en SATA se presentan habitualmente en forma de unidad de
72
2,5 pulgadas, mientras que los basados en PCI Express, se presentan en forma
de tarjeta M.2, aunque no siempre es así. También hay que tener en cuenta si
lleva memoria MLC o TLC, para saber su durabilidad.
Los modelos más habituales que nos encontraremos en el mercado son:

• SSD SATA: El clásico y más económico del mercado. Nos ofrece tasas
de lectura y escritura sobre 500 MB/s. Con estos modelos podremos
acelerar muchísimo el arranque del sistema operativo y aplicaciones de
nuestro ordenador.
• SSD M.2 NVMe: Esta ranura nos permite conectar SSD ultra rápidos con
una velocidad desde los 2000 MB/s hasta los 2800 MB/s tanto en
escritura como lectura. Son los más veloces y los que nos ayudarán a
mejorar el rendimiento en aplicaciones de alto rendimiento. Ojo, preparad
una refrigeración adicional para bajar sus altas temperaturas.
• SSD M.2 SATA: También hay SSD más económicos para la conexión
M.2. Se encuentran a la par en precio de los SSD SATA y su rendimiento
es prácticamente igual. Vienen muy bien para bolsillos ajustados o
MiniPC estilo Intel NUC.
• PCI Express: Antes del lanzamiento de los dispositivos NVME eran
bastante comunes. En fechas actuales son raros de ver, es más fácil ver
alguna unidad Intel Optane de gama alta con esta interfaz.
• MSATA: Se incorporaba en algunas placas base de gama media / alta
hace unos años, pero actualmente solo lo podremos encontrar en algun
portátil de línea empresarial. Su rendimiento es muy parecido a los SSD
SATA.

Fuente de alimentación

Seguimos viendo más partes del hardware. Una de ella es la fuente de


alimentación, fuente de poder o power supply unit (PSU) es el dispositivo que se
encarga de convertir la corriente alterna (CA), en una o varias corrientes continuas

73
(CC), que alimentan los distintos circuitos del aparato electrónico al que se
conecta. Las fuentes de alimentación se usan en todo tipo de dispositivos
electrónicos, ya que generalmente todos ellos necesitan corriente continua para
funcionar, y las redes eléctricas de nuestras casas solo ofrecen corriente alterna.
Este es uno de los componentes más importantes de nuestro PC, ya que es el
encargado de alimentar el resto de las componentes, una fuente de alimentación
de baja calidad nos va a dar muchos problemas casi seguro, por ello es muy
recomendable optar por un modelo de buena calidad.
Algunos de los puntos más importantes a la hora de elegir una fuente de
alimentación son:

• Certificación 80 PLUS: Es una forma sencilla de la calidad de nuestra


fuente de alimentación. Normalmente encontraremos certificaciones
bronce, plata, oro, platino y titanio. Aunque a veces nos pueden engañar
(en certificación bronce y plata sobretodo) y debemos tener en cuenta
otros factores.
• Componentes internos: quién ha fabricado el núcleo, si lleva
condensadores japoneses, el ventilador, el número de Watios soportado
o los conversores DC-DC son puntos claves.
• Cableado modular o fijo: Siempre recomendamos que adquieras
fuentes modulares, pero si tu presupuesto es ajustado un cableado fijo
no deberá ser un problema para una buena organización.
• Potencia necesaria para tu PC: Para ello debes calcular cuantos
Watios puede consumir tu torre.

74
Tarjeta de sonido

La tarjeta de sonido o placa de sonido es una tarjeta de expansión que se instala


en un ordenador u otro dispositivo electrónico y permite la salida de
audio controlada por un programa informático llamado controlador o driver.
Algunos equipos tienen la tarjeta ya integrada a la placa base, mientras que otros,
requieren tarjetas de expansión. También hay equipos que por su uso no
requieren de dicha función. La parte más importante de la tarjeta de sonido es el
DAC, el encargado de convertir los ficheros digitales almacenados en la memoria
del ordenador, en una señal analógica que llegará a los altavoces para su
reproducción.
También hemos visto mucha mejora en estos últimos 4 años en el software de los
principales fabricantes de placas base. Ayudando a la compatibilidad con
auriculares profesionales (esto se debe a las características del hardware de la
tarjeta) o incluso mejorando en el 5.1 / 7.1 en cascos o altavoces mientras
jugamos.

75
Tarjeta gráfica

Una tarjeta gráfica o tarjeta de vídeo es una tarjeta de expansión que se encarga
de procesar los datos provenientes de la CPU y transformarlos en información
representable en el dispositivo de salida, por ejemplo: monitor, televisor o
proyector. Al igual que ocurre con la tarjeta de sonido, la tarjeta gráfica también
puede estar integrada en la placa base o incluso en el procesador.
Una tarjeta gráfica está formada por varios elementos que trabajan de forma
conjunta para hacer su trabajo:

• Tarjeta gráfica o GPU: la GPU o unidad de procesamiento gráfico, es


un componente especializado en el procesamiento de gráficos. Su razón
de ser es aligerar la carga de trabajo del procesador central. Está
optimizada para el cálculo de operaciones en coma flotante,
predominantes en las funciones 3D. La GPU constituye la parte más
importante de la tarjeta gráfica, y es el principal determinante del
rendimiento.
• VRAM: se trata de chips de memoria que almacenan y transportan
información entre sí, no son determinantes en el rendimiento máximo de
la tarjeta gráfica, pero deben ser lo suficientemente rápidos para
contener todos los datos que precisa la tarjeta para funcionar. Cuando
compramos una GPU, por ejemplo, una Nvidia GTX o una AMD RX ya
vienen ensambladas y nunca podremos ampliarla, esto significa que nos
tocará adquirir una nueva tarjeta gráfica. Un caso diferente es de la

76
tarjeta gráfica integrada que incorpora algunos procesadores (Intel HD o
las APU de AMD), que adquieren su memoria del uso compartido de la
RAM.
• RAMDAC: se encarga de transformar las señales digitales producidas en
la tarjeta gráfica en una señal analógica que sea interpretable por el
monitor. Dada la creciente popularidad de los monitores de señal digital,
el RAMDAC se está quedando obsoleto, puesto que no es necesaria la
conversión.
A su vez, la GPU está formada por varios elementos:

• Shaders: es el elemento más notable de potencia de una GPU, estos


sombreadores unificados reciben el nombre de CUDA Cores en el caso
de NVIDIA y Stream Processors en el caso de AMD.
• ROPs: se encargan de representar los datos procesados por la GPU en
la pantalla, además de los filtros como el de suavizado o antialiasing.
• TMUs: son las unidades encargadas de aplicar las texturas a los píxeles
generados.
¿Puedo conectar dos tarjetas gráficas para ganar el doble de potencia? Sí, pero el
escalado no es 100%. Dependiendo del juego podremos tener una mejora de un
20% más o un 50% gracias a la tecnología AMD Crossfire o AMD SLI. Hay que
dejar claro que nunca podremos escalar al máximo, por lo que es mejor comprar la
mejor tarjeta gráfica para gaming para ganar la máxima potencia. Si hablamos de
minado o computación distribuida si podremos usarlo sin necesidad de ninguna
tecnología.

77
1.2.2.1CPU

CPU son las siglas de Central Processing


Unit, lo que traducido significa Unidad
Central de Procesamiento. Se trata de
uno de los componentes vitales que te
vas a encontrar en tu ordenador, tu
smartphone o tu tableta o portátil, e
incluso en relojes y prácticamente
cualquier dispositivo electrónico. Sin él,
simplemente no podrían funcionar.
A la CPU se la suele llamar coloquialmente como microprocesador o simplemente
procesador, y puedes considerarla como el cerebro de cualquier dispositivo. Se
encarga de procesar todas las instrucciones del dispositivo, leyendo las órdenes y
requisitos del sistema operativo, así como las instrucciones de cada uno de los
componentes y las aplicaciones.
Así pues, igual que el cerebro, la CPU es la que se encarga de que todo funcione
correctamente, y de interpretar todo lo que quiere hacer el sistema operativo o los
componentes, estableciendo las conexiones y realizando todos los cálculos
precisos para que funcione. Cuanto más potente sea el procesador, más rápido
podrá hacer las operaciones y más rápido funcionará tu dispositivo en general.
Es también el encargado de leer, interpretar y procesar las instrucciones primero
del sistema operativo, y después de los programas o aplicaciones que tienes
instalados en el ordenador. Cuando abres Word o tu navegador, este tiene que
cargarse, y para ello necesitar realizar una serie de pasos cuyas instrucciones le
manda al procesador. Cada acción que hagas luego dentro también enviará
instrucciones para poder ejecutarse y realizarse.
Tu ordenador o portátil tendrán una CPU dedicada para realizar todas las
operaciones y procesos que requiera el sistema. Mientras, los móviles tienen el
denominado SoC o System on Chip, que es un chip que contiene tanto la CPU
como otros componentes, como chips gráficos integrados. Con ello, los SoC
suelen poder hacer más que las funciones de las CPU estándar.

78
1.2.2.1.1 Historia del CPU
Las primeras computadoras, como el ENIAC,
tenían que ser físicamente recableados para
realizar diferentes tareas, lo que hizo que
estas máquinas se denominaran
"computadoras de programa fijo". Dado que el
término "CPU" generalmente se define como
un dispositivo para la ejecución de software
(programa informático), los primeros
dispositivos que con razón podríamos llamar
CPU vinieron con el advenimiento de la
computadora de programa almacenado.
La idea de una computadora con programa
almacenado ya estaba presente en el diseño
de John Presper Eckert y en el ENIAC de John William Mauchly, pero esta
característica se omitió inicialmente para que el aparato pudiera estar listo antes.
El 30 de junio de 1945, antes de que se construyera la ENIAC, el matemático John
Von Neumann distribuyó el trabajo titulado First Draft of a Report on the EDVAC
(Primer Borrador de un Reporte sobre el EDVAC). Fue el esbozo de una
computadora de programa almacenado, que se terminó en agosto de 1949.
EDVAC fue diseñado para realizar un cierto número de instrucciones (u
operaciones) de varios tipos. Significativamente, los programas escritos para el
EDVAC se crearon para ser almacenados en la memoria de alta velocidad de la
computadora y no para que los especificara el cableado físico de la computadora.
Esto superó una severa limitación del ENIAC, que era el importante tiempo y
esfuerzo requerido para volver a configurar el equipo para realizar una nueva
tarea. Con el diseño de Von Neumann, el programa o software que corría EDVAC
podría ser cambiado simplemente cambiando el contenido de la memoria. Sin
embargo, EDVAC no fue la primera computadora de programa almacenado, la
Máquina Experimental de Pequeña Escala de Mánchester, un pequeño prototipo
de computadora de programa almacenado ejecutó su primer programa el 21 de
junio de 1948. Su sucesora, la Manchester Mark I, ejecutó su primer programa en
la noche del 16 al 17 de junio de 1949.
Las primeras CPU fueron diseñadas a medida como parte de una computadora
más grande, generalmente una computadora única en su especie. Sin embargo,
este método de diseñar las CPU a medida, para una aplicación particular, ha
desaparecido en gran parte y se ha sustituido por el desarrollo de clases de
procesadores baratos y estandarizados adaptados para uno o varios propósitos.
Esta tendencia de estandarización comenzó generalmente en la era de los
transistores discretos, computadoras centrales y microcomputadoras y fue
acelerada rápidamente con la popularización del circuito integrado (IC), este ha

79
permitido que sean diseñados y fabricados CPU más complejas en espacios
pequeños en la orden de nanómetros. Tanto la miniaturización como la
estandarización de las CPU han aumentado la presencia de estos dispositivos
digitales en la vida moderna mucho más allá de las aplicaciones limitadas de
máquinas de computación dedicadas. Los microprocesadores modernos aparecen
en todo, desde automóviles hasta teléfonos móviles o celulares y juguetes de
niños.
Si bien Von Neumann muchas veces acreditado por el diseño de la computadora
con programa almacenado debido a su diseño del EDVAC, otros antes que él,
como Konrad Zuse, habían sugerido y aplicado ideas similares. La denominada
arquitectura Harvard del Harvard Mark I, que se completó antes de EDVAC,
también utilizó un diseño de programa almacenado usando cinta de papel
perforada en vez de memoria electrónica. La diferencia clave entre las
arquitecturas de Von Neumann y la de Harvard es que la última separa dentro del
almacenamiento el tratamiento de instrucciones de la CPU y los datos, mientras
que el primero utiliza el mismo espacio de memoria para ambos. La mayoría de
los CPU modernos son de diseño Von Neumann, pero los CPU con arquitectura
Harvard se ven, sobre todo en aplicaciones embebidas; por ejemplo, los
microcontroladores Atmel AVR son procesadores de arquitectura Harvard.
Los relés eléctricos y los tubos de vacío (válvulas termoiónicas) eran usados
comúnmente como elementos de conmutación; una computadora útil requiere
miles o decenas de miles de dispositivos de conmutación. La velocidad global de
un sistema depende de la velocidad de los conmutadores. Las computadoras de
tubo, como el EDVAC, tendieron en tener un promedio de ocho horas entre fallos,
mientras que las computadoras de relés, (anteriores y más lentos), como el
Harvard Mark I, fallaban muy raramente. Al final, los CPU basados en tubo
llegaron a ser dominantes porque las significativas ventajas de velocidad
producidas generalmente pesaban más que los problemas de confiabilidad. La
mayor parte de estas tempranas CPU síncronas corrían en frecuencias de reloj
bajas comparadas con los modernos diseños microelectrónicos. Eran muy
comunes en este tiempo las frecuencias de la señal del reloj con un rango desde
100 kHz hasta 4 MHz, limitado en gran parte por la velocidad de los dispositivos
de conmutación con los que fueron construidos.

80
1.2.2.1.1.1 CPU de transistores y de circuitos integrados discretos
La complejidad del diseño de las CPU
aumentó junto con la facilidad de la
construcción de dispositivos
electrónicos más pequeños y
confiables. La primera de esas
mejoras vino con el advenimiento del
transistor. Las CPU transistorizadas
durante los años 1950 y los años 1960
no tuvieron que ser construidos con
elementos de conmutación abultados,
no fiables y frágiles, como los tubos de
vacío y los relés eléctricos. Con esta
mejora, fueron construidas CPU más
complejas y confiables sobre una o
varias tarjetas de circuito impreso que contenían componentes discretos
(individuales).
Durante este período, ganó popularidad un método de fabricar muchos
transistores en un espacio compacto. El circuito integrado (IC) permitió que una
gran cantidad de transistores fueran fabricados en una simple oblea basada en
semiconductor o "chip". Al principio, solamente circuitos digitales muy básicos, no
especializados, como las puertas NOR fueron miniaturizados en IC. Las CPU
basadas en estos IC de "bloques de construcción" generalmente son referidos
como dispositivos de pequeña escala de integración "small-scale integration"
(SSI). Los circuitos integrados SSI, como los usados en el computador guía del
Apoyo (Apollo Guidance Computer), usualmente contenían transistores que se
contaban en números de múltiplos de diez. Construir un CPU completo usando IC
SSI requería miles de chips individuales, pero todavía consumía mucho menos
espacio y energía que diseños anteriores de transistores discretos. A medida que
la tecnología microelectrónica avanzó, en los IC fue colocado un número creciente
de transistores, disminuyendo así la cantidad de IC individuales necesarios para
una CPU completa. Los circuitos integrados MSI y el LSI (de mediana y gran
escala de integración) aumentaron el número de transistores a cientos y luego a
miles.
En 1964, IBM introdujo su arquitectura de computador System/360, que fue usada
en una serie de computadoras que podían ejecutar los mismos programas con
velocidades y desempeños diferentes. Esto fue significativo en un tiempo en que
la mayoría de las computadoras electrónicos eran incompatibles entre sí, incluso
las hechas por el mismo fabricante. Para facilitar esta mejora, IBM utilizó el
concepto de microprograma, a menudo llamado «microcódigo», ampliamente
usado aún en las CPU modernas. La arquitectura System/360 era tan popular que

81
dominó el mercado del mainframe durante las siguientes décadas y dejó una
herencia que todavía aún perdura en las computadoras modernas, como el IBM
zSeries. En el mismo año de 1964, Digital Equipment Corporation (DEC) introdujo
otra computadora que sería muy influyente, dirigida a los mercados científicos y de
investigación, el PDP-8. DEC introduciría más adelante la muy popular línea del
PDP-11, que originalmente fue construido con IC SSI, pero eventualmente fue
implementado con componentes LSI cuando se convirtieron en prácticos. En
fuerte contraste con sus precursores hechos con tecnología SSI y MSI, la primera
implementación LSI del PDP-11 contenía una CPU integrada únicamente por
cuatro circuitos integrados LSI.
Las computadoras basadas en transistores tenían varias ventajas frente a sus
predecesores. Aparte de facilitar una creciente fiabilidad y un menor consumo de
energía, los transistores también permitían que CPU operara a velocidades mucho
más altas debido al corto tiempo de conmutación de un transistor en comparación
a un tubo o relé. Gracias tanto a esta creciente fiabilidad como al dramático
incremento de velocidad de los elementos de conmutación que por este tiempo
eran casi exclusivamente transistores, se fueron alcanzando frecuencias de reloj
de la CPU de decenas de megahercios.
Además, mientras que las CPU de
transistores discretos y circuitos integrados
se usaban comúnmente, comenzaron a
aparecer los nuevos diseños de alto
rendimiento como procesadores vectoriales
SIMD (single instruction multiple data –
instrucción única, datos múltiples). Estos
primeros diseños experimentales dieron
lugar más adelante a la era de las
supercomputadoras especializadas, como
las hechas por Cray Inc.

1.2.2.1.1.2 Microprocesadores.
En la década de 1970 los inventos fundamentales de Federico Faggin (ICs Silicon
Gate MOS con puertas autoalineadas junto con su nueva metodología de diseño
de lógica aleatoria) cambió el diseño e implementación de las CPU para siempre.
Desde la introducción del primer microprocesador comercialmente disponible, el
Intel 4004, en 1970 y del primer microprocesador ampliamente usado, el Intel
8080, en 1974, esta clase de CPU ha desplazado casi totalmente el resto de los
métodos de implementación de la Unidad Central de procesamiento. Los
fabricantes de mainframes y minicomputadoras de ese tiempo lanzaron programas
de desarrollo de IC propietarios para actualizar sus arquitecturas de computadoras
más viejas y eventualmente producir microprocesadores con conjuntos de
instrucciones que eran retro compatibles con sus hardwares y softwares más

82
viejos. Combinado con el advenimiento y
el eventual vasto éxito de la ahora ubicua
computadora personal, el término "CPU"
es aplicado ahora casi exclusivamente a
los microprocesadores.
Las generaciones previas de CPU fueron
implementadas como componentes
discretos y numerosos circuitos
integrados de pequeña escala de
integración en una o más tarjetas de
circuitos. Por otro lado, los
microprocesadores son CPU fabricados
con un número muy pequeño de IC; usualmente solo uno. El tamaño más
pequeño del CPU, como resultado de estar implementado en una simple pastilla,
significa tiempos de conmutación más rápidos debido a factores físicos como el
decrecimiento de la capacitancia parásita de las puertas. Esto ha permitido que los
microprocesadores síncronos tengan tiempos de reloj con un rango de decenas de
megahercios a varios gigahercios. Adicionalmente, como ha aumentado la
capacidad de construir transistores excesivamente pequeños en un IC, la
complejidad y el número de transistores en un simple CPU también se ha
incrementado dramáticamente. Esta tendencia ampliamente observada es descrita
por la ley de Moore, que ha demostrado hasta la fecha, ser una predicción
bastante exacta del crecimiento de la complejidad de los CPUs y otros IC.
Mientras que, en los pasados sesenta años han cambiado drásticamente, la
complejidad, el tamaño, la construcción y la forma general de la CPU, es notable
que el diseño y el funcionamiento básico no ha cambiado demasiado. Casi todos
los CPU comunes de hoy se pueden describir con precisión como máquinas de
programa almacenado de von Neumann. A medida que la ya mencionada ley del
Moore continúa manteniéndose verdadera, se han presentado preocupaciones
sobre los límites de la tecnología de transistor del circuito integrado. La
miniaturización extrema de puertas electrónicas está causando los efectos de
fenómenos que se vuelven mucho más significativos, como el electro migración y
el sub-umbral de pérdida. Estas nuevas preocupaciones están entre los muchos
factores que hacen a investigadores estudiar nuevos métodos de computación
como la computación cuántica, así como ampliar el uso de paralelismo y otros
métodos que extienden la utilidad del modelo clásico de Von Neumann.

83
1.2.2.1.2 Identificación y composición del CPU.
La CPU suele ser pequeña, con forma cuadrada, y tiene conectores y pines
metálicos. Por lo general, suele estar instalada en la placa base de un ordenador,
en un zócalo especial que puede estar en diferentes sitios dependiendo de la
placa base. El procesador no va soldado a la placa, por lo que puedes cambiar la
CPU de un ordenador por otra si quieres.
La CPU tiene un mínimo de un procesador o núcleo en su interior, un chip para
realizar los cálculos y operaciones. Al principio todos tenían sólo uno, pero con el
tiempo las CPU han ido aumentando el número de estos núcleos, y hay diferentes
maneras de llamarles dependiendo de este número.
Por ejemplo, si alguna vez has escuchado que un procesador es Dual-Core o de
doble núcleo, es porque tiene dos de estos chips en su interior. Luego
evolucionaron a cuatro, los Quad-Core, y se han ido aumentando con seis, ocho o
incluso 12 núcleos o más. Todos ellos se identifican por ese nombre que incluye la
palabra Core, pero antes se le pone una referencia al número de núcleos.
Que la CPU tenga varios procesadores o núcleos suele implicar que es capaz de
realizar más operaciones a la vez, por lo que su funcionamiento puede ser más
rápido y mejor. Sin embargo, esto no siempre quiere decir que cuantos más
núcleos haya más rápido será todo, ya que esto es algo que también depende de
cómo sean cada uno de los núcleos.
Por ejemplo, algunos procesadores de Intel y AMD, los dos principales fabricantes,
tienen tecnologías que les permiten ejecutar dos hilos de ejecución en un único
núcleo, que son las secuencias de instrucciones pertenecientes al sistema
operativo o aplicación. Los hilos de ejecución, o threads en inglés, son las
secuencias de instrucciones pertenecientes al sistema operativo o una aplicación.
¿Y esto qué quiere decir? Pues que en los procesadores que tengan esta
tecnología, cada núcleo físico puede actuar como si fuera dos núcleos virtuales, ya
que cada uno puede trabajar con dos hilos o secuencias de instrucciones
diferentes.
Y luego está la frecuencia del procesador,
que se marca en gigahercios. La
frecuencia, también llamada el reloj, es la
que marca el ritmo con el que trabaja el
procesador. Un hercio es una acción que
se repite una vez por segundo, y así
subiendo, hasta el Gigahercio, que son
1.000.000.000 de acciones por segundo.

84
El ritmo de trabajo de un procesador viene marcado por la capacidad de realizar
cuantas más acciones por segundo mejor, ya que cada operación de una
aplicación puede requerir varios ciclos de reloj o acciones.
En definitiva, ya no sólo importa el número de procesadores, sino cómo trabaja
cada uno. Cuantos más GHz tenga un procesador más rápido será. Esto,
simplificándolo al máximo, significa que, si tienes un procesador de cuatro núcleos
a 1 GHz, este será más lento que un procesador de dos núcleos a 2,5 GHz.

1.2.2.1.3 Operación del CPU


La operación fundamental de la mayoría de las CPU es ejecutar una secuencia de
instrucciones almacenadas llamadas “programa”. El programa es representado por
una serie de números que se mantienen en una cierta clase de memoria de
computadora. Hay cuatro pasos que casi todos las CPU de arquitectura de von
Neumann usan en su operación: fetch, decode, execute, y writeback, (leer,
decodificar, ejecutar y escribir).

85
Fetch
El primer paso, leer,
implica el recuperar una
instrucción, (que es
representada por un
número o una secuencia
de números), de la
memoria de programa. La
localización en la memoria
del programa es
determinada por un
contador de programa
(PC), que almacena un número que identifica la dirección de la siguiente
instrucción que se debe buscar. Después se lee una instrucción, el PC es
incrementado por la longitud de la instrucción en términos de unidades de
memoria de modo que contendrá la dirección de la siguiente instrucción en la
secuencia. Frecuentemente, la instrucción a ser leída debe ser recuperada de
memoria relativamente lenta, haciendo detener al CPU mientras espera que la
instrucción sea devuelta.
Decode
En el paso de decodificación, la instrucción es dividida en partes que tienen
significado para otras unidades de la CPU. La manera en que el valor de la
instrucción numérica es interpretado está definida por la arquitectura del conjunto
de instrucciones (el ISA) de la CPU. A menudo, un grupo de números en la
instrucción, llamados opcode, indica qué operación realizar. Las partes restantes
del número usualmente proporcionan información requerida para esa instrucción,
como, por ejemplo, operandos para una operación de adición. Tales operandos se
pueden dar como un valor constante (llamado valor inmediato), o como un lugar
para localizar un valor, que, según lo determinado por algún modo de dirección,
puede ser un registro o una dirección de memoria. En diseños más viejos las
unidades del CPU responsables de decodificar la instrucción eran dispositivos de
hardware fijos. Sin embargo, en CPUs e ISAs más abstractos y complicados, es
frecuentemente usado un microprograma para ayudar a traducir instrucciones en
varias señales de configuración para el CPU. Este microprograma es a veces
reescribible de tal manera que puede ser modificado para cambiar la manera en
que el CPU decodifica instrucciones incluso después de que haya sido fabricado.

86
Execute
Después de los pasos de lectura y decodificación, es llevado a cabo el paso de la
ejecución de la instrucción. Durante este paso, varias unidades del CPU son
conectadas de tal manera que ellas pueden realizar la operación deseada. Si, por
ejemplo, una operación de adición fue solicitada, una unidad aritmeticológica
(ALU) será conectada a un conjunto de entradas y un conjunto de salidas. Las
entradas proporcionan los números a ser sumados, y las salidas contendrán la
suma final. La ALU contiene la circuitería para realizar operaciones simples de
aritmética y lógica en las entradas, como adición y operaciones de bits (bitwise). Si
la operación de adición produce un resultado demasiado grande para poder ser
manejado por el CPU, también puede ser ajustada una bandera (flag) de
desbordamiento aritmético localizada en un registro de banderas (ver abajo la
sección sobre rango de números enteros).
Writeback
El paso final, la escritura, simplemente «escribe» los resultados del paso de
ejecución a una cierta forma de memoria. Muy a menudo, los resultados son
escritos a algún registro interno del CPU para acceso rápido por subsecuentes
instrucciones. En otros casos los resultados pueden ser escritos a una memoria
principal más lenta pero más barata y grande. Algunos tipos de instrucciones
manipulan el contador de programa en lugar de directamente producir datos de
resultado. Estas son llamadas generalmente "saltos" (jumps) y facilitan
comportamientos como bucles, la ejecución condicional de programas (con el uso
de saltos condicionales), y funciones en programas. Muchas instrucciones también
cambiarán el estado de dígitos en un registro de "banderas". Estas banderas
pueden ser usadas para influenciar cómo se comporta un programa, puesto que a
menudo indican el resultado de varias operaciones. Por ejemplo, un tipo de
instrucción de "comparación" considera dos valores y fija un número, en el registro
de banderas, de acuerdo con cuál es el mayor. Entonces, esta bandera puede ser
usada por una posterior instrucción de salto para determinar el flujo de programa.
Después de la ejecución de la instrucción y la escritura de los datos resultantes, el
proceso entero se repite con el siguiente ciclo de instrucción, normalmente
leyendo la siguiente instrucción en secuencia debido al valor incrementado en el
contador de programa. Si la instrucción completada era un salto, el contador de
programa será modificado para contener la dirección de la instrucción a la cual se
saltó, y la ejecución del programa continúa normalmente. En CPUs más complejos
que el descrito aquí, múltiples instrucciones pueden ser leídas, decodificadas, y
ejecutadas simultáneamente. Esta sección describe lo que es referido
generalmente como el "entubado RISC clásico" (Classic RISC pipeline), que de
hecho es bastante común entre los CPU simples usados en muchos dispositivos
electrónicos, a menudo llamados microcontroladores.

87
1.2.2.1.4 Diseño e implementación
Rango de Enteros
La manera en que un CPU representa
los números es una opción de diseño
que afecta las más básicas formas en
que el dispositivo funciona. Algunas de
las primeras calculadoras digitales
usaron, para representar números
internamente, un modelo eléctrico del
sistema de numeración decimal
común (base diez). Algunas otras
computadoras han usado sistemas de
numeración más exóticos como el
ternario (base tres). Casi todos los
CPU modernos representan los números en forma binaria, en donde cada dígito
es representado por una cierta cantidad física de dos valores, como un voltaje
"alto" o "bajo".
Con la representación numérica están relacionados el tamaño y la precisión de los
números que un CPU puede representar. En el caso de un CPU binario, un bit se
refiere a una posición significativa en los números con que trabaja un CPU. El
número de bits (o de posiciones numéricas, o dígitos) que un CPU usa para
representar los números, a menudo se llama "tamaño de la palabra", "ancho de
bits", "ancho de ruta de datos", o "precisión del número entero" cuando se ocupa
estrictamente de números enteros (en oposición a números de coma flotante).
Este número difiere entre las arquitecturas, y a menudo dentro de diferentes
unidades del mismo CPU. Por ejemplo, un CPU de 8 bits maneja un rango de
números que pueden ser representados por ocho dígitos binarios, cada dígito
teniendo dos valores posibles, y en combinación los 8 bits teniendo 28 o 256
números discretos. En efecto, el tamaño del número entero fija un límite de
hardware en el rango de números enteros que el software corre y que el CPU
puede usar directamente.
El rango del número entero también puede afectar el número de posiciones en
memoria que el CPU puede direccionar (localizar). Por ejemplo, si un CPU binario
utiliza 32 bits para representar una dirección de memoria, y cada dirección de
memoria representa a un octeto (8 bits), la cantidad máxima de memoria que el
CPU puede direccionar es 232 octetos, o 4 GB. Esta es una vista muy simple del
espacio de dirección del CPU, y muchos diseños modernos usan métodos de
dirección mucho más complejos como paginación para localizar más memoria que
su rango entero permitiría con un espacio de dirección plano.

88
Niveles más altos del rango de
números enteros requieren más
estructuras para manejar los dígitos
adicionales, y, por lo tanto, más
complejidad, tamaño, uso de energía, y
generalmente costo. Por ello, no es del
todo infrecuente, ver
microcontroladores de 4 y 8 bits usados
en aplicaciones modernas, aun cuando
están disponibles CPU con un rango
mucho más alto (de 16, 32, 64, e incluso 128 bits). Los microcontroladores más
simples son generalmente más baratos, usan menos energía, y por lo tanto
disipan menos calor. Todo esto pueden ser consideraciones de diseño importantes
para los dispositivos electrónicos. Sin embargo, en aplicaciones del extremo alto,
los beneficios producidos por el rango adicional, (más a menudo el espacio de
dirección adicional), son más significativos y con frecuencia afectan las opciones
del diseño. Para ganar algunas de las ventajas proporcionadas por las longitudes
de bits tanto más bajas, como más altas, muchas CPUs están diseñadas con
anchos de bit diferentes para diferentes unidades del dispositivo. Por ejemplo, el
IBM System/370 usó un CPU que fue sobre todo de 32 bits, pero usó precisión de
128 bits dentro de sus unidades de coma flotante para facilitar mayor exactitud y
rango de números de coma flotante. Muchos diseños posteriores de CPU usan
una mezcla de ancho de bits similar, especialmente cuando el procesador está
diseñado para usos de propósito general donde se requiere un razonable equilibrio
entre la capacidad de números enteros y de coma flotante.
Frecuencia de reloj
La mayoría de los CPU, y, de hecho, la mayoría de los dispositivos de lógica
secuencial, son de naturaleza síncrona. Es decir, están diseñados y operan en
función de una señal de sincronización. Esta señal, conocida como señal de reloj,
usualmente toma la forma de una onda cuadrada periódica. Calculando el tiempo
máximo en que las señales eléctricas pueden moverse en las varias bifurcaciones
de los muchos circuitos de un CPU, los diseñadores pueden seleccionar un
período apropiado para la señal del reloj.
Este período debe ser más largo que la cantidad de tiempo que toma a una señal
moverse, o propagarse en el peor de los casos. Al fijar el período del reloj a un
valor bastante mayor sobre el retardo de la propagación del peor caso, es posible
diseñar todo el CPU y la manera que mueve los datos alrededor de los "bordes"
de la subida y bajada de la señal del reloj. Esto tiene la ventaja de simplificar el
CPU significativamente, tanto en una perspectiva de diseño, como en una
perspectiva de cantidad de componentes. Sin embargo, esto también tiene la
desventaja que todo el CPU debe esperar por sus elementos más lentos, aun
cuando algunas unidades de esta son mucho más rápidas. Esta limitación ha sido
89
compensada en gran parte por varios métodos de aumentar el paralelismo del
CPU.
Sin embargo, las mejoras arquitectónicas por sí solas, no solucionan todas las
desventajas de CPUs globalmente síncronas. Por ejemplo, una señal de reloj está
sujeta a los retardos de cualquier otra señal eléctrica. Velocidades de reloj más
altas en CPUs cada vez más complejas hacen más difícil de mantener la señal del
reloj en fase (sincronizada) a través de toda la unidad. Esto ha conducido que
muchos CPU modernos requieran que se les proporcione múltiples señales de
reloj idénticas, para evitar retardar una sola señal lo suficiente como para hacer al
CPU funcionar incorrectamente. Otro importante problema cuando la velocidad del
reloj aumenta dramáticamente, es la cantidad de calor que es disipado por el CPU.
La señal del reloj cambia constantemente, provocando la conmutación de muchos
componentes (cambio de estado) sin importar si están siendo usados en ese
momento. En general, un componente que está cambiando de estado, usa más
energía que un elemento en un estado estático. Por lo tanto, a medida que la
velocidad del reloj aumenta, así lo hace también la disipación de calor, causando
que el CPU requiera soluciones de enfriamiento más efectivas.
Un método de tratar la conmutación de componentes innecesarios se llama el
clock gating, que implica apagar la señal del reloj a los componentes innecesarios,
efectivamente desactivándolos. Sin embargo, esto es frecuentemente considerado
como difícil de implementar y por lo tanto no ve uso común fuera de diseños de
muy baja potencia. Un notable diseño de CPU tardío que utiliza una amplia
compuerta del reloj para reducir los requisitos de potencia de la consola de
videojuegos es la de la Xbox 360 basada en la PowerPC de IBM. Otro método de
tratar algunos de los problemas de una señal global de reloj es la completa
remoción de esta. Mientras que quitar la señal global del reloj hace, de muchas
maneras, considerablemente más complejo el proceso del diseño, en comparación
con diseños síncronos similares, los diseños asincrónicos (o sin reloj) tienen
marcadas ventajas en el consumo de energía y la disipación de calor. Aunque se
trate de algo infrecuente, las CPUs completas se han construido sin utilizar una
señal global de reloj. Dos notables ejemplos de esto son el AMULET, que
implementa la arquitectura del ARM, y el MiniMIPS, compatible con el MIPS
R3000. En lugar de remover totalmente la señal del reloj, algunos diseños de CPU
permiten que ciertas unidades del dispositivo sean asincrónicas, como, por
ejemplo, usando ALU en conjunción con pipelining superescalar para alcanzar
algunas ganancias en el desempeño aritmético. Mientras que no esté
completamente claro si los diseños totalmente asincrónicos pueden
desempeñarse a un nivel comparable o mejor que sus contrapartes síncronas, es
evidente que por lo menos sobresalen en las operaciones matemáticas más
simples. Esto, combinado con sus excelentes características de consumo de
energía y disipación de calor, los hace muy adecuados para sistemas embebidos.

90
Paralelismo
La descripción de la operación básica de un CPU ofrecida en la sección anterior
describe la forma más simple que puede tomar un CPU. Este tipo de CPU,
usualmente referido como subescalar, opera sobre y ejecuta una sola instrucción
con una o dos piezas de datos a la vez.
Este proceso da lugar a una ineficacia inherente en CPU subescalares. Puesto
que solamente una instrucción es ejecutada a la vez, todo el CPU debe esperar
que esa instrucción se complete antes de proceder a la siguiente instrucción.
Como resultado, la CPU subescalar queda "paralizado" en instrucciones que
toman más de un ciclo de reloj para completar su ejecución. Incluso la adición de
una segunda unidad de ejecución (ver abajo) no mejora mucho el desempeño. En
lugar de un camino quedando congelado, ahora dos caminos se paralizan y
aumenta el número de transistores no usados. Este diseño, en donde los recursos
de ejecución de la CPU pueden operar con solamente una instrucción a la vez,
solo puede, posiblemente, alcanzar el desempeño escalar (una instrucción por
ciclo de reloj). Sin embargo, el desempeño casi siempre es subescalar (menos de
una instrucción por ciclo).
Las tentativas de alcanzar un
desempeño escalar y mejor han
resultado en una variedad de
metodologías de diseño que hacen
comportarse al CPU menos
linealmente y más en paralelo.
Cuando se refiere al paralelismo en los CPU, generalmente son usados dos
términos para clasificar estas técnicas de diseño.
El paralelismo a nivel de instrucción, en inglés instruction level parallelism (ILP),
busca aumentar la tasa en la cual las instrucciones son ejecutadas dentro de un
CPU, es decir, aumentar la utilización de los recursos de ejecución en la pastilla.
El paralelismo a nivel de hilo de ejecución, en inglés thread level parallelism (TLP),
que se propone incrementar el número de hilos (efectivamente programas
individuales) que un CPU pueda ejecutar simultáneamente.
Cada metodología se diferencia tanto en las maneras en las que están
implementadas, como en la efectividad relativa que producen en el aumento del
desempeño de la CPU para una aplicación.

91
ILP: Segmentación y arquitectura superescalar
Uno de los métodos más simples para lograr incrementar al paralelismo es
comenzar los primeros pasos de leer y decodificar la instrucción antes de que la
instrucción anterior haya terminado de ejecutarse. Esta es la forma más simple de
una técnica conocida como segmentación (instruction pipelining en inglés), y es
utilizada en casi todas los CPU de propósito general modernos. Al dividir la ruta de
ejecución en etapas discretas, la tubería permite que más de una instrucción sea
ejecutada en cualquier tiempo. Esta separación puede ser comparada a una línea
de ensamblaje, en la cual una instrucción es hecha más completa en cada etapa
hasta que sale de la tubería de ejecución y es retirada del mismo.
Sin embargo, la tubería introduce la posibilidad de una situación donde es
necesario terminar el resultado
de la operación anterior para
completar la operación siguiente;
una condición llamada a menudo
como conflicto de dependencia
de datos. Para hacer frente a
esto, debe ser tomado un cuidado adicional para comprobar estas clases de
condiciones, y si esto ocurre, se debe retrasar una porción de la tubería de
instrucción. Naturalmente, lograr esto requiere circuitería adicional, los
procesadores entubados son más complejos que los subescalares, pero no
mucho. Un procesador entubado puede llegar a ser casi completamente escalar,
solamente inhibido por las abruptas paradas de la tubería (una instrucción durando
más de un ciclo de reloj en una etapa).
Una mejora adicional sobre la idea del entubado de instrucción (instruction
pipelining) condujo al desarrollo de un método que disminuye incluso más el
tiempo ocioso de los componentes del CPU. Diseños que se dice que son
superescalares incluyen una larga tubería de instrucción y múltiples unidades de
ejecución idénticas. En una tubería super escalar, múltiples instrucciones son
leídas y pasadas a un despachador, que decide si las instrucciones se pueden o
no ejecutar en paralelo (simultáneamente). De ser así, son despachadas a las
unidades de ejecución disponibles, dando por resultado la capacidad para que
varias instrucciones sean ejecutadas simultáneamente. En general, cuantas más
instrucciones un CPU super escalar es capaz de despachar simultáneamente a las
unidades de ejecución en espera, más instrucciones serán completadas en un
ciclo dado.
La mayor parte de la dificultad en el diseño de una arquitectura super escalar de
CPU descansa en crear un despachador eficaz. El despachador necesita poder
determinar rápida y correctamente si las instrucciones pueden ejecutarse en
paralelo, tan bien como despacharlas de una manera que mantenga ocupadas
tantas unidades de ejecución como sea posible. Esto requiere que la tubería de

92
instrucción sea llenada tan a menudo como sea posible y se incrementa la
necesidad, en las arquitecturas super escalares, de cantidades significativas de
caché de CPU. Esto también crea técnicas para evitar peligros como la predicción
de bifurcación, ejecución especulativa, y la ejecución fuera de orden, cruciales
para mantener altos niveles de desempeño. Tratando de predecir qué rama (o
trayectoria) tomará una instrucción condicional, la CPU puede minimizar el número
de veces que todo el canal debe esperar hasta que se complete una instrucción
condicional. Frecuentemente, la ejecución especulativa proporciona aumentos
modestos del desempeño al ejecutar porciones de código que no puede ser
necesario después de completarse una operación condicional. Fuera de la orden
de ejecución cambia de algún modo el orden en que se ejecutan las instrucciones
para reducir retardos debido a las dependencias de datos. También en el caso de
instrucciones individuales de datos múltiples — los procesadores modernos, en
caso de que se hayan procesado una gran cantidad de datos del mismo tipo,
pueden desactivar partes de la tubería de manera que cuando se ejecuta una sola
sentencia muchas veces, la CPU salta la captación y decodifica fases y por lo
tanto aumenta considerablemente el rendimiento en ciertas ocasiones, sobre todo
en los motores de programas altamente monótonos como el software de creación
de video y procesamiento de fotografías.
En el caso donde una porción de la CPU es superescalar y una parte no lo es, la
parte que no es superescalar sufre en el desempeño debido a las paradas de
horario. El Intel Pentium original (P5) tenía dos ALUs superescalares que podían
aceptar, cada una, una instrucción por ciclo de reloj, pero su FPU no podía aceptar
una instrucción por ciclo de reloj. Así el P5 era superescalar en la parte de
números enteros, pero no era superescalar de números de coma (o punto
[decimal]) flotante. El sucesor a la arquitectura del Pentium de Intel, el P6, agregó
capacidades superescalares a sus funciones de coma flotante, y por lo tanto
produjo un significativo aumento en el desempeño de este tipo de instrucciones.
Tanto el diseño superescalar como el entubado simple aumentan el ILP de una
CPU al permitir a un solo procesador completar la ejecución de instrucciones en
ratios que sobrepasan una instrucción por ciclo (IPC). La mayoría de los modernos
diseños de CPU son por lo menos algo superescalares, y en la última década, casi
todos los diseños de CPU de propósito general son superescalares. En los últimos
años algo del énfasis en el diseño de computadores de alto ILP se ha movido del
hardware del CPU hacia su interfaz de software, o ISA. La estrategia very long
instruction word o VLIW, causa a algún ILP a ser implícito directamente por el
software, reduciendo la cantidad de trabajo que el CPU debe realizar para darle un
empuje significativo al ILP y por lo tanto reducir la complejidad del diseño.

93
Paralelismo a nivel de hilos
Otra estrategia para lograr el rendimiento es ejecutar varios programas o hilos en
paralelo. Esta área de investigación se conoce como computación paralela. En la
taxonomía de Flynn, esta estrategia se conoce como múltiples instrucciones de
varios datos o MIMD.
Una tecnología utilizada para este propósito fue el multiprocesamiento (MP). El
puntapié inicial de esta tecnología se conoce como multiprocesamiento simétrico
(SMP), donde un pequeño número de CPU comparten una visión coherente de su
sistema de memoria. En este esquema, cada CPU tiene un hardware adicional
para mantener una visión constantemente actualizada de la memoria. Para evitar
visitas rancias de la memoria, las CPU pueden cooperar en el mismo programa y
los programas pueden migrar desde una CPU a otra. Para aumentar el número de
CPUs que cooperan más allá de unas pocas, se introdujeron en 1990, los
esquemas tales como el non-uniform memory Access (acceso no uniforme a
memoria) (NUMA) y los protocolos de coherencia basados en directorios. Los
sistemas SMP se limitan a un pequeño número de CPU mientras que los sistemas
NUMA se han construido con miles de procesadores. Inicialmente, el
multiprocesamiento se construyó usando múltiples CPUs discretas y tableros para
implementar la interconexión entre los procesadores. Cuando los procesadores y
su interconexión hayan sido implementadas en un único chip de silicio, la
tecnología se conoce como un procesador multinúcleo.
Posteriormente, se reconoció que existía un paralelismo muy estrecho con un
único programa. Un único programa podría tener varios hilos (o funciones) que
podrían ser ejecutadas por separado o en paralelo. Algunos de los primeros
ejemplos de esta tecnología implementaban procesamiento de entrada/salida tales
como el acceso directo a memoria como un hilo separado del hilo computado. En
la década de 1970, se introdujo un enfoque más general a esta tecnología, cuando
se diseñaron sistemas para ejecutar múltiples hilos de computación en paralelo.
Esta tecnología se conoce como multihilo (MT).
Este enfoque se considera más rentable que la del multiprocesamiento, ya que
solo se replica un pequeño número de componentes dentro de una CPU para
soportar MT en oposición a la totalidad de la CPU en el caso de MP. En MT, las
unidades de ejecución y el sistema de memoria, incluyendo los cachés son
compartidos entre varios hilos. La desventaja de MT es que el soporte de
hardware para multihilo es más visible para el software que la de MP y por lo tanto
el software supervisor como el de los sistemas operativos tienen que someterse a
los cambios más grandes para apoyar MT. Un tipo de MT que se implementó es
conocido como bloque multihilo, donde se ejecuta un hilo hasta que se paralice
esperando que regresen los datos desde la memoria externa. En este esquema, la
CPU tendría luego que cambiar rápidamente a otro hilo que está listo para
funcionar, el interruptor muchas veces realiza un ciclo de reloj de la CPU, como la

94
tecnología UltraSPARC. Otro tipo de MT se denomina multihilo simultáneo, en
donde las instrucciones de múltiples hilos se ejecutan en paralelo dentro de un
ciclo de reloj de la CPU.
Paralelismo de datos
Un menos común pero cada vez más importante paradigma de CPU (y, de hecho,
de computación en general) trata con vectores. Los procesadores de los que se ha
hablado anteriormente son todos referidos como cierto tipo de dispositivo escalar.
Como implica su nombre, los procesadores vectoriales se ocupan de múltiples
piezas de datos en el contexto de una instrucción, esto contrasta con los
procesadores escalares, que tratan una pieza de dato por cada instrucción. Estos
dos esquemas de ocuparse de los datos son generalmente referidos
respectivamente como SISD (single instruction, single data) y SIMD (single
instruction, multiple data). La gran utilidad en crear CPU que se ocupen de
vectores de datos radica en la optimización de tareas que tienden a requerir la
misma operación, por ejemplo, una suma, o un producto escalar, a ser realizado
en un gran conjunto de datos. Algunos ejemplos clásicos de este tipo de tareas
son las aplicaciones multimedia (imágenes, vídeo, y sonido), así como muchos
tipos de tareas científicas y de ingeniería. Mientras que una CPU escalar debe
completar todo el proceso de leer, decodificar, y ejecutar cada instrucción y valor
en un conjunto de datos, una CPU vectorial puede realizar una simple operación
en un comparativamente grande conjunto de datos con una sola instrucción. Por
supuesto, esto es solamente posible cuando la aplicación tiende a requerir
muchos pasos que apliquen una operación a un conjunto grande de datos.

La mayoría de las primeras CPU vectoriales, como el Cray-1, se asociaron casi


exclusivamente a aplicaciones de investigación científica y criptografía. Sin
embargo, a medida que la multimedia se desplazó en gran parte a medios
digitales, ha llegado a ser significativa la necesidad de una cierta forma de SIMD
en CPUs de propósito general. Poco después de que comenzara a ser común
incluir unidades de coma flotante en procesadores de uso general, también
comenzaron a aparecer especificaciones e implementaciones de unidades de
ejecución SIMD para las CPU de uso general. Algunas de estas primeras
especificaciones SIMD, como el MMX de Intel, fueron solamente para números
enteros. Esto demostró ser un impedimento significativo para algunos
desarrolladores de software, ya que muchas de las aplicaciones que se
beneficiaban del SIMD trataban sobre todo con números de coma flotante.
Progresivamente, estos primeros diseños fueron refinados y rehechos en alguna
de las comunes, modernas especificaciones SIMD, que generalmente están
asociadas a un ISA. Algunos ejemplos modernos notables son el SSE de Intel y el
AltiVec relacionado con el PowerPC (también conocido como VMX).

95
1.2.2.5 Desempeño
El "desempeño" (performance) o la velocidad de un procesador depende de, entre
muchos otros factores, la velocidad del reloj (generalmente dada en múltiplos de
hertz) y las instrucciones por ciclo de reloj (IPC), que juntos son los factores para
las instrucciones por segundo (IPS) que el CPU puede rendir.Muchos reportes de
valores IPS han representado tasas de ejecución "pico" en secuencias de
instrucciones artificiales con pocas ramas, mientras que las cargas de trabajo
realistas consisten en una combinación de instrucciones y de aplicaciones,
algunas de las cuales requieren más tiempo para ejecutar que otras. El
rendimiento de la jerarquía de memoria también afecta en gran medida al
rendimiento del procesador, un tema muy poco tenido en cuenta en los cálculos de
MIPS. Debido a estos problemas, para este fin, se han desarrollado varios
exámenes estandarizados, tales como SPECint muchas veces llamados "puntos
de referencia" - para tratar de medir el rendimiento real efectivo en aplicaciones de
uso cotidiano.
El desempeño de procesamiento de las computadoras se incrementa utilizando
procesadores multinúcleo, que en esencia es conectar dos o más procesadores
individuales (llamados núcleos en este sentido) en un solo circuito integrado.
Idealmente, un procesador de doble núcleo sería casi dos veces tan potente como
un procesador de núcleo único. En la práctica, la ganancia de desempeño es
mucho menor, solo alrededor del 50%, debido a la implementación de algoritmos
imperfectos de software. El aumento del número de núcleos en un procesador (es
decir, dual-core, quad-core, etc) aumenta la carga de trabajo que se puede
manejar. Esto significa que el procesador ahora puede manejar numerosos
eventos asíncronos, interrupciones, etc que pueden tomar un "peaje" en la CPU
(Central Processing Unit) cuando se abruma. Estos núcleos pueden considerarse
como diferentes plantas en una planta de procesamiento, con el manejo de cada
piso una tarea diferente. En ocasiones, estos núcleos se manejan las mismas
tareas que los núcleos adyacentes a ellos si un solo núcleo no es suficiente para
manejar la información.
Debido a las capacidades específicas de las CPU
modernas, como HyperThreading y Uncore, que
implican el intercambio de recursos reales de la
CPU mientras que el objetivo de una mayor
utilización, supervisar los niveles de rendimiento y la
utilización del hardware se fue convirtiendo
gradualmente en una tarea más compleja. Como
respuesta, algunas CPUs implementan lógica de hardware adicional que controla
la utilización real de las diversas partes de una CPU y proporciona varios
contadores accesibles a software; un ejemplo es la tecnología Performance
Counter Monitor ("Monitor de contador de rendimiento") de Intel.

96
1.2.2.1.4 Función general del CPU
La CPU de tu ordenador es la que ejecuta una secuencia de instrucciones y
procesa los datos de estas. Estas secuencias de instrucciones son las que
realizan los programas que tienes instalados en el ordenador. Vamos, que son los
encargados de realizar las operaciones que necesitan los programas o
aplicaciones para realizar las
tareas que les pides que hagan.
Tú le dices a tu aplicación
fotográfica que aplique un
cálculo. Esta aplicación le da al
ordenador las instrucciones con
los cálculos o acciones que
necesita realizar para llevar a
cabo la tarea. Las instrucciones
se ponen en la RAM, donde son
recogidas por la CPU, que es la
que las lleva a cabo.
Para ello se siguen varios pasos diferentes. El primero es el de leer los datos e
instrucciones para realizar cada una de las tareas de las aplicaciones. Los datos
se decodifican y se dividen para que puedan ser entendidos por las diferentes
partes de la CPU, las cuales ejecutan las acciones, realizan los cálculos, y
escriben los resultados en la memoria principal, ya sea como resultado o para
utilizarlos después en otras operaciones.
Pero esta es una simplificación extrema, ya que estas funciones básicas del
procesador se realizan por cada instrucción, y cada programa puede requerir de
varias instrucciones para realizar una acción. Además, estas no se realizan en
orden y una detrás de otra, sino que el procesador puede estar trabajando con
muchas funciones a la vez para los diferentes programas activos.
Tienes que entender que todo en tu ordenador está representado por números,
por lo que la CPU es la encargada de recopilar y calcular las operaciones de estos
números. Con estas operaciones se realiza exactamente todo lo que haces en tu
ordenador, desde abrir el menú de inicio de Windows hasta ver un vídeo en
YouTube, todo requiere una serie de instrucciones y cálculos para poder
realizarse.
En los ordenadores modernos, la CPU no es la que lo realiza todo, ya que suelen
interferir otros componentes especializados, como por ejemplo puede ser la tarjeta
gráfica para todo lo relacionado con lo que ves en pantalla. También entra en
juego la memoria RAM para almacenar datos de rápido acceso, y el resto de los
componentes que hay dentro de tu ordenador.

97
En este enjambre de dispositivos y componentes, la CPU es el cerebro o el
director de orquesta, pues es quien lo organiza todo para que las tareas se hagan
donde toca y de la manera que deben realizarse para obtener los resultados
deseados.
La CPU no es más imprescindible que otros componentes básicos de un
ordenador, ya que este no funcionará sin fuente de alimentación u otros
componentes. Tampoco es el todo del que depende la ejecución de tareas, ya que
para todo lo relacionado con la producción de vídeos o la visualización de
videojuegos, también son necesarios tener una buena tarjeta gráfica o GPU y una
buena memoria RAM.
Pero de la velocidad y potencia de la CPU sí que puede depender lo rápido que
vaya un ordenador, y tener una buena o mala CPU afectará al rendimiento de tu
equipo.

1.2.2.2 Memoria principal


Memoria primaria (MP), memoria principal, memoria central o memoria interna es
la memoria de la computadora donde se almacenan temporalmente tanto los datos
como los programas que la unidad central de procesamiento (CPU) está
procesando o va a procesar en un determinado momento. Por su función, la MP
debe ser inseparable del microprocesador o CPU, con quien se comunica a través
del bus de datos y el bus de
direcciones. El ancho del bus
determina la capacidad que posea
el microprocesador para el
direccionamiento de direcciones
en memoria.
En algunas ocasiones suele
llamarse “memoria interna” porque
a diferencia de los dispositivos de
memoria secundaria, la MP no
puede extraerse tan fácilmente.
Esta clase de memoria es volátil,
es decir que cuando se corta la
energía eléctrica, se borra toda la información que estuviera almacenada en ella.
La MP es el núcleo del subsistema de memoria de un sistema informático, y posee
una menor capacidad de almacenamiento que la memoria secundaria, pero una
velocidad millones de veces superior. Cuanto mayor sea la cantidad de memoria,
mayor será la capacidad de almacenamiento de datos.

98
Cuando la CPU tiene que ejecutar un programa, primero lo coloca en la memoria y
después lo empieza a ejecutar. Lo mismo ocurre cuando necesita procesar una
serie de datos; antes de poder procesarlos los tiene que llevar a la memoria
principal.
Dentro de la memoria de acceso aleatorio (RAM) existe una clase de memoria
denominada memoria caché, que se caracteriza por ser más rápida que las
demás, permitiendo que el intercambio de información entre la CPU y la MP sea a
mayor velocidad.
La estructura de la memoria principal ha cambiado en la historia de las
computadoras. Desde los años 1980 es prevalentemente una unidad dividida en
celdas que se identifican mediante una dirección. Está formada por bloques de
circuitos integrados o chips capaces de almacenar, retener o "memorizar"
información digital, es decir, valores binarios; a dichos bloques tiene acceso el
microprocesador de la computadora.

1.2.2.2.1 Tipos
En las computadoras son utilizados dos tipos de memorias:
1. Memoria de Solo Lectura (Read Only Memory, ROM). Viene grabada de
fábrica con una serie de programas. El software de la ROM se divide en dos
partes:
• Rutina de arranque o POST (Power On Self Test, «Auto Diagnóstico de
Encendido»): realiza el chequeo de los componentes
de la computadora; por ejemplo, circuitos
controladores de video, de acceso a memoria, el
teclado, unidades de disco, etcétera. Se encarga de
determinar cuál es el hardware que está presente y de
la puesta a punto de la computadora. Mediante un
programa de configuración, el setup, lee una memoria
llamada CMOS RAM (RAM de Semiconductor de
Óxido Metálico). Esta puede mantener su contenido
durante varios años, aunque la computadora esté apagada, con muy poca
energía eléctrica suministrada por una batería, guarda la fecha, hora, la
memoria disponible, capacidad de disco rígido, si tiene disquetera o no. Se
encarga en el siguiente paso de realizar el arranque (booteo): lee un
registro de arranque BR (Boot Record) del disco duro o de otra unidad
(como CD, USB...), donde hay un programa que carga el sistema operativo
a la RAM. A continuación, cede el control a dicho sistema operativo y la
computadora queda listo para trabajar.

99
• Rutina del BIOS (Basic Input-Output System o «Sistema Básico de Entrada-
Salida»): permanece activa mientras se está usando la computadora.
Permite la activación de los periféricos de entrada/salida: teclado, monitor,
ratón, etcétera.
• Rutina Setup: etapa primaria en la que se pueden modificar opciones
básicas como el horario. Es indiferente al sistema operativo y se inicia antes
de iniciar sesión.
2. Memoria de Lectura-Escritura (Read-
Write Memory, RWM): es la memoria
del usuario que contiene de forma
temporal el programa, los datos y los
resultados que están siendo usados
por el usuario de la computadora. En
general es memoria volátil, pierde su contenido cuando se apaga la
computadora, es decir que mantiene los datos y resultados en tanto el
bloque reciba alimentación eléctrica, a excepción de la CMOS RAM.
Tanto la RAM como la ROM son circuitos integrados, llamados chips. El chip es
una pequeña pastilla de material semiconductor (silicio) que contiene múltiples
circuitos integrados, tales como transistores, entre otros dispositivos electrónicos,
con los que se realizan numerosas funciones en computadoras y dispositivos
electrónicos; que permiten, interrumpen o aumentan el paso de la corriente. Estos
chips están sobre una tarjeta o placa.
Es común llamar erróneamente a la memoria de lectura/escritura (RWM) como
memoria de acceso aleatorio (RAM), donde se confunde el tipo de memoria con la
forma de acceso a ella.
El contenido de las memorias no es otra cosa que dígitos binarios o bits (binary
digits), que se corresponden con dos estados lógicos: el 0 (cero) sin carga
eléctrica y el 1 (uno) con carga eléctrica. A cada uno de estos estados se le llama
bit, que es la unidad mínima de almacenamiento de datos.
Al bloque de MP, suele llamarse RAM, por ser este el tipo de chips de memoria
que conforman el bloque, pero se le asocia también el chip CMOS, que almacena
al programa BIOS del sistema, y los dispositivos periféricos de la memoria
secundaria (discos y otros periféricos), para conformar el subsistema de memoria
de la computadora.
La CPU direcciona las posiciones de la RAM para poder acceder a los datos
almacenados en ellas y para colocar los resultados de las operaciones.
Los bloques RWM, las ROM y las memorias secundarias conforman el subsistema
de memoria de una computadora.

100
1.2.2.3 Periféricos.
Periférico es la denominación genérica para designar al aparato o dispositivo
auxiliar e independiente conectado a la placa base de una computadora.
Se consideran periféricos a las unidades o dispositivos de hardware a través de
los cuales el ordenador se comunica con el exterior, y también a los sistemas que
almacenan o archivan la información, sirviendo de memoria auxiliar de la memoria
principal.
Se considera periférico a los dispositivos
que no pertenecen al núcleo fundamental
del ordenador, formado por la unidad
central de procesamiento (CPU) y la
memoria principal, permitan
realizar operaciones de
entrada/salida (E/S) complementarias al
proceso de datos que realiza la CPU.
Estas tres unidades básicas en un
ordenador son: CPU, memoria central y el
subsistema de E/S, están comunicadas
entre sí por tres buses o canales de comunicación:
• Direcciones, para seleccionar la dirección del dato o del periférico al que se
quiere acceder.
• Control, básicamente para seleccionar la operación a realizar sobre el dato
(principalmente lectura, escritura o modificación).
• Datos, por donde circulan los datos.

1.2.2.3.1 Clasificación de periféricos.


A pesar de que el término periférico implica a menudo el concepto de “adicional
pero no esencial”, muchos de ellos son elementos fundamentales para un sistema
informático. El monitor, es prácticamente el único periférico que la personas
considera imprescindible en cualquier computadora personal (no lo fue en los
primeros computadores) pero a pesar de ello, técnicamente no lo es.
El ratón o mouse es posiblemente el ejemplo más claro de este aspecto. A
principios de la década de 1990 no todas las computadoras personales incluían
este dispositivo. El sistema operativo MS-DOS, el más común en esa época, tenía
una interfaz de línea de comandos para lo que no era necesario el empleo de un
ratón, todo se hacía mediante comandos de texto.

101
Fue con la popularización de Finder, sistema
operativo de la Macintosh de Apple y la
posterior aparición de Windows cuando
el ratón comenzó a ser un elemento
imprescindible en cualquier hogar dotado de
una computadora personal. Actualmente
existen sistemas operativos con interfaz de
texto que pueden prescindir del ratón como,
por ejemplo, MS-DOS. El caso del teclado es
también emblemático, pues en las nuevas
computadoras tabletas, sistemas de juego o
teléfonos móviles con pantalla táctil, el teclado se emula en la pantalla. Inclusive
en casos de adaptaciones especiales los teclados dejan de ser el periférico de
entrada más utilizado, llegando a desaparecer en algunos casos por el uso de
programas reconocedores de voz.
Los periféricos pueden clasificarse en las siguientes categorías principales:
• Periféricos de entrada: captan y digitalizan los datos de ser necesario,
introducidos por el usuario o por otro dispositivo y los envían al ordenador
para ser procesados.

• Periféricos de salida: son dispositivos que muestran o proyectan


información hacia el exterior del ordenador. La mayoría son para informar,
alertar, comunicar, proyectar o dar al usuario cierta información, de la
misma forma se encargan de convertir los impulsos eléctricos en
información legible para el usuario. Sin embargo, no todos de este tipo de
periféricos es información para el usuario. Un ejemplo: Impresora.

• Periféricos de entrada/salida (E/S): sirven para la comunicación de la


computadora con el medio externo.

• Periféricos de almacenamiento: son los dispositivos que almacenan datos


e información. La memoria de acceso aleatorio no puede ser considerada
un periférico de almacenamiento, ya que su memoria es volátil y temporal.
Ejemplos: Disco duro, Memoria flash, Cinta magnética, Memoria
portátil, Disquete, Grabadora o lectora de: CD; DVD; Blu-ray; HD-DVD.

• Periféricos de comunicación: permiten la interacción entre dos o más


dispositivos.

102
1.2.2.3.2 Periféricos de entrada.

Los dispositivos periféricos de entrada son todos aquellos dispositivos que


permiten introducir datos o información en una computadora para que ésta los
procese u ordene. A pesar de que el término “periférico” implica a menudo el
concepto de “adicional pero no esencial”, muchos periféricos son elementos
fundamentales para un sistema informático. Sin embargo, al ser las fuentes
primordiales de entrada, se pueden considerar como extensiones en un sistema.

Un dispositivo de entrada es cualquier periférico del equipamiento de la


computadora, utilizado para proporcionar datos y señales de control a un sistema
de procesamiento de la información. Los periféricos de entrada y salida componen
la interfaz del hardware, por ejemplo entre un escáner o controlador seis grados
de libertad.
Ejemplos: teclado, ratón óptico, escáner, micrófono, palanca de
mando, gamepad o controlador de videojuego, que están conectados a la
computadora y son controlados por el microprocesador.
Un teclado es un dispositivo de interfaz humana, que se representa como una
disposición de botones o teclas. Cada botón o tecla, se puede utilizar para
ingresar a una computadora, cualquier carácter lingüístico o hacer un llamamiento
a una función particular de la computadora.
Los teclados tradicionales que se basan en utilizar botones pulsadores, aunque
variaciones más recientes son las teclas virtuales, o incluso los teclados de
proyección.
Un dispositivo de apuntado tipo, dispositivo de señalamiento/señalización
o dispositivo apuntador, es un dispositivo de interfaz humana que permite al
usuario introducir datos espaciales a una computadora.
En el caso de los mouses y las pantallas táctiles, esto usualmente se logra
mediante la detección de movimiento a través de una superficie física.

103
Algunos dispositivos permiten muchos grados continuos de libertad como entrada.
Estos se pueden utilizar como dispositivos señaladores, pero generalmente se
utilizan en formas que no impliquen apuntación a una ubicación en el espacio,
tales como el control de un ángulo de la cámara en aplicaciones 3D.
Generalmente, este tipo de dispositivos se utilizan en “entornos de realidad
virtual inmersiva asistidos por computadora” (Computer Assisted Virtual
Environment, CAVE) o “entorno virtual automático”, donde se requiere entradas y
registros de 6DOF.
Los dispositivos de entrada (tales como botones o pulsadores, y palancas de
mando) se pueden combinar en un único dispositivo físico que podría ser pensado
como un dispositivo compuesto.
Muchos dispositivos para videojuegos tienen controladores de esta manera.
Técnicamente los mouses son dispositivos compuestos (por el movimiento para
posicionar el cursor y pulsar algún botón para hacer clic), aunque generalmente,
los dispositivos compuestos se consideran que tienen más de dos formas de
entrada diferentes.

Ejemplos:
• Controlador de videojuego.
• Gamepad.
• Paddle (para videojuego).
• Volante (videojuegos).
• Wii Remote.

Los dispositivos de sonido (o audio) se utilizan para capturar sonidos. En algunos


casos, un dispositivo de salida de audio se puede utilizar como dispositivo de
entrada, con el fin de capturar el sonido producido.
Ejemplos de dispositivos de entrada de sonido:
• Micrófono.
• MIDI (Musical Instrument Digital Interface, interfaz digital de instrumentos
musicales).

104
1.2.2.3.3 Periféricos de Salida.
Un periférico o dispositivo de salida es un dispositivo electrónico capaz de
imprimir, mostrar o emitir señales que sean fácilmente interpretables por el
usuario. Básicamente, un dispositivo de salida tiene la función de mostrarle al
usuario operador de la computadora el resultado de las operaciones realizadas o
procesadas por la misma.
El periférico de salida la computadora se comunica y nos muestra el resultado de
nuestro trabajo, pudiendo observarlos fácilmente por intermedio del monitor o la
impresora, los dos dispositivos de salida más utilizados. Pero también existen
otros tipos de periférico de salida, que incluyen placas de audio, herramientas y
mucho más.
Monitores
El monitor de nuestra PC es sin
duda el dispositivo de salida
más importante del conjunto,
ya que sin él no podríamos
saber qué es lo que está
pasando en la computadora.
Este dispositivo de
visualización está constituido
por diversos puntos luminosos
denominados píxeles, siendo la
cantidad de píxeles lo que
determina la resolución gráfica
del mismo; cuanto mayor que sea la cantidad de píxeles, mayor es la resolución,
pues la misma imagen es reproducida en un número mayor de puntos mejorando
la visualización de los detalles.
Dejando de lado a los denominados monitores CRT o de tubo de rayos
catódicos, los cuales están completamente obsoletos pero que aún podemos ver
junto a algunas computadoras, existen dos tipos principales de monitor, ambos
con pantallas de panel plano, los monitores LED o LCD, lo que básicamente es lo
mismo salvo que cambia el tipo de retroiluminación.
También podrían considerarse como monitores los llamados proyectores, ya que
también poseen la capacidad de mostrar los datos que ofrece como resultado de
las operaciones la computadora.

105
Proyectores
Básicamente, un proyector es un dispositivo capaz de emitir las imágenes creadas
con la computadora, al igual que los monitores, pero con la ventaja de poder
hacerlo en cualquier superficie, siempre que esta sea plana y de color claro.
También es capaz de proyectar imágenes de gran tamaño con una excelente
calidad.
En el mercado existen varios tipos de proyectores, siendo los más comunes los
proyectores del tipo LCD y los picos proyectores, sin embargo, existe una tercera
categoría que comprende a los proyectores 3D. Cabe destacar que los
proyectores como periféricos de salida son muy comunes para mostrar todo tipo
de presentaciones, y su forma de conexión es muy similar también, ya que poseen
puertos del tipo VGA y HDMI.

Impresoras
La impresora es otro de los periféricos de salida más importantes, ya que fueron
diseñadas para poder perpetuar en papel los resultados o datos procesados por la
computadora. Al contrario que en el caso del monitor, la impresora no es un
dispositivo imprescindible, pero es de especial importancia cuando necesitamos
representar la información procesada por la PC en papel en forma de listados,
gráficos, dibujos, imágenes y demás.
En la actualidad existen varios tipos de impresoras, siendo las más utilizadas en el
momento las de láser y las impresoras multifunción, sobre todo en el ámbito de las
oficinas y el hogar. A partir de este punto vamos a conocer las principales
características de ambos tipos de impresoras, así como también lo básico acerca
de otros tipos de impresoras menos conocidas para la mayoría de los usuarios.

106
Audio: Placas de audio, parlantes y auriculares
Sin duda alguna, la tarjeta de sonido de una computadora, y los parlantes y
auriculares que la acompañan, son de suma importancia para el usuario, ya que
además de proveerle del placer de escuchar música mientras trabaja, son los
encargados de reproducir los variados sonidos y mensajes que emite la PC para
notificarnos de los acontecimientos que están sucediendo en la misma.

En este punto, los parlantes, junto a los auriculares son los dispositivos más
utilizados para escuchar música a través del reproductor de audio de nuestro
sistema operativo. En la actualidad podemos encontrar tarjetas de audio a las
cuales se le pueden conectar parlantes tanto estéreo, es decir 2 canales, izquierdo
y derecho, como multicanal, conformado por hasta 7 canales de audio distintos.
También existen tarjetas de audio externas, las cuales se conectan por medio de
un puerto USB, las cuales generalmente cuando es necesaria una buena
performance, como por ejemplo en el ámbito del Home Studio.
Cabe destacar que las placas de audio también pueden ser consideradas como un
dispositivo de entrada, ya que ofrecen conexiones para enchufar micrófonos y
otros tipos de accesorios para el ingreso de sonido a la computadora.
Cabe destacar que las placas de audio también pueden ser consideradas como un
dispositivo de entrada, ya que ofrecen conexiones para enchufar micrófonos y
otros tipos de accesorios para el ingreso de sonido a la computadora.

107
1.2.2.3.4 Periféricos de Almacenamiento.

Se encargan de guardar los datos de los que hace uso la CPU, para que ésta
pueda hacer uso de ellos una vez que han sido eliminados de la memoria
principal, ya que ésta se borra cada vez que se apaga la computadora. Pueden
ser internos, como un disco duro, o extraíbles, como un CD. Los más comunes
son:
• Disco duro
• Unidad de CD
• Unidad de DVD
• Unidad de Blu-ray Disc
• Memoria flash
• Memoria USB

Disco duro

En informática, un disco duro o disco rígido (en


inglés Hard Disk Drive, HDD) es un dispositivo de
almacenamiento de datos no volátil que emplea un
sistema de grabación magnética para almacenar
datos digitales. Se compone de uno o más platos o
discos rígidos, unidos por un mismo eje que gira a
gran velocidad dentro de una caja metálica
sellada. Sobre cada plato, y en cada una de sus
caras, se sitúa un cabezal de lectura/escritura que
flota sobre una delgada lámina de aire generada
por la rotación de los discos.

Unidad de CD

En informática, el término unidad de disco se refiere a aquel dispositivo o aparato


que realiza las operaciones de lectura y escritura de los medios o soportes de
almacenamiento con forma de disco, refiriéndose a las unidades de disco duro,
unidades de discos flexibles (disquetes: 5¼", 3½"), unidades de discos ópticos
(CD, DVD, HD DVD o Blu-ray) o unidades de discos magnetoópticos.

108
Unidad de DVD

El DVD es un disco óptico de almacenamiento de datos cuyo estándar surgió en


1995. Sus siglas corresponden con Digital Versatile Disc en inglés (disco versátil
digital traducido al español). En sus inicios, la v intermedia hacía referencia
a video (digital videodisk), debido a su desarrollo como reemplazo del formato
VHS para la distribución de vídeo a los hogares.

Unidad de Blu-ray Disc

Blu-ray disc también conocido como Blu-ray o BD, es un formato de disco óptico
de nueva generación de 12 cm de diámetro (igual que el CD y el DVD) para vídeo
de gran definición y almacenamiento de datos de alta densidad de 5 veces mejor
que el DVD. Su capacidad de almacenamiento llega a 25 GB por capa, aunque
Sony y Panasonic han desarrollado un nuevo índice de evaluación (i-MLSE) que
permitiría ampliar un 33% la cantidad de datos almacenados, desde 25 a 33,4 GB
por capa.

Memoria flash

La memoria flash es una tecnología de almacenamiento —derivada de la memoria


EEPROM— que permite la lecto-escritura de múltiples posiciones de memoria en
la misma operación. Gracias a ello, la tecnología flash, siempre mediante impulsos
eléctricos, permite velocidades de funcionamiento muy superiores frente a la
tecnología EEPROM primigenia, que sólo permitía actuar sobre una única celda
de memoria en cada operación de programación. Se trata de la tecnología
empleada en los dispositivos pendrive.
Memoria USB

Una memoria USB (de Universal Serial Bus),


es un dispositivo de almacenamiento que
utiliza una memoria flash para guardar
información. Se lo conoce también con el
nombre de unidad flash USB, lápiz de
memoria, lápiz USB, minidisco duro, unidad
de memoria, llave de memoria, entre otros.

109
1.2.2.3.5 Periféricos de Comunicación.
Los Periféricos de Comunicación son todos aquellos que permiten la interacción
entre dos o más ordenadores o entre un ordenador y algún otro dispositivo
periférico. Entre los Periféricos de Comunicación más utilizados están:

Tarjeta de red
Una tarjeta de red o NIC (network interface card), conocida también como
adaptadores de red es una placa que contiene circuitos integrados y que
generalmente se encuentran ubicadas en un slot o ranura de la caja que contiene
el procesador del ordenador. La tarjeta de red permite conectar, a través de una
red, el ordenador con otro dispositivo que se encuentre a su vez conectado a la
misma red. De esta forma, no sólo comunicamos dos o más ordenadores entre sí,
sino que también podemos compartir recursos. Existen distintos tipos de tarjetas
de red, los cuales son diseñados según el tipo de tecnología utilizada en la red
para la que fueron diseñados. Entre las tarjetas de red más comúnmente utilizadas
se encuentran las denominadas tipo ethernet las cuales se refiere a la tecnología
de redes de área local basada en los estándares IEEE 802.3. Las tarjetas de red
ethernet varían según la velocidad de transmisión que oscila desde algunos miles
de bites por segundo hasta el gigabyte. Otra característica fundamental de una
tarjeta de red es la denominada dirección física o MAC Address (Media Access
Control Address de dirección de control de acceso). Esto no es más que lo que
identifica unívocamente al dispositivo (ordenador o periférico) al que corresponde
la tarjeta de red, dentro de la red a la
que están interconectados. La manera
de visualizar la dirección física o MAC
Address en ordenadores cuyo sistema
operativo es Windows es ejecutando,
en una sesión de MSDOS, el
comando winipcfg (ipconfig /all en
Windows XP).

110
Tarjeta Wireless
Una tarjeta Wireless, que significa sin cables y conocida también como tarjeta wifi
(marca comercial de WIFI Alliance), es una tarjeta de red inalámbrica que permite
la comunicación con otros dispositivos sin el uso de un medio físico (cable). La
tarjeta Wireless utiliza una transmisión, a través del aire, basada en ondas de
radio electromagnéticas. La ventaja de utilizar redes inalámbricas versus las redes
tradicionales o con cables, es su menor costo y la movilidad, comodidad que la
ausencia de cables produce.
HUB
Hub o concentrador, es un dispositivo de comunicación cuya característica
fundamentas es la de servir de interlocutor entre los distintos dispositivos
conectados a la red. Un HUB es un dispositivo que contiene varios puertos de
comunicación y que cuando recibe por uno de los puertos información, la
retransmite al resto de los puertos. Existen algunos tipos de HUB inteligentes que
son capaces de monitorear el tráfico de cada puerto y que además permite que se
les configure. Existen diferentes tipos de concentradores según el tipo de red en la
que estén establecidos.

Switch
El Switch o conmutador, es un dispositivo de comunicación cuya funcionalidad es
la misma que la del Hub o concentrador, diferenciándose solamente en que éste
no comparte el ancho de banda.

111
1.2.3 Firmware.
El firmware o soporte lógico inalterable es un programa informático que establece
la lógica de más bajo nivel que controla los circuitos electrónicos de un dispositivo
de cualquier tipo. Está fuertemente integrado con la electrónica del dispositivo, es
el software que tiene directa interacción con el hardware, siendo así el encargado
de controlarlo para ejecutar correctamente las instrucciones externas. De hecho, el
firmware es uno de los tres principales pilares del diseño electrónico.
En resumen, un firmware es un software que maneja físicamente al hardware.
El programa BIOS de una computadora es un firmware cuyo propósito es activar
una máquina desde su encendido y preparar el entorno para cargar un sistema
operativo en la memoria RAM y disco duro.

El término fue acuñado por Ascher Opler en un artículo de la revista Datamation,


publicado en 1967.1 Originalmente, se refería al microshiva contenido en
un almacenamiento de control escribible (una área pequeña especializada de
memoria RAM), que definía e implementaba el conjunto de instrucciones del
computador. Si fuera necesario, el firmware podía ser recargado para especializar
o para modificar las instrucciones que podría ejecutar la Unidad Central de
Procesamiento (CPU). Según el uso original, el firmware contrastaba tanto con el
soporte físico (la CPU en sí misma) como con el software (las instrucciones
normales que se ejecutan en una CPU). El firmware no estaba compuesto
de instrucciones de máquina de la CPU, sino del microcódigo de nivel inferior
implicado en la implementación de las instrucciones de máquina que iría a ejecutar
la CPU. El firmware existía en el límite o frontera entre el hardware y el software,
por ello el término de firmware (que significa ‘software firme, fijo o sólido’).
Posteriormente, el término fue ampliado para incluir cualquier tipo de microcódigo,
ya fuera en RAM o ROM.

112
Más adelante, en el uso popular el término se amplió nuevamente, para denotar
cualquier cosa residente en ROM, incluyendo las instrucciones de máquina del
procesador para el BIOS, los cargadores de arranque, o aplicaciones
especializadas.
El firmware ha evolucionado para significar casi cualquier contenido programable
de un dispositivo de hardware, no solo código de máquina para un procesador,
sino también configuraciones y datos para los circuitos integrados para
aplicaciones específicas (ASIC), dispositivos de lógica programable, etc.
Hasta mediados de los años 1990 el procedimiento típico para actualizar
un firmware a una nueva versión era reemplazar el medio de almacenamiento que
contenía el firmware, usualmente un chip de memoria ROM enchufado en
un zócalo. Hoy en día este procedimiento no es habitual ya que los fabricantes
han añadido una nueva funcionalidad que permite grabar las nuevas instrucciones
en la misma memoria, haciendo de la actualización un proceso mucho más
cómodo y dinámico. Aun así, el proceso de actualización de un firmware hay que
realizarlo con mucho cuidado, ya que al ser un componente vital cualquier fallo
puede dejar al equipo inservible. Por ejemplo, un fallo de alimentación a mitad del
proceso de actualización evitaría la carga completa del código que gobierna el
equipo, quizá incluso la carga del código que se encarga de actualizar el firmware,
así que no podríamos actualizarlo de nuevo y por lo tanto el equipo dejaría de
funcionar.

Periféricos de computador
La mayoría de los periféricos del computador son de hecho computadores de
propósito especial. Mientras que los dispositivos externos tienen
el firmware almacenado internamente, las modernas tarjetas de los periféricos de
computadores típicamente tienen grandes partes de firmware que es cargado en
el arranque por el sistema huésped, pues esto es más flexible. Dicho hardware por
lo tanto puede no funcionar completamente hasta que el computador huésped le
haya cargado el firmware indispensable, a menudo por medio del driver de
dispositivo específico (o, más exactamente, por medio de un subsistema dentro

113
del paquete del driver de dispositivo). Los modernos drivers de dispositivo también
pueden exponer una interfaz directa de usuario para la configuración además de
las llamadas/interfaces del sistema operativo o de las Interfaces de programación
de aplicaciones (API).

Diferencia entre Firmware y Driver


Aunque son dos tipos de piezas de software que sirven para hacer funcionar un
dispositivo, el firmware y los drivers
son dos cosas totalmente diferentes.
El firmware es un código que va
siempre instalado en todos los
dispositivos en un módulo de memoria
aparte, mientras que el driver es un
código que no se instala en el
dispositivo en sí, sino en el sistema
operativo con el que algunos de ellos
funcionan.
Así pues, mientras que el firmware es el nivel más bajo de software que interactúa
con un hardware, los drivers suelen estar a niveles superiores instalándose en el
sistema operativo. Además, estos no están en una unidad de almacenamiento
aparte, sino en el mismo disco duro en el que esté instalado el sistema. Si
formateas el disco duro perderás los drivers, pero no el firmware.
Los firmwares te los vas a encontrar en todos los dispositivos electrónicos de tu
casa, mientras que los drivers van a estar siempre en dispositivos que tengan un
sistema operativo. Los drivers son también importantes para el correcto
funcionamiento de un teclado, un ratón en un ordenador o smartphone, mientras
que sin el firmware estos directamente o no se encenderían o no podrían hacer
sus funciones básicas.
Antes te hemos dicho que el firmware puede ser muy complicado de actualizar en
otros dispositivos. Sin embargo, como forman parte del sistema operativo, los
drivers sí que pueden ser actualizados fácilmente e incluso de forma automática
por un dispositivo.
Lo que sí que tienen en común es que los fabricantes tienen que asegurarse de
suministrar tanto el firmware como los drivers. Pero aquí también hay una
diferencia. El firmware es estrictamente necesario para que un dispositivo
funcione, pero sin los drivers oficiales del fabricante, algunos sistemas operativos
también tienen drivers genéricos. Estos pueden hacer funcionar un teclado o un
ratón, pero perdiendo parte de las funciones.

114
Retos del firmware en los PC
En algún sentido, los varios componentes del firmware son tan importantes como
el sistema operativo en un computador. Sin embargo, a diferencia de la mayoría
de los sistemas operativos modernos, el firmware tiene raramente un mecanismo
automático bien desarrollado para actualizarse a sí mismo para corregir los
problemas de funcionalidad que son detectados después de que la unidad es
despachada.

BIOS y firmware
El BIOS es bastante fácil de actualizar en un PC moderno; los dispositivos como
las tarjetas de vídeo o los módems confían en el firmware cargado dinámicamente
por un controlador de dispositivo y a menudo pueden así ser actualizados
transparentemente a través de los mecanismos de actualización del sistema
operativo. En contraste, el firmware en dispositivos de almacenamiento es
raramente actualizado; no están estandarizados los mecanismos para detectar las
versiones del firmware y actualizarlas. Estos dispositivos, por lo tanto, tienden a
tener un índice más alto de problemas de funcionalidad, comparados con otras
partes de un moderno sistema de computación.
Teléfonos móviles
La mayoría de los teléfonos móviles tienen una capacidad de firmware actualizable
por muchas de las mismas razones que se especificaron anteriormente, pero
algunos incluso pueden ser actualizados para mejorar la recepción o la calidad del
sonido.

115
Automóviles
Desde 1996 la mayoría de los automóviles han empleado una computadora a
bordo y varios sensores para detectar problemas mecánicos. Los vehículos
modernos también emplean sistemas controlados por computador, ABS y
sistemas de control de transmisión operados por computadora.
El conductor puede también recibir información “in-dash” de esta manera mientras
conduce, como, por ejemplo, lecturas en tiempo real de la economía del
combustible y de la presión del neumático. La mayoría del firmware del vehículo
puede ser actualizado en un distribuidor local autorizado.

Hackeo del firmware


A veces una nueva o modificada versión no oficial de firmware es creada por
terceros para proporcionar nuevas características o para abrir una funcionalidad
oculta. Los ejemplos incluyen Whited00r para iPhone e iPod Touch, Rockbox para
los reproductores de audio digital, CHDK y Magic Lantern para las cámaras
digitales de Canon, OpenWrt para los enrutadores inalámbricos,
el firmware de región libre para unidades de DVD, que no son de región libre con
el firmware oficial, así como muchos proyectos de homebrew para las consolas de
juego. Estos pueden a menudo abrir funcionalidad computacional en dispositivos
previamente limitados (ej. Ejecutar Doom en iPods).La mayoría de
los hacks de firmware son libres y también de código abierto.
Estos hacks usualmente utilizan la facilidad de actualización del firmware en
muchos dispositivos para instalarse o ejecutarse en ellos. Algunos, sin embargo,
deben recurrir a exploits para funcionar, porque el fabricante ha intentado bloquear
el hardware para evitar que utilicen código no autorizado.

116
Conclusiones
Se concluye que a lo largo de esta investigación nos hemos dado cuenta de que
tan avanzada esta la tecnología moderna, así como también los sistemas
operativos que son la base para todo dispositivo inteligente, por lo tanto, se ha
vuelto indispensable la actualización e innovación de estos sistemas.
La creación de nuevos sistemas de información es indispensable para satisfacer
las nuevas necesidades de las personas, actualizar dichas tecnologías es un reto
considerable para todos los expertos en esta área, por lo que el conocimiento en
esta rama de la tecnología requiere una constante actualización, con nuevos y
mejorados dispositivos.
También están en constante actualización y desarrollo nuevos sistemas
operativos con nuevas y mejores funciones que nos permiten realizar actividades
cotidianas más rápido y eficaz.
Es posible que dentro de algunos años seamos capaces de desarrollar nuevas
tecnologías con inteligencia artificial capaces de operar de manera autónoma, con
nuevos estándares de tecnología y con un gran procesamiento de información que
permitirá la no intervención humana.
Hacer un uso adecuado de estas tecnologías es responsabilidad de nosotros, así
como también comprender de mejor manera que nuevas aplicaciones se le
pueden dar a estas tecnologías, todos y cada uno de nosotros debemos estar
comprometidos con el uso responsable de estos sistemas.
A lo largo de esta investigación se han abordado temas de suma importancia que
nos ayudaron a comprender mejor los conceptos que se estarán analizando con
mayor profundidad y precisión en esta asignatura, todos los integrantes de este
equipo hemos analizado con detenimiento toda la información que contiene este
archivo y hemos reflexionado sobre el fuerte impacto que tiene el desarrollo de
nuevos sistemas de computación e información sobre futuras generaciones.

117
Bibliografía
• Software". En: Significados.com. Disponible
en: https://www.significados.com/software/ Consultado: 25 de agosto de
2021, 01:02 pm.
• varios . (2021). software. 25/08/2021, de Wikipedia Sitio web:
https://es.wikipedia.org/wiki/Software
• Marqués, P. (1996). El software educativo. J. Ferrés y P. Marqués,
Comunicación educativa y Nuevas Tecnologías, 119-144.
• desconocido . (2021). ¿Qué es un software? 25/08/2021, de software web
Sitio web: https://softwarewebsas.com/blog/software/30
• desconocido . (2015). evolución del software . 25/08/2021, de análisis de
sistemas Sitio web: https://analisisdesistemas1.wordpress.com/software/2-
evolucion-del-software/
• Felix Albornoz . (2021). sistema informático . 26/08/2021, de internet paso a
paso Sitio web: https://internetpasoapaso.com/sistema-informatico/
• desconocido . (27/04/2021). sistemas . 26/08/2021, de wikipedia Sitio web:
https://es.wikipedia.org/wiki/Sistema_inform%C3%A1tico
• "Sistema Informático". Autor: Julia Máxima Uriarte. Para: Caracteristicas.co.
Última edición: 29 de marzo de 2020. Disponible
en: https://www.caracteristicas.co/sistema-informatico/. Consultado: 26 de
agosto de 2021.
• varios . (2021). programación . 26/08/2021, de wikipedia Sitio web:
https://es.wikipedia.org/wiki/Programaci%C3%B3n
• Kernighan, B. W., & Ritchie, D. M. (1991). El lenguaje de programación C.
Pearson Educación.
• López, L. (2004). Programación estructurada. Un enfoque algorítmico (2a.
Edición). AlfaOmega.
• Morales, K. G. (2008). Fundamentos de programación.
• Llorens Largo, F., García-Peñalvo, F. J., Molero Prieto, X., & Vendrell Vidal,
E. (2017). La enseñanza de la informática, la programación y el
pensamiento computacional en los estudios preuniversitarios.
• desconocido . (2021). conceptos básicos (CPU). 28/08/2021, de Xataca
basics Sitio web: https://www.xataka.com/basics/cpu-que-como-sirve
• artículo de investigación . (2021). unidad central de procesamiento .
28/08/2021, de wikipedia Sitio web:
https://es.wikipedia.org/wiki/Unidad_central_de_procesamiento
• "CPU". Autor: Equipo editorial, Etecé. De: Argentina. Para: Concepto.de.
Disponible en: https://concepto.de/cpu/. Última edición: 5 de agosto de
2021. Consultado: 26 de agosto de 2021 - Fuente: https://concepto.de/cpu/

• desconocido . (2021). memoria principal . 28/08/2021, de Wikipedia Sitio


web: https://es.wikipedia.org/wiki/Memoria_principal

118
• "Software de aplicación". Autor: Equipo editorial, Etecé. De: Argentina.
Para: Concepto de. Disponible en: https://concepto.de/software-de-
aplicacion/. Última edición: 5 de agosto de 2021. Consultado: 26 de agosto
de 2021 - Fuente: https://concepto.de/software-de-aplicacion/

• desconocido . (2021). SOFTWARE DE APLICACION . 29/08/2021, de


concepto ABC Sitio web: https://conceptoabc.com/software-de-aplicacion/

• desconocido . (2021). que es el hardware . 29/08/2021, de profesional


review Sitio web:
https://www.profesionalreview.com/hardware/#%C2%BFQue_es_el_hardwa
re_cual_es_su_funcion_y_su_definicion

• desconocido . (2021). ordenador-hardware . 29/08/2021, de tutorials points


Sitio web:
https://www.tutorialspoint.com/es/computer_fundamentals/computer_hardw
are.htm

• desconocido . (2021). 30 ejemplos de software y hardware . 29/08/2021, de


ejemplos Sitio web: https://www.ejemplos.co/30-ejemplos-de-hardware-y-
software/

• varios . (2021). ¿cuál es la fuynbcion de un hardware en una computadora?


29/08/2021, de A.L.E.P.H Sitio web: https://aleph.org.mx/cual-es-la-funcion-
del-hardware-en-la-computadora

• tecnología e innovación . (2021). que es hardware. 2021, de


SIGNIFICADOS Sitio web: https://www.significados.com/hardware/

• desconocido . (2021). hardware: definición y para qué sirve . 29/08/2021, de


PROFESIONAL REVIEW Sitio web:
https://www.profesionalreview.com/hardware/

• Micron technology, inc. (2017). hardware de computadora . 28/09/2021, de


crucial micron Sitio web: https://www.crucial.mx/articles/pc-builders/what-is-
computer-hardware

• DESCONOCIDO . (2021). ¿qué es el hardware? 28/08/2021, de APEN 30.


28/09/2021, Sitio web: https://www.crucial.mx/articles/pc-builders/what-is-
computer-hardware

119
• Ceupe, B. (2020, 19 mayo). ¿Qué son las tecnologías de la información?
Ceupe. https://www.ceupe.com/blog/que-son-las-tecnologias-de-la-
informacion.html

• Publicador Aliat. (2021, 15 junio). ¿Qué es TI?: conoce este concepto y sus
alcances. Mundo ETAC. https://etac.edu.mx/blog-etac/index.php/que-es-ti/

120

También podría gustarte