lunes, 21 de mayo de 2007

Programa minimalista

El Programa Minimalista es el actual programa de investigación dentro de la Gramática transformacional formulado por Noam Chomsky a comienzos de los noventa.[1] Chomsky y otros han ido modificando el Programa en diversos libros y artículos, especialmente en The Minimalist Program (1995),[2] que ya tiene una traducción al español.[3] Estos textos obligaron a revisar varias herramientas teóricas del modelo gramatical de Rección y ligamiento.

La perfección del lenguaje El Programa Minimalista mantiene la idea chomskiana inicial de que los componentes centrales del lenguaje son innatos (Gramática Universal), pero añade una propuesta bastante radical sobre la arquitectura de la facultad lingüística. La idea central del Programa Minimalista es la premisa de que el lenguaje es perfecto, es decir, que no le falta ni le sobra nada: la facultad lingüística contiene únicamente aquello que es conceptualmente necesario, desde un punto de vista filosófico, biológico o físico. Nada es redundante. En ese sentido, lo mínimo que debe tener es un mecanismo para generar infinitas oraciones y materializarlas a través de cierto conjunto de sonidos (o de señas, si se trata de una lengua de señas) asociados con los respectivos conceptos. Eso quiere decir que tenemos al menos tres componentes: un sistema de conocimiento (la competencia, de carácter computacional, formada por el léxico y la sintaxis) que alimenta dos sistemas de actuación: el sistema Articulatorio-Perceptual A-P (que interpreta las instrucciones para la emisión del enunciado) y el sistema Conceptual-Intencional C-I (que interpreta las instrucciones para la composición lógico-semántica). La relación entre la sintaxis (el sistema computacional) y los sistemas de actuación se produce a través de dos niveles de representación: la Forma Fonética (FF), el conjunto de instrucciones que interactúa con A-P, y la Forma Lógica (FL), el conjunto de instrucciones que interactúa con C-I.

Este diseño simplifica notablemente el modelo anterior, al eliminar niveles intermedios como Estructura profunda y Estructura superficial, que habían sido cruciales desde el comienzo de la Gramática transformacional. Asimismo, muchas herramientas teóricas de los modelos anteriores se han desechado o simplificado; por ejemplo, la idea de rección, las huellas del movimiento, los índices y la Teoría de la X'.

Economía y Minimalismo Por su énfasis en la idea de que la facultad del lenguaje es "perfecta" (es decir, que carece de redundancias), el Programa Minimalista es caracterizado muchas veces como una exigencia metodológica para proponer explicaciones gramaticales más simples y económicas (esto es, como una suerte de reformulación de la Navaja de Occam). No hay duda de que el énfasis en la simplicidad, economía y elegancia es central en el Minimalismo, pero no es algo exclusivo de él; elegancia, simplicidad y economía han sido exigencias que la Gramática generativa se ha impuesto a sí misma desde el principio, en consonancia con el resto de la ciencia.[4] Lo que Chomsky propone es que la teoría lingüística debería ir más allá de la mera adecuación explicativa, para exigirse el diseño de una teoría sin redundancias (algo que convierte al lenguaje en un objeto bastante único en el mundo biológico, como Chomsky reconoce).[5]

Por otra parte, el Programa Minimalista permite pensar en un nuevo tipo de economía de la derivación. En las versiones anteriores era posible establecer condiciones de economía global (por ejemplo, los filtros), que se imponían sobre el producto final de la derivación, esto es, sobre una representación sintáctica completa. Eso quiere decir que una estructura podía generarse por entero y, una vez formada, se podía desechar. Como es evidente, esto constituye una redundancia, pues estamos generando estructuras que luego van a ser bloqueadas por condiciones de tipo global. En la hipótesis minimalista más fuerte, las condiciones no se imponen sobre una representación acabada, sino sobre cada uno de los pasos de la derivación; es decir, las condiciones de economía son locales, no globales.[6] Esto evita la generación innecesaria de estructuras que luego vayan a desecharse.

El modelo de gramática

Bajo el supuesto de que el lenguaje es un dispositivo óptimamente diseñado (perfecto) para derivar representaciones hacia los componentes de actuación, toda propiedad, operación y condición de buena formación gramatical debe tener por finalidad que las derivaciones resultantes puedan ser interpretadas por las interfaces.

La sintaxis es concebida como un sistema computacional, que toma un conjunto N de elementos léxicos y construye con ellos un sólo objeto sintáctico, a través de una operación recursiva llamada ensamble (E. Merge, en inglés). A medida que se van construyendo nuevos objetos sintácticos, la información relevante para cada interfaz debe ser separada, es decir, las instrucciones de naturaleza fonológica constituyen la Forma Fonética y las instrucciones de naturaleza semántica la Forma Lógica. La operación que se encarga de separar esta información es denominada materialización (M. Spell-out, en inglés.).

Movimientos y categorias funcionales En el modelo de Rección y ligamiento, los movimientos eran explicados a través de la operación Muévase-α y de ciertas condiciones sobre la Estructura superficial. En el Programa Minimalista, el movimiento se debe a la necesidad de cotejar (o chequear) algunos rasgos de ciertas categorías que no van a poder ser interpretados por las interfaces. Estos rasgos no interpretables resultan ser una especie de "virus" dentro del sistema computacional, por lo que deben ser eliminados. Su eliminación se realiza a través del cotejo (o chequeo) de rasgos comunes entre elementos ya presentes en la derivación (es decir, con estructuras ya ensambladas en pasos previos) y estructuras que se añaden en pasos posteriores (categorías funcionales). Los primeros se reensamblan (o se copian) a los segundos para cotejar rasgos no interpretables (lo cual crea el efecto de desplazamiento).

