lunes, 4 de agosto de 2008

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). Son las instrucciones responsables de que el hardware (la máquina) realice su tarea. Como concepto general.
Probablemente la definición más formal de software es 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.
Bajo esta definición, el concepto de software va más allá de los programas de cómputo en sus distintos estados: código fuente, binario o ejecutable; también su documentación, datos a procesar e información de usuario es 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 las ciencias de la computación y la ingeniería de software, el software es toda la información procesada por los sistemas informáticos: programas y datos. El concepto de leer diferentes secuencias de instrucciones 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 vez primera por Alan Turing en su ensayo de 1936, "Los números computables", con una aplicación al problema de decisión. El software se divide en:

codigo fuente


El código fuente de un programa informático (o software) es un conjunto de líneas de texto que son las instrucciones que debe seguir la computadora para ejecutar dicho programa. Por tanto, en el código fuente de un programa está descrito por completo su funcionamiento.
El código fuente de un programa está escrito por un programador en algún lenguaje de programación, pero en este primer estado no es directamente ejecutable por la computadora, sino que debe ser traducido a otro lenguaje (el lenguaje máquina o código objeto) que sí pueda ser ejecutado por el hardware de la computadora. Para esta traducción se usan los llamados compiladores, ensambladores, intérpretes y otros sistemas de traducción.
El área de la informática que se dedica a la creación de programas y, por tanto a la creación de su código fuente, es la programación.

codigo binario


Un código binario es cualquier código formado por dos símbolos que pueden ser combinados para codificar información. Por lo general, los dos símbolos empleados son el 0 y el 1. Sin embargo, podría usarse cualquier par de símbolos. A cada uno de los dígitos (dígitos binarios) que forman las combinaciones del código se los denomina bits.
La importancia de los códigos binarios se pone de manifiesto en su mayor exponente en informática y telecomunicaciones, donde son usados para codificar, tratar y transmitir la información. Además, al plantearse los problemas de la transmisión de la información, surgen nuevos códigos binarios que no sólo permiten codificar la información, sino también conocer si la transmisión de los datos se ha producido correctamente e incluso, en ocasiones, corregir posibles errores.
Código binario natural
El código binario natural (más conocido simplemente como código binario) se corresponde con el sistema de numeración binario. En él se dispone de dos símbolos con los que se pueden representar infinitas combinaciones numéricas que tienen su equivalente decimal. Generalmente, los símbolos que se usan son el 0 y el 1.
El sistema binario es un sistema de numeración posicional ponderado de base 2. Por tanto, como se ha dicho, se emplean dos símbolos y sirve para representar cantidades numéricas. A cada dígito de una combinación se le llama bit. Al ser la base igual a 2, la representación decimal de un número binario se halla por el Teorema Fundamental de la Numeración como sumas de potencias de 2. Además, se cumple que con una cadena de n bits se pueden representar 2n combinaciones.

Ingeniería de software
Es la disciplina dentro de la informática encargada de la creación de software de calidad. El software es el conjunto de instrucciones que permite al hardware de la computadora desempeñar trabajo útil. En las últimas décadas del siglo XX, las reducciones de costo en hardware llevaron a que el software fuera un componente que participa en muchos de los dispositivos usados por las sociedades industrializadas. Asimismo, se considera parte del software a la documentación generada durante el desarrollo del proyecto.
En el 2004, en los Estados Unidos, la Oficina de Estadísticas del Trabajo (U. S. Bureau of Labor Statistics) contó 760.840 ingenieros de software de computadora con trabajo.[1] El término "ingeniero de software", sin embargo, se utiliza en forma genérica en el ambiente empresarial, y no todos los ingenieros de software poseen realmente títulos de Ingeniería de universidades reconocidas.
Algunas personas piensan que Desarrollo de Software es un término más apropiado que Ingeniería de Software para el proceso de crear software. Personas como Pete McBreen (autor de "Software Craftmanship") cree que el término IS implica niveles de rigor y prueba de procesos que no son apropiados para todo tipo de desarrollo de software.

ingenieria de software


Es la disciplina dentro de la informática encargada de la creación de software de calidad. El software es el conjunto de instrucciones que permite al hardware de la computadora desempeñar trabajo útil. En las últimas décadas del siglo XX, las reducciones de costo en hardware llevaron a que el software fuera un componente que participa en muchos de los dispositivos usados por las sociedades industrializadas. Asimismo, se considera parte del software a la documentación generada durante el desarrollo del proyecto.
En el 2004, en los Estados Unidos, la Oficina de Estadísticas del Trabajo (U. S. Bureau of Labor Statistics) contó 760.840 ingenieros de software de computadora con trabajo.[1] El término "ingeniero de software", sin embargo, se utiliza en forma genérica en el ambiente empresarial, y no todos los ingenieros de software poseen realmente títulos de Ingeniería de universidades reconocidas.
Algunas personas piensan que Desarrollo de Software es un término más apropiado que Ingeniería de Software para el proceso de crear software. Personas como Pete McBreen (autor de "Software Craftmanship") cree que el término IS implica niveles de rigor y prueba de procesos que no son apropiados para todo tipo de desarrollo de software.

sistema imformatico


Es el conjunto de hardware, software y de un soporte humano. Un sistema informático típico emplea una computadora que usa dispositivos programables para capturar, almacenar y procesar datos. La computadora personal o PC, junto con la persona que lo maneja y los periféricos que los envuelven, resultan de por sí un ejemplo de un sistema informático.
Incluso la computadora más sencilla se clasifica como un sistema informático, porque al menos dos componentes (hardware y software) tienen que trabajar unidos. Pero el genuino significado de "sistema informático" viene mediante la interconexión. Muchos sistemas informáticos pueden interconectarse, esto es, unirse para convertirse un sistema mayor. La interconexión de sistemas informáticos puede tornarse difícil debido a incompatibilidades. A veces estas dificultades ocurren a nivel de hardware, mientras que en otras ocasiones se dan entre programas informáticos que no son compatibles entre sí.
Los diseñadores de sistemas informáticos, profesionales titulados en Ingeniería informática, no necesariamente esperan que sus sistemas se puedan interconectar con otros sistemas. Por otro lado, los técnicamente eruditos a menudo pueden configurar sistemas diferentes para que se puedan comunicar entre sí usando un conjunto de reglas y restricciones conocidas como protocolos. Los protocolos tratan precisamente de definir la comunicación dentro de y entre sistemas informáticos distintos pero conectados entre sí. Si dos sistemas informáticos usan el mismo protocolo, entonces podrán ser capaces de interconectarse y formar parte de un sistema mayor.

maquina diferencial


Una máquina diferencial es una calculadora digital mecánica de propósito especial, diseñada para tabular funciones polinómicas. Puesto que las funciones logarítmicas y trigonométricas pueden ser aproximadas por polinomios, esta máquina es más general de lo que parece al principio.
Es un dispositivo de naturaleza mecánica para calcular e imprimir tablas de funciones. Más concretamente, calcula el valor numérico de una función polinómica sobre una progresión aritmética obteniendo una tabla de valores que se aproxima a la función real (basado en que cualquier función puede ser aproximada por polinomios).
Esta máquina fue ideada por J. H. Mueller y redescubierta por Charles Babbage, quien no llegó a construirla.
Una reconstrucción de la Máquina Diferencial No.2 ha estado operativa desde 1991 en el Museo de Ciencia de Londres. Trabaja como Babbage la diseñó y demuestra que éste estaba acertado en su teoría, además de que era capaz de fabricar partes con la precisión requerida. Babbage falló quizá a causa de que sus diseños fueron demasiado ambiciosos.

SOFTWARE DEL SISTEMA

El Software de sistema, en algunas ocasiones también denominado software de base, consiste en un software que sirve para controlar e interactuar con el sistema, proporcionando control sobre el hardware y dando soporte a otros programas. En contraposición del llamado Software de Aplicación. Ejemplos de software del sistema son sistema operativo, sistema operativo de red, compiladores, Antivirus, librerías tales como OpenGL (para la aceleración gráfica), PNG para el sistema gráfico o demonios que controlan la temperatura, la velocidad del disco duro (como hdparm) o la frecuencia del procesador como por ejemplo cpudyn.
El software de sistema realiza tareas como la transferencia de datos entre la memoria RAM y los dispositivos de almacenamiento (disco rígido, unidades de discos ópticos, etc.), o bien puede realizar la operación de renderizado de texto en una pantalla. Clases de software de sistema pueden ser cargadores de programas, sistemas operativos, controladores de dispositivos, herramientas de programación, compiladores, ensambladores, enlazadores, y programas utilitarios.
Si el software de sistema se almacena en una menoría no volátil tal como circuitos integrados, usualmente se lo denomina firmware.

hardware


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, pero no ocupa un espacio físico, se podría decir que no tiene sustancia. Una buena metáfora sería un libro: las páginas y la tinta son el hardware, mientras que las palabras, oraciones, párrafos y el significado del texto (información) son el software. Una computadora sin software sería tan inútil como un libro con páginas en blanco.

sistema operativo de red

Al igual que un equipo no puede trabajar sin un sistema operativo, una red de equipos no puede funcionar sin un sistema operativo de red o NOS (Network Operating System). Un sistema operativo de red o NOS (Network Operating System) consiste en un software que posibilita la comunicación de un sistema informático con otros equipos en el ámbito de una red.
Dependiendo del fabricante del sistema operativo de red, tenemos que el software de red para un equipo personal se puede añadir al propio sistema operativo del equipo o integrarse con él.
Netware de Novell es el ejemplo más familiar y famoso de sistema operativo de red donde el software de red del equipo cliente se incorpora en el sistema operativo del equipo. El equipo personal necesita ambos sistema operativos para gestionar conjuntamente las funciones de red y las funciones individuales.
Lista de Sistemas Operativos de Red
El software del sistema operativo de red se integra en un número importante de sistemas operativos conocidos:
Windows 2000 Server/Professional
Windows NT Server/Workstation
Windows 95/98/ME
Apple Talk.
GNU / Linux
BSD family
NetBIOS
Cada configuración (sistemas operativos de red y del equipo separados, o sistema operativo combinando las funciones de ambos) tiene sus ventajas e inconvenientes. Por tanto, nuestro trabajo como especialistas en redes es determinar la configuración que mejor se adapte a las necesidades de nuestra red.

sistema operativo


Un sistema operativo es un software de sistema, es decir, un conjunto de programas de computadora destinado a permitir una administración eficaz de sus recursos. Comienza a trabajar cuando se enciende el computador, y gestiona el hardware de la máquina desde los niveles más básicos, permitiendo también la interacción con el usuario.
Un sistema operativo se puede encontrar normalmente en la mayoría de los aparatos electrónicos que utilicen microprocesadores para funcionar, ya que gracias a éstos podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, autoradios, computadoras, etc.).
Los sistemas operativos, en su condición de capa software que posibilitan y simplifica el manejo de la computadora, desempeñan una serie de funciones básicas esenciales para la gestión del equipo. Entre las más destacables, cada una ejercida por un componente interno (módulo en núcleos monolíticos y servidor en micronúcleos), podemos reseñar las siguientes:
Proporcionar comodidad en el uso de un computador.
Gestionar de manera eficiente los recursos del equipo, ejecutando servicios para los procesos (programas)
Brindar una interfaz al usuario, ejecutando instrucciones (comandos).
Permitir que los cambios debidos al desarrollo del propio SO se puedan realizar sin interferir con los servicios que ya se prestaban (evolutividad).
Un sistema operativo desempeña 5 funciones básicas en la operación de un sistema informático: suministro de interfaz al usuario, administración de recursos, administración de archivos, administración de tareas y servicio de soporte y utilidades.

sistema operativo

nucleos monoliticos


Un Núcleo monolítico es el núcleo o kernel de un sistema operativo. Como ejemplo de sistema operativo de núcleo monolítico están UNIX y Linux. Estos sistemas tienen un núcleo grande y complejo, que engloba todos los servicios del sistema. Está programado de forma no modular, y tiene un rendimiento mayor que un micronúcleo. Sin embargo, cualquier cambio a realizar en cualquier servicio requiere la recompilación del núcleo y el reinicio del sistema para aplicar los nuevos cambios. Hay diversas ramificaciones de este diseño, que se han ido amoldando a nuevas necesidades. Podemos citar el sistema de módulos ejecutables en tiempo de ejecución, que le brinda al modelo de núcleo monolítico algunas de las ventajas de un micronúcleo. Dichos módulos pueden ser compilados, modificados, cargados y descargados en tiempo de ejecución, de manera similar a los servicios de un micronúcleo, pero con la diferencia de que se ejecutan en el espacio de memoria del núcleo mismo (anillo 0). De esta forma, un bloqueo del módulo, es probable que bloquee todo el núcleo. Además, el módulo pasa a formar un todo con el núcleo, usando la API del mismo, y no se emplea un sistema de mensajes como en los micronúcleos. Este es el esquema usado por, entre otros, GNU/Linux, FreeBSD y varios derivados de UNIX. Cabe resaltar que el paso constante de mensajes entre los servicios del micronúcleo, es en parte responsable de los pobres rendimientos de los micronúcleos.
Un sistema operativo con núcleo monolítico concentra todas las funcionalidades posibles (planificación, sistema de archivos, redes, controladores de dispositivos, gestión de memoria, etc.) dentro de un gran programa. El mismo puede tener un tamaño considerable, y deberá ser recompilado por completo al añadir una nueva funcionalidad. Todos los componentes funcionales del núcleo tienen acceso a todas sus estructuras de datos internas y a sus rutinas. Un error en una rutina puede propagarse a todo el núcleo. Todos sus componentes se encuentran integrados en un único programa que ejecuta en un único espacio de direcciones. En este tipo de sistemas, todas las funciones que ofrece el sistema operativo se ejecutan en modo supervisor.
Estos sistemas operativos han surgido, normalmente, de sistemas operativos sencillos y pequeños a los que se les ha ido añadiendo un número mayor de funcionalidades. Esto les ha hecho evolucionar y crecer hasta convertirlos en programas grandes y complejos formados por muchas funciones situadas todas ellas en un mismo nivel. Ejemplos claros de este tipo de sistemas son MS-DOS y UNIX. Ambos comenzaron siendo pequeños sistemas operativos, que fueron haciéndose cada vez más grandes debido a la gran popularidad que adquirieron.
El problema que plantea este tipo de sistemas radica en lo complicado que es modificar el sistema operativo para añadir nuevas funcionalidades y servicios. En efecto, añadir una nueva característica implica la modificación de un gran programa, compuesto por miles de líneas de código fuente y funciones, cada una de las cuales puede invocar a otras cuando así lo requiera. Además en este tipo de sistemas no se sigue el principio de ocultación de la información. Para solucionar este problema es necesario dotar de cierta estructura al sistema operativo.
La alternativa es tener una estructura de micronúcleo, donde las partes funcionales están divididas en unidades separadas con mecanismos de comunicación estrictos entre ellos.

micronucleos


es un tipo de núcleo de un sistema operativo que provee un conjunto de primitivas o llamadas al sistema mínimas, para implementar servicios básicos como espacios de direcciones, comunicación entre procesos y planificación básica. Todos los otros servicios (gestión de memoria, sistema de archivos, operaciones de E/S, etc.), que en general son provistos por el núcleo, se ejecutan como procesos servidores en espacio de usuario.
El paradigma del micronúcleo, tuvo una gran relevancia académica durante los años ochenta y principios de los noventa, dentro de lo que se denominó self healing computing, esto es, sistemas independientes que fuesen capaces de superar por si mismos errores de software o hardware. En un principio pretendía ser una solución a la creciente complejidad de los sistemas operativos.
Las principales ventajas de su utilización son la reducción de la complejidad, la descentralización de los fallos (un fallo en una parte del sistema no lo colapsaría por completo) y la facilitación para crear y depurar controladores de dispositivos.
Por otro lado, sus principales dificultades son la complejidad en la sincronización de todos los módulos que componen el micronúcleo y su acceso a la memoria, la anulación de las ventajas de Zero Copy, la Integración con las aplicaciones. Además, los procesadores y arquitecturas modernas de hardware están optimizadas para sistemas de núcleo que pueden mapear toda la memoria.
Esto mejora la tolerancia a fallos y eleva la portabilidad entre plataformas de hardware, según los defensores de esta tendencia. Sus detractores le achacan, fundamentalmente, mayor complejidad en el código, menor rendimiento, o limitaciones en diversas funciones.
Algunos ejemplos de sistemas operativos con micronúcleo:
Minix
Hurd
NeXTSTEP (algunos lo consideran un núcleo híbrido)
L4
Netkernel
Amoeba
RaOS
RadiOS
Chorus
QNX
SO3
SymbOS

controlador de dispositivos


Un controlador de dispositivo (llamado normalmente controlador, o, en inglés, driver) es un programa informático que permite al sistema operativo interactuar con un periférico, haciendo una abstracción del hardware y proporcionando una interfaz -posiblemente estandarizada- para usarlo. Se puede esquematizar como un manual de instrucciones que le indica cómo debe controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza esencial, sin la cual no se podría usar el hardware.
Tipos de controladores
Existen tantos tipos de controladores como tipos de periféricos, y es común encontrar más de un controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por ejemplo, aparte de los oficiales (normalmente disponibles en la página web del fabricante), se pueden encontrar también los proporcionados por el sistema operativo, o también versiones no oficiales hechas por terceros.
Estos controladores pueden ser genéricos (válidos para más de un modelo del mismo periférico) o específicos para cada modelo. También se distribuyen actualizaciones a nuevas versiones, que pueden dar un mejor funcionamiento. Controladores de audio o de video.
Alternativamente Muchas páginas web ofrecen descarga de controladores (drivers), o su envió a domicilio en Cd. gratuitamente o pagando un precio por dicho servicio, lo cual es perfectamente legal, y es una excelente forma de obtener los controladores (drivers) discontinuados, dificiles de conseguir o Para sistemas operativos en los cuales el fabricantes no ofrece soporte.

periferico

Se denominan periféricos tanto a las unidades o dispositivos a través de los cuales la computadora se comunica con el mundo exterior, como a los sistemas que almacenan o archivan la información, sirviendo de memoria auxiliar de la memoria principal.
Se entenderá por periférico al conjunto de dispositivos que, sin pertenecer al núcleo fundamental de la computadora, formado por la CPU y la memoria central, permitan realizar operaciones de entrada/salida (E/S) complementarias al proceso de datos que realiza la CPU. Estas tres unidades básicas en un computador, CPU, memoria central y el subsistema de E/S, están comunicadas entre sí por tres buses o canales de comunicación: el bus de direcciones, para seleccionar la dirección del dato o del periférico al que se quiere acceder, el bus de control, básicamente para seleccionar la operación a realizar sobre el dato (principalmente lectura, escritura o modificación) y el bus de datos, por donde circulan los datos.
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 teclado y el monitor, imprescindibles en cualquier computadora personal de hoy en día (no lo fueron en los primeros computadores), son posiblemente los periféricos más comunes, y es posible que mucha gente no los considere como tal debido a que generalmente se toman como parte necesaria de una computadora. El mouse es posiblemente el ejemplo más claro de este aspecto. Hace menos de 20 años no todos las computadora 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 la que no era necesario el empleo de un mouse, todo se hacía mediante comandos de texto. Fue con la popularización de Finder, sistema operativo de la Macintosh de Apple y la posterior aparición de Windows cuando el mouse comenzó a ser un elemento imprescindible en cualquier hogar dotado de una computadora personal. Actualmente existen sistemas operativos con interfaz de texto que tampoco hacen uso del mouse como, por ejemplo, algunos sistemas básicos de UNIX y Linux.


Tipos de periféricos
Los periféricos pueden clasificarse en 4 categorías principales:
Periféricos de entrada: Captan y envían los datos al dispositivo que los procesará.
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 este tipo de periféricos es información para el usuario.
Periféricos de almacenamiento: Son los dispositivos que almacenan datos e información por bastante tiempo. La memoria RAM no puede ser considerada un periférico de almacenamiento, ya que su memoria es volátil y temporal.
Periféricos de comunicación: Son los periféricos que se encargan de comunicarse con otras máquinas o computadoras, ya sea para trabajar en conjunto, o para enviar y recibir información.

interfaz


Acepciones de interfaz
· En el Lenguaje de programación C++, una interfaz de personas es la parte del interfaz informático que permite la circulación correcta y sencilla de información entre varias aplicaciones y entre el propio programa y el monousuario. Metafóricamente se entiende la Interfaz como una conversación entre el usuario y la tarjeta madre (o entre el usuario y el diseñador de la misma): durante muy pocos años se vio a la interacción como una charla hombre-PC (para trabajar con una interface alfa era necesario conocer el "lenguaje" de las tarjetas conectadas en serie). Desde una perspectiva semiótica, los usuarios no dialogan con el sistema sino con su creador por medio de un complejo juego de estrategias (del diseñador y del usuario).
En sentido amplio, puede definirse interfaz como el conjunto de comandos y/o métodos que permiten la intercomunicación del programa con cualquier otro programa o entre partes (módulos) del propio programa o elemento interno o externo. De hecho, los periféricos son controlados por interfaces.
Para un mejor entendimiento de esta acepción pongamos un ejemplo. Si extrapoláramos este concepto a la vida real, podríamos decir que el teclado de un teléfono sería una interfaz de usuario, mientras que la clavija sería la interfaz que permite al teléfono comunicarse con la central telefónica.
· En programación de ordenadores también se habla de interfaz gráfica de usuario, que es un método para facilitar la interacción del usuario con el ordenador o la computadora a través de la utilización de un conjunto de imágenes y objetos pictóricos (iconos, ventanas..) además de texto.
· En electrónica, telecomunicaciones y hardware, una interfaz (electrónica) es el puerto (circuito físico) a través del que se envían o reciben señales desde un sistema o subsistemas hacia otros. No existe un interfaz universal, sino que existen diferentes estándares (Interfaz USB, interfaz SCSI, etc.) que establecen especificaciones técnicas concretas (características comunes), con lo que la interconexión sólo es posible utilizando el mismo interfaz en origen y destino. En materia de hardware encontramos términos que se refieren a las interfaces: puerto, puerto de datos, bus, bus de datos, slot, slot de expansión. También, en materia de hardware, se considera interfaz al medio mediante el cual un disco duro se comunica con los demás componentes del ordenador; puede ser IDE, SCSI, USB o Firewire.
· En química, una interfaz es la superficie entre dos fases distintas en una mezcla heterogénea.
· En geología, una interfaz es una capa superficial o anómala que marca el punto de transición entre dos épocas o tipos geológicos
Otros usos
Además, la palabra interfaz también se utiliza metafóricamente en distintos contextos:
1. Interfaz como instrumento: desde esta perspectiva la interfaz es una "prótesis" o "extensión" (McLuhan) de nuestro cuerpo. El mouse es un instrumento que extiende las funciones de nuestra mano y las lleva a la pantalla bajo forma de cursor. Así, por ejemplo, la pantalla de una computadora es una interfaz entre el usuario y el disco duro de la misma.
2. Interfaz como superficie: algunos consideran que la interfaz nos trasmite instrucciones ("affordances") que nos informan sobre su uso. La superficie de un objeto (real o virtual) nos habla por medio de sus formas, texturas, colores, etc.
3. Interfaz como espacio: desde esta perspectiva la interfaz es el lugar de la interacción, el espacio donde se desarrollan los intercambios.

herramientas de diagnostico

Una herramienta de diagnóstico es un software que permite monitorear y en algunos casos controlar la funcionalidad del hardware, como: computadoras, servidores y periféricos, según el tipo y sus funciones. Estos dispositivos pueden ser, la memoria RAM, el procesador, los discos duros, ruteadores, tarjetas de red, entre muchos dispositivos más. El software permite monitorear temperatura, rendimiento, trasferencia de datos, etc.

servidor


En informática, un servidor es una computadora que, formando parte de una red, provee servicios a otros denominados clientes.[1]
También se suele denominar con la palabra servidor a:
Una aplicación informática o programa que realiza algunas tareas en beneficio de otras aplicaciones llamadas clientes. Algunos servicios habituales son los servicios de archivos, que permiten a los usuarios almacenar y acceder a los archivos de una computadora y los servicios de aplicaciones, que realizan tareas en beneficio directo del usuario final. Este es el significado original del término. Es posible que un ordenador cumpla simultáneamente las funciones de cliente y de servidor.
Una computador en la que se ejecuta un programa que realiza alguna tarea en beneficio de otras aplicaciones llamadas clientes, tanto si se trata de un ordenador central (mainframe), un miniordenador, un ordenador personal, una PDA o un sistema integrado; sin embargo, hay computadoras destinadas únicamente a proveer los servicios de estos programas: estos son los servidores por antonomasia.
Un servidor no es necesariamente una máquina de última generación grande y monstruosa, no es necesariamente un superordenador; un servidor puede ser desde una computadora vieja, hasta una máquina sumamente potente (ej.: servidores web, bases de datos grandes, etc. Procesadores especiales y hasta varias gigas de memoria). Todo esto depende del uso que se le dé al servidor. Si usted lo desea, puede convertir al equipo desde el cual usted está leyendo esto en un servidor instalando un programa que trabaje por la red y a la que los usuarios de su red ingresen a través de un programa de servidor web como Apache.
A lo cual podemos llegar a la conclusión de que un servidor también puede ser un proceso que entrega información o sirve a otro proceso, el modelo cliente/servidor no necesariamente implica tener dos ordenadores, ya que un proceso cliente puede solicitar algo como una impresión a un proceso servidor en un mismo ordenador

utilidad


En informática, una utilidad es una herramienta que realiza:
Tareas de mantenimiento
Soporte para la construcción y ejecución de programas
Las tareas en general
En donde se incluyen las bibliotecas de sistema, middleware, herramientas de desarrollo, etc.
Entre ellas podemos nombrar cifrado, descifrado de archivos, compresión de archivos, defragmentadores de discos editores de texto, respaldo, etc.

SOFTWARE DE PROGRAMACION


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:
Con la aparición de las computadoras desaparecen las secuencias de posiciones de llaves mecánicas que debían desconectarse para obtener una acción determinada, una clave conectada era un 1 y una llave desconectada era un 0. Una sucesión de llaves en cualquiera de sus dos posiciones definía una secuencia de ceros y unos (por ejemplo: 0100011010011101...) que venía a representar una instrucción o un conjunto de instrucciones (programa) para el ordenador (o computador) en el que se estaba trabajando. A esta primera forma de especificar programas para una computadora se la denomina lenguaje máquina o código máquina.
La necesidad de recordar secuencias de programación para las acciones usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denominó "instrucciones", y a este conjunto de instrucciones se le llamó lenguaje ensamblador.
Posteriormente aparecieron diferentes lenguajes de programación, los cuales reciben su denominación porque tienen una estructura sintáctica similar a los lenguajes escritos por los humanos.

lenguaje de programacion

En lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones.
Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas web).
Un lenguaje de programación permite a uno o más programadores especificar de manera precisa: sobre qué datos una computadora debe operar, cómo deben ser estos almacenados, transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.
Los procesadores usados en las computadoras son capaces de entender y actuar según lo indican programas escritos en un lenguaje fijo llamado lenguaje de máquina. Todo programa escrito en otro lenguaje puede ser ejecutado de dos maneras:
Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este proceso se lo llama interpretar y a los programas que lo hacen se los conoce como intérpretes.
Traduciendo este programa al programa equivalente escrito en lenguaje de máquina. A ese proceso se lo llama compilar y al traductor se lo conoce como un malhecho compilador.

editores de texto

Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos únicamente por texto sin formato, conocidos comúnmente como archivos de texto ó texto plano. El programa lee el archivo e interpreta los bytes leídos según el código de caracteres que usa el editor. Hoy en día es comúnmente de 7- o 8-bits en ASCII o UTF-8, rara vez EBCDIC.
Por ejemplo, un editor ASCII que lee el número binario 0110 0001 (decimal 97 ó hexadecimal 61) en el archivo lo representará en la pantalla por la figura a, que el usuario reconoce como la letra "a" y ofrecerá al usuario las funciones necesarias para cambiar el número binario en el archivo.
Los editores de texto son incluidos en el sistema operativo o en algún Paquete de software instalado y se usan cuando se deben crear o modificar archivos de texto como archivos de configuración, guiones o el Código fuente de algún programa.
El archivo creado por un editor de texto incluye por convención en DOS y Microsoft Windows la extensión .txt, aunque pueda ser cambiada a cualquier otra con posterioridad. Tanto Unix como GNU/Linux dan al usuario total libertad en la denominación de sus archivos.
Al trasladar archivos de texto de un sistema operativo a otro se debe considerar que existen al menos dos convenciones diferentes para señalar el término de una línea: Unix y GNU/Linux usan sólo retorno de carro en cambio Microsoft Windows usa al término de cada línea retorno de carro y salto de línea.

compiladores

Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es código máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.
Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a cómo piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.
También en el siglo XIX el matemático e inventor británico Charles Babbage elaboró los principios de la computadora digital moderna. Inventó una serie de máquinas, como la máquina diferencial, diseñadas para solucionar problemas matemáticos complejos. Muchos historiadores consideran a Babbage y a su socia, la matemática británica Augusta Ada Byron (1815-1852), hija del poeta inglés Lord Byron, como a los verdaderos inventores de la computadora digital moderna. La tecnología de aquella época no era capaz de trasladar a la práctica sus acertados conceptos; pero una de sus invenciones, la máquina analítica, ya tenía muchas de las características de un ordenador moderno. Incluía una corriente, o flujo de entrada en forma de paquete de tarjetas perforadas, una memoria para guardar los datos, un procesador para las operaciones matemáticas y una impresora para hacer permanente el registro.

interpretes

Un intérprete es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código máquina del sistema destino, los primeros (los intérpretes) sólo realizan la traducción a medida que sea necesario, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.
Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o añadir módulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina virtual).
Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.
En la actualidad, uno de los entornos más comunes de uso de los intérpretes informáticos es Internet, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.

enlazadores

Un enlazador (en inglés, linker) es un programa que toma los ficheros de código objeto generado en los primeros pasos del proceso de compilación, la información de todos los recursos necesarios (biblioteca), quita aquellos recursos que no necesita, y enlaza el código objeto con su(s)biblioteca con lo que finalmente produce un fichero ejecutable o una biblioteca.. En el caso de los programas enlazados dinámicamente, el enlace entre el programa ejecutable y las bibliotecas se realiza en tiempo de carga o ejecución del programa.

depuradores

Un depurador (en inglés, debugger), es un programa que permite depurar o limpiar los errores de otro programa informático.
Al Iniciarse la depuración, el depurador lanza el programa a depurar. Éste se ejecuta normalmente hasta que el depurador detiene su ejecución, permitiendo al usuario examinar la situación.
El depurador permite detener el programa en:
Un punto determinado mediante un punto de ruptura.
Un punto determinado bajo ciertas condiciones mediante un punto de ruptura condicional.
Un momento determinado cuando se cumplan ciertas condiciones.
Un momento determinado a petición del usuario.
Durante esa interrupción, el usuario puede:
Examinar y modificar la memoria y las variables del programa.
Examinar el contenido de los registros del procesador.
Examinar la pila de llamadas que han desembocado en la situación actual.
Cambiar el punto de ejecución, de manera que el programa continúe su ejecución en un punto diferente al punto en el que fue detenido.
Ejecutar instrucción a instrucción.
Ejecutar partes determinadas del código, como el interior de una función, o el resto de código antes de salir de una función.
El depurador depende de la arquitectura y sistema en el que se ejecute, por lo que sus funcionalidades cambian de un sistema a otro. Aquí se han mostrado las más comunes.

SOFTWARE DE APLICACION


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 ofimaticas


Una suite ofimática o suite de oficina es un conjunto de software para el uso en oficinas y entornos profesionales.
No hay una norma estricta sobre los programas a incluir, pero la mayoría incluyen al menos un procesador de textos y una hoja de cálculo. De forma añadida, la suite puede contener un Programa de presentación, un sistema de gestión de base de datos, herramientas menores de gráficos y comunicaciones, un gestor de información personal (agenda y cliente de correo electrónico) y un navegador web.
En la actualidad la suite ofimática dominante en el mercado es Microsoft Office, la cual posee sus propios formatos cerrados de documentos para cada uno de sus programas. Debido a esto y a la pobre compatibilidad de la suite de Microsoft con otros formatos abiertos (como OpenDocument), la habilidad de lectura y escritura de formatos Microsoft Office es esencial para cualquier otra suite ofimática del mercado.
OpenOffice.org: Suite libre y gratuita, utiliza el estándar OpenDocument (Writer, Calc, Impress, Draw, Base).
Gnome Office: Suite libre y gratuita del proyecto GNOME (Abiword, Gnumeric, GNOME-DB).
StarOffice: Suite libre de Sun basada en OpenOffice.org, con algunos añadidos propietarios.
Corel WordPerfect Office: Suite propietaria de Corel (WordPerfect, Quattro Pro, etc.).
Lotus: SmartSuite (Word Pro, Lotus 1-2-3, etc.).
Papyrus OFFICE: (Papyrus WORD, Papyrus BASE).

software educativo

Software educativo es el software destinando a la enseñanza y el auto aprendizaje y además permite el desarrollo de ciertas habilidades cognitivas. Así como existen profundas diferencias entre las filosofías pedagógicas, así también existe una amplia gama de enfoques para la creación de software educativo atendiendo a los diferentes tipos de interacción que debería existir entre los actores del proceso de enseñanza aprendizaje: educador, aprendiz, conocimiento, computadora. Como software educativo tenemos desde programas orientados al aprendizaje hasta sistemas operativos completos destinados a la educación, como por ejemplo las distribuciones Linux orientadas a la enseñanza.

software medico

En los ordenadores, los programas informáticos médicos son una importante rama de la ingeniería de software. Muchos dispositivos médicos que vigilar o controlar los pacientes son en su mayoría controlados por software.
Monitores: frecuencia cardiaca, la presión arterial, la tasa de respiración, el uso de software para interpretar la información de sensores y mostrarlo de una manera significativa en un monitor.
Medicamentos bombas: Estos dispositivos están programados para el bombeo de una cierta cantidad de plasma, sangre, solución salina, u otra medicación en un paciente en un determinado tipo. El software proporciona la capacidad para controlar muchos aspectos de los procedimientos de tratamiento.
Análisis: Muchos dispositivos, tales como escáneres CAT, medida de los datos en bruto que es esencialmente de sentido a la gente. Software reinterpreta estos datos para crear las imágenes que los médicos pueden leer y entender.
Sistemas Expertos: Una variedad de sistemas expertos que se han creado para indicar lo que se debe hacer. Estos son menos utilizados que las otras cosas que acabo de mencionar.
Médico de la informática: software para la empresa y de información aspecto de la medicina.
Terapia de entrega: El software de marcapasos y desfibriladores implantables proporciona tolerancia a fallos, en tiempo real, críticos para la misión de vigilancia de los ritmos cardíacos y la entrega de terapia asociada.
Médico de la asistencia sanitaria y los programas informáticos educativos: Software utilizado como un centro de enseñanza o herramienta de estudio para los profesionales de la salud.

Software de diseño

El diseño asistido por computador remoto (o computadora u ordenador), abreviado como DAO (Diseño Asistido por Ordenador) pero más conocido por sus siglas inglesas CAD (Computer Aided Design), es el uso de un amplio rango de herramientas computacionales que asisten a ingenieros, arquitectos y a otros profesionales del diseño en sus respectivas actividades. También se llega a encontrar denotado con una adicional "Dc=0" en las siglas CADD, diseño y bosquejo asistido por computadora (Computer Aided Drafting and Design).
El diseño asistido por computadora remoto es, además, la herramienta principal para la creación de entidades geométricas e isométricas variables enmarcadas dentro de procesos de administración del ciclo de vida de productos (Product Lifecycle Management), y que involucra software y algunas veces hardware especiales.
Los usos de estas herramientas varían desde aplicaciones basadas en vector trigodimensional c=0 baso en teorías elicoeficientes vecotrales dobleces y sistemas de dibujo en 2 dimensiones (2D) hasta modeladores en 3 dimensiones (3D) a través del uso de modeladores de sólidos y balandos superficies paramétricas. Se trata básicamente de una base de datos de entidades geométricas (puntos, líneas, arcos, etc.) con la que se puede operar y accionar a través de una interfaz gráfica y variable. Permite diseñar en dos o tres dimensiones c=0 mediante geometría y trigonometría alámbrica; esto es, puntos, líneas, arcos,redondeles, serpentinas splines, superficies y sólidos, para obtener un modelo loxc=0
La base de datos asocia a cada entidad una serie de propiedades como colorusuario, capa, estilo de línea, nombre, definición geométrica, etc., que permiten manejar la información de forma lógica y vectoral. Además pueden asociarse a las entidades o conjuntos de éstas otro tipo del coste propiedades como, material, etc., que permiten enlazar el CAD a los sistemas de gestión y producción.
De los modelos pueden obtenerse planos con cotas y anotaciones para generar la documentación técnica específica de cada proyecto.

PROCESO DE CREACION


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 la obtención de un producto software que resuelva un problema.
Ese proceso de creación de software puede llegar a ser muy complejo, dependiendo de su porte, características y criticidad del mismo. 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 (ejemplo: resolución de una ecuación de segundo orden), éste puede ser realizado por un solo programador (incluso aficionado) fácilmente. Es así que normalmente se dividen en tres categorías según su tamaño (líneas de código) y/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 estimadamente todos los costos de producción en un "proyecto software" (relación horas/hombre, costo monetario, cantidad de líneas fuente de acuerdo a lenguaje usado, etc.).
Considerando los de gran porte, es necesario realizar tantas y tan complejas tareas, tantas técnicas, de gerenciamiento, fuerte gestión y análisis diversos (entre otras) que toda una ingeniería hace falta para su estudio y realización: es la Ingeniería de Software.
En tanto que en los de mediano porte, pequeños equipos de trabajo (incluso un avezado analista-programador solitario) puede 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 a la metodología o Proceso de Desarrollo escogido y utilizado por el equipo de desarrollo o 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 o 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; y normalmente se aplican de acuerdo al tipo y porte y tipología del software a desarrollar, a criterio del líder (si lo hay) del equipo de desarrollo. Algunos de esos procesos son Extreme Programming (XP), Rational Unified Process (RUP), Feature Driven Development (FDD), etc.
Cualquiera sea el "proceso" utilizado y aplicado en un desarrollo de software (RUP, FDD, 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 en 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 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 sus propias metodologías, 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:

Captura (elicitación) y Especificación de requisitos (ERS)
Análisis
Diseño
Codificación
Pruebas (unitarias y de integración)
Instalación y paso a Producción
Mantenimiento
En las anteriores etapas pueden variar ligeramente sus nombres o ser más globales, por ejemplo indicar como una única fase (a los fines documentales e interpretativos) el Análisis y el 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.