Hardware (pronunciación AFI: /corresponde a todas las partes físicas y tangibles de un computador, sus componentes eléctricos, electrónicos, electromecánicos y mecánicos; contrariamente al soporte lógico intangible que es llamado software. El término proviene del inglés1 y es definido por la RAE como el "Conjunto de los componentes que integran la parte material de una computadora" 2 , sin embargo, es usual que sea utilizado en una forma más amplia, generalmente para describir componentes físicos de una tecnología, así el hardware puede ser de un equipo militar importante, un equipo electrónico, un equipo informático o un robot. En informática también se aplica a los periféricos de una computadora tales como el disco duro, CD-ROM, disquetera (floppy), etc. En dicho conjunto se incluyen los dispositivos electrónicos y electromecánicos, circuitos, cables, armarios o cajas, periféricos de todo tipo y cualquier otro elemento físico involucrado.
El hardware se refiere a todos los componentes físicos (que se pueden tocar), en el caso de una computadora personal serían los discos, unidades de disco, monitor, teclado, la placa base, el microprocesador, etc.. En cambio, el software es intangible, existe como información, ideas, conceptos, símbolos, se podría decir: lo que no tiene materia. Una buena metáfora sería un libro: las tapas, hojas y la tinta son el hardware, mientras que el contenido en las palabras, oraciones, párrafos (información) son el software. Como analogía: Una computadora sin software sería tan inútil como un libro con páginas en blanco.
Tipos de hardware Hardware de un servidor El Hardware se puede clasificar en dos categorías importantes: por un lado, el básico, que refiere a los componentes indispensables para otorgar la funcionalidad mínima a una PC, y por otro lado, el "Hardware complementario", que, como su nombre indica, es utilizado para realizar funciones específicas (más allá de las básicas) no estrictamente necesarias para el funcionamiento de la computadora. Las computadoras son aparatos electrónicos capaces de interpretar y ejecutar instrucciones programadas, que consisten básicamente en operaciones aritmético-lógicas y de entrada/salida; reciben las entradas (datos para su procesamiento), producen salidas (resultados del procesamiento), procesan y almacenan información. Todo sistema informático tiene, al menos, componentes hardware dedicados a alguna de estas funciones:
Periféricos de entrada (E) Teclado para PC inalámbrico Ratón o Mouse común, alámbrica y con rueda Son los que permiten ingresar información. Entre ellos podemos mencionar: teclado, Mouse o ratón , escáner, micrófono, cámara Web , lectores ópticos de código de barras, Joystick, lectora de CD o DVD (sólo lectoras), placas de adquisición/conversión de datos, etc.
Periféricos de salida (S) Son aquellos que permiten emitir o dar salida a la información resultante de las operaciones realizadas por la CPU (procesamiento). En este grupo se puede mencionar: monitores clásicos, impresoras, altavoces, etc.
Entrada: Periféricos de Entrada (E) Salida: Periféricos de salida (S) Entrada/Salida: Periféricos mixtos (E/S) Memorias Unidad Central de Procesamiento (CPU)
Desde un punto de vista general, un dispositivo de entrada provee un medio para el ingreso de información, datos y programas (lectura); un dispositivo de salida brinda el medio para registrar la información y datos de salida (escritura); la memoria otorga capacidad de almacenamiento, temporal o permanente (almacenamiento); y la CPU da la capacidad de procesamiento (transformación). Un periférico mixto es aquél que puede ser usado como entrada o salida, un buen ejemplo de éste es un disco rígido (en él se lee y se graba información).
Periféricos mixtos (E/S) Son aquellos dispositivos que pueden operar de ambas formas, como entrada o como salida. Típicamente, se puede mencionar como periféricos de Entrada/Salida a: discos rígidos, disquetes, unidades de cinta magnética, lector-grabadoras de CD/DVD, discos ZIP, etc. También entran en este rango, con sutil diferencia, otras unidades, tales como: Memoria flash, tarjetas de red, módems, placas de captura/salida de vídeo, etc. Si bien, puede ponerse al pendrive o Memoria flash o Memoria USB en la categoría de memorias, normalmente se las utiliza como dispositivos de almacenamiento masivo; y éstos son todos de categoría E/S. Los dispositivos de almacenamiento masivo también son conocidos como "Memorias Auxiliares". La Pantalla Táctil (no el monitor clásico) es un dispositivo que se considera mixto, ya que además de mostrar información y datos (salida) pueden actuar como un dispositivo de entrada de datos (reemplazando, por ejemplo, las funciones del Mouse).
El software es una producción inmaterial del cerebro humano y tal vez una de las estructuras más complicadas que la humanidad conoce. De hecho, los expertos en computación aún no entienden del todo cómo funciona, su comportamiento, sus paradojas y sus límites.1 Básicamente, el software es un plan de funcionamiento para un tipo especial de máquina, una máquina ``virtual'' o ``abstracta''. Una vez escrito mediante algún lenguaje de programación, el software se hace funcionar en ordenadores, que temporalmente se convierten en esa máquina para la que el programa sirve de plan. El software permite poner en relación al ser humano y a la máquina y también a las máquinas entre sí. Sin ese conjunto de instrucciones programadas, los ordenadores serían objetos inertes, como cajas de zapatos, sin capacidad siquiera para mostrar algo en la pantalla.
La palabra «software» se refiere al equipamiento lógico o soporte lógico de un computador digital, comprende el conjunto de los componentes lógicos necesarios para hacer posible la realización de una tarea específica, en contraposición a los componentes físicos del sistema ( hardware).
Fig. 1 - Exposición de interfaces y ventanas de Programas vistas en una pantalla Tales componentes lógicos incluyen, entre otros, aplicaciones informáticas tales como procesador de textos, que permite al usuario realizar todas las tareas concernientes a edición de textos; software de sistema, tal como un sistema operativo, el que, básicamente, permite al resto de los programas funcionar adecuadamente, facilitando la interacción con los componentes físicos y el resto de las aplicaciones, también provee una interfase ante el usuario. En la figura 1 se muestra uno o más software en ejecución, en este caso con ventanas, iconos y menúes que componen las interfaces gráficas, que comunican el ordenador con el usuario y le permiten interactuar. Software es el producto en la Ingeniería de Software.
Software de sistema: Es aquel que permite que el hardware funcione. Su objetivo es desvincular adecuadamente al programador de los detalles del computador 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 y utilidades de apoyo que permiten su mantenimiento. Incluye entre otros: ◦ Sistemas operativos ◦ Controladores de dispositivo ◦ Herramientas de diagnóstico ◦ Herramientas de Corrección y Optimización ◦ Servidores ◦ Utilidades
Software de programación: Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluye entre otros: Editores de texto Compiladores Intérpretes Enlazadores Depuradores Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc.. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).
Software de aplicación: 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 otros: Aplicaciones de Sistema de control y automatización industrial Aplicaciones ofimáticas Software educativo Software médico Software de Cálculo Numérico Software de Diseño Asistido (CAD) Software de Control Numérico (CAM)
Durante esta la 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.
Es común pensar que la etapa de programación o codificación (algunos la llaman implementación) es la que insume la mayor parte del trabajo de desarrollo del software; sin embargo, esto puede ser relativo (y generalmente aplicable a sistemas de pequeño porte) ya que las etapas previas son cruciales, críticas y pueden llevar bastante más tiempo. Se suele hacer estimaciones de un 30% del tiempo total insumido en la programación, pero esta cifra no es consistente ya que depende en gran medida de las características del sistema, su criticidad y el lenguaje de programación elegido. En tanto menor es el nivel del lenguaje mayor será el tiempo de programación requerido, así por ejemplo se tardaría más tiempo en codificar un algoritmo en Assembly que el mismo programado en lenguaje C.
Mientras se programa la aplicación, sistema, o software en general, se realizan también tareas de depuración, esto es la labor de ir liberando al código de los errores factibles de ser hallados en esta fase (de semántica, sintáctica y lógica). Hay una suerte de solapamiento con la fase siguiente, ya que para depurar la lógica es necesario realizar pruebas unitarias, normalmente con datos de prueba; claro es que no todos los errores serán encontrados sólo en la etapa de programación, habrán otros que se encontrarán durante las etapas subsiguientes. La aparición de algún error funcional (mala respuesta a los requerimientos) eventualmente puede llevar a retornar a la fase de diseño antes de continuar la codificación.