Download HERRAMIENTAS INFORMATICAS Tema de investigación
Document related concepts
Transcript
HERRAMIENTAS INFORMATICAS Tema de investigación: SOFTWARE Y SUS TIPOS DE SOFTWARE Integrante: JORGE IVAN CARRILLO PATERNINA Ingeniería De Sistemas II Semestre A entregar: ELKIN NAVARRO UNIVERSIDAD DE CARTAGENA CREAD MAGANGUÉ Fecha: 05 De Mayo De 2011 INTRODUCCION Software es todo el conjunto intangible de datos y programas de la computadora que funcionan en conjunto para dar instrucciones, el cual permite la ejecución del hardware para la realización de las tareas del ordenador. Estos en conjunto funcionan como herramienta de trabajo. Este es tan complejo que posee infinidad de programas para diferentes funcionamientos en particular; para que haya un orden a la hora de trabajar con él; y así al usuario no se le haga tan complicado. El software muy importante, como también es importante los diferentes elementos que lo rodean para poder funcionar, ya que requiere de una serie de sistemas o programas que lo ayudan a realizar mejor sus funciones y necesita ser estudiado detenidamente ya que son muchos elementos que lo conforman, y si no sabemos sus funciones no podemos manejar correctamente al computador. OBJETIVOS Reconocer el software e identificar sus diferentes tipos en que se clasifica y las diferentes funcionalidades que nos brinda ya sea en el hogar o en los negocios. Sistema operativo: es el software que controla la ejecución de todas las aplicaciones y de los programas de software de sistema. Programas de ampliación: o también llamado software de aplicación; es el software diseñado y escrito para realizar una tarea específica, ya sea personal, o de procesamiento. Aquí se incluyen las bases de datos, tratamientos de textos, hojas electrónicas, gráficas, comunicaciones, etc. Software de programación: son las herramientas empleadas por el usuario para desarrollar programas, que luego van a ser ejecutados por el ordenador. SISTEMA OPERATIVO Un sistema operativo (SO) es el programa o conjunto de programas que efectúan la gestión de los procesos básicos de un sistema informático, y permite la normal ejecución del resto de las operaciones.1 Nótese que es un error común muy extendido denominar al conjunto completo de herramientas sistema operativo, es decir, la inclusión en el mismo término de programas como el explorador de ficheros, el navegador y todo tipo de herramientas que permiten la interacción con el sistema operativo, también llamado núcleo o kernel. Uno de los más prominentes ejemplos de esta diferencia, es el núcleo Linux, que es el núcleo del sistema operativo GNU, del cual existen las llamadas distribuciones GNU. Este error de precisión, se debe a la modernización de la informática llevada a cabo a finales de los 80, cuando la filosofía de estructura básica de funcionamiento de los grandes computadores2 se rediseñó a fin de llevarla a los hogares y facilitar su uso, cambiando el concepto de computador multiusuario, (muchos usuarios al mismo tiempo) por un sistema monousuario (únicamente un usuario al mismo tiempo) más sencillo de gestionar.3 (Véase AmigaOS, beOS o MacOS como los pioneros4 de dicha modernización, cuando los Amiga, fueron bautizados con el sobrenombre de Video Toasters5 por su capacidad para la Edición de vídeo en entorno multitarea round robín, con gestión de miles de colores e interfaces para diseño en 3D. Uno de los propósitos del sistema operativo que gestiona el núcleo intermediario consiste en gestionar los recursos de localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. Se encuentran en la mayoría de los aparatos electrónicos que utilizan microprocesadores para funcionar. (Teléfonos móviles, reproductores de DVD, computadoras, radios, etc.). Modos De Ejecución En Un CPU Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el Sistema Operativo, tiene que poder utilizar todo el juego de instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de operación diferentes: Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido de las aplicaciones. Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones. LLAMADAS AL SISTEMA Una aplicación, normalmente no sabe dónde está situada la rutina de servicio de la llamada. Por lo que si ésta se codifica como una llamada de función, cualquier cambio en el SO haría que hubiera que reconstruir la aplicación. Pero lo más importante es que una llamada de función no cambia el modo de ejecución de la CPU. Con lo que hay que conseguir llamar a la rutina de servicio, sin tener que conocer su ubicación, y hacer que se fuerce un cambio de modo de operación de la CPU en la llamada (y la recuperación del modo anterior en el retorno). Esto se hace utilizando instrucciones máquina diseñadas específicamente para este cometido, distintas de las que se usan para las llamadas de función. REGISTRO DE WINDOWS El registro de Windows o del sistema es la base de datos que almacena las configuraciones y opciones del sistema operativo Microsoft Windows en sus versiones de 32 bits, 64 bits y Windows Mobile. Algunos lo definen como una base de datos jerárquica, pero esta definición no es muy exacta. El registro de Windows contiene información y configuraciones de todo el hardware, software, usuarios, y preferencias del PC. Si un usuario hace cambios en las configuraciones del "Panel de control", en las asociaciones de ficheros, en las políticas del sistema o en el software instalado, los cambios se reflejan y almacenan en el registro. El registro mantiene esta información en forma de árbol, estableciendo un orden por el cual deben acceder el sistema operativo u otros programas, como las preferencias de usuario (perfiles), hojas de ajustes para directorios e iconos de programas, enumeración de hardware instalado y los puertos usados. El registro reemplaza los archivos de inicialización y configuración legados de Windows 3.x y MS-DOS (.ini), autoexec.bat y config.sys. El Registro se almacena en varios ficheros que, dependiendo de la versión de Windows, se ubican en diferentes lugares dentro del sistema local, excepto NTuser (o archivo de usuario), que puede ser ubicado en otra máquina para permitir perfiles móviles. Windows NT, 2000, XP, Server 2003, Vista, Server 2008 y 7 Los siguientes archivos del Registro se encuentran en %SystemRoot%\System32\Config\: Sam - HKEY_LOCAL_MACHINE\SAM Security - HKEY_LOCAL_MACHINE\SECURITY Software - HKEY_LOCAL_MACHINE\SOFTWARE System - HKEY_LOCAL_MACHINE\SYSTEM Default - HKEY_USERS\DEFAULT PAGINACIÓN DE MEMORIA En sistemas operativos de computadoras, los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa. En la tabla de páginas de un proceso, se encuentra la ubicación del marco que contiene a cada una de sus páginas. Las direcciones lógicas ahora se forman como un número de página y de un desplazamiento dentro de esa página (conocido comúnmente como offset). El número de página es usado como un índice dentro de la tabla de páginas, y una vez obtenida la dirección del marco de memoria, se utiliza el desplazamiento para componer la dirección real o dirección física. Este proceso se realiza en una parte del computador específicamente diseñada para esta tarea, es decir, es un proceso hardware y no software. PAGINACIÓN EN MEMORIA VIRTUAL El único inconveniente de paginación pura es que todas las páginas de un proceso deben estar en memoria para que se pueda ejecutar. Esto hace que si los programas son de tamaño considerable, no puedan cargarse muchos a la vez, disminuyendo el grado de multiprogramación del sistema. Para evitar esto, y aprovechando el principio de cercanía de referencias donde se puede esperar que un programa trabaje con un conjunto cercano de referencias a memoria (es decir con un conjunto residente más pequeño que el total de sus páginas), se permitirá que algunas páginas del proceso sean guardadas en un espacio de intercambio (en memoria secundaria) mientras no se necesiten. Cuando la paginación se utiliza junto con memoria virtual, el sistema operativo mantiene además el conocimiento sobre qué páginas están en memoria principal y cuáles no, usando la tabla de paginación. Si una página buscada está marcada como no disponible (tal vez porque no está presente en la memoria principal, pero sí en el área de intercambio), cuando la CPU intenta referenciar una dirección de memoria en esa página, la MMU responde levantando una excepción (comúnmente llamada fallo de página). Si la página se encuentra en el espacio de intercambio, el sistema operativo invocará una operación llamada intercambio de página, para traer a memoria principal la página requerida. CONTROLADOR DE DISPOSITIVO Un controlador de dispositivo, llamado normalmente controlador (en inglés, Device 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 al sistema operativo, 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. 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. Debido a que el software de controladores de dispositivos se ejecuta como parte del sistema operativo, con acceso sin restricciones a todo el equipo, resulta esencial que sólo se permitan los controladores de dispositivos autorizados. La firma y el almacenamiento provisional de los paquetes de controladores de dispositivos en los equipos cliente, mediante las técnicas descritas en esta guía, proporcionan las ventajas siguientes: Seguridad mejorada. Puesto que los usuarios estándar no pueden instalar controladores de dispositivos que no estén firmados o que estén firmados por un editor que no es de confianza, los administradores tendrán un control riguroso respecto a los controladores de dispositivos que pueden usarse en una organización. Podrán impedirse los controladores de dispositivos desconocidos, así como cualquier controlador de dispositivo que el administrador no permita expresamente. Mediante el uso de directivas de grupo, un administrador puede proporcionar a todos los equipos cliente de una organización los certificados de los editores que se consideren de confianza, permitiendo la instalación de los controladores sin intervención del usuario, para comprobar que se trata de una firma digital de confianza. Reducción de los costes de soporte técnico. Los usuarios sólo podrán instalar los dispositivos que hayan sido probados y admitidos por la organización. En consecuencia, el sistema permite mantener la seguridad del equipo, al tiempo que se reducen las solicitudes del departamento de soporte técnico. Experiencia de usuario mejorada. Un paquete de controladores firmado por un editor de confianza y almacenado provisionalmente en el almacén de controladores funciona de modo automático, cuando el usuario conecta el dispositivo al equipo. No se requiere acción alguna por parte del usuario LA CORRECCIÓN DE ERRORES Para poder recuperar los datos perdidos es necesario emplear códigos altamente redundantes, de esta forma, la utilización efectiva del canal de transmisión se reduce considerablemente. Es necesario pues, que el receptor disponga de los mecanismos necesarios (Hardware) para recuperar la información a través de los datos corruptos que le llegan. Códigos de control 2 en 3 Este tipo de códigos se caracteriza por repetir la información 3 veces. Si una información cualquiera está codificada en n bits, se forma un nuevo código 3*n bits, en donde A está repetido 3 veces. Al analizar la información transferida se decide si es correcta según el número de veces que coincida las 3 secuencias. Códigos de Haming Con este nombre se conoce a un conjunto de códigos correctores de error en k dígitos binarios; donde k es un número natural arbitrario. En estas líneas trataremos solo el caso de k=1, es decir, códigos de Haming de orden uno. Este código se construye a partir de uno de n dígitos binarios de distancia mínima uno. Estos n dígitos formarán dentro del código de Haming los dígitos binarios de datos. A continuación añadiremos p dígitos binarios llamados dígitos de control. Por lo tanto el código formado (código de Haming) tendrá una longitud de l=bn+p dígitos. La numeración de los dígitos se realiza de la forma habitual pero comenzando por uno, es decir: bn+p bn+p-1... b2 b1. Los dígitos de control ocuparán las posiciones iguales a las potencias exactas de dos, es decir bj con j=20, 21,...,2p-1. De aquí deducimos que el número p debe ser el natural más pequeño que satisfaga la siguiente desigualdad: 2p>=n+p+1 El valor que alcanzan estos códigos binarios, surge de establecer p controles de paridad sobre determinadas sub combinaciones del código. Para ello se siguen sistemáticamente estos pasos: Se renombran eventualmente los dígitos binarios de control como: c p cp-1... c2 c1. Donde cj = b2j1 (j=1,2,....p). Se halla la codificación en binario natural de cada una de las posiciones dentro del código a través de los dígitos binarios: cp cp-1...c2 c1. El dígito binario cj establecerá un control de paridad (par o impar) sobre la subcombinación formada por las posiciones, que codificadas en el punto anterior, posean un uno en dicho dígito binario cj. LOS UTILITARIOS Los utilitarios son una serie de órdenes o comandos que tiene incorporado el programa para resolver ciertos problemas específicos; son como una caja de herramientas para emergencias. El encabezado “Utilitarios ” del menú principal, conduce al siguiente submenú: Indexar archivos Permite dar mantenimiento a los índices de los archivos de la Base de Datos. Se puede utilizar si en algún momento se percibe algún problema en el funcionamiento, como por ejemplo: desorden en los listados, campos vacíos, etc. Esta tarea también se realiza automáticamente cuando se reinicializa el programa. Bitácora de envíos Es un utilitario que permite al administrador del programa determinar las fechas y nombres de las personas vinculadas al registro de información, basados en la clave del usuario. Modificación de definidos por el usuario Los definidos por el usuario son los mecanismos utilizados en SUMA para clasificar un suministro no presente en las listas de ítems del programa. En ocasiones, por un error en la búsqueda se crea un definido por el usuario cuyo genérico sí existe, resultando en una duplicación que puede causar problemas para las consultas específicas. El nivel SUMA CENTRAL permite modificarlos de manera que se elimine la duplicidad o se clasifique más apropiadamente por medio de la opción Modificación de definidos por el usuario. Al seleccionar esta opción, el programa muestra un listado con todos los ítems definidos por los diferentes usuarios: En la primera columna de la izquierda, se puede seleccionar presionando <ENTER>: Una vez seleccionados los ítems a modificar, al presionar <ESC> el programa solicita la confirmación del proceso. Si decide continuar , le mostrará la información del primer ítem a verificar y secuencialmente los demás, conforme se modifiquen: Tablas del sistema Aunque el programa permite cada vez que se configura adicionar, eliminar o editar opciones adicionales no presentes en las tablas del sistema, la opción Tablas del Sistema permite de manera más directa dar mantenimiento las tablas. (no es recomendable utilizar esta opción sin contar con conocimiento pleno del programa y estar claro que es lo que quiere) La primera alternativa que presenta el programa es la conformación del idioma en que se encuentran las tablas. Después de seleccionarlo en español, aparece la siguiente pantalla: Tablas General: permite adicionar o editar nuevos sitios de recepción, monedas, categorías de donante o destinatario y la tabla de títulos del programa. Esta última corresponde a todos los rótulos o títulos que aparecen en todas las pantallas que el programa utiliza para guiar al usuario. El nivel de clasificación: permite adicionar o editar nuevas categorías, subcategorías e ítems. Con Medicinas se permite modificar la información referente a la ruta de administración, concentración y presentación de un medicamento ya existente o de uno nuevo adicionado con la opción anterior de nivel de clasificación. En Otros Suministros, se puede dar mantenimiento a las unidades de presentación de todos los suministros que no sean medicamentos. SERVIDORES Es 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. Un servidor no es necesariamente una máquina de última generación de grandes proporciones, 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 varios terabytes 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 u algún otro existente. Tipos de servidores En las siguiente lista hay algunos tipos comunes de servidores: • Servidor de archivo: es el que almacena varios tipos de archivos y los distribuye a otros clientes en la red. • Servidor de impresiones: controla una o más impresoras y acepta trabajos de impresión de otros clientes de la red, poniendo en cola los trabajos de impresión (aunque también puede cambiar la prioridad de las diferentes impresiones), y realizando la mayoría o todas las otras funciones que en un sitio de trabajo se realizaría para lograr una tarea de impresión si la impresora fuera conectada directamente con el puerto de impresora del sitio de trabajo. • Servidor de correo: almacena, envía, recibe, en ruta y realiza otras operaciones relacionadas con email para los clientes de la red. • Servidor de fax: almacena, envía, recibe, en ruta y realiza otras funciones necesarias para la transmisión, la recepción y la distribución apropiadas de los fax. • Servidor de la telefonía: realiza funciones relacionadas con la telefonía, como es la de contestador automático, realizando las funciones de un sistema interactivo para la respuesta de la voz, almacenando los mensajes de voz, encaminando las llamadas y controlando también la red o el Internet, p. ej., la entrada excesiva de la voz sobre IP (VoIP), etc. HERRAMIENTA DE DIAGNÓSTICO 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, transferencia de datos, etc. SOFTWARE DE PROGRAMACION Los lenguajes de programación o software de programación son herramientas que nos permiten crear programas y software que facilitan la tarea de programación, ya que disponen de formas adecuadas que permiten ser leídas y escritas por personas, a su vez resultan independientes del modelo de computador a utilizar. Entre ellos tenemos Delphi, Visual Basic, Pascal, Java, etc. Una computadora funciona bajo control de un programa el cual debe estar almacenado en la unidad de memoria; tales como el disco duro. Los lenguajes de programación de una computadora en particular se conocen como un código de máquinas o lenguaje de máquinas. Estos lenguajes codificados en una computadora específica no podrán ser ejecutados en otra computadora diferente y para que estos programas funcionen para diferentes computadoras hay que realizar una versión para cada una de ellas, lo que implica el aumento del costo de desarrollo. Por otra parte, los lenguajes de programación en código de máquina son verdaderamente difíciles de entender para una persona, ya que están compuestos de códigos numéricos sin sentido mnemotécnico (mnemotécnicos es un sistema sencillo utilizado para recordar una secuencia de datos, nombres, números, y en general para recordar listas de ítems que no pueden recordarse fácilmente) EDITOR 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 o 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- ó 8-bits en ASCII o UTF-8, rara vez EBCDIC. DIFERENCIA ENTRE TEXTO PLANO Y ARCHIVOS DE TEXTO CON DIAGRAMACIÓN Los editores de textos "planos" se distinguen de los procesadores de texto en que se usan para escribir sólo texto, sin formato y sin imágenes, es decir sin diagramación. • El texto plano es representado en el editor mostrando todos los caracteres presentes en el archivo. Los únicos caracteres de formateo son los caracteres de control del respectivo código de caracteres. En la práctica, éstos son: salto de línea, tabulación horizontal y retorno de carro. El código de caracteres más usado en el año 2007 es el ASCII. • Los documentos creados por un procesador de texto generalmente contienen más caracteres de control para darle al texto un formato o diagramación particular, a menudo protegidos de ser copiados por una marca registrada como por ejemplo negrilla, cursiva, columnas, tablas, tipografía, etc. En un comienzo se utilizaron tales formatos sólo en autoedición, pero hoy se utilizan incluso en el procesador de texto más sencillo. • Los procesadores de texto pueden en la mayoría de los casos almacenar un texto plano en un archivo de texto plano, pero se le debe ordenar explícitamente que se desea esa opción, de otra manera podría guardarlo con algún formato especial. Funciones típicas de un editor de texto Marcar región Es la función que marca, visualmente o no, una parte del texto para ser elaborada con otras funciones. La región puede contener varias líneas del texto (región horizontal) o bien varias columnas adyacentes del texto (región vertical). Búsqueda y reemplazo El proceso de búsqueda de una palabra o una cadena de caracteres, en un texto plano y su reemplazo por otra. Existen diferentes métodos: global, por región, reemplazo automático, reemplazo con confirmación, búsqueda de texto o búsqueda de una Expresión regular. Copiar, cortar y pegar Sirve para copiar, trasladar o borrar una región marcada. Formatear Los editores de texto permiten automatizar las únicas funciones de formateo que utilizan: quebrar la línea, indentar, formatear comentarios o formatear listas. Deshacer y rehacer Consiste en que el programa editor va almacenando cada una de las operaciones hechas por el usuario hasta un número configurable. Si el usuario se arrepiente de algún cambio, por muy anterior que sea, el editor le permite revertir todos los cambios hechos hasta el número configurado. Rehacer es por consiguiente, revertir algo revertido. Importar Agregar o insertar el contenido de un archivo en el archivo que se está editando. Algunos editores permiten insertar la salida o respuesta a un programa cualquiera ejecutado en la Línea de comandos al archivo que se está editando. Filtros Algunos editores de texto permiten hacer pasar las líneas del texto o de una región por algún programa para modificarlas u ordenarlas. Por ejemplo, para ordenar alfabéticamente una lista de nombres o sacar un promedio de una lista de números. Acceso remoto Un editor para trabajar en la administración de una red de computadoras debe ofrecer la funcionalidad de editar archivos en máquinas remotas, ya sea por medio de ftp, ssh o algún otro Protocolo de red. Emacs lo puede hacer mediante el Plugin tramp [1] (ampliamente configurable con ssh, ftp, scp, sftp, etc.), Ultraedit, del ambiente Windows, lo hace mediante ftp. Depurador Un depurador (en inglés, debugger), es un programa usado para probar y depurar(eliminar los errores) de otros programas (el programa "objetivo"). El código a ser examinado puede alternativamente estar corriendo en un simulador de conjunto de instrucciones (ISS), una técnica que permite gran potencia en su capacidad de detenerse cuando son encontradas condiciones específicas pero será típicamente algo más lento que ejecutando el código directamente en el apropiado (o el mismo)procesador. Algunos depuradores ofrecen dos modos de operación - la simulación parcial o completa, para limitar este impacto. Si es un depurador de nivel de fuente o depurador simbólico, comúnmente ahora visto en entornos de desarrollo integrados, cuando el programa "se estrella" o alcanza una condición predefinida, la depuración típicamente muestra la posición en el código original. Si es un depurador de bajo nivel o un depurador de lenguaje de máquina, muestra la línea en el fuente desensamblado (a menos que también tenga acceso en línea al código fuente original y pueda exhibir la sección apropiada del código del ensamblador o del compilador). Un "estrellamiento" sucede cuando el programa no puede continuar normalmente debido a un error de programación. Por ejemplo, el programa pudo haber intentado usar una instrucción no disponible en la versión actual del CPU o haber intentado tener acceso a memoria protegida o no disponible. Soporte de hardware para la depuración La mayoría de los microprocesadores modernos tienen al menos una de estas características en su diseño de CPU para hacer la depuración más fácil: Soporte en hardware para ejecutar un programa paso a paso, tal como el trap flag. Un conjunto de instrucciones conformado con los requerimientos de virtualización de Popek y Goldberg, hace más fácil escribir el software depuración que corre en el mismo CPU que el software que está siendo depurado; tal CPU puede ejecutar los bucles internos del programa bajo prueba a velocidad completa, y todavía permanecer bajo control del depurador. In-system programming (ISP) (programación en sistema) permite a un depurador de hardware externo reprogramar un sistema bajo prueba, por ejemplo, adición o eliminación de instrucciones de puntos de ruptura (breakpoints). Muchos sistemas con tal soporte de ISP también tienen otro soporte de hardware de depuración. Soporte de hardware para breakpoints de código y datos, tales como comparadores de direcciones y comparadores de valores de datos, o con considerablemente más trabajo implicado, hardware de fallo de página. El acceso de JTAG a las interfaces de depuración de hardware tales como en procesadores de la arquitectura ARM o usando el conjunto de comandos Nexus. Los procesadores usados en sistemas empotrados típicamente tienen extenso soporte de depuración JTAG. Los microcontroladores con tan poco como seis pines necesitan usar sustitutos de bajo conteo de pines para JTAG, tal como BDM, Spy-Bi-Wire, o DebugWire en el Atmel AVR. DebugWire, por ejemplo, usa señalización bidireccional en el pin del RESET. 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. Uso 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. EFECTOS SECUNDARIOS Es importante notar que un programa que está siendo depurado puede presentar un comportamiento diferente a si se ejecuta en solitario debido a que el depurador cambia ligeramente los tiempos internos del programa. Estos cambios en los tiempos de ejecución afectan especialmente a complejos sistemas distribuidos. COMPILADOR 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 lenguaje de 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 de 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. Proceso de compilación Es el proceso por el cual se traducen las instrucciones escritas en un determinado lenguaje de programación a lenguaje máquina. Además de un traductor, se pueden necesitar otros programas para crear un programa objeto ejecutable. Un programa fuente se puede dividir en módulos almacenados en archivos distintos. La tarea de reunir el programa fuente a menudo se confía a un programa distinto, llamado preprocesador. El preprocesador también puede expandir abreviaturas, llamadas a macros, a proposiciones del lenguaje fuente. El primer paso se llama compilación (propiamente dicho) y traduce el código fuente escrito en un lenguaje de programación almacenado en un archivo a código en bajo nivel (normalmente en código objeto, no directamente a lenguaje máquina) El segundo paso se llama enlazado en el cual se enlaza el código de bajo nivel generado de todos los ficheros y subprogramas que se han mandado compilar y se añade el código de las funciones que hay en las bibliotecas del compilador para que el ejecutable pueda comunicarse directamente con el sistema operativo, traduciendo así finalmente el código objeto a código máquina, y generando un módulo ejecutable. Etapas Del Proceso Es útil pensar en estas fases como en piezas separadas dentro del traductor, y pueden en realidad escribirse como operaciones codificadas separadamente aunque en la práctica a menudo se integren juntas. Fase de análisis Análisis léxico El análisis léxico constituye la primera fase, aquí se lee el programa fuente de izquierda a derecha y se agrupa en componentes léxicos (tokens), que son secuencias de caracteres que tienen un significado Análisis sintáctico En esta fase los caracteres o componentes léxicos se agrupan jerárquicamente en frases gramaticales que el compilador utiliza para sintetizar la salida. Se comprueba si lo obtenido de la fase anterior es sintácticamente correcto (obedece a la gramática del lenguaje). Por lo general, las frases gramaticales del programa fuente se representan mediante un árbol de análisis sintáctico. La estructura jerárquica de un programa normalmente se expresa utilizando reglas recursivas. Por ejemplo, se pueden dar las siguientes reglas como parte de la definición de expresiones: 1. Cualquier identificador es una expresión. 2. Cualquier número es una expresión. 3. Si expresión1 y expresión2 son expresiones, entonces también lo son: • expresión1 + expresión2 • expresión1 * expresión2 • (expresión1) Las reglas 1 y 2 son reglas básicas (no recursivas), en tanto que la regla 3 define expresiones en función de operadores aplicados a otras expresiones La división entre análisis léxico y análisis sintáctico es algo arbitraria. Un factor para determinar la división es si una construcción del lenguaje fuente es inherentemente recursiva o no. Las construcciones léxicas no requieren recursión, mientras que las construcciones sintácticas suelen requerirla. Normalmente, se reconocen los identificadores por el simple examen del flujo de entrada, esperando hasta encontrar un carácter que no sea ni letra ni dígito, y agrupando después todas las letras y dígitos encontrados hasta ese punto en un componente léxico llamado identificador. Por otra parte, esta clase de análisis no es suficientemente poderoso para analizar expresiones o proposiciones. Análisis semántico La fase de análisis semántico revisa el programa fuente para tratar de encontrar errores semánticos y reúne la información sobre los tipos para la fase posterior de generación de código. En ella se utiliza la estructura jerárquica determinada por la fase de análisis sintáctico para identificar los operadores y operandos de expresiones y proposiciones. Un componente importante del análisis semántico es la verificación de tipos. Aquí, el compilador verifica si cada operador tiene operandos permitidos por la especificación del lenguaje fuente Fase de síntesis Consiste en generar el código objeto equivalente al programa fuente. Sólo se genera código objeto cuando el programa fuente está libre de errores de análisis, lo cual no quiere decir que el programa se ejecute correctamente, ya que un programa puede tener errores de concepto o expresiones mal calculadas. Por lo general el código objeto es código de máquina relocalizable o código ensamblador. Las posiciones de memoria se seleccionan para cada una de las variables usadas por el programa. Después, cada una de las instrucciones intermedias se traduce a una secuencia de instrucciones de máquina que ejecuta la misma tarea. Un aspecto decisivo es la asignación de variables a registros. Generación de código intermedio Después de los análisis sintáctico y semántico, algunos compiladores generan una representación intermedia explícita del programa fuente. Se puede considerar esta representación intermedia como un programa para una máquina abstracta. Esta representación intermedia debe tener dos propiedades importantes; debe ser fácil de producir y fácil de traducir al programa objeto Esta representación intermedia tiene varias propiedades: • Primera.- Cada instrucción de tres direcciones tiene a lo sumo un operador, además de la asignación, por tanto, cuando se generan estas instrucciones, el traductor tiene que decidir el orden en que deben efectuarse las operaciones. • Segunda.- El traductor debe generar un nombre temporal para guardar los valores calculados por cada instrucción. • Tercera.- Algunas instrucciones de "tres direcciones" tienen menos de tres operandos, por ejemplo, la asignación. Enlazador 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, quita aquellos recursos que no necesita, y enlaza el código objeto con su 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. ENTORNOS DE DESARROLLO INTEGRADO Un entorno de desarrollo integrado (en inglés Integrated Development Environment o IDE) es un programa compuesto por una serie de herramientas que utilizan los programadores para desarrollar código. Esta herramienta puede estar pensada para su utilización con un único lenguaje de programación o bien puede dar cabida a varios de estos. Las herramientas que normalmente componen un entorno de Desarrollo integrado son las siguientes: un editor de texto, un Compilador, un intérprete, unas herramientas para la Automatización, un depurador, un sistema de ayuda para la Construcción de interfaces gráficas de usuario y, opcionalmente, un Sistema de control de versiones. Hoy en día los entornos de desarrollo proporcionan un marco de trabajo para la mayoría de los lenguajes de programación existentes en el mercado e incluso es posible que un mismo entorno tenga la posibilidad de utilizar varios lenguajes de programación, como es el caso de Eclipse, que es un entorno de desarrollo integrado multiplataforma (utilizado para los lenguajes C, C++, Python y Java entre otros) de código abierto, utilizado en su mayoría para desarrollar otros entornos de desarrollo (como el JDT) aunque también puede ser utilizado para desarrollar aplicaciones cliente como Azureus (un cliente de BitTorrent). 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 de máquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción. Usando un intérprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables específicos a cada sistema. Eficiencia La desventaja principal de los interpretadores es que cuando se interpreta un programa, típicamente corre más lentamente que si hubiera sido compilado. La diferencia en velocidades puede ser minúscula o grande; a menudo un orden de magnitud y a veces más. Generalmente toma más tiempo correr un programa bajo un interpretador que correr el código compilado, pero puede tomar menos tiempo para interpretarlo que el tiempo total requerido para compilarlo y ejecutarlo. Esto es especialmente importante si se está haciendo y probando un código prototipo cuando un ciclo de editar, interpretar y depurar del interpretador, a menudo puede ser mucho más corto que el ciclo de editar, compilar, ejecutar y depurar del compilador. Algunos ejemplos de lenguajes que son normalmente interpretados en vez de compilados son: *Perl • PHP • Java • Java script • Logo • C# • J# • ASP SOFTWARE DE APLICACIÓN 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 ordenador), 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. Ciertas aplicaciones desarrolladas 'a medida' 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. Sistema de control Dentro de los sistemas se encuentra el concepto de sistema de control. Un sistema de control es un tipo de sistema que se caracteriza por la presencia de una serie de elementos que permiten influir en el funcionamiento del sistema. La finalidad de un sistema de control es conseguir, mediante la manipulación de las variables de control, un dominio sobre las variables de salida, de modo que estas alcancen unos valores prefijados Un sistema de control ideal debe ser capaz de conseguir su objetivo cumpliendo los siguientes requisitos: Garantizar la estabilidad y, particularmente, ser robusto frente a perturbaciones y errores en los modelos. 2. Ser tan eficiente como sea posible, según un criterio preestablecido. Normalmente este criterio consiste en que la acción de control sobre las variables de entrada sea realizable, evitando comportamientos bruscos e irreales. 3. Ser fácilmente implementable y cómodo de operar en tiempo real con ayuda de un ordenador Los elementos básicos que forman parte de un sistema de control y permiten su manipulación son los siguientes: 1- Sensores. Permiten conocer los valores de las variables medidas del sistema. 2- Controlador. Utilizando los valores determinados por los sensores y la consigna impuesta, calcula la acción que debe aplicarse para modificar las variables de control en base a cierta estrategia. 3- Actuador. Es el mecanismo que ejecuta la acción calculada por el controlador y que modifica las variables de control. Ofimática Se llama ofimática al equipamiento hardware y software usado para crear, coleccionar, almacenar, manipular y transmitir digitalmente la información necesaria en una oficina para realizar tareas y lograr objetivos básicos. Las actividades básicas de un sistema ofimático comprenden el almacenamiento de datos en bruto, la transferencia electrónica de los mismos y la gestión de información electrónica relativa al negocio. [1] La ofimática ayuda a optimizar o automatizar los procedimientos existentes. Software empresarial Por software empresarial se entiende generalmente cualquier tipo de software que está orientado a ayudar a una empresa a mejorar su productividad o a medirla. El término engloba una amplia variedad de aplicaciones informáticas que incluyen desde programas de contabilidad y de ofimática, hasta sistemas de planificación de recursos empresariales (ERP), pasando por programas de gestión de clientes (CRM), de recursos humanos, etc. Video juegos un videojuego es un software creado para el entretenimiento en general y basado en la interacción entre una o varias personas y un aparato electrónico que ejecuta dicho videojuego: este dispositivo electrónico puede ser una computadora, una máquina árcade, una videoconsola, un dispositivo handheld (un teléfono móvil, por ejemplo) los cuales son conocidos como "plataformas". Aunque, usualmente el término "video" en la palabra "videojuego" se refiere en sí a un visualizador de gráficos rasterizados,1 hoy en día se utiliza para hacer uso de cualquier tipo de visualizador. BASE DE DATOS Una base de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos. . Existen programas denominados sistemas gestores de bases de datos, abreviados SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se estudian dentro del ámbito de la informática. Tipos de Base de Datos Las bases de datos pueden clasificarse de varias maneras, de acuerdo al contexto que se esté manejando, la utilidad de las mismas o las necesidades que satisfaga , ya sea según la variabilidad de los datos almacenados o Según el contenido. Según la variabilidad de los datos almacenados: Bases de datos estáticas: éstas son bases de datos de sólo lectura, utilizadas primordialmente para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a través del tiempo, realizar proyecciones y tomar decisiones. Bases de datos dinámicas: éstas son bases de datos donde la información almacenada se modifica con el tiempo, permitiendo operaciones como actualización, borrado y adición de datos, además de las operaciones fundamentales de consulta. Un ejemplo de esto puede ser la base. Según el contenido: Bases de datos bibliográficas: solo contienen un subrogante (representante) de la fuente primaria, que permite localizarla. Un registro típico de una base de datos bibliográfica contiene información sobre el autor, fecha de publicación, editorial, título, edición, de una determinada publicación, etc. Puede contener un resumen o extracto de la publicación original, pero nunca el texto completo, porque si no, estaríamos en presencia de una base de datos a texto completo. Bases de datos de texto completo: almacenan las fuentes primarias, como por ejemplo, todo el contenido de todas las ediciones de una colección de revistas científicas. Modelos de bases de datos: Éstas también se pueden clasificar de acuerdo a su modelo de administración de datos Un modelo de datos es básicamente una "descripción" de algo conocido como contenedor de datos (algo en donde se guarda la información), así como de los métodos para almacenar y recuperar información de esos contenedores Los modelos de datos no son cosas físicas: son abstracciones que permiten la implementación de un sistema eficiente de base de datos; por lo general se refieren a algoritmos, y conceptos matemáticos. Bases de datos jerárquicas: son bases de datos que almacenan su información en una estructura jerárquica en donde los datos se organizan en una forma similar a un árbol, en el que encontramos a un nodo padre de información puede tener varios hijos y los que no tienen padre se les conoce como raíz, y los que no tienen hijos se les conoce como hojas. (Las bases de datos jerárquicas son especialmente útiles en el caso de aplicaciones que manejan un gran volumen de información y datos muy compartidos permitiendo crear estructuras estables y de gran rendimiento) Base de datos de red: Éste es un modelo ligeramente distinto del jerárquico; su diferencia fundamental es la modificación del concepto de nodo: se permite que un mismo nodo tenga varios padres. Este tipo de bases significo un gran avance en diferencia con la base jerárquica, ya que ofrecía una solución eficiente al problema de redundancia de datos. La dificultad que significa administrar la información en una base de datos de red ha significado que sea un modelo utilizado en su mayoría por programadores. CONCLUSION Como nos pudimos dar cuenta el software no es cualquier cosa y con él se puede lograr todo lo que queramos, pero sabiéndolo manejar correctamente. Hay infinidades de programas pero a medida que las computadoras se vuelven más populares, los desarrolladores de software, constantemente están sacando programas para quitar las tediosas tareas personales y hacerlas más divertidas. Estos programas pueden ser excelentes herramientas para la educación ya que si los niños disfrutan realizando las tareas jugando, sus habilidades aumentaran. Todos los días desarrolladores perceptivos encuentran problemas para para ser solucionados con software, y es que la tecnología a avanzado tanto que una persona puede realizar operaciones bancarias desde su casa, enviar un correo electrónico a cualquier parte del mundo, etc.; todo esto por el computador. Y esto es bueno ya que cada día la competencia por crear un mejor software, fomenta a crearlos más imaginativos, mejores y a precios más y más baratos.