miércoles, 18 de junio de 2008

Software


EL SOFTWARE

Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación es quizá uno de los productos de la ingeniería que más ha evolucionado en muy poco tiempo, pasando del software empírico o artesanal hasta llegar al software desarrollado bajo los principios y herramientas de la ingeniería del software.

Bajo esta definición, El concepto de software va más allá de los programas de cómputo en sus distintos estados: código fuente, binario o ejecutable; también su documentación, datos a procesar e información de usuario es parte del software: es decir, abarca todo lo intangible, todo lo "no físico" relacionado.


HISTORIA

El término «software» fue usado por primera vez en este sentido por John W. Tukey en 1957. En las ciencias de la computación y la ingeniería de software, el software es toda la información procesada por los sistemas informáticos: programas y datos. El concepto de leer diferentes secuencias de instrucciones desde la memoria de un dispositivo para controlar los cálculos fue introducido por Charles Babbage como parte de su máquina diferencial. La teoría que forma la base de la mayor parte del software moderno fue propuesta por vez primera por Alan Turing en su ensayo de 1936, "Los números computables", con una aplicación al problema de decisión.

CLASIFICACIÒN


Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, se puede clasificar al software de la siguiente forma:

Software de sistema: Es aquel que permite que el hardware funcione. Su objetivo es desvincular adecuadamente al programador de los detalles del computador en particular que se use, aislándolo especialmente del procesamiento referido a las características internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador adecuadas interfaces de alto nivel y utilidades de apoyo que permiten su mantenimiento. Incluye entre otros:
Sistemas operativos
Controladores de dispositivo
Herramientas de diagnóstico
Herramientas de Corrección y Optimización
Servidores
Utilidades

Software de programación: Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluye entre otros:
Editores de texto
Compiladores
Intérpretes
Enlazadores
Depuradores

Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, en entorno visual, de forma que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc... Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI).

Software de aplicación: Aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios. Incluye entre otros:
Aplicaciones de control y automatización industrial
Aplicaciones ofimáticas
Software educativo
Software médico
Software de Cálculo Numérico
Software de Diseño Asistido
Software de Control Numérico



· Software libre (free software) 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:
o La libertad de usar el programa, con cualquier propósito (libertad 0).
o La libertad de estudiar el funcionamiento del programa, y adaptarlo a las necesidades (libertad 1).
o La libertad de distribuir copias, con lo que puede ayudar a otros (libertad 2).
o La libertad de mejorar el programa y hacer publicas las mejoras, de modo que toda la comunidad se beneficie.
· El software gratis o gratuito (denominado usualmente freeware) incluye en algunas ocasiones el código fuente; sin embargo, este tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen los derechos de modificación y redistribución de dichas versiones modificadas del programa.

· De acuerdo a la apertura de su código fuente:

De código fuente abierto: también llamado "de fuente abierta" u "open source". Es aquel software que permite tener acceso a su código fuente a través de". Es el software que no tiene disponible su código fuente disponible por ningún medio, ni siquiera pagando. Generalmente tiene esta característica cuando su creador desea proteger su propiedad intelectual.

· De acuerdo a su protección:
De dominio publico: es el software que no esta protegido por ningún tipo de licencia. Cualquiera puede tomarlo y luego de modificarlo, hacerlo propio.
Protegido por licencias: es el tipo de software protegido con una licencia de uso. Dentro de este grupo tenemos:

b.1) Protegido con copyright: es decir, con derechos de autor (o de copia). El usuario no puede adquirirlo para usarlo y luego vender copias (salvo con la autorización de su creador).
b.2) Protegido con copyleft: es aquel cuyos términos de distribución no permiten a los redistribuidores agregar ninguna restricción adicional. Quiere decir que cada copia del software, aun modificada, sigue siendo como era antes.