En el ejemplo, el sintagma determinante Juan se reensambla para cotejar el rasgo PPE (requerimiento de tener un sujeto). En la oración resultante hay dos copias de Juan. En principio, cualquiera de las copias podría ser interpretada por las interfaces, pero, por ejemplo, la Forma Fonética generalmente excluye las copias más bajas, lo cual provoca que sea solo el último elemento reensamblado (la copia más alta en la estructura) la que se pronuncie.

Es importante destacar que un rasgo no interpretable sólo puede ser cotejado por un elemento que posea un rasgo análogo (un complementante con un rasgo interrogativo debe chequear ese rasgo con un sintagma interrogativo, por ejemplo, provocando que una oración interrogativa comience con un pronombre interrogativo). En el caso de existir más de un elemento con tal rasgo, el elemento más cercano será el que se reensamble.

Materialización múltiple y la derivación por fases En las últimas versiones del Programa Minimalistas [7], se ha propuesto que la operación de materialización se realice por etapas. Cada punto de aplicación de esta operación se denominada una fase; después de cada fase, los objetos sintácticos ensamblados hasta ese momento se envían a las interfaces para su interpretación. Se supone que las fases son delimitadas por ciertas categorías funcionales. Hay acuerdo general en que C y v* son fases. C es el Complementante y establece el dominio de la fuerza ilocucionaria de la oración; por su parte, v*, que es el verbalizador de la raíz léxica de V (Verbo) en estructuras transitivas,[8] establece el dominio de la aplicación de la Teoría Temática. Para muchos, D (Determinante), que marca el dominio de la referencialidad, es también una fase. Se ha propuesto también que los verbalizadores de estructuras no transitivas (v) son fases.

Una característica definitoria de las fases es su impenetrabilidad: ningún constituyente puede extraerse de ellas. Esta Condición de impenetrabilidad de la fase resume muchas de las ideas sobre limitaciones en la extracción que se han formulado desde los inicios de la Gramática generativa.

El Programa de Erlangen

Con motivo de su ingreso como profesor en la Facultad de Filosofía y Letras, al profesorado del Instituto José C. Paz y al Senado de la Universidad de Erlangen, Klein escribió una memoria en 1872 (que por cierto no llego a leer en público) que puede considerarse, junto a la Conferencia de Riemann y a los Elementos de Euclides, como los puntos esenciales del estudio de la Geometría.

La idea de la memoria, conocida como el Programa de Erlangen, es bastante sencilla. Se trata de dar una definición formal de lo que es una geometría, más allá de la idea más o menos intuitiva que tenemos de ella.

Ante la aparición de las nuevas geometrías no euclidianas, parece lógico preguntarse qué es la Geometría, máxime cuando la propia idea de la geometría euclidiana se había visto modificada desde la irrupción de los métodos algebraicos y analíticos. Empieza a no estar tan claro que la Geometría sea el estudio de puntos, líneas (rectas o curvas) y superficies, puesto que el propio Análisis Matemático (sobre todo en el estudio de Ecuaciones Diferenciales) parece que también estudia tales objetos. Por otra parte, los métodos analíticos y algebraicos también son aplicables a las geometrías no euclidianas. Hay, digamos, dos niveles de distinciones: por un lado, la de las geometrías no euclidianas y la geometría euclidiana, por otro lado, la distinción entre el método sintético, el algebraico y el analítico.

¿Qué es entonces la Geometría?

Klein da respuesta a esta pregunta introduciendo en la Geometría un nuevo concepto de carácter algebraico: el concepto de grupo. Un grupo es un conjunto G en el que hay definida una operación, es decir, una aplicación que a cada par de elementos del conjunto le asigna otro elemento del conjunto (que será el resultado de operar dichos dos elementos). Mientras que la mayoría de la gente está familiarizada con las operaciones numéricas, les resulta difícil imaginar que puedan operarse puntos, rectas, etc. Puede hacerse, y no hay más que pensar en, por ejemplo, la operación "tomar el punto medio", que a cada par de puntos le asigna el punto medio del segmento que une los dos primeros puntos.

Para que un conjunto en el que haya una operación sea un grupo deben de cumplirse ciertas condiciones, que son:

La operación debe ser asociativa: esto quiere decir que si tomamos cualesquiera tres elementos a,b,c del conjunto, el resultado de operar los dos primeros (a y b) y operar el resultado de ello con el tercero (c) debe de ser lo mismo que si primero operamos el segundo y el tercero (b y c) y el resultado lo operamos con el primero (a). Es decir, si la operación la denotamos por ha de ocurrir que debe de ser lo mismo que .
Debe existir un elemento neutro: esto quiere decir que ha de haber un elemento e del conjunto de manera que si tomo cualquier otro elemento a del conjunto y lo opero con él, entonces el resultado vuelve a ser el elemento a, es decir, es como si al elemento a no lo hubiera operado. Así, con nuestra notación, y .
Por último, cada elemento debe tener un elemento simétrico: esto quiere decir que si yo tomo un elemento cualquiera a del conjunto, entonces puedo encontrar otro elemento del conjunto de tal manera que al operar ambos, el resultado que obtengo es el elemento neutro: .
El concepto de grupo no es invención de Klein, pero es él el que descubre un hecho fundamental que lo relaciona con las distintas geometrías: cada geometría es el estudio de ciertas propiedades que no cambian cuando se le aplican un tipo de transformaciones. Esas propiedades, por no cambiar, las denomina invariantes, y las transformaciones que a un invariante no le hacen cambiar han de tener estructura de grupo bajo la operación de composición (componer dos transformaciones es hacer una de ellas y aplicarle la otra transformación al resultado de la primera).

