miércoles, 25 de febrero de 2009

Power Builder

PowerBuilder es una herramienta de desarrollo de clase empresarial desarrollada por la empresa SyBase. PowerBuilder es orientada a objetos y permite el desarrollo de diferentes tipos de aplicaciones y componentes para arquitecturas cliente/servidor, distribuidas y Web.

Principales características


PowerBuilder incluye, dentro de su ambiente integrado de desarrollo, herramientas para crear la
interfaz de usuario, generar reportes y tener acceso al contenido de una base de datos. PowerBuilder también incluye un lenguaje de programación llamado Powerscript, el cual es usado para especificar el comportamiento de la aplicación en respuesta a eventos del sistema o del usuario, tal como cerrar una ventana o presionar un botón. Las aplicaciones desarrolladas con PowerBuilder se ejecutan exclusivamente en el sistema operativo Microsoft Windows, aunque cierto tipo de componentes que no incluyen una interfaz de usuario (llamados componentes no visuales o NVOs) y que encapsulan sólo lógica de aplicación, se pueden ejecutar en otros sistemas operativos como Unix, usando la "Máquina Virtual de PowerBuilder" o PBVM incluida dentro del servidor de aplicaciones EAServer de Sybase.
Adicionalmente, PowerBuilder posee un objeto nativo para la gestión de datos llamado DataWindow, el cual puede ser usado para crear, editar y visualizar datos de una
base de datos. Este objeto patentado por Sybase da al desarrollador un conjunto amplio de herramientas para especificar y controlar la apariencia y comportamiento de la interfaz de usuario, y también brinda acceso simplificado al contenido de la base de datos. Hasta cierto punto, el DataWindow libera al programador de las diferencias entre sistemas de gestión de base de datos de diferentes proveedores. Recientemente, Sybase introdujo al mercado el DataWindow.NET, un componente que extiende las bondades del DataWindow y acelera el rendimiento de aplicaciones en ambientes de desarrollo .NET.

WinFS

martes, 24 de febrero de 2009

El Futuro de la Ingenieria del Software




La calidad de los sistemas informáticos,
satisfacción de sus usuarios y clientes, son temas ampliamente conocidos, recurrentes y de constante preocupación
por parte de los practicantes de la Ingeniería de software.
Esta joven y dinámica ingeniería siempre
está en busca de mejoras en el desarrollo
de sistemas, aumento de productividad del ingeniero de software, mayor control del proceso de desarrollo, establecimiento de nuevos métodos de desarrollo. Estos elementos,
combinados y aplicados de buena forma, logran un buen proceso de desarrollo
y, en definitiva, un buen producto.
Identificar los pasos que ha recorrido esta ingeniería, analizar su contexto actual y, finalmente, proyectar hacia dónde se dirige, es el pilar de este artículo.
La salida de este “círculo vicioso” que se propone es bastante natural: analizar la situación actual de la ingeniería de software en la luz de sus tendencias históricas.
La primera de ellas, relacionada con los problemas que resuelven los sistemas, obviamente presente y muy utilizada en nuestra realidad: los sistemas de hoy no sólo resuelven los problemas del mundo real, sino que están fuertemente influenciando
el desarrollo del mundo real.
El enfoque de los ingenieros, desde hace unos años, no se ha movido significativamente
por el camino del aumento de abstracción establecido históricamente. Se han hecho ciertos avances en temas puntuales
(como arquitecturas de componentes,
patrones de diseño, nuevos lenguajes de programación, etc.), pero conceptualmente,
metodológicamente, la tarea de programación sigue siendo ejecutada de la misma forma: escribiendo códigos fuentes en forma de los programas textuales.
Éste es, justamente, el “atraso” metodológico
que se mencionó. Para disminuir la brecha entre las tendencias históricas, es necesario ajustar la metodología, en términos de aumentar la abstracción del enfoque de los ingenieros de software y acercarlo a la abstracción del problema.
El aumento de la abstracción del proceso de desarrollo del software hace pensar que la próxima generación de métodos de desarrollo se perfila en un conceptualmente nuevo conjunto
de herramientas, que permitan aumentar
en un mayor grado al actual la abstracción, escondiendo los detalles de más bajo nivel.

Es muy probable que estemos próximos
a ver un nuevo paso evolutivo en la ingeniería de software. Tan grande como el invento de lenguajes de alto nivel o análisis y diseño orientado a objetos. Una nueva generación que absorberá a la actual, automatizando la mayoría de las buenas prácticas usadas actualmente.
Una pregunta natural es si una máquina
puede llegar a generar programas tan buenos como los hechos por un programador
experto. En vez de “romper la cabeza” con esta pregunta ahora, quizás sería suficiente recordarse otra vez de la historia. Los primeros compiladores de ninguna generación alcanzaban de inmediato
lo deseable y óptimo. Sin embargo, con el paso del tiempo, apoyados en la experiencia
de los ingenieros y en el avance tecnológico, se mejoraban hasta el nivel de superar significativamente las generaciones
anteriores. Es poco factible que hoy en día alguien cuestione la calidad de los compiladores
de, por ejemplo, Java y la calidad del código de máquina generado por ellos.

Los Mitos del Software

Mito: El Software Libre es gratis

El Software Libre no es gratis, aunque hay bastante Software Libre que se puede conseguir por un precio muy cercano a cero (el coste de una conexión a Internet o el coste de un CD-R). De hecho, bastante Software Privativo se puede conseguir de la misma manera, aunque sus autores no nos autorizan a ello normalmente. Se trata, por lo tanto, del típico problema de la escasez artificial: realmente ambos tipos de programas se pueden duplicar con un coste marginal muy cercano a cero, pero solamente el Software Libre nos autoriza a ello. Esto no tiene nada que ver con cuánto ha costado hacer la primera copia del software. Mucho Software Libre ha sido pagado por empresas, otro mucho por administraciones públicas de gobiernos, también hay Software Libre que proviene de proyectos que han sido convertidos de Software Privativo a Software Libre y quizá lo que más venga a la mente de la gente al hablar de este tema es el Software Libre desarrollado por programadores en su tiempo libre. Programar siempre tiene un coste en horas-programador. El precio que finalmente tengan los CDs que contienen ese software no tiene por qué estar en relación directa con ese coste (¿Es adecuado pagar 450 EUR por una licencia para un PC de Microsoft Office Professional? ¿Era adecuado el precio de 150 $ por una copia del procesador de textos Emacs? Supongo que aquí el veredicto lo tendrá la elasticidad de la demanda y no tanto el coste real).
Si nos referimos al coste de implantación del software, ninguna implantación o migración es gratuita. Todo cambio tiene un coste. Si los usuarios de un sistema informático están ya entrenados y habituados a usarlo, cambiarlo tiene un coste asociado. Tanto si ese cambio es de Software Privativo a Software Libre como a la inversa. La única ventaja en este sentido que aporta el Software Libre es que no hay que dedicar una partida del presupuesto al pago de licencias de software, pero el resto de costes siguen ahí. No creo recomendable asumir que un cambio de un software con un coste anual de licencias de 1000 EUR a un software similar sin coste de licencias conlleve el ahorro anual de 1000 EUR. Es irreal, los primeros años habrá costes asociados a la adaptación de los usuarios al nuevo sistema. Solamente cuando la adaptación sea un hecho se podrá contabilizar ese ahorro.

Mito: El Software Libre es muy difícil de utilizar.

Hay Software Libre muy fácil de utilizar y lo contrario, Software Privativo muy difícil de utilizar. ¿No me creéis? Pongamos un par de ejemplos: si en un aula de informática sustituimos el navegador Internet Explorer por el Mozilla Firefox probablemente nadie se queje por la dificultad de uso, Firefox es Software Libre y es muy sencillo de utilizar. Por el contrario, ¿cuántos de los lectores saben poner siquiera un breakpoint utilizando el depurador SoftICE? SoftICE es Software Privativo y sin embargo no es fácil de utilizar para un usuario no experto.
Lo que podemos deducir de lo anterior es que la libertad del software no implica un grado de facilidad u otro por sí misma. Sin embargo, el mito tiene su razón de ser: muchos de los programas libres han nacido en un entorno muy técnico (laboratorios de investigación, facultades de ingeniería, etc.) y no se han preocupado del resto de usuarios durante bastantes años. Esto ha provocado una merecida fama de complejos a Sistemas Operativos como GNU/Linux. Digo merecida porque hasta hace bien poco la usabilidad y accesibilidad del sistema no era una prioridad dentro de sus líneas de desarrollo. Hoy en día esto ha cambiado. Entornos gráficos como Gnome tienen como principal motivación de diseño la usabilidad, la sencillez de manejo, y lo están consiguiendo. Hoy en día distribuciones de GNU/Linux como Ubuntu Linux han conseguido ser mucho más fáciles de instalar que sistemas privativos, consiguiendo ir desterrando la fama de difícil que rodeaba a GNU/Linux.

Hay un dicho en Internet que creo bastante acertado: “Windows hace fácil lo fácil e imposible lo difícil”. Las cosas fáciles son muy fáciles en Windows. Cuando no hay problemas, es un sistema realmente usable, genial para acercarse a la informática. El problema está cuando queremos hacer algo difícil como modificar un comportamiento por defecto de algo para lo que los desarrolladores de Windows no han programado un asistente. Quizá tengamos suerte y con un pequeño hechizo bastante insondable podamos modificar el registro de Windows y consigamos lo que nos proponíamos, pero no siempre la solución es tan “fácil”.

Mito: El Software Libre no tiene garantía.

Cierto, esto no es un mito. Lo que sí es un mito es que el Software Privativo la tiene. Cito textualmente la EULA (End-User License Agreement) de Microsoft Windows que todos hemos aceptado alguna que otra vez al instalarlo:"EXCLUSIÓN DE DAÑOS INCIDENTALES, CONSECUENTES Y DE OTRO TIPO.
HASTA DONDE PERMITA LA LEY APLICABLE, EN NINGÚN CASO MICROSOFT NI
NINGUNO DE SUS PROVEEDORES SERÁ RESPONSABLE DE NINGÚN DAÑO DIRECTO,
INDIRECTO O DE CUALQUIER TIPO (INCLUYENDO PERO NO LIMITANDO PERJUICIOS
ECONÓMICOS, FUGAS DE INFORMACIÓN CONFIDENCIAL, INTERRUPCIÓN DEL
SERVICIO DE NEGOCIO, DAÑOS FÍSICOS A LAS PERSONAS, PÉRDIDA DE PRIVACIDAD,
O FALLO EN EL CUMPLIMIENTO DE NINGUN DEBER INCLUYENDO USOS DOLOSOS
Y CULPOSOS, NEGLIGENCIA O CUALQUIER OTRO) DERIVADO DE USO O LA
INCAPACIDAD DE USO DEL PRODUCTO, LA PROVISIÓN O EL FALLO DE PROVISIÓN
DE SERVICIO [...]
LIMITACIÓN DE RESPONSABILIDAD Y REMEDIOS.
[...] La responsabilidad total de Microsoft y cualquiera de sus
proveedores bajo cualquier circunstancia estar limitada al máximo
de la cantidad pagada por el producto o la suma de $5.00."
Como vemos, Microsoft también se descarga de cualquier tipo de responsabilidad por el uso de su software. Aunque se produzca una hecatombe termonuclear en vuestro disco duro provocada por un fallo de memoria en el Buscaminas y todos vuestros ficheros se pierdan en el limbo de los sectores de disco no enlazados, lo máximo que obtendréis es la cantidad pagada por Microsoft Windows o la suma de cinco dólares.
El resto de fabricantes de Software Privativo tiene cláusulas similares en sus EULAs. Descubrirlas queda como ejercicio para el lector.

Mito: El Software Libre es más inseguro.

Un mito bastante extendido entre los consultores de seguridad que orbitan dentro del campo de las empresas de Software Privativo es que el Software Libre es más inseguro por dos datos claros: 1) el código está a la vista, por lo que los malhechores podrían investigarlo para encontrar vulnerabilidades y aprovecharse de ellas, y 2) el número de avisos de seguridad dentro de las aplicaciones libres es mayor que el número de avisos de seguridad en aplicaciones privativas. Ambos datos son un hecho, no son muy discutibles. Lo que sí que es discutible es su interpretación.
Conocer el código de una aplicación permite a mucha gente detectar problemas y fallos y solventarlos, avisando a sus desarrolladores y al resto de usuarios. Sí, también permite que malhechores encuentren vulnerabilidades, no avisen a nadie y se aprovechen de ello. La cuestión es que casi cualquier programador sabe leer código fuente de otro programador y darse cuenta de errores, corregirlos y avisar de ellos. No hay que ser un gurú cracker para ello. Normalmente los malhechores sí se acercan al arquetipo de gurú cracker y no tienen mucho problema en pegarse directamente con el código máquina para encontrar vulnerabilidades y aprovecharlas. ¿Cuál es la ventaja entonces del Software Privativo en cuanto a seguridad? Perdemos la posibilidad de que muchos programadores puedan ayudar a detectar fallos en los programas de otros, y sin embargo no evadimos los posibles ataques de expertos crackers con sus temidos 0-days.
Después de tratar el asunto anterior, queda claro el porqué del mayor número de avisos de seguridad: hay más gente con la capacidad de detectar fallos y avisar. Es algo lógico, no hay por qué extrañarse.
Existe también otro tipo de consultores de seguridad que son tendenciosos en este punto, pero desde el otro lado de la trinchera. Hay estudios que valoran la seguridad de un sistema en función de los ataques con éxito que recibe en un tiempo determinado. Si nos guiamos por esas cifras, las tornas cambian y el Software Privativo de amplio uso se lleva un terrible batacazo. No estoy de acuerdo tampoco con estos análisis. También es de cajón que los sistemas más utilizados sean los más atacados. Las primeras versiones de Windows eran auténticos coladores, pero Windows 2003, por ejemplo, se ha tomado en serio el tema de la seguridad y tiene políticas muy orientadas a preservarla justo después de su instalación.
En mi opinión la seguridad no tiene tanto que ver con la libertad o no del software, sino con las opciones de configuración de cada software y de quién esté al cargo de la implantación.

Mito: El Software Libre va a acabar con la profesión de programador.

Esto sí que es verdadero FUD, miedo en estado puro. ¿Cuántos de los programadores que conocéis trabajan para empresas que basan su modelo de negocio en la venta de licencias de software? No quiero inventarme estadísticas, solamente hay que mirar a nuestro alrededor. A no ser que vivamos en la India o algún otro país donde se subcontrate el desarrollo de Software Privativo, lo normal es que los programadores que nos rodean trabajen para pequeñas y medianas empresas que desarrollan software a medida, para grandes consultoras que también hacen lo propio o para la Administración Pública. Ninguno de esos puestos de trabajo se verá amenazado por el Software Libre. La única amenaza que conlleva el Software Libre es contra sus equivalentes en Software Privativo, no contra los programadores en sí. Hay mucho Software Libre que programar y mucha Administración Pública dispuesta a pagar por él. Ya hay empresas que se han dado cuenta de ello y han cambiado su modelo de negocio. El Software Libre genera empleo local, beneficia a la pequeña y mediana empresa y perjudica en cierta medida a las multinacionales del Software Privativo que no quieran hacer algunos desarrollos libres.

Mito: El Software Libre no lo usa nadie.

Quizá a algunos lectores les sorprenda saber que cada vez que han hecho una búsqueda en Google han usado Software Libre. El gigantesco oráculo con nombre de número grandote es un enorme cluster de ordenadores funcionando bajo Software Libre. Otro ejemplo de un número escandalosamente grande de usuarios es la red P2P más famosa de Internet, la red emule. Tanto los clientes como los servidores de la red emule son Software Libre en su inmensa mayoría. Lo mismo ocurre con BitTorrent.
En cuanto a la World Wide Web, Mozilla Firefox tiene el 10% de cuota de mercado frente a casi el 90% de Internet Explorer. La gran E azul de Microsoft arrasa en cuanto a navegadores, aunque un 10% de los internautas de todo el mundo no es nada despreciable. Sin embargo, cuando nos ponemos a investigar qué ocurre al otro lado de los navegadores, vemos que los datos se invierten: Apache es el gran dominador de la WWW con casi el 70% de todos los servidores web de Internet, el servidor web de Microsoft, Internet Information Server, apenas supera el 20% de cuota. En el mundo del correo electrónico pasa parecido, la mayoría de servidores de correo en Internet utilizan Sendmail, Postfix, Exim, Qmail u otros programas basados en Software Libre. En servidores DNS, Bind es el estándar de facto. En servidores proxy web, Squid se lleva la palma. A día de hoy parece que el Software Privativo domina en los sistemas de escritorio mientras que el Software Libre lo hace en los servidores de Internet.

Mito: El Software Libre es aficionado, no se usa para cosas “serias”.

Acabamos de hablar de Google, unos ex-aficionados que han pasado de jugar con un montón de PCs con GNU/Linux en su habitación a poner de verdadera mala leche a los mandamases del otro gigante de la informática actual. Otras grandes empresas también se están aprovechando de las ventajas del Software Libre: Amazon, Ford, Volkswagen o Airbus por citar unos cuantos ejemplos paradigmáticos. Incluso empresas que basan parte de su negocio en la venta de licencias de software como IBM u Oracle también han utilizado Software Libre en algunos productos. Muchas de estas empresas no se pueden permitir perder dinero por un fallo informático y facturan un buen número de millones de dólares al año, por lo que parece que sí que consideran serio al Software Libre.
De todas maneras es cierto que en ocasiones no se usa para cosas serias. La película de humor Shrek 2 se hizo empleando Software Libre. En mi opinión es un trabajo bastante profesional, pero es difícil calificarlo como serio.

Mito: El Software Libre es más feo.

Cuando tienes a tu disposición toda la ropa del mundo el único culpable de salir de casa hecho un hortera eres tú mismo. El Software Libre puede ser más feo si se usan las aplicaciones que son más feas, que las hay. También puede ser tremendamente bonito. Debido al poder de modificar absolutamente cada detalle del software al tener el código fuente a nuestra disposición, que sea bonito o feo es una cuestión del sentido estético del usuario.
¿Queréis ver Software Libre bonito? Os animo a probar una distribución de GNU/Linux con XGL en un ordenador con aceleración gráfica. Muchos de los efectos 3D que prometían con Windows Vista y todos los que ya se pueden ver en la última versión de MacOs X en un Sistema Operativo de hoy mismo. Ventanas traslúcidas, arrastre 3D de ventanas, bordes líquidos, cambio de escritorio en 3D, y un sinfín de posibilidades que podéis intuir echando un vistazo a la presentación de XGL por parte de Novell.

Mito: El Software Libre es más ligero, funciona en cualquier máquina.

Hay Sistemas Operativos que funcionan en casi cualquier máquina. NetBSD es un sistema BSD libre que tiene esa fama, funciona incluso en una tostadora. Hay versiones de GNU/Linux funcionando dentro de routers, switches, puntos de acceso inalámbricos y demás equipamiento de baja potencia de cálculo.
En cuanto a los PCs, GNU/Linux puede funcionar en un procesador 80386, un equipo dos generaciones anterior al Pentium. No es extraño ver un 80486 con 16 MB de RAM y 120 MB de disco duro funcionando con GNU/Linux y haciendo de servidor DHCP o servidor de impresión sin mayores dificultades. Sin embargo hay que matizar estos datos: si queremos tener un sistema de escritorio completo con navegador de Internet y suite ofimática en ordenadores antiguos (inferiores a Pentium II), técnicamente veo mucho más usable el Software Privativo para esto. Dejando de lado las implicaciones derivadas del coste de licencias y demás, para un aula de 50 Pentium 166 MMX con 32 MB de RAM recomendaría Windows NT Workstation 4.0 con Office 97. Instalar un entorno gráfico junto con la suite ofimática y el navegador en esos equipos utilizando Software Libre probablemente haría que el rendimiento fuera peor que con la opción de Software Privativa antes descrita.
Por lo tanto, el Software Libre funciona casi en cualquier máquina, pero hay que tener cuidado con máquinas antiguas si queremos tener un entorno gráfico amigable y aplicaciones de escritorio. En máquinas actuales (Pentium IV o similares), usar sistemas de escritorio basados en Software Libre no tiene ningún problema e incluso pueden aumentar el rendimiento en relación con sistemas basados en Software Privativo.

Mito: El Software Libre no sirve para aplicaciones criticas en tiempo real.

Existen muy pocos Sistemas Operativos que tengan un funcionamiento en tiempo real. Para quien no esté familiarizado con el término, un sistema en tiempo real asegura que las operaciones que tiene que realizar tendrán una demora máxima determinada, que los permite funcionar en equipamiento de precisión. El ejemplo más claro para entenderlo es el software de gestión de un equipo médico. En un PC normal, cuando el sistema está sobrecargado las aplicaciones funcionan más lentamente. Esto es consecuencia directa de su diseño no determinista. Es un engorro, pero no se pierden vidas. En un equipo médico, si el fabricante asegura que el tiempo de respuesta es de 20 ms., ese tiempo se cumple a rajatabla, por muy sobrecargado que esté el sistema. Para este tipo de equipamiento se necesita un Sistema Operativo de Tiempo Real o RTOS. Ni Microsoft Windows ni GNU/Linux son RTOS. Uno de los RTOS más conocidos es QNX, un SO POSIX que funciona en tiempo real. QNX es Software Privativo, aunque tiene una licencia un tanto peculiar. Otro RTOS muy afamado es VxWorks, aunque los costes de licencia son bastante elevados como para su uso “doméstico”.
¿No hay RTOS que sean Software Libre? Sí, los hay, aunque no tienen tantos usuarios como los dos que he comentado. Hay distribuciones de GNU/Linux modificadas para funcionar en tiempo real, aunque de momento están bastante alejadas del rendimiento de QNX o VxWorks. También hay modificaciones del núcleo Linux, RTAI o RTLinux, aunque siguen sin convencer como RTOS. Fuera de la órbita de Linux, tenemos MarteOS, un RTOS de la Universidad de Cantabria que está cosechando muy buenas críticas. ORK (OpenRavenscar) también es otro RTOS desarrollado en una universidad española, la UPM. La respuesta a la pregunta que comienza el párrafo es sí, existen RTOS libres, hay una buena lista en la web del profesor Diego López Zamarrón de la UPM.
Lo que realmente me sorprendió es ver en una web sobre mitos y verdades entre Windows y Linux reproches hacia este último por no ser un RTOS. Windows tampoco lo es, ¿cuál es el problema?

Mito: No hay casi programas en Software Libre.

El número de programas dentro del mundo del Software Libre excede con mucho al número de programas privativos en el mercado. Esto es un hecho, aunque para no pecar de demagogos es necesario explicar el modelo de bazar del Software Libre. Eric S. Raymond, un afamado hacker, escribió un ensayo explicándolo titulado “La catedral y el bazar”. En él, Raymond asemeja el modelo de desarrollo de los proyectos privativos a la construcción de una catedral, con sus arquitectos, aparejadores, capataces, albañiles, peones, etc. Es un modelo jerárquico, hay un plan inicial y todas las desviaciones suelen tener consecuencias nefastas. El modelo del Software Libre, para Raymond es como un bazar, donde no existe más orden que el generado espontáneamente: nadie decide cuántas tiendas de ropa hay en un bazar, los vendedores ven qué cosas faltan en el bazar y ponen un puesto que tenga posibilidades de ser rentable. Es muy probable que el bazar acabe teniendo 7 tiendas de ropa, pero su propio funcionamiento hará que las peores dejen de vender y se reconviertan en otra cosa. Lo mismo ocurre en el Software Libre, siempre hay más de una aplicación para hacer cada cosa. Algunas tienen mucho éxito y otras están más abandonadas. Esta variedad exaspera a mucha gente que empieza con Software Libre, puesto que no hay un programa para editar textos, un programa para hacer hojas de cálculo y un programa para navegar. Hay decenas de ellos, es necesario elegir el que mejor se adapte a nuestras necesidades.
Está claro que no hay un Microsoft Word libre, aunque tenemos el Abiword, KWord, OpenOffice Writer, etc. Tampoco hay un Microsoft Excel libre, pero tenemos el Gnumeric, el KSpread, OpenOffice Calc, etc. No hay un Internet Explorer, pero tenemos Mozilla Firefox, Konqueror, Galeon, etc. Para la mayoría de las cosas que hacemos en el día a día con el ordenador, hay muchas alternativas. Sí que es cierto que para tareas muy especializadas no siempre hay tantas alternativas. Un sector que ha tenido bastante mala fama dentro del Software Libre ha sido el software multimedia, pero poco a poco va levantando cabeza con GIMP, Inkscape, Blender, Audacity o Cinelerra.
Existen webs que facilitan establecer las correspondencias entre algunos programas libres y privativos, aunque a veces las comparaciones están un poco tomadas por los pelos.

Mito: No hay juegos en Software Libre.

El éxito del Software Libre reside en no tener que reinventar la rueda cada vez que haya que programar algo. El éxito de los mejores videojuegos es olvidarse de todo lo que hay programado hasta ahora y empezar el desarrollo de un nuevo motor 3D o de un nuevo concepto que no tenga nada que ver con los anteriores. Son visiones antitéticas de la industria informática y por eso creo que nunca habrá juegos tan rompedores dentro del Software Libre. Sin embargo, muchos juegos basan su éxito no tanto en sus cualidades técnicas sino en sus capacidades de adaptación a las preferencias del usuario o a la creación de comunidades de jugadores. Esto es el día a día en el mundo del Software Libre, así que ahí sí que tiene mucho futuro.
Sí hay juegos libres, algunos de bastante calidad. También hay empresas que liberan sus motores cuando ya han desarrollado uno nuevo. Muchas veces, sobre estos motores profesionales aunque algo anticuados se desarrollan juegos de bastante calidad. Lo que sí es cierto es que el filo de la navaja dentro del mundo del videojuego está del lado privativo, porque es ahí donde está el dinero que justifica toda esa reprogramación en cada versión.

Mito: No hay controladores para mis periféricos en Software Libre.

Los fabricantes de hardware tienen posturas muy diferentes en cuanto al desarrollo de drivers para que sus clientes usen sus productos. Algunos los desarrollan únicamente para el Sistema Operativo mayoritario, otros los desarrollan para muchos sistemas diferentes y otros desarrollan para unos pocos sistemas, pero abren las especificaciones para que programadores ajenos puedan desarrollar sus propios drivers. Este tercer tipo de empresas son las menos hoy en día. Por lo tanto, la mayoría de las veces estamos a merced de lo que haya decidido el fabricante. Si el fabricante de una sintonizadora de TV decide que no hace drivers para Windows 98, no los habrá. Si por el contrario el modelo de sintonizadora es antiguo y no quieren sacar nuevos drivers para Windows XP, no habrá drivers. He tenido que vivir los dos casos y me dio muchísima rabia. A Richard Stallman le pasó algo parecido con los drivers de una impresora hace más de dos décadas y con el berrinche organizó todo este tinglado del Software Libre, así que algo bueno hemos sacado de ello.
El desarrollo de drivers para Sistemas Operativos libres como GNU/Linux o FreeBSD suele tener mucho de ingeniería inversa y esto es muy costoso. La ingeniería inversa, el arte de “destripar” un sistema para entender cómo funciona, es legal siempre que sea con el objetivo de interoperar entre sistemas heterogéneos. Por todo el mundo tenemos a gente pasándose fines de semana enteros preguntándole cosas en hexadecimal a su tarjeta y observando las respuestas. Supongo que tiene que ser frustrante saber que toda esa información está en un PDF en la empresa que ha producido el chip de la tarjeta, pero aún así lo hacen. Y gracias a que lo hacen, hay muchísimos controladores libres para nuestros periféricos. Normalmente están muy actualizados y en cada versión van incluyendo funcionalidades nuevas. Gracias a esta gente mi sintonizadora de TV vuelve a funcionar, como una más, con sus drivers actualizados, y soportada por todos los programas para ver TV que hay en Software Libre.
¿Qué es mejor entonces, usar drivers libres o privativos? Si estamos hablando de tarjetas de video 3D, casi con los ojos cerrados podríamos afirmar que los drivers privativos son superiores técnicamente. Es muy difícil hacer ingeniería inversa de estas tarjetas y hay muchas que solamente están soportadas parcialmente, sin aceleración gráfica o con aceleración inferior a la obtenida con drivers privativos. Si por el contrario hablamos de tarjetas wireless, los drivers libres multiplican la funcionalidad de las tarjetas de forma espectacular.

Mito: No hay entornos de desarrollo eficientes en Software Libre.

No soy usuario habitual de Visual Studio, pero reconozco que es una herramienta muy bien diseñada y programada. Borland también tiene IDEs (Entornos de Desarrollo) bastante usables y amigables. Otros fabricantes como Adobe (con su adquisición de Macromedia) también tienen buenos interfaces para desarrollar en Director o Flash. Todas estas empresas no han descuidado este sector. Otras grandes empresas como IBM o Sun tampoco lo han descuidado, pero tal y como comentamos anteriormente, han liberado algunos de estos entornos de desarrollo permitiendo que la comunidad del Software Libre los pruebe y mejore. Eclipse y NetBeans son dos claros ejemplos de entornos de desarrollo libres que están ganando usuarios a marchas forzadas.
Sinceramente a día de hoy creo que todavía estas herramientas libres no están a la altura de algunos de sus equivalentes privativos, pero no es tanta la distancia que los separa y muchos entornos libres ya han conseguido la masa crítica de usuarios como para evolucionar a buen ritmo.

martes, 17 de febrero de 2009

Pruebas e implementación del Sistema

TAREA No. 3

Pruebas e implementación del Sistema:

Durante el proceso de implementación y prueba se deben poner en practica todas las estrategias posibles para garantizar que el usuario inicial del sistema se encuentre libre de problemas lo cual se puede describir durante este proceso t llevar acabo la correcciones.

Existen seis pruebas básicas:

1. Prueba de carga máxima
2. Prueba de almacenamiento
3. Prueba de tiempo de ejecución
4. Prueba de recuperación
5. Prueba de procedimientos
6. Prueba de recursos humanos

Prueba de carga máxima: Consiste en probar si el sistema puede manejar el volumen de actividades que ocurren cuando el sistema esta en el punto mas alto de su demanda de procesamiento.

Prueba de almacenamiento: Determina si el sistema puede almacenar una alta cantidad proyectada de datos tanto en sus dispositivos de discos fijos y movibles.

Prueba de tiempo de ejecución: Determina el tiempo de maquina que el sistema necesita para procesar los datos de una transición. Prueba de recuperación: Probar la capacidad del sistema para recuperar datos y restablecer después de una falla.

Prueba de procedimientos: Evaluar la claridad, validez, seguridad asi como su facilidad y sencillez de los manuales de procedimientos.

Prueba de recursos humanos: Se determinan como utilizar los usuarios el sistema al procesar datos o procesar informes.

Implementación:

Es la última fase del desarrollo de sistemas. Es el proceso de instalar equipos o software nuevo, como resultado de un análisis y diseño previo como resultado de la situación o mejoramiento de la forma de llevar acabo un proceso automatizado.

Al implementar un sistema lo primero que debemos hacer es asegurarnos que el sistema sea operacional o que funcione de acuerdo a los requerimientos del análisis y permitir que los usuarios puedan operarlos.

Existen varios enfoques de implementación:

• Es darle responsabilidad a los grupos • Uso de diferentes estrategias para el enfrentamiento de usuarios. • El analista necesita formular medidas de desempeño con los cuales evalúa a los usuarios.

Caracteristicas de los lenguajes

TAREA No. 2

CARACTERISTICAS DE LOS LENGUAJES DE PROGRAMACIÓN

Las computadoras calculan eléctricamente por medio de pulsos de corriente y voltajes que representan formas de comunicación por demás ajenas al lenguaje humanos. Así pues, el medio que permite entablar la comunicación con las máquinas se conoce como “lenguaje de programación”.Aún con su corta duración, la historia de la computación electrónica ha producido varios cientos de lenguajes de programación ampliamente reconocidos y utilizados. Al principio se acercaban mucho al lenguaje propio de las computadoras (ceros y unos), pero se han ido transformando para acercarse más a las lenguas humanas como el inglés o bien a formas gráficas mas expresivas y sintéticas. Entre más cercano a la computadora es un lenguaje se le denomina de bajo nivel, lo contrario es de alto nivel.Existen cinco generaciones de lenguajes de programación, en donde cada uno mejora a sus predecesores en cuanto a las facilidades que otorga al programador.

1. Lenguaje máquina.
2. Lenguajes ensambladores.
3. Lenguajes de alto nivel.
4. Lenguajes de muy alto nivel.

Lenguaje Máquina

El lenguaje máquina, el de más bajo nivel, representa datos e instrucciones con dígitos binarios (0s y 1s), y el elemento ejecutor es la circuitería misma de la computadora. Al principio de la comunicación electrónica cada máquina tenía su propio lenguaje, y los programadores tenían sistemas rudimentarios para combinar números que representaran instrucciones simples como SUMAR y COMPARAR. Los métodos de programación en este lenguaje son tediosos e imprácticos, por lo que la comunidad del cómputo se movió rápidamente para desarrollar lenguajes ensambladores.


Lenguajes Ensambladores

En su momento, los lenguajes ensambladores constituyeron un gran avance; en lugar de usar ceros y unos se utilizan códigos mnemónicos (para ayudar a la memoria) o abreviatura fáciles de recordar para las instrucciones: ADD (sumar), STO (almacenar), C (comparar), etcétera. Para usar un lenguaje ensamblador se requiere un lenguaje traductor que convierta los programas en ensamblador a lenguaje máquina que es el único que comprende la computadora. Este traductor se llama programa ensamblador. Aún cuando los ensambladores representaron un paso adelante, todavía tenían muchos inconvenientes, por ejemplo, que son detallados en extremo y su programación es tediosa, repetitiva y propensa al error.



Lenguaje de alto nivel.

La investigación sobre los lenguajes de alto nivel se inicia en 1945, con el ingeniero alemán Konrad Zuse, pero hasta el inicio de los 1960 que se generaliza su uso, transformando radicalmente la actividad de la programación. Estos lenguajes se asemejan más a la lengua humana, particularmente el inglés, con menos detallados y con menos declaraciones describen tareas más complejas para la computadora. Como resultado, los programadores logran trabajos de mayor alcance y con menos esfuerzo. Obviamente se requiere de un traductor de las declaraciones simbólicas de un lenguaje de alto nivel al lenguaje máquina ejecutable por la computadora, estos traductores se llaman compiladores (el primero se desarrollo en 1952). Existen compiladores para cada lenguaje y cada máquina, pero una ventaja de los lenguajes de alto nivel es que se pueden trasladar de una máquina a otra con pocas o nulas modificaciones.Entre los lenguajes de esta generación se encuentran los de propósito general como BASIC, FORTRAN y COBOL que han sido muy populares. Además se encuentran Pascal, C y sus derivados.


Lenguaje de muy alto nivel.

Los lenguajes de la cuarta generación, 4GL’s, son llamados lenguajes de muy alto nivel. Su definición es más complicada que los anteriores. Se trata esencialmente de los lenguajes de programación taquigráficos; una operación que requiere de cientos de líneas en un lenguaje de tercera generación, como COBOL, requiere típicamente de unas cinco a diez líneas en uno de cuarta generación. Entre las características de estos lenguajes está el que nos son de procedimientos. En los lenguajes de procedimientos se dice con detalle a la computadora la tarea a realizar. En los declarativos se define solamente lo que se haga. Por ejemplo, producir un reporte del tratamiento realizado a un conjunto de datos. Enfatizan el qué en lugar del cómo.Obviamente los que elaboran lenguajes declarativos han hecho trabajo que para muchos de los usuarios mejoran la productividad, porque los programas son más fáciles de escribir y actualizar, pueden ser usados con un mínimo de entrenamiento y ahorran al usuario la necesidad de conocer a fondo el hardware y la programación. Entre los inconvenientes de estos lenguajes se encuentra que no han uso eficiente de los recursos computacionales.

Requerimientos del Sistema

TAREA No. 1

Requerimientos del Sistema:

Primeramente requerimos de una PC con características comunes como un monitor, un teclado, un ratón, un CPU, etc. En el cual también utilizaremos una plataforma para desarrollar el sistema en este caso la plataforma que se va a utilizar es Windows para hacerlo mas sencillo.

Otro de los requerimientos seria el uso de los lenguajes de programación y para poder desarrollar el sistema necesitamos de un de ellos, para el cual vamos a utilizar el lenguaje de programación java ME (Mobile Application) ó Visual Basic .NET estos serian uno de los lenguajes alternativos para el desarrollo del sistema.

También utilizaremos una red para el envió de mensajes y lo mejor seria una pequeña red de área local (LAN). Otra de las cosas que vamos a utilizar es una base de datos para el almacenamiento de los números telefónicos lo mejor seria utilizar SQL SERVER con lo cual tendríamos que utilizar el lenguaje de programación Visual Basic .NET ó Visual Basic 2005.

lunes, 16 de febrero de 2009

TUYYO


ESTE ES MY BLOG AND I'M JARAMILLO