· De acuerdo a su "legalidad":
Legal: es aquel software que se posee o circula sin contravenir ninguna norma. Por ejemplo, si tengo un software con su respectiva licencia original y con su certificado de autenticidad, o si lo tengo instalado en una sola computadora (porque la licencia solo me permite hacer eso).
Ilegal: es el software que se posee o circula violando una norma determinada. Por ejemplo: tengo licencia para usarlo en una sola computadora pero lo instalo en más de una, no tengo la licencia pero lo puedo utilizar mediante artificios (cracks, patchs, loaders, key generators, números de serie duplicados, etc.)


· De acuerdo a su "filosofía":
Propietario: es aquel software que refleja el hecho de que su propiedad absoluta permanece en manos de quien tiene sus derechos y no del usuario, quien únicamente puede utilizarlo bajo ciertas condiciones. Su uso, redistribución y/o modificación están prohibidos o restringidos de modo tal que no es posible llevarlos a cabo. Es decir, este tipo de software le da al usuario derechos limitados sobre su funcionamiento, cuyo alcance establece el autor o quien posea ese derecho. Por ejemplo, ese derecho puede ser el de ejecutar el programa "tal como es" en una determinada computadora.


Libre: es el tipo de software que le da al usuario la libertad de usarlo, estudiarlo, modificarlo, mejorarlo, adaptarlo y redistribuirlo, con la única restricción de no agregar ninguna restricción adicional al software modificado, mejorado, adaptado o redistribuido. Vale aclarar que debe permitir el acceso al código fuente, debido a que ello es una condición imprescindible para ejercer las libertades de estudiarlo, modificarlo, mejorarlo y adaptarlo.


El proceso de creación de software


El proceso de creación de software puede llegar a ser muy complejo, dependiendo de su porte, características y criticidad del mismo. Por ejemplo la creación de un sistema operativo es una tarea que requiere proyecto, gestión, numerosos recursos y todo un equipo disciplinado de trabajo. En el otro extremo, si se trata de un sencillo programa (ejemplo: resolución de una ecuación de segundo orden), ello puede ser realizado por un solo programador (incluso aficionado) fácilmente. Es así que normalmente se dividen en tres según su tamaño (líneas de código) y/o costo: de Pequeño, Mediano y Gran porte. Existen métodos para estimarlo, por ejemplo el sistema COCOMO.

Considerando los de gran porte, es necesario realizar tantas y complejas tareas tanto técnicas, de gerenciamiento, fuerte gestión y análisis diversos (entre otras) que toda una ingeniería hace falta para su estudio y realización: la Ingeniería de Software.


Considerando los de mediano porte, pequeños equipos de trabajo (incluso un avezado analista-programador solitario) puede realizar la tarea. Aunque deben seguir ciertas etapas que son necesarias para la construcción del software. Ellas, si bien deben existir, son flexibles en su forma de aplicación, de acuerdo a la metodología o Proceso de Desarrollo escogido y utilizado.


Los "procesos de desarrollo de software", que poseen reglas preestablecidas, deben ser aplicados en la creación del software de mediano y gran porte, caso contrario normalmente el proyecto o no logra concluir o termina sin cumplir los objetivos previstos y con variedad de fallos inaceptables. Hay procesos rápidos o livianos (XP), pesados y lentos (RUP) y variantes intermedias; y se aplican de acuerdo al tipo y porte del software a desarrollar. Algunos esos procesos son Extreme Programming (XP), Rational Unified Process (RUP), Feature Driven Development (FDD), etc.).

Es común para el desarrollo de software de mediano porte que los equipos humanos involucrados apliquen sus propias metodologías, normalmente un híbrido de los procesos anteriores.
El proceso de desarrollo puede involucrar numerosas y variadas tareas, desde lo administrativo, pasando por lo técnico y hasta la gestión y gerenciamiento. Pero casi rigurosamente siempre se cumplen ciertas etapas mínimas, las que se pueden resumir como sigue:

Captura (elicitación) y Especificación de requisitos (ERS)
Análisis
Codificación
Implementación
Pruebas (unitarias e integrales)
Paso a Producción
Mantenimiento

Para cada una de estas fases, existen sub.-etapas (o tareas). El Modelo de Proceso o Modelo de Ciclo de Vida utilizado define el orden para las tareas o actividades involucradas en el desarrollo, también definen su coordinación, enlace y realimentación entre las mencionadas etapas. Los más conocidos son: Modelo Cascada o secuencial.