Así Klein descubre que, por ejemplo, la geometría euclidiana es el estudio de los invariantes mediante el grupo de los movimientos rígidos (como las simetrías, giros y traslaciones), que la geometría afín es el estudio de los invariantes mediante el grupo de las translaciones, que la geometría proyectiva es el estudio de los invariantes mediante el grupo de las proyectividades, e incluso que la Topología es el estudio de los invariantes mediante el grupo de las funciones continuas y de inversa continua, entre otras.

De hecho, Klein afirma que la comprensión de "tener una geometría, entonces hay un grupo principal" es más bien al revés. Uno a priori dice qué tipo de transformaciones admitirá (es decir, da el grupo) y todo lo demás se puede reconstruir a partir de él. Se demuestra incluso, que si uno da un subgrupo de las biyecciones de un conjunto en sí mismo isomorfo a algún grupo clásico (simetrías, translaciones, proyectividades) entonces todos los teoremas de esa geometría son válidos en este.

El descubrimiento de Klein es fundamental, ya que por un lado nos permite clasificar las geometrías, comprendiendo cuál es una "subgeometría" de cual, por otro lado nos permite comprender qué es el estudio general de la Geometría (como disciplina matemática) y por último, pero no menos importante, es la confirmación de que los métodos sintético y algebraico no dan geometrías distintas, sino que realmente estudian la misma geometría en cada caso. Se pone fin así a la distinción entre el método sintético y el algebraico-analítico. En su época supuso la consagración de la Geometría Proyectiva como la Reina de las Geometrías.

Nótese que es la primera vez que una ciencia (la Geometría) es capaz de autodefinirse rigurosamente y, por tanto, constituye uno de los puntos culminantes del espíritu humano en la historia.

Programa de grabación

Un Programa de grabación es un software que tiene como finalidad escribir una serie de datos en una unidad de disco física (usualmente un cd/dvd).

Los datos a escribir pueden ser compilados por el usuario en el propio momento de la grabación o venir incluidos en algún fichero que contenga la estructura exacta y reproducible de un medio físico (soporte original). Este tipo de ficheros es lo que habitualmente se conoce como una imagen de un cd o dvd.

Aunque es lo más habitual, una imagen no tiene porque contener los datos de un CD/DVD, sino que puede contener cualquier estructura de ficheros compatible. Por poner algunos ejemplos, en breve nos encontraremos con imágenes de Blu-Ray/HD-DVD y actualemente podemos encontrar imágenes de los discos UMD correspondientes a la consola portable de Sony (PSP).

Código abierto
Multiplataforma Cdrtools
Cdrkit, a fork de cdrtools por el proyecto Debian

Linux y Unix Dvdrtools, fork de cdrtools
Dvd+rw-tools
Los siguientes son front-ends para cdrtools

K3b
GnomeBaker
Graveman
Nautilus, gestor de archivos oficial del entorno de escritorio GNOME
Serpentine
X-CD-Roast
Xfburn
Los siguientes son en modo texto:

BashBurn
Cdw

Windows Infra Recorder

Mac OS X Burn
SimplyBurns

Freeware
Windows Active@ ISO Burner
Burnatonce
CDBurnerXP Pro
DeepBurner Free
DVD Decrypter (Discontinuado)
DVD Shrink
ImgBurn
ISO Recorder
Finalburner
AVS Disc Creator

Software propietario
Amiga MakeCD
Frying Pan
MasterISO

Mac OS X Roxio Toast
MacTheRipper
DVDRemaster

Linux cdrecord
GEAR PRO Linux
NeroLINUX
k3b
xcdroast

Unix GEAR PRO Unix

Windows Alcohol 120%
AVS Video Converter
blindwrite
CloneCD
CloneDVD
Cyberlink Power2Go
DeepBurner
DiscJuggler
Easy CD Creator
Easy Media Creator
GEAR Video
Nero Burning ROM
Ulead DVD software
UltraISO
Roxio WinOnCD
Ashampoo Burning Studio
CDRWIN

ZETA MediaFire Pro

Contador de programa

El contador de programa (en inglés Program Counter o PC) es un registro interno del computador en el que se almacena la dirección de la última instrucción leída. De esta manera el computador puede saber cuál es la siguiente instrucción que debe ejecutar.

El PC va incrementándose en una unidad¹, salvo que la instrucción ejecutándose en ese instante cambie el flujo del programa, saltando a otra dirección.

¹unidad: una instrucción, que según la arquitectura de los computadores que lo alberguen, puede constar de un byte, 2, o más, según el tamaño de palabra usado en el formato del juego de instrucciones.

Obtenido de "http://es.wikipedia.org/wiki/Contador_de_programa"

Software, concepto y definicion

El software es un ingrediente indispensable para el funcionamiento del computador. Está formado por una serie de instrucciones y datos, que permiten aprovechar todos los recursos que el computador tiene, de manera que pueda resolver gran cantidad de problemas. Un computador en si, es sólo un conglomerado de componentes electrónicos; el software le da vida al computador, haciendo que sus componentes funcionen de forma ordenada.

El software es un conjunto de instrucciones detalladas que controlan la operación de un sistema computacional.

Funciones del software:

Administrar los recursos de cómputo
Proporcionar las herramientas para optimizar estos recursos.
Actuar como intermediario entre el usuario y la información almacenada.
Programas de Software

