Un sistema computacional está conformado de dos partes básicas: el hardware y el software. El hardware es la parte física, siendo éste el equipo de cómputo: la unidad central de proceso (CPU, por sus siglas en inglés), el teclado, las unidades de disco, el lector de CD, el monitor, etcétera.
El software es la parte lógica de dicho sistema computacional y, por tanto, intangible (no física). Así, el software son las instrucciones electrónicas que van a indicar a la computadora qué es lo que tiene que hacer. Por ello, se puede decir que el software son los programas usados para dirigir las funciones de un sistema de computación o un hardware (la parte física del sistema computacional). En el ámbito del usuario común de un sistema computacional, el software es conocido como programas de computadora.
Como concepto general, el software puede dividirse en varias categorías, basadas en el tipo de trabajo o función que realiza.
Las categorías primarias de software son:
Sistema operativo
Llevar a cabo la interacción y comunicación entre una máquina basada completamente en electrónica como la computadora y un ser humano, ser con miles de años de evolución, obviamente, no parece ser una tarea fácil. Por ello, desde sus orígenes los primeros diseñadores y creadores de estas máquinas se dieron cuenta de que necesitaban algo más que permitiera la fácil interpretación de las instrucciones, así como de los resultados obtenidos, para lo cual crearon un programa básico que toda computadora debe cargar primero en su memoria para poderse comunicar y comprender con un ser humano.
Así nació el Sistema Operativo, programa básico que se carga al momento de encender la máquina y sirve de intérprete entre el frío lenguaje de la máquina electrónica y el complejo idioma humano, el Sistema operativo es el gobierno interno de la máquina.
Existen varios sistemas operativos para diferentes necesidades y tipos de computadoras, a continuación se mencionan los siguientes:
El sistema lo forman el núcleo del sistema (kernel) más un gran número de programas/bibliotecas que hacen posible su utilización. Muchos de estos programas y bibliotecas han sido posibles gracias al proyecto GNU, por esto mismo, muchos llaman a Linux, GNU/Linux, para resaltar que el sistema lo forman tanto el núcleo como gran parte del software producido por el proyecto GNU.
Linux se distribuye bajo la GNU (General Public License) por lo tanto, el código fuente tiene que estar siempre accesible y cualquier modificación o trabajo derivado debe tener esta licencia.
El sistema ha sido diseñado y programado por multitud de programadores alrededor del mundo. El núcleo del sistema sigue en continuo desarrollo bajo la coordinación de Linus Torvalds, la persona de la que partió la idea de este proyecto, a principios de la década de los noventa. Hoy en día, grandes compañías, como IBM, SUN, HP, Novell y RedHat, entre otras muchas, aportan a Linux grandes ayudas tanto económicas como de código.
Día a día, más y más programas y aplicaciones están disponibles para este sistema, y la calidad de los mismos aumenta de versión a versión. La gran mayoría de los mismos vienen acompañados del código fuente y se distribuyen generalmente bajo los términos de licencia de la GNU General Public License.
Más y más casas de software comercial distribuyen sus productos para Linux y la presencia del mismo en empresas aumenta constantemente por la excelente relación calidad-precio que se consigue con Linux
Cada usuario de este sistema, básicamente, dispone de una pantalla y de un teclado (terminal), mientras que la información se procesa y almacena en la Unidad Central, que es de uso común. Varios terminales conectados a una Unidad Central constituyen una red. De esta manera, nos podremos intercomunicar con el resto de los usuarios.
La persona responsable del control de la red es el Administrador o Super-Usuario. Para poder tener acceso a la red, el Administrador, debe proporcionar a cada usuario un identificador (login) de entrada y una palabra de paso (password) que serán el indicativo de su número de cuenta.
El sistema operativo tiene tres grandes funciones: coordina y manipula el hardware del ordenador o computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse; organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas, y gestiona los errores de hardware y la pérdida de datos. Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso importante es la interpretación de los comandos que permiten al usuario comunicarse con el ordenador. Algunos intérpretes de instrucciones están basados en texto y exigen que las instrucciones sean tecleadas. Otros están basados en gráficos, y permiten al usuario comunicarse, señalando y haciendo clic en un icono. Por lo general, los intérpretes basados en gráficos son más sencillos de utilizar (como ejemplo, mencionamos el sistema operativo Windows).
Los sistemas operativos pueden ser de tarea única o multitarea. Los sistemas operativos de tarea única, más primitivos, sólo pueden manejar un proceso en cada momento. Por ejemplo, cuando la computadora está imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión.
Todos los sistemas operativos modernos son multitarea y pueden ejecutar varios procesos simultáneamente. En la mayoría de los computadores sólo hay una CPU; un sistema operativo multitarea crea la ilusión de que varios procesos se ejecutan simultáneamente en la CPU. El mecanismo que se emplea más a menudo para lograr esta ilusión es la multitarea por segmentación de tiempos, en la que cada proceso se ejecuta individualmente durante un período determinado. Si el proceso no finaliza en el tiempo asignado, se suspende y se ejecuta otro proceso. Este intercambio de procesos se denomina conmutación de contexto. El sistema operativo se encarga de controlar el estado de los procesos suspendidos. También cuenta con un mecanismo llamado planificador que determina el siguiente proceso que debe ejecutarse. El planificador ejecuta los procesos, basándose en su prioridad para minimizar el retraso percibido por el usuario. Los procesos parecen efectuarse simultáneamente por la alta velocidad del cambio de contexto.
Software de aplicación
Es un programa informático diseñado para facilitar al usuario la realización de un determinado tipo de trabajo. Posee ciertas características que le diferencia de un sistema operativo (que hace funcionar al computador), de una utilidad (que realiza tareas de mantenimiento o de uso general) y de un lenguaje (con el cual se crean los programas informáticos). Suele resultar una solución informática para la automatización de ciertas tareas complicadas, como puede ser la contabilidad o la gestión de un almacén. Tareas que, a su vez, suelen ser repetitivas o de uso frecuente, por lo que una vez desarrolladas, se pueden aplicar en varias ocasiones e incluso en varios y distintos escenarios.
Por otro lado, hay ciertas aplicaciones desarrolladas 'a medida'; éstas son desarrolladas por expertos informáticos para resolver la problemática específica de un escenario, por ejemplo, en una empresa, para señalar un problema específico, su inventario que presenta características no comunes a otras empresas. Por esto, suelen ofrecer una gran potencia, ya que están exclusivamente diseñadas para resolver un problema específico. Otros, llamados paquetes integrados de software, ofrecen menos potencia, pero a cambio incluyen varias aplicaciones, como un programa procesador de textos, de hoja de cálculo y de base de datos y que atienden a problemas o necesidades informáticas comunes en la gran mayoría de las empresas.
Lenguaje de programación del software
Un lenguaje usado para escribir instrucciones para la computadora. Permite que el programador exprese el procesamiento de datos de una forma simbólica, sin tener en cuenta los detalles específicos de máquina. Las sentencias que escribe el programador se denominan lenguaje fuente, y son traducidas al lenguaje de máquina de la computadora por medio de programas llamados ensambladores, compiladores e intérpretes. Por ejemplo, cuando un programador escribe multiplicar horas por tarifa, el verbo MULTIPLICAR debe traducirse a un código que signifique multiplicación; y HORAS y TARIFA deben convertirse en direcciones de memoria donde están verdaderamente almacenados esos elementos.
Como los lenguajes humanos, cada lenguaje de programación tiene su propia gramática y sintaxis. Existen muchos dialectos del mismo lenguaje, y cada dialecto requiere su propio sistema de traducción. El ANSI (American National Standards Institute - Instituto Americano de Estándares Nacionales) ha establecido estándares para muchos lenguajes de programación, y cada lenguaje del que se dice que se adhiere a las normas ANSI, es un lenguaje libre de dialectos. Sin embargo, la inclusión de nuevas características en los estándares ANSI puede llevar años, y, como resultado de ello, emergerán siempre nuevos dialectos.
Los lenguajes de programación pueden englobarse en dos grandes categorías: lenguajes ensambladores de bajo nivel y lenguajes de alto nivel. Los lenguajes ensambladores están disponibles para cada familia de CPU, y traducen una línea de código en una instrucción de máquina. Los lenguajes de alto nivel traducen sentencias de programación en varias instrucciones de máquina.
Vistos a muy bajo nivel, los microprocesadores procesan exclusivamente señales electrónicas binarias. Dar una instrucción a un microprocesador supone en realidad enviar series de unos y ceros espaciadas en el tiempo de una forma determinada. Esta secuencia de señales se denomina código máquina. El código representa normalmente datos y números e instrucciones para manipularlos. Un modo más fácil de comprender el código máquina es dando a cada instrucción un mnemónico, como por ejemplo, STORE, ADD o JUMP. Esta abstracción da como resultado el ensamblador, un lenguaje de muy bajo nivel que es específico de cada microprocesador.
Los lenguajes de bajo nivel permiten crear programas muy rápidos, pero que son, a menudo, difíciles de aprender. Más importante es el hecho de que los programas escritos en un bajo nivel son prácticamente específicos para cada procesador. Si se quiere ejecutar el programa en otra máquina con otra tecnología, será necesario reescribir el programa desde el principio.
Clasificación del Software de acuerdo con el método de distribución:
Además de estas categorías basadas en tareas, varios tipos de software se describen apoyándose en su método de distribución. Entre éstos se encuentran los así llamados programas enlatados, el software desarrollado por compañías y vendido principalmente por distribuidores, el freeware y software de dominio público, que se ofrece sin costo alguno, el shareware, que es similar al freeware, pero suele conllevar una pequeña tasa a pagar por los usuarios que lo utilicen profesionalmente y, por último, el infame vapourware, que es software que no llega a presentarse o que aparece mucho después de lo prometido.
Software como Producto vs. Software como Servicio documento PDF