Clasificación del Software de acuerdo al tipo de trabajo realizado

Feeware

Freeware es un software de computadora que se distribuye sin cargo. A veces se incluye el código fuente, pero no es lo usual. El Freeware suele incluir una licencia de uso, que permite su redistribución pero con algunas restricciones, como no modificar la aplicación en sí, ni venderla, y dar cuenta de su autor. Programa computacional cuyo costo económico para el usuario final es cero, independiente de las condiciones de distribución y uso que tenga. Este tipo de software la mayoría son utilerías para realizar cierta tarea como el programa Win Rar, el cual nos sirve para la compresión de un archivo.

Software multimedia

El software multimedia se refiere a los programas utilizados para presentar de una forma integrada textos, gráficos, sonidos y animaciones, este tipo de software es considerado como una nueva tecnología. Las ventajas que se le atribuyen al software multimedia es en la educación, especialmente en escuelas primarias, por que realizando presentaciones con software multimedia, los alumnos prestan mas intención a la presentación realizada.

Este tipo de software suele utilizarse para el desarrollo de proyectos específicos multimedios, utilizar software multimedia requiere de tiempo, capacidades, dedicación y recursos.

Software de uso general

El software de uso general son aquellos que nos sirven para resolver problemas muy variados del mismo tipo, de muy diferentes empresas o personas, con adaptaciones realizadas por un usuario, ejemplos: procesadores de texto, manejadores de bases de datos, hojas de cálculo, etc.

Software de uso especifico


Hablar de este tipo de software nos referimos al software desarrollado específicamente para un problema especifico de alguna organización o persona, utilizar este software requiere de un experto en informática para su creación o adaptación, son los programas que usan las escuelas para registrar las calificaciones de los alumnos y generar certificados, los que usan los bancos para el control de las cuentas, etc.

Características del Software

1. El software se desarrolla o construye; no se manufactura en el sentido clásico. A pesar de que existen similitudes entre el desarrollo del software y la manufactura del hardware, las dos actividades serian diferentes en lo fundamental. En ambas la alta calidad se alcanza por medio del buen diseño, la fase de manufactura del hardware puede incluir problemas de calidad existentes en el software.



2. El software no se desgasta. El software es inmune a los males ambientales que desgasten el hardware. Por lo tanto la curva de tasas de fallas para el software debería tener la forma de la “curva idealizada”. Los defectos sin descubrir causan tasas de fallas altas en las primeras etapas de vida de un programa. Sin embargo, los errores se corrigen y la curva se aplana: el software no se desgasta, pero si se deteriora.

3. A pesar de que la industria tiene una tendencia hacia la construcción por componentes, la mayoría del software aun se construye a la medida. Un componente de software se debe diseñar e implementar de forma que puede utilizarse en muchos programas diferentes.

Interrogantes

El proceso de desarrollo puede involucrar numerosas y variadas tareas. Pero casi rigurosamente siempre se cumplen ciertas etapas mínimas: ¿Podría decir cuales son las más relevantes?
¿Cuál es la importancia del software en la actualidad?

lunes, 9 de junio de 2008









SOFTWARE LIBRE.

Es el Software que, una vez obtenido, puede ser usado, copiado, estudiado, modificado y redistribuido libremente. El software libre suele estar disponible gratuitamente en Internet, o a precio del coste de la distribución a través de otros medios; sin embargo no es obligatorio que sea así y, aunque conserve su carácter de libre, puede ser vendido comercialmente.

Con software libre nos referimos a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. Nos referimos especialmente a cuatro clases de libertad para los usuarios de software:

· La libertad para ejecutar el programa sea cual sea nuestro propósito.

· La libertad para estudiar el funcionamiento del programa y adaptarlo a tus necesidades —el acceso al código fuente es condición indispensable para esto.

· La libertad para redistribuir copias y ayudar así a tu vecino.

· La libertad para mejorar el programa y luego publicarlo para el bien de toda la comunidad y el acceso al código fuente es condición indispensable para esto.

Linux : es un sistema operativo el cual es la ejecución libre del sistema llamado UNIX para computadoras personales, servidores, y estaciones de trabajo. Como sistema operativo se dice que es muy eficiente y además de su genial diseño es multiplataforma, multitarea, multiprocesador y multiusuario y es la aparición de un nuevo sistema el cual es libre con esto no queremos decir que tiene que ser gratis obligatoriamente solo que no hay que cancelar una cuota por las licencias.


HISTORIA:

En la década de los ochenta apareció un nuevo sistema, era una versión básica y reducida de Unix llamada Minix, su autor fue Andrew Tanenbaum, el objetivo era crear un acceso a este sistema sin tener que pagar licencias, basados en este sistema el señor Linus B. Torvalds, a mediados de 1991 empezó a trabajar en un proyecto para mejorar las deficiencias de Minix, Torvalds creo la primera versión de Linux (Contracción de Linus y Unix) numerada como versión 0.01.

Esta versión solo contenía un Kernel muy rudimentario y para poder realizar cualqui

er operación se requería que la máquina tuviera instalado Minix. El 5 de Octubre de 1991 fue creada y publicada la versión 0.02 cuando Torvalds logro ejecutar programas como el Bash y el Gcc, después de esta publicación se distribuyo en forma gratuita el código de Linux e invito a todo aquel que pudiera aportar ideas nuevas y mejorar el código vía Internet, gracias a estos aportes Linux evoluciono rápidamente a las versiones 0.03, 0.10, 0.11 y 0.12. En Marzo de 1992 fue creada la versión 0.95.

LINUX COMO SISTEMA OPERATIVO

El sistema lo forman el núcleo del sistema (kernel) mas un gran numero de programas / librerías que hacen posible su utilización.

LINUX se distribuye bajo la GNU Public License: por lo tanto, el código fuente tiene que estar siempre accesible.

El sistema ha sido diseñado y programado por multitud de programadores alrededor del mundo. El núcleo del sistema sigue en continuo desarrollo bajo la coordinación de Linus Torvalds, la persona de la que partió la idea de este proyecto, a principios de la década de los noventa.

Día a día, mas y mas programas / aplicaciones están disponibles para este sistema, y la calidad de los mismos aumenta de versión a versión.

La gran mayoría de los mismos vienen acompañados del código fuente y se distribuyen gratuitamente bajo los términos de licencia de la GNU Public License.

En los últimos tiempos, ciertas casas de software comercial han empezado a distribuir sus productos para Linux y la presencia del mismo en empresas.

Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II/III/IV, Amiga y Atari, también existen versiones para su utilización en otras plataformas, como Alpha, ARM, MIPS, Power PC y SPARC.

Características de Linux:

· Multitarea: La palabra multitarea describe la habilidad de ejecutar varios programas al mismo tiempo. LINUX utiliza la llamada multitarea preventiva, la cual asegura que todos los programas que se están utilizando en un momento dado serán ejecutados, siendo el sistema operativo el encargado de ceder tiempo de microprocesador a cada programa.

· Multiusuario: Muchos usuarios usando la misma maquina al mismo tiempo.

· Multiplataforma: Las plataformas en las que en un principio se puede utilizar Linux son 386-, 486-. Pentium, Pentium Pro, Pentium II, Amiga y Atari, también existen versiones para su utilización en otras plataformas, como Alpha, ARM, MIPS, Power PC y SPARC.

· Multiprocesador: Soporte para sistemas con mas de un procesador esta disponible para Intel y SPARC.

· Funciona en modo protegido 386.

· Protección de la memoria entre procesos, de manera que uno de ellos no pueda colgar el sistema.

· Carga de ejecutables por demanda: Linux sólo lee del disco aquellas partes de un programa que están siendo usadas actualmente.

· Política de copia en escritura para la compartición de páginas entre ejecutables: esto significa que varios procesos pueden usar la misma zona de memoria para ejecutarse. Cuando alguno intenta escribir en esa memoria, la página (4Kb de memoria) se copia a otro lugar. Esta política de copia en escritura tiene dos beneficios: aumenta la velocidad y reduce el uso de memoria.

· Memoria virtual usando paginación (sin intercambio de procesos completos) a disco: A una partición o un archivo en el sistema de archivos, o ambos, con la posibilidad de añadir más áreas de intercambio sobre la marcha Un total de 16 zonas de intercambio de 128Mb de tamaño máximo pueden ser usadas en un momento dado con un límite teórico de 2Gb para intercambio. Este límite se puede aumentar fácilmente con el cambio de unas cuantas líneas en el código fuente.

· La memoria se gestiona como un recurso unificado para los programas de usuario y para el caché de disco, de tal forma que toda la memoria libre puede ser usada para caché y ésta puede a su vez ser reducida cuando se ejecuten grandes programas.

· Librerías compartidas de carga dinámica (DLL's) y librerías estáticas.

· Se realizan volcados de estado (core dumps) para posibilitar los análisis post-mortem, permitiendo el uso de depuradores sobre los programas no sólo en ejecución sino también tras abortar éstos por cualquier motivo.

· Compatible con POSIX, System V y BSD a nivel fuente.

· Emulación de iBCS2, casi completamente compatible con SCO, SVR3 y SVR4 a nivel binario.

· Todo el código fuente está disponible, incluyendo el núcleo completo y todos los drivers, las herramientas de desarrollo y todos los programas de usuario; además todo ello se puede distribuir libremente. Hay algunos programas comerciales que están siendo ofrecidos para Linux actualmente sin código fuente, pero todo lo que ha sido gratuito sigue siendo gratuito.

Distibuciones de GNU/LINUX:

Una distribución es un modo para hacer más fácil la instalación, la configuración y el mantenimiento de un sistema GNU/LINUX. En un principio, estas distribuciones se limitaban a seleccionar software libre, guardarlo en disquetes o CD-ROM y redistribuirlo o venderlo.

Ahora existen grandes distribuciones como son: RedHat, SuSe, Caldera, Mandrake, Corel Linux, Turbo Linux, entre otras, son potentes empresas las cuales compiten entre si por incluir el ultimo software, en ocasiones también software propietario, con instalaciones graficas capaces de auto detectar el hardware y que instalan el sistema entero en unos cuantos minutos.

Entre las distribuciones de GNU/LINUX, destaca el proyecto Debian/GNU; este, nace desde la iniciativa no comercial de la FSB, después de un tiempo de independiza de ella y va mas allá del sistema GNU/Linux. Es la única distribución que no tiene intereses comerciales ni empresariales.

Los usuarios activos, son los que mantienen la distribución de forma comunitaria, incluyen todas sus estructuras de decisión y funcionamiento; el objetivo de este es recopilar difundir y promover el uso de software libre, también reúne el mayor catalogo del mismo, todos ellos probados, mantenidos y documentados por algún desarrollador voluntario.


Conclusión e interrogantes

Con todo esto hemos visto que un Software Libre una vez obtenido, puede ser usado, copiado, estudiado, modificado y redistribuido libremente. El software libre suele estar disponible gratuitamente en Internet.

Cabe acotar que Linux es una buena alternativa frente a los diferentes sistemas operativos, lo cual va muchísimo más allá de las ventajas de lo costoso que pueda ser; las diferentes versiones de Unix para PC, en comparación con Linux son lo suficientemente superiores ya que este es mucho más veloz y confiable.

Comparado con sistemas operativos como los diferentes sistemas de Microsoft Windows, Linux permite beneficiarnos al máximo las capacidades de las computadoras más modernas, ya que ocupa menos espacio en la memoria RAM del equipo.

En fin no solo es superior en la administración de memorias y en el sistema multitarea, sino también es en la conectividad de las redes y el multiusuario.

Con todo esto ¿Cuáles podrían ser las ventajas y las desventajas de Linux con respecto a los distintos sistemas operativos?

¿A que nos referimos cuando decimos que Linux es un software libre mas no necesariamente tiene que ser gratuito?