Programa: conjunto de argumentos o instrucciones para la computadora, almacenado en la memoria primaria de la computadora junto con los datos requeridos para ser ejecutado, en otras palabras hacer que las instrucciones sean realizadas por la computadora.

Tipos de Software

Software del sistema: Es un conjunto de programas que administran los recursos de la computadora. Ejemplos: Unidad central de proceso, dispositivos de comunicaciones y dispositivos periféricos, el software del sistema administra y controla al acceso del hardware.
Software de aplicaciones: Programas que son escritos para o por los usuarios para realizar una tarea especifica en la computadora. Ejemplo: software para procesar un texto, para generar una hoja de calculo, el software de aplicación debe estar sobre el software del sistema para poder operar.
Software de usuario final: Es el software que permiten el desarrollo de algunas aplicaciones directamente por los usuarios finales, el software del usuario final con frecuencia tiene que trabajar a través del software de aplicación y finalmente a través del software del sistema.
Cada software debe ser diseñado para un tipo de máquina específica para asegurar su compatibilidad.

Lenguajes de consulta: (SQL) son lenguajes de alto nivel para recuperar datos almacenados en bases de datos o en archivos, permiten solicitudes de información que no estén predefinidas.

Generadores de reportes: Son programas para crear informes sobre diseño en una amplia variedad de formatos que no son rutinariamente producidos por un sistema de información. Extraen datos de los archivos o de las bases de datos y crean reportes de acuerdo con muchos formatos, proporcionan más control, pueden manejar datos de cálculos y lógica compleja antes de darles la salida.

Lenguajes de gráficas: Recuperan datos de archivos o de bases de datos y los representan en un formato gráfico.

Generadores de aplicaciones: Software que puede generar aplicaciones enteras de sistemas de información; el usuario sólo necesita especificar cuáles son las necesidades a se satisfechas y el generador de aplicaciones crea el código del programa adecuado para la entrada, validación actualización, procesamiento e informes. Herramientas de desarrollo: un sistema de administración de base de datos, diccionario de datos, lenguaje de consulta (SQL), protectores de pantalla, generador de gráficas, generador de reportes herramientas para el soporte/simulación de decisiones, elementos de seguridad y un lenguaje de programación de alto nivel.

Paquetes de software de aplicaciones: Conjunto preescrito, precodificado y comercialmente disponible de programas que elimina la necesidad de las personas de escribir sus propios programas de software. Existen paquetes de aplicaciones para sistemas grandes y complejos los cuales deben ser instalados por especialistas técnicos.

Software de procesamiento de palabras: Almacena datos de texto electrónicamente, como un archivo de computadora, permite hacer cambios que se encuentra en la memoria. El software tiene opciones de formateo para hacer cambios en el espacio de líneas, márgenes, tamaño de los caracteres y ancho de la columna. Ejemplos: Word, Wordperfect.

Hojas de calculo: Software que despliega los datos en una malla de columnas y renglones, con la capacidad de calcular fácilmente los datos numéricos. Proporciona capacidades gráficas para una presentación visual clara de los datos en las hojas de cálculo.

Software de administración de datos: Es más apropiado para crear y manejar listas y combinar información de archivos diferentes. Los paquetes de administración de datos tienen características de programación y menús fáciles de aprender. Ejemplos: dBASE IV, dBASEIII, Paradox, Rbase y Foxbase.

Paquetes de software integrados: Combinan las funciones de los más importantes paquetes de software como: hojas de cálculo, procesador de palabras, gráficas y administración de datos. Esta integración elimina la entrada redundante de datos y el mantenimiento de los mismos.

Uso de una Herramienta de Modelado

Uso de una Herramienta de Modelado
El intercambio de información de diseño e ideas usando la notación UML sería hecho en los medios que siempre han sido populares: pizarras, cuadernos y trozos de papel por nombrar algunos. Pero UML se sirve mejor por una herramienta de modelado, la cual puede ser usada para capturar, guardar, rechazar, integrar automáticamente información, y diseño de documentación.

Una característica que beneficia a los modeladores, UML también hace más fácil escoger una herramienta de modelado. Hace tiempo, el modelador primero tenía que selecionar una notación de metodología, y después estaba limitado a seleccionar una herramienta que la soportara. Ahora con UML como estándar, la elección de notación ya se ha hecho para el modelador. Y con todas las herramientas de modelado soportando UML, el modelador puede seleccionar la herramienta basada en las áreas claves de funcionalidad soportadas que permiten resolver los problemas y documentar las soluciones.

Como una buena caja de herramientas, una buena herramienta de modelado ofrece todas las herramientas necesarias para conseguir hacer eficientemente varios trabajos, sin dejarte nunca sin la herramienta correcta. Dentro de la estructura de diseño de sistemas descrito en esta guía, esto incluye lo siguiente:



Soporte para toda la notación y semántica de UML

Soporte para una cantidad considerable de técnicas de modelado y diagramas para complementar UML - incluyendo tarjetas CRC, modelado de datos, diagramas de flujo, y diseño de pantallas de usuario. Posibilidad de reutilizar información obtenida por otras ténicas todavía usadas, como modelado tradicional de procesos.

Facilitar la captura de información en un repositorio subyacente - permitiendo la reutilización entre diagramas.

Posibilidad de personalizar las propiedades de definición de elementos subyacentes de modelos UML.

Permitir a varios equipos de analistas trabajar en los mismos datos a la vez.

Posibilidad de capturar los requisitos, asociarlos con elementos de modelado que los satisfagan y localizar cómo han sido satisfechos los requisitos en cada uno de los pasos del desarrollo.

