miércoles, 20 de enero de 2010

Capas o Layers

Definición de Layer

Abstracción de layers, de capa o de nivel. Es una forma de ocultar los detalles de implementación de un conjunto particular de funcionalidades. Tal vez los modelos de software más conocidos que usan abstracción de capas son los OSI 7 Layer (modelo para los protocolos de redes de computadoras), la librería de graficación OpenGL, y el modelo byte stream I/O originado en Unix. // En arquitectura de computadoras, un sistema computacional es usualmente representado con cinco niveles (layers) de abstracción: hardware, firmware, assembler, sistema operativo y procesos. // (capa) En graficación en 2D, un layer o capa es donde se grafica sin afectar otras capas. Estás se superponen para lograr un gráfico completo. Éste método es utilizado, por ejemplo, en Flash.

martes, 12 de enero de 2010

Sofware Libre

El software libre es la denominación del software que respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido libremente.

Orígenes del Software Libre
La primera generación de computadoras aparece a finales de la década de 1940. Eran de enormes dimensiones y muy costosas. El poder computacional era muy pobre comparado con las computadoras de la actualidad. La relación entre el hardware y el software era demasiado estrecha, los programas se escribían de una manera bastante especializada (lenguaje de máquina) y por lo tanto, el concepto de software como una parte “independiente” del hardware se veía todavía muy lejano. Debido precisamente a esta relación entre hardware-software, las personas que operaban las computadoras debían de poseer cierto nivel de conocimientos sobre el funcionamiento de las mismas, así como de los programas que necesitaban para hacerlas funcionar. En ese entonces no existían los usuarios convencionales, todos eran usuarios especializados, en su gran mayoría científicos o ingenieros.

En los inicios de la computación, 40s y 50s, no existían las licencias de software. El software era libre y los programas se intercambiaban como se hace con las recetas de cocina. Este espíritu perduró en la comunidad de programadores durante años como algo natural, hasta que con el tiempo las restricciones derivadas de licencias de uso, implementadas por desarrolladores de software y las grandes compañías, plantearon la necesidad de fijar una línea divisora entre el software libre y el software propietario.

Con el surgimiento del ARPANET (precursor del Internet) a finales de la década de los 60s --la cual permitía la interconexión entre redes de computadoras de las diversas universidades-- empezó el surgimiento de la primera comunidad global que se alzaba sobre los valores y principios del software libre. Los grupos hasta entonces dispersos de hackers, pudieron a través de la red, sumar esfuerzos, intercambiar conocimientos y colaborar entre sí. Los proyectos involucraban cada vez más desarrolladores de software, quienes estaban dispersos geográficamente alrededor del mundo y utilizaban el correo electrónico como medio de comunicación para hacer llegar sus aportaciones.

Desarrollo

Las metodologías de desarrollo ágiles y el Software Libre son enfoques muy conocidos para el desarrollo de software. Aunque son muy diferentes, presentan muchas concordancias como, por ejemplo, los principios y valores básicos. En particular, hay muchas analogías entre el desarrollo de Software Libre y la programación extrema (enfoque al código e inclusión de cambios, por citar algunas). Este artículo presenta estos principios y valores básicos e identifica las concordancias entre ambas metodologías.