Posibilitar la creación de informes y documentación personalizados en tus diseños, y la salida de estos informes en varios formatos, incluyenod HTML para la distribución en la Internet o Intranet local.

Posibilidad para generar y 'reverse' código (por ejemplo C++, Java, etc) para facilitar el análisis y diseño 'iterative', para volver a usar código o librerías de clase existentes, y para documentar el código.


System Architect 2001Popkin software ofrece soporte para modelar sistemas con UML en System Architect 2001. Ofrece todas las características descritar arriba para permitir el modelado eficiente de sistemas. Para más información en los distintos productos de Popkin Software, visite www.popkin.com

Diseño de Bases de Datos Relacionales -- Una extensión informal de UML


El Diagrama de Clase presenta un mecanismo de implementación neutral para modelar los aspectos de almacenado de datos del sistema. Las clases persistentes, sus atributos, y sus relaciones pueden ser implementadas directamente en una base de datos orientada a objetos. Aun así, en el entorno de desarrollo actual, la base de datos relacional es el método más usado para el almacenamiento de datos. Es en el modelado de este área donde UML se queda corto. El diagrama de clase de UML se puede usar para modelar algunos aspectos del diseño de bases de datos relacionales, pero no cubre toda la semántica involucrada en en el modelado relacional, mayoritariamente la noción de atributos clave que relacionan entre sí las tablas unas con otras. Para capturar esta información, un Diagrama de Relación de Entidad (ER diagram) se recomienda como extensión a UML.

El Diagrama de Clase se puede usar para modelar el estructura lógica de la base de datos, independientemente de si es orientada a objetos o relacional, con clases representando tablas, y atributos de clase representando columnas. Si una base de datos relacional es el método de implementación escogido, entonces el diagrama de clase puede ser referenciados a un diagrama de relación de entidad lógico. Las clases persistentes y sus atributos hacen referencia directamente a las entidades lógicas y a sus atributos; el modelador dispone de varias opciones sobre cómo inferir asociaciones en relaciones entre entidades. Las relaciones de herencia son referenciadas directamente a super-sub relaciones entre entidades en un diagrama de relación de entidad (ER diagram).


Ya en el Diagrama de Relación de Entidad, el modelador puede empezar el proceso de determinar cómo el modelo relacional encaja; y qué atributos son claves primarias, claves secundarias, y claves externas basadas en relaciones con otras entidades. La idea es constriur un modelo lógico que sea conforme a las reglas de normalización de datos.

Al implementar el diseño relacional, es una estrategia encaminada a hacer referencia al diagrama de relación de entidad lógico a un diagrama físico que represente el objetivo, el RDBMS. El diagrama físico puede ser denormalizado para lograr un diseño de base de datos que tiene tiempos eficientes de acceso a los datos. Las relaciones super-sub entre entidades se resuelven por las estructuras de tablas actuales. Además, el diagrama físico se usa para modelar propiedades específicas de cada fabricante para el RDBMS. Se crean varios diagramas físicos si hay varios RDBMSs siendo 'deployed'; cada diagrama físco representa uno de los RDBMS que son nuestro objetivo.

Modelando la Distribución y la Implementación


Los Diagramas de Implementación se usan para modelar la configuración de los elementos de procesado en tiempo de ejecución (run-time processing elements) y de los componentes, procesos y objetos de software que viven en ellos. En el diagrama 'deployment', empiezas modelando nodos físicos y las asociaciones de comunicación que existen entre ellos. Para cada nodo, puedes indicar qué instancias de componentes viven o corren (se ejecutan) en el nodo. También puedes modelar los objetos que contiene el componente.

Los Diagramas de Implementación se usan para modelar sólo componentes que existen como entidades en tiempo de ejecución; no se usan para modelar componentes solo de tiempo de compilación o de tiempo de enlazado. Puedes también modelar componentes que migran de nodo a nodo u objetos que migran de componente a componente usando una relación de dependencia con el estereotipo 'becomes' (se transforma)

Modelando Componentes de Software


El Diagrama de Componentes se usa para modelar la estructura del software, incluyendo las dependencias entre los componentes de software, los componentes de código binario, y los componentes ejecutables. En el Diagrama de Componentes modelas componentes del sistema, a veces agrupados por paquetes, y las dependencias que existen entre componentes (y paquetes de componentes).

Definición de Software Libre

Mantenemos esta definición de software libre para mostrar claramente qué debe cumplir un programa de software concreto para que se le considere software libre.

El ``Software Libre'' es un asunto de libertad, no de precio. Para entender el concepto, debes pensar en ``libre'' como en ``libertad de expresión'', no como en ``cerveza gratis'' [N. del T.: en inglés una misma palabra (free) significa tanto libre como gratis, lo que ha dado lugar a cierta confusión].

``Software Libre'' se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. De modo más preciso, se refiere a cuatro libertades de los usuarios del software:


La libertad de usar el programa, con cualquier propósito (libertad 0).
La libertad de estudiar cómo funciona el programa, y adaptarlo a tus necesidades (libertad 1). El acceso al código fuente es una condición previa para esto.
La libertad de distribuir copias, con lo que puedes ayudar a tu vecino (libertad 2).
La libertad de mejorar el programa y hacer públicas las mejoras a los demás, de modo que toda la comunidad se beneficie. (libertad 3). El acceso al código fuente es un requisito previo para esto.
Un programa es software libre si los usuarios tienen todas estas libertades. Así pues, deberías tener la libertad de distribuir copias, sea con o sin modificaciones, sea gratis o cobrando una cantidad por la distribución, a cualquiera y a cualquier lugar. El ser libre de hacer esto significa (entre otras cosas) que no tienes que pedir o pagar permisos.

También deberías tener la libertad de hacer modificaciones y utilizarlas de manera privada en tu trabajo u ocio, sin ni siquiera tener que anunciar que dichas modificaciones existen. Si publicas tus cambios, no tienes por qué avisar a nadie en particular, ni de ninguna manera en particular.

La libertad para usar un programa significa la libertad para cualquier persona u organización de usarlo en cualquier tipo de sistema informático, para cualquier clase de trabajo, y sin tener obligación de comunicárselo al desarrollador o a alguna otra entidad específica.

La libertad de distribuir copias debe incluir tanto las formas binarias o ejecutables del programa como su código fuente, sean versiones modificadas o sin modificar (distribuir programas de modo ejecutable es necesario para que los sistemas operativos libres sean fáciles de instalar). Está bien si no hay manera de producir un binario o ejecutable de un programa concreto (ya que algunos lenguajes no tienen esta capacidad), pero debes tener la libertad de distribuir estos formatos si encontraras o desarrollaras la manera de crearlos.

Para que las libertades de hacer modificaciones y de publicar versiones mejoradas tengan sentido, debes tener acceso al código fuente del programa. Por lo tanto, la posibilidad de acceder al código fuente es una condición necesaria para el software libre.

Para que estas libertades sean reales, deben ser irrevocables mientras no hagas nada incorrecto; si el desarrollador del software tiene el poder de revocar la licencia aunque no le hayas dado motivos, el software no es libre.

Son aceptables, sin embargo, ciertos tipos de reglas sobre la manera de distribuir software libre, mientras no entren en conflicto con las libertades centrales. Por ejemplo, copyleft [``izquierdo de copia''] (expresado muy simplemente) es la regla que implica que, cuando se redistribuya el programa, no se pueden agregar restricciones para denegar a otras personas las libertades centrales. Esta regla no entra en conflicto con las libertades centrales, sino que más bien las protege.

Así pues, quizás hayas pagado para obtener copias de software GNU, o tal vez las hayas obtenido sin ningún coste. Pero independientemente de cómo hayas conseguido tus copias, siempre tienes la libertad de copiar y modificar el software, e incluso de vender copias.

``Software libre'' no significa ``no comercial''. Un programa libre debe estar disponible para uso comercial, desarrollo comercial y distribución comercial. El desarrollo comercial del software libre ha dejado de ser inusual; el software comercial libre es muy importante.

Es aceptable que haya reglas acerca de cómo empaquetar una versión modificada, siempre que no bloqueen a consecuencia de ello tu libertad de publicar versiones modificadas. Reglas como ``Si haces disponible el programa de esta manera, debes hacerlo disponible también de esta otra'' pueden ser igualmente aceptables, bajo la misma condición. (Observa que una regla así todavía te deja decidir si publicar o no el programa). También es aceptable que la licencia requiera que, si has distribuido una version modificada y el desarrollador anterior te pide una copia de ella, debas enviársela.

En el proyecto GNU, utilizamos ``copyleft'' para proteger de modo legal estas libertades para todos. Pero el software libre sin ``copyleft'' también existe. Creemos que hay razones importantes por las que es mejor usar copyleft, pero si tus programas son software libre sin ser copyleft, los podemos utilizar de todos modos.

Visita la página Categorías de Software Libre (18.000 caracteres) para ver una descripción de las diferencias que hay entre el ``software libre'', ``software con copyleft (`izquierdo' de copia)'' y otras categorías de software se relacionan unas con otras.

A veces las normas de control de exportación del gobierno y las sanciones mercantiles pueden restringir tu libertad de distribuir copias de los programas a nivel internacional. Los desarrolladores de software no tienen el poder de eliminar o sobrepasar estas restricciones, pero lo que pueden y deben hacer es rehusar el imponerlas como condiciones de uso del programa. De esta manera, las restricciones no afectarán a actividades y gente fuera de las jurisdicciones de estos gobiernos.

Cuando se habla de software libre, es mejor evitar términos como: ``regalar'' o ``gratis'', porque esos téminos implican que lo importante es el precio, y no la libertad. Algunos términos comunes tales como ``piratería'' conllevan opiniones que esperamos no apoyes. Visita la página Palabras y frases confusas que vale la pena evitar, donde encontrarás una discusión acerca de estos términos. También tenemos una lista de traducciones de ``software libre'' a varios idiomas.

Por último, fíjate en que los criterios establecidos en esta definición de software libre requieren pensarse cuidadosamente para interpretarlos. Para decidir si una licencia de software concreta es una licencia de software libre, lo juzgamos basándonos en estos criterios para determinar si tanto su espíritu como su letra en particular los cumplen. Si una licencia incluye restricciones contrarias a nuestra ética, la rechazamos, aun cuando no hubiéramos previsto el problema en estos criterios. A veces un requisito de una licencia plantea una situación que necesita de una reflexión minuciosa, e incluso conversaciones con un abogado, antes de que podamos decidir si la exigencia es aceptable. Cuando llegamos a una conclusión, a veces actualizamos estos criterios para que sea más fácil ver por qué ciertas licencias se pueden calificar o no como de software libre.

FUNCIONAMIENTO DEL ORDENADOR




¿Qué ocurre cuando encendemos el ordenador?

Placa base (mother board), donde aparecen los pasos que sigue la inicialización del ordenador para su puesta en funcionamiento a partir del momento que oprimimos el botón de encendido.
Cuando encendemos el ordenador, la corriente eléctrica (1) llega al transformador de fuerza o potencia (2). A través del conector (3) el transformador distribuye las diferentes tensiones o voltajes de trabajo a la placa base, incluyendo el microprocesador o CPU (4). Inmediatamente que el microprocesador recibe corriente, envía una orden al chip de la memoria ROM del BIOS (5) (Basic Input/Output System – Sistema básico de entrada/salida), donde se encuentran grabadas las rutinas del POST ( Power-On Self-Test – Autocomprobación diagnóstica de encendido) o programa de arranque. Si no existiera el BIOS con ese conjunto de instrucciones grabadas en su memoria, el sistema informático del ordenador no podría cargar en memoria el Sistema Operativo, programa sin el cual no funcionarían el resto de los programas instalados en el ordenador.

Una vez que el BIOS recibe la orden del microprocesador, éste toma el mando del ordenador y el programa del POST comienza a ejecutar una secuencia de pruebas diagnósticos para comprobar sí la tarjeta de vídeo (6), la memoria RAM (7), las unidades de discos [disquetera, disco duro (8) y reproductor y/o grabador de CD o DVD], el teclado, el ratón y otros dispositivos de hardware conectados al ordenador, se encuentran en condiciones de funcionar correctamente.

Cuando el BIOS no puede detectar un determinado dispositivo instalado en el ordenador o detecta fallos en alguno de ellos, se oirán una serie sonidos en forma de “beeps” o pitidos y aparecerán en la pantalla del monitor mensajes de error, indicando que hay problemas. En caso de que el BIOS no detecte nada anormal durante el proceso de revisión, iniciará a continuación el proceso de “boot” o “bootstrap”, es decir, de inicialización o arranque del ordenador.

Durante el chequeo previo a la inicialización, el BIOS va mostrando en la pantalla del monitor diferentes informaciones con textos en letras blancas y fondo negro. A partir del momento que comienza el chequeo de la memoria RAM, un contador numérico muestra la cantidad de bytes que va comprobando y, si no hay ningún fallo, la cifra que aparece al final de la operación indica la cantidad total en megabytes instalada y disponible de memoria RAM que tiene el ordenador para ser utilizada.

Durante el resto del proceso de revisión, el POST muestra también en el monitor un listado con la relación de los dispositivos de almacenamiento masivo de datos que tiene el ordenador instalado y que han sido comprobados como, por ejemplo, el disco o discos duros y el lector/grabador de CD o DVD si lo hubiera.
Cualquier error que encuentre el BIOS durante el proceso de chequeo se clasifica como “no grave” o como “grave”. Si el error no es grave el BIOS sólo muestra algún mensaje de texto o sonidos de “beep” sin que el proceso de arranque y carga del Sistema Operativo se vea afectado. Pero si el error fuera grave, el proceso se detiene y el ordenador se quedará bloqueado o colgado. En ese caso lo más probable es que exista algún dispositivo de hardware que no funciona bien, por lo que será necesario repararlo o sustituirlo.

En algunos ordenadores que con el paso del tiempo se han ido quedando tecnológicamente retrasados, el primer sitio a donde, por defecto, se dirige el BIOS a buscar el Sistema Operativo es la disquetera, en lugar de dirigirse directamente al disco duro, como lo hacen en la actualidad los ordenadores más actuales.
Eso se debe a que cuando surgieron los primeros ordenadores personales todavía no existía el disco duro tanto el sistema operativo como los programas de usuarios se cargaban en la memoria RAM a partir de un disquete que se colocaba en la disquetera. Después, cuando apareció el disco duro, no existían tampoco los CDs, por lo que los programas se continuaron pasando a través de la disquetera para grabarlos en el disco duro, utilizando en la mayoría de los casos varios disquetes. Por ese motivo, hasta hace poco tiempo, el programa POST de la BIOS continuaba dirigiéndose primero a buscar el Sistema Operativo en la disquetera y si no lo encontraba allí pasaba a buscarlo en el disco duro.
Si por olvido al apagar esos ordenadores se nos quedaba algún disquete introducido en la disquetera, al encenderlo de nuevo el proceso de inicialización se detenía a los pocos segundos, porque el BIOS se topaba con el disquete primero y al no encontrar en éste el Sistema Operativo no continuaba su búsqueda en el disco duro, porque asumía que no existía ese programa. Cuando eso ocurría solamente habría que extraer el disquete de la disquetera, oprimir cualquier tecla en el teclado y de inmediato el BIOS se dirigirá al disco duro a buscar dicho programa.
ARRANQUE O INICIALIZACIÓN DEL ORDENADOR
Una vez que el BIOS termina de chequear las condiciones de funcionamiento de los diferentes dispositivos del ordenador, si no encuentra nada anormal continúa el proceso de “booting” (secuencia de instrucciones de inicialización o de arranque del ordenador), cuya información se encuentra grabada en una pequeña memoria RAM denominada CMOS (Complementary Metal-Oxide Semiconductor – Semiconductor de óxido-metal complementario). Para impedir que se borren los datos que tiene grabados esta memoria es necesario mantenerla constantemente energizada. Para ello la mayoría de los ordenadores utilizan actualmente una batería plana de litio CR 2032 tipo botón, de 3 volt de tensión, instalada en la propia placa base.

Para comenzar el proceso de inicialización, el BIOS localiza primeramente la información de configuración contenida en la memoria CMOS, que contiene, entre otros datos, la fecha y la hora actualizada, configuración de los puertos, parámetros del disco duro y la secuencia de inicialización o arranque. Esta última es una de las rutinas más importantes que contiene el programa de la memoria CMOS, porque le indica a la BIOS el orden en que debe comenzar a examinar los discos o soportes que guardan la información para encontrar en cuál de ellos se encuentra alojado el sistema operativo o programa principal, sin el cual el ordenador no podría ejecutar ninguna función. (Entre los sistemas operativos más comúnmente utilizados hoy en día en los ordenadores personales se encuentran el Windows, de Microsoft y el Linux de código abierto).

En los ordenadores más actuales, la BIOS está programa para que en lugar de ir a buscar el sistema operativo a la disquetera vaya directamente a buscarlo a la unidad “C:\”, específicamente al “boot sector” o sector de arranque del disco duro. En ese lugar del disco se encuentra grabado el “boot record” o programa de arranque, que contiene las instrucciones necesarias que permiten realizar el proceso de carga del Sistema Operativo en la memoria RAM.

Una vez que el BIOS extrae del disco duro una parte del Sistema Operativo y lo pasa a la memoria RAM, ese programa es el encargado de controlar todo el trabajo que ejecuta el ordenador. Para ello el BIOS carga en la memoria RAM los archivos principales de inicialización del Sistema Operativo, como son el io.sys, config.sys, command.com, autoexec.bat y win.ini (en el caso del sistema operativo Windows).

A partir de ese momento el ordenador ya puede funcionar obedeciendo las instrucciones que dicho Sistema Operativo envía al microprocesador, así como de las instrucciones que contienen los programas de las aplicaciones o software que utilizan los usuarios como, por ejemplo: procesador o editor de texto, hoja de cálculo, base de datos, etc.
Desde ese momento, el Sistema Operativo será el encargado de manejar el microprocesador, la memoria RAM, los programas o software que se ejecutan, los diferentes dispositivos conectados al ordenador, el almacenamiento de datos y la interacción entre el usuario y el ordenador.

domingo, 20 de mayo de 2007

software aplicacion y uso

Se denomina software, programática, equipamiento lógico o soporte lógico a todos los componentes intangibles de una computadora, es decir, al conjunto de programas y procedimientos necesarios para hacer posible la realización de una tarea específica, en contraposición a los componentes físicos del sistema (hardware). Esto incluye aplicaciones informáticas tales como un procesador de textos, que permite al usuario realizar una tarea, y software de sistema como un sistema operativo, que permite al resto de programas funcionar adecuadamente, facilitando la interacción con los componentes físicos y el resto de aplicaciones.
Probablemente la definición más formal de software es la atribuida a la IEEE en su estándar 729: «la suma total de los programas de cómputo, procedimientos, reglas documentación y datos asociados que forman parte de las operaciones de un sistema de cómputo» [1]. Bajo esta definición, el concepto de software va más allá de los programas de cómputo en sus distintas formas: código fuente, binario o ejecutable, además de su documentación: es decir, todo lo intangible.
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 de la memoria de un dispositivo para controlar cálculos fue inventado 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.
Tabla de contenidos[ocultar]



Tipología
Si bien esta distinción es, en cierto modo, arbitraria, y, a veces, difusa y confusa, se puede distinguir al software de la siguiente forma:
Software de sistema,es la parte que permite funcionar al hardware. Su objetivo es aislar tanto como sea posible al programador de aplicaciones de los detalles del computador particular que se use, especialmente de las características físicas de la memoria, dispositivos de comunicaciones, impresoras, pantallas, teclados, etcétera. Incluye entre otros:
Sistemas operativos
Controladores de dispositivo
Herramientas de diagnóstico
Servidores
Sistemas de ventanas
Utilidades
Software de programación, que proporciona herramientas para ayudar al programador a escribir programas informáticos y a usar diferentes lenguajes de programación de forma práctica. Incluye entre otros:
Editores de texto
Compiladores
Intérpretes
Enlazadores
Depuradores
Los entornos integrados de desarrollo (IDE) agrupan estas herramientas de forma que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etcétera, gracias a que habitualmente cuentan con una interfaz gráfica de usuario (GUI) avanzada.
Software de aplicación, que permite a los usuarios llevar a cabo una o varias tareas más específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios. Incluye entre otros:
Aplicaciones de automatización industrial
Aplicaciones ofimáticas
Software educativo
Software médico
Bases de datos
Videojuegos

Formas
El software adopta varias formas en distintos momentos de su ciclo de vida:
Código fuente: escrito por programadores. Contiene el conjunto de instrucciones destinadas a la computadora.
Código objeto: resultado del uso de un compilador sobre el código fuente. Consiste en una traducción de éste último. El código objeto no es directamente inteligible por el ser humano, pero tampoco es directamente entendible por la computadora. Se trata de una representación intermedia del código fuente. Véase MSIL (Microsoft Intermediate Language)
Código ejecutable: resultado de enlazar uno o varios fragmentos de código objeto. Constituye un archivo binario con un formato tal que el sistema operativo es capaz de cargarlo en la memoria de una computadora, y proceder a su ejecución. El código ejecutable es directamente inteligible por la computadora.

El proceso de creación de software
El proceso de creación de software es materia de la ingeniería del software. Es un proceso complejo que involucra diversas tareas de gestión y desarrollo. Como resumen de las etapas para la creación de un software, se pueden mencionar:
Análisis
Desarrollo
Construcción
Pruebas (unitarias e integradas)
Paso a Producción
Dentro de estas etapas, existen sub-etapas (para algunos son otras etapas, como por ejemplo, paso a ambiente beta/rc).