miércoles, junio 01, 2005

Mas sobre el desarrollo de software

Comentando con TheFull sobre el desarrollo de sistemas, me hizo llegar esto


1) El usuario no sabe ni lo que quiere
2) El lider de proyecto no entiende lo que quiere el usuario
3) El analista recibe el proyecto del lider y lo tiene que hacer funcionar de todas formas asi que ....
4) El programador busca cumplir con las especificaciones, pero realizar el menor trabajo posible
5) Viene un tipo de afuera y te pinta un panorama que es la octava maravilla del mundo mundial
6) Por su puesto la documentación no existe
7) Cuando el producto se libera, se libera a medias
8) La inversion en el proyecto sube y baja, a veces hay que gastarse el dinero en tonterias como en pantallas planas, quemadoras / lectoras de DVD, teclados inalambricos y otras cosas que no tienen nada que ver con el proyecto.
9) No hay soporte o si existe, llega a menos de la mita de lo que se espera
10) En realidad el cliente necesita algo parecido a lo planeado originalmente, pero que no es exactamente lo que hemos hecho.

Cierto como la copa de un pino.... a que de seguro tienes entre manos un proyecto asi.......

miércoles, mayo 25, 2005

Sidroterapia

Este post no tiene nada que ver con programación ni con las cosas que escribo normalmente en este sitio, pero es una experiencia que deseo compartir con todos ustedes.

Una de las cosas que mas me gusta de venir de viaje a España, y mas especificamente a Euskal Herria (País Vasco) son las curas de lo que hemos denominado el amigo José Mari García y Yo, "SIDROTERAPIA".

Siempre viene gente de otras partes de España a los cursos, y es una tradición celebrar una pequeña cena en una sidrería para fomentar la amistad y el compañerismo.

La sidra es un bebida alcoholica de baja graduación, hecha a base de manzanas, en España 2 provincias se disputan la paternidad de la sidra, Asturias (patria querida... jamás te podré olvidar) y Euskadi.

La diferencia entre la Sidra Asturiana y la Vasca es que la primera es dulce, tal y como la conocemos en México, mientras que la sidra Vasca es ligeramente ácida, pero las 2 son muy buenas.

En el País Vasco se acostumbra "ir de sidrería", durante los meses de Marzo y Abril, se abre la temporada, que consiste en juntarte con los amigos, e ir a una (o a varias, mejor que mejor) de las múltiples sidrerías para degustar la primera sidra del año, directamente del Txotx (Barrica) acompañado de una excelente comida, así pues... buena comida, buena bebida, excelente compañía... ¿ qué mas se le puede pedir a la vida ?.

Como ya no estamos en epoca de sidrería, hemos ido este año a una "turística", es decir, que sirve menú de sidrería todo el año : Petritegi (www.petritegi.com) así entramos:



De izquierda a derecha: José Mari García, MariCarmen y Pepe Lara, Niko del Pozo, Eduardo Rojas, y yo mismo.

No les pongo la foto de como salimos... por obvias razones.

Una vista del comedor de la sidrería:



Todos listos para TXOTX !!!!!! (así gritan en el comedor cuando se va a abrir una barrica) :



Y.... pues a que venimos.... ¡ a tomar sidra !



Ahhhhh, que bien se come aquí:



El menu de este año ha sido variado, de picar, unos choricitos a la sidra, tortilla de bacalao, bacalao encebollado con pimientos verdes, un cogote de merluza con un toque de ajillo, y por su puesto el rey de la cena ... el tradicional chuletón de buey de 700 gr, para 2 personas, de postre ate de membrillo, acompañado de un queso un poco fuerte, y nueces. De tomar... varios viajes al txotx para hechar sidra al vaso.

No puedo negar que me encanta venir a este sitio, los asistentes al curso además se integran a una bonita tradición vasca y si a eso sumamos que la comida no es nada cara y es buenísima, bueno, no nos queda mas remedio que estar contentos ¿ no ?.

Mañana tendremos que volver a trabajar, pero por hoy, solo por esta noche, beberemos sidra, comeremos bien y nos reiremos bastante, seremos un poco vascos.

domingo, mayo 22, 2005

El ciclo REAL del desarrollo de software

Ross McKenzie, en el foro de (x)Harbour, ha comentado a manera humorística el ciclo REAL del desarrollo de software, con mucho sentido del humor y otro tanto de razón he aqui lo que dice, cualquier semejanza con la realidad, es pura coincidencia.

1) El programador hace código que "piensa" que esta libre de bugs.

2) El producto es probado, y se encuentran 20 bugs.

3) El programador corrige 10 de los bugs y explica a la gente encargada de probar el software, que los otros 10 no son bugs son "nuevas características"

4) La gente encargada de probar el software continúa las pruebas, y encuenta que 5 de las correciones realizadas en el paso 3 no funcionan, de paso encuentran otros 15 bugs.

5) Se repiten los pasos 3 y4 tres veces mas.

6) Como es costumbre, y debido al excesivo optimismo del equipo de programación, se ha anunciado el lanzamiento del nuevo software con demasiada anticipación, el departamento de mercadotecnia comienza a presionar y.... se libera el software lleno de bugs.

7) El usuario final encuentra 137 bugs mas.

8) El programador original cobra su cheque por el desarrollo del software y se marcha de vacaciones,... nadie en la empresa sabe donde está.

9) Para salir del paso se integra un nuevo equipo de desarrollo que corrige los 137 bugs, peeeeerooooo, en el proceso crea 456 bugs mas.

10) El programador envia una postal desde las islas Fiji a los encargados de probar el software (que por cierto están mal pagados) y todo el equipo de pruebas renuncia.

11) La compañía es comprada por su competencia, la cual utiliza las ganacias adicionales que obtuvo por la venta de mas unidades del su software (que por cierto tenia 786 bugs) debido a que nuestro producto tardó demasiado en salir al mercado y cuando salio era bastante malo.

12) Se nombra un nuevo director por parte del nuevo consejo directivo de la empresa, el nuevo director, decide tirar todo a la basura y comenzar a escribir todo desde cero.

13) El programador (muy probablemente el desarrollador original que ha vuelto de vacaciones de Fiji) hace código que "piensa" que está libre de bugs..............

Mis comentarios personales:

No existe software perfecto, eso es un hecho, no hay código fuente perfecto, no existe la base de datos perfecta, ni el equipo de desarrollo perfecto, todos son personajes de ficción que viven en el mismo lugar donde vive Mickey Mouse o Pikachu, lo que si existe es el software, simple y llano.

El desarrollo de software es muy similar al proceso de manufactura de un producto, sigue el principio de GIGO (Garbage In, Garbage Out, entra basura, sale basura), cuando vamos a fabricar un producto, el tener buena materia prima, excelente maquinaria y mano de obra calificada garantiza la calidad del producto final, lo mismo en programación, buenas tecnicas de analisis, diseño de sistemas y bases de datos (UML, TopDown, CASE), un lenguaje de programación potente, un diseño armonico de la intefaz con el usuario, garantiza un producto de software de calidad, que si bien no estará libre de bugs, si será por lo menos utilizable.

Por otro lado, el proceso de prueba del software no es simplemente agarrar a las primeras personas que pasen por el pasillo de la oficina y sentarlos frente a la computadora a probar el software, de hecho, la empresa debe evitar probar ellos mismos el software que desarrollan, por 2 razones: primera, como dice Fuckowski, que "los hijos de uno nunca son feos", es decir, que tenemos una barrera mental la cual nos impide ver defectos en aquello que hemos desarrollado con tanto esfuerzo y 2do, porque siempre que nosotros mismos probamos las cosas que hacemos, simpre planeamos las pruebas bajo el supuesto de que nunca se encontrarán errores.

Nunca se debe utilizar gente de la empresa para probar el software propio, y menos pensar que entre menos se conoce el software por parte del encargado de probarlo, mejor realizará la labor de prueba, primero porque como personal de la empresa, existe la relación de trabajo entre tester / desarrollador, aunque no trabajen en el mismo departamento, y segundo porque el hecho de que el tester no conozca el programa, puede llevar a engañarnos a nosotros mismos con el pretexto por parte del tester de "los problemas vienen porque no se como utilizar el programa" y por parte del desarrollador que puede ocultar los bugs bajo la aparencia de "nuevas características".

Otro error muy común es cacarear el huevo antes de ponerlo, usualmente los desarrolladores nos creemos la octava maravilla del mundo mundial, nos comemos la mierda a puños y nadie desarrolla mas rapido y mejor que nosotros, lo cual nos lleva a decir barbaridades como .... en 3 meses tenemos el nuevo sistema en la calle y funcionando, recordemos siempre que el tiempo del programador no transcurre a la misma velocidad que para el resto de los mortales, ¿ cuantas veces le hemos pedido a un programador que nos haga un pequeño cambio en el programa, y cuantas veces hemos escuchado, "en un dia te lo tengo"?, pasan 3 semanas y el cambio nunca se realiza, y hasta la 4ta semana escucharemos..... "te acuerdas de lo que me pediste hace como un mes, pues ya esta hecho", con esta equivalencia, y calculando en "tiempo de programador" 3 meses, si "un dia" equivale a 4 semanas, luego entonces, 90 dias (3 meses) equivalen poco mas o menos a 360 semanas, si metemos 2 programadores al proyecto, entonces esta cantidad de tiempo debiera reducirse a la mitad, es decir, 180 semanas, añadir un tercer programador al proyecto, debiera reducirlo a 120 semanas, y un cuarto programador dejaria en 90 semanas el tiempo total. Siguiendo con esta regla, entonces para terminar el proyecto en los 90 dias cacareados, necesitariamos 40 programadores..... asi que recuerden esta regla, tanto si eres usuario como si eres programador.

Por otro lado, tenemos la presión del cliente, cuando prometas algo a tus clientes, no te queda mas remedio que cumplir, entonces, a ver si aprendemos a tener la boquita mas cerrada y no prometemos milagros de versiones maravillosas en tiempo record, porque eso NO EXISTE.

Si por presiones del cliente comenzamos a librerar un software que no ha sido bien probado, lo mas seguro es que vayamos a perder al cliente, al que nos presiona, y a otros tantos mas, porque lo que vamos a entregar va a ser una version llena de errores, que en el mejor de los casos operará a menos del 50% de su capacidad total, de paso le estamos abriendo la puerta de la empresa de nuestro cliente a nuestra competencia porque si nuestro programa no funciona de acuerdo a lo cacareado (olvidate de las especificaciones, si tu prometiste que el programa hace tal o cual cosa, debes cumplirlo, no importa que lo que prometiste no esté escrito en la "lista de especificaciones y nuevas características"), nuestro cliente evidentemente buscara otro programa que soluciones sus problemas.

Otra cosa que suele pasar, es que el desarrollador responsable cree una dependencia por parte de la empresa hacia su persona, de tal forma que el desarrollador responsable nunca puede irse de vacaciones, nunca puede tomarse un dia libre, o está sometido a horarios de 20 horas al dia, porque "alguien tiene que poder meterle mano al programa" cuando comiencen a saltar los errores.

Usualmente los programadores responsables terminan hartandose de la presión, renunciando o bien formando sus propias empresas (teniendo como socios a otros miembros de su mismo equipo de desarrollo) que incluso pueden ser competencia de nuestro propio producto (mucho ojo con los contratos de confidencialidad, asegurense cuando contraten un programador, de que firme un contrato de confidencialidad y competencia por lo menos durante 5 años posteriores a la fecha de que salga de la empresa, tambien asegurate de que el contrato especifique que todo el desarrollo realizado en durante su vida laboral en la empresa, para la empresa y en equipos de la empresa, es propiedad total y absoluta de la misma y no de desarrollador).

¿ Qué pasa si se marcha el programador responsable ?, pues que hay que meter a otra gente a solucionar los problemas, pero, como usualmente los responsables no son "muy comunicativos" que digamos en cuanto a las cosas que están haciendo, cosa que les garantiza el puesto en la empresa, nadie sabe lo que hicieron, ni aun sus mismo jefes, razon por la cual, reparar todas la fallas por parte de gente ajena, lleva a la creación de nuevas fallas derivadas de solucionar las fallas viejas y mas que nada por no contar con documentación tecnica del sistema.

Cuando un barco se hunde... ¿ quienes son los primeros en abandonar la nave ?.... pues la ratas, una vez que el producto final no cumpla espectativas, le estamos dando a la competencia nuevas armas, y mas tarde que temprano terminamos cerrando la cortina, o bien vendiendo la empresa.

Así pues, puede parecer que estos comentarios de Ross están hechos en broma, pero es cierto que hay mucha verdad detras de ellos.

sábado, abril 23, 2005

Ford Country lo hace con Advantage

¿ Que haces si eres el distribuidor FORD No. 1 en ventas a nivel nacional ?
¿ Si tienes el departamento de refacciones mas grande y mejor surtido de todo el país ? (me consta porque encontré una pieza para mi coche que había estado buscando en un montón de refaccionarias y distribuidores)
¿ Si tu almacen de refacciones son de 2 plantas de mas de 1000 m2 con mas de 2 millones de dólares de valor de invenario ?
¿ Si vendes mas de 200 unidades nuevas cada mes ?
¿ Si tu bodega de coches mantiene un inventario promedio de 400 unidades mensuales ?
¿ Si tu departamento de servicio realiza 1,200 reparaciones al mes ?
Donde tus clientes son incluso otras agencias FORD que te compran refacciones y tus instalaciones ocupan una manzana completa en la ciudad de Guadalajara

y no contabas con Tecnología Cliente / Servidor.....

Este es el caso Country Motors, otra empresa que se ha beneficiado de las bondades de Advantage Database Server.

Country Motors o Ford Country, como se le conoce en el medio, posee ahora un servidor Advantage Database Server 7.1 para 250 usuarios, corriendo sobre un servidor Novell Netware 6.1, con TCP/IP en un Servidor Compaq Proliant, Xeon de 2.4 GHz, con 2 procesadores y 3 Gigas de memoria RAM, la red cuenta con mas de 120 estaciones de trabajo.

La empresa está en constante expansión, las instalaciones de Ford Country albergan a las 3 empresas del corporativo: Country Motors, Servicio Country y Servicios Administrativos Country, donde laboran mas de 200 empleados.

Country realiza toda la operación de sus tres empresa trabajando con el sistema SICOM (Sistema Integral COuntry Motors) una aplicación desarrollada por ellos mismos en xHarbour 0.99 y FWH 2.4. El servidor ADS se integró al SICOM en un proceso de migración donde tuve el gusto de participar junto con Héctor Garfias, director de Sistemas y Alejandro Frausto Acosta responsable del desarrollo de los sistemas.

ADS se integró en los 8 módulos que componen todo el sistema administrativo de la empresa y que además comparten información entre si :

Refacciones
Servicio
Ventas de autos nuevos y seminuevos
Contabilidad
Crédito y Cobranza
Bancos
Caja
Nómina

La empresa presta sus servicios desde las 7 am. hora en que abre el taller para recibir autos a servico, la atención al público se extiende hasta las 18:00 hrs normalmente, pero muchas veces se labora hasta las 10 u 11 de la noche en otras áreas, luego entonces, la operación del negocio la podríamos clasificar como de "misión crítica".

Cuando tu DBF mas grande tiene 500 mil registros, lo utilizan simultaneamente 15 usuarios, durante todo el día, esto ya te podrá ir dando una idea del volumen de información que se maneja en un mes en todos los departamente y por todos los sistemas.

Antes de la implementación de ADS, los errores de corrupción de índices, fallo en la integridad de la información lentitud en el tiempo de respuesta eran cosa de todos los días, y mantenían ocupados al todo el personal del área de informática solo para reparar archivos DBFs incompletos, regenerar índices y todas esas labores de emergencia que hay que hacer para mantener trabajando una empresa, sólo imagina, 120 usuarios atacando al mismo tiempo mas de 400 dbfs.... esto es una verdadera locura, no hay red que lo soporte.

El proceso de implementación siguió los siguientes pasos:

Instalación del servidor: El proceso de instalación del server fue bastante rápido, no cabe duda que los sistemas operativos de red han progresado un montón desde aquella versión 3.11 de Novell hasta la actual y de la versión 3.1 de ADS a la 7.1, de este punto no hay mucho que comentar.

Configuración de los parámetros básicos de trabajo: Como en toda implementación de ADS este es el proceso mas delicado porque de un correcto análisis de las bases de datos se deriva una buena puesta a punto del servidor, poner a punto un server ADS no es complicado pero requiere de una serie de análisis sobre las características de los archivos DBFs que integran el sistema, el número de usuarios que acceden a ellos, en fin, este punto requiere de una amplia colaboración por parte del usuario ADS y del consultor que realiza la implementación.

Migración de la aplicación: Este es el punto que mas tiempo nos llevó de todo el proceso de implementación, todos los programadores de Xbase tenemos ciertas deformaciones profesionales al programar que hemos usado de toda la vida para evitar los errores de corrupción de índices, entre ellos, el abrir y cerrar los archivos dbf cada vez que entras a un módulo de la aplicación, indexar en base a funciones definidas por el usuario, uso de filtros, y otras, estas cosas "matan" materialmente el desempeño del ADS, razón por la cual hubo que hacer una buena revisión del código fuente (mas de 30 mil líneas de código) para eliminar los cierres / aperturas de DBFs constantes. Por otro lado, hubo que revisar algunos índices que no eran de longitud fija (uso de la funcion TRIM(), en las llaves), o bien utilizaban funciones definidas para el usuario para generar una llave, en un par de casos, hubo incluso que modificar las estructuras de la base de datos para agregar un campo que contuviera la expresión de la UDF utilizada en un índice, esto por supuesto, llevo el tener que modificar varios programas. También se implementó el uso de AOFs (Advantage Optimized Filters) para sustituir los filtros Xbase que tenía el programa, este proceso nos llevo poco mas de 3 días.

Prueba de ácido: Una vez migrada la aplicación, llegó el momento de hacer la primera prueba en producción, para ello decidimos hacerla un sábado, que es un día en que se trabaja de manera normal, pero el flujo de datos no es mucho, así que a las 7 am comenzamos a montar la aplicación de Servicio ya que es la primera que comienza a funcionar todos los días, para las 9 de la mañana ya teniamos 5 de 8 aplicaciones en ejecución y constantes llamadas de los usuarios por problemas de conexión al sistema, se hizo una revisión de los parametros de trabajo del ADS y descubrimos que nos habíamos quedado muy cortos en un parámetro crítico al configurar el servidor, asi que de una manera u otra, había que modificarlo, dar de baja y levantar nuevamente el servicio para que los mas de 90 usuarios que atendía el sistema en ese momento pudieran continuar trabajando, optamos por "la solución violenta", es decir dar de baja el server sin importar quien estuviera conectado, asi que lo dimos de baja y lo volvimos a levantar, pero dada la presión de los usuarios por continuar trabajando, levantamos los servicios de ADS antes de que el server Novell se levantara completamente, y entonces tuvimos un problema doble, no había red, y tampoco había SICOM, asi las cosas, decidimos bajar nuevamente el server, esperar completamente a que se levantaran todos los servicios de Novell, y finalmente levantar el ADS con toda la calma que el caso requería, el server se mantuvo trabajando otras 3 horas y 40 minutos sin ningun problema ya, solo algunos detalles de programación, durante estas 3 horas de trabajo se atendió a 91 usuarios, se abrieron 781 tablas dbfs y se realizaron 10,748,669 operaciones en el servidor ADS sin ningún problema en ninguno de los departamentos.

La implementación está terminada, 3 días nos llevó y aún quedan algunos pendientes, detalles mínimos de programación, unos índices que no están bien hechos, pero son cosas que con un par de días revisando el código funcionarán perfectamente.

Los siguientes pasos serán la implementación de transacciones con ADS y quizá el cambio de formato de DBF a ADT, pero aún falta tiempo para eso.

ADS ha causado una grata impresión en la empresa, próximamente abrirán una nueva distribuidora, y por su puesto... habrá un ADS en su servidor.

martes, abril 05, 2005

Operación España 2005

Como cada año, desde hace 7, poco mas o menos por estas fechas comenzamos a organizar nuestros tradicionales cursos de programación en España.

Durante los últimos 6 años he procurado visitar España por lo menos una vez al año, en primera para ofrecer la formación que hemos organizado en México y en segunda para hacer visitas a los amigos entrañables que hemos hecho en los ultimos años y que cada vez son mas, Madrid, Barcelona y Donosti son este año los lugares a visitar, y si tengo una oportunidad también visitaré Valencia, es difícil sacar tiempo para visitar a tantos amigos cuando solo tienes 3 semanas y trabajas 2 de ellas.

Los cursos de los últimos años los hemos dedicado a FiveWin, pero este año será un poco diferente, además de los ya tradicionales cursos FW que habíamos venido ofreciendo año con año, en esta oportunidad ofreceremos un curso especial de xHarbour en modo de terminal, para todos aquellos programadores de Clipper DOS que desean pasar sus aplicaciones a 32 bits, pero sin necesidad de una interfaz gráfica, es decir, programas Windows que se ejecuten en una ventana DOS.

Tenemos pensado ofrecer un curso de Xailer, dependiendo de la gente que se pre-inscriba, sabemos que la herramienta es nueva, que hay poca gente utilizandola, pero esta es una excelente oportunidad para ser de los primeros en comenzar a explotarla.

Por otro lado, tendremos el tradicional curso de programación orientada la objeto, POO como le conocen, que está totalmente enfocado a xHarobur, excelente oportunidad para aprender a explotar los objetos a través de OLE o los mismos objetos de Xailer o FiveWin.

La cereza del pastel este año se la lleva el curso de ODBC, que no es mas de ODBC a secas, este año ofreceremos OLE-DB / ADOX, una forma mas sencilla y mejorada del ODBC que se maneja a través de objetos y que facilita enormente el acceso A CUALQUIER MOTOR DE BASE DE DATOS desde el mismo código fuente.

Si está interesado en asistir, puedes contactar con Niko Del Pozo en nico@geroa-informatica.com para mas información o bien visitar la web de los cursos en Geroa Informática.

Espero verlos por allá, y si no asisten a los cursos, pues podríamos quedar un dia para tomar algo en alguna de las ciudades que pienso visitar, ya saben que en materia gastronómica yo no le digo no a nada.

sábado, abril 02, 2005

Fuckowski, cuando la realidad supera la ficción.

Después de los malos momentos pasados en los dias anteriores, necesitaba un poco de buen humor, porque como decía mi abuelo.... a pesar de todo, la vida sigue.

Por sugerencia de mi amigo José Luis Sanchez Navarro de AveMundi, me he puesto a leer a Fuckowski, Memorias de un programador, y la verdad, todavía me está doliendo el estómago de risa, porque las historias que narra este amigo, son tan reales, incluso mas que la vida misma.

Su lenguaje es fuerte, ofensivo y hasta grosero, pero divertido, te sugiero que leas estos articulos, en este orden:

El proyecto bicicleta
La crisis de los huevos
La importancia de llamarse Monchito.

y verás que mas de una vez te haz enfrentado con estos personajes, si no es que haz estado en los zapatos de Maika, Ivon, El manager, Monchito, o el mismo Fuckowski.

Te voy a extrañar Karol.

Querido Karol:

Te haz marchado hace unas horas, y nunca tuve tiempo de darte las gracias.

Gracias por venir a mi casa 5 veces, aunque yo solo te visité 2 veces en la tuya.
Gracias por haber tirado el muro de Berlín.
Gracias por acabar con el sistema comunista.
Gracias por estar siempre del lado de la vida.
Gracias por rezar siempre por la paz del mundo.
Gracias por tu acercamiento con los jóvenes.
Gracias por ser al mismo tiempo un hombre moderno, pero tradicional
Gracias por enseñarme que apesar de todo, aun quedan hombres buenos en el mundo
Gracias por ser un lider espiritual
Gracias por aumentar mi fe y respeto por lo divino
Gracias por tu humildad y sencillez
Gracias por ir y venir por todo el mundo, por compartirte con nosotros.
Gracias por acercar lo humano con lo divino,
Gracias por enseñarme que Dios es un Dios de amor, y no un Dios de revancha ni castigador

Ciao, Karol, muchas gracias por haber sido parte de mi vida y sobre todo de mi fe.

Me quedo con tus palabras para siempre.

Me voy, pero no me voy....
Me voy, pero no me ausento
Y aunque me voy.... Me quedo
.

Muchas gracias otra vez por existir.

jueves, marzo 31, 2005

Mi vida cambió por culpa de Internet

Recibido por mail el dia de hoy:

Querido(a)s amigo(a)s:

Con motivo del inicio de año, estuve haciendo un repaso de todas las idioteces que me envían por internet y cómo han cambiado mi vida, y quiero compartirlo con ustedes.

* Primero dejé de ir a bailar temiendo ligarme una mujer buenísima, pero que estuviera conectada con ladrones de órganos y que así me robaran las córneas o me sacaran los 2 riñones y hasta el esperma, dejándome tirado en la bañera llena de hielo que dijera: "Llama a Emergencias o te morirás".

* Luego dejé de ir al cine por miedo a sentarme en una butaca con una jeringa infectada con SIDA o que hablen a mi casa diciendo que estoy secuestrado.

Después dejé de recibir llamadas telefónicas temiendo que me pidan marcar *9 y me llegue una cuenta telefónica astronómica porque me robaron la línea.

* También vendí mi teléfono movil por que me iban a regalar uno más nuevo en Ericsson, pero nunca me llegó. Entonces compré otro, pero lo dejé de usar por miedo a que las microondas me afectasen el cerebro o me diese cáncer.

* Dejé de ingerir varios alimentos por miedo a los estrógenos.

* También dejé de comper pollo y hamburguesas porque no son mas que carne de engendros horripilantes sin ojos ni pelos, cultivados en un laboratorio.

* Dejé de tener relaciones sexuales por miedo a que me vendan condones pinchados y me contagie de algo.

* Además dejé de tomar cualquier cosa que venga enlatada por miedo a morir intoxicado con orines de rata.

* Le prohibí a mi mujer ir de compras por miedo a que la secuestren y la obliguen a gastar todo el saldo de la tarjeta de crédito, o que le hechen un cadaver en el maletero del coche, o que le ofrezcan éter en vez de perfume, o que la asalten en un baño del centro comercial.

* Doné todos mis ahorros a la cuenta de Brian, un chico enfermo de una enfermedad que no se puede ni pronunciar y que ha estadoa punto de morirse unas 700 veces en el hospital.

* Participé arduamente en la campaña contra la tortura de unos osos asiáticos a los que les sacaban bilis, contra los inhumanos que vendian gatitos metidos dentro de unos frasco y contra la tala de pinos del Amazonas.

* Quedé arruinado por comprar todos los antivirus y anti-spyware que me ofrecian, con tal de cuidar mi privacidad y evitar que la ranita de budwiser, los teletubies, o el General Failure se apoderaran de mi disco duro.

* De de hacer, tomar y comer tantas cosas que casi muero.

* Casi muero de hambre esperando juntoa mi buzón el cheque de $ 150,000 USD que me mandaría Microsoft y AOL por participar en una prueba de rastreo de e-mails después de enviarlo a 1,500 de mis amigos y conocidos.

* El telefono de Ericcson nunca llegó y mucho menos el viaje a Disneylandia con todos los gastos pagados.

* Quise hacer mi testamento y dárselo a mi abogado para legar todos mis bienes a una institución benefica que recibe 1 centavo de dólar por cada persona que se anote al final de la cadena de la lucha por la independencia de las mujeres en Pakistán, pero no pude entregarlo, porque tenía miedo de pasarle la lengua al sobre para cerrarlo, cortarme con el borde, porque se iba a llenar la boca de cucarachas que se iban a incubar dentro de la herida.

* No me gané el 1,000,000 de dólares, ni el Porsche, ni tuve sexo con Angelina Jolie, que fueron las 3 cosas que pedí como deseo luego de mandar El Tranta Mágico enviado por el Dalai Lama de la India.... Y siempre creí que el origen de todos mis males eran por causa de alguna cadena de olvide seguir y por eso me había caido una maldicion.

Moraleja: No te dejes influir por todas las estupideces que te llegan por internet, pero si no reproduces este mensaje en tu blog y las personas que lo lean no lo envian por e-mail por lo menos a 2,400 personas en los proximos 8 segundos, se te va a aparecer el diablo cuando estés tomando y baño y tengas que agacharte por el jabón.

miércoles, marzo 30, 2005

Xailer.... saliendo del closet (armario)

Salir del closet (u armario, como dirian en España)....este es un título un poco gay para denominar un fenómeno muy interesante en cuanto de desarrollo de sistemas se refiere que es el aceptar que nos estamos vinculando a otra preferencia que no es la que nos ha caracterizado.

En mi caso SIEMPRE he programado con Clipper, conozco algo de Pascal, algo de "C", un poco de HTML y poco mas, cuando salió Visual Objects, y dada mi larga experiencia con Clipper, me viculé muchísimo en VO, al grado tal de llegar a concluir una aplicación a un 90% después de sudar sangre, y casi al mismo tiempo un buen amigo, Lalo Méndez de Informática y Capacitación, me "introdujo" en el misterioso mundo de un producto de shareware llamado FiveWin, por ahí de 1998.

Mi primer salida del closet fue admitir publicamente que dejaba de usar Visual Objects, cosa que sorprendió a mas de uno, sobre a todo a buenos amigos que entonces tenía en Computer Associates (saludos John Zakarin) y que me dedicaba a poner todos mis esfuerzos en utilizar FiveWin, que como lo dijo en su momento Al Acker, Editor de la revista Clipper Advisor, es el verdadero Clipper para Windows.

El tiempo ha pasado, muchos productos han ido y venido, y ahora llama mi atención Xailer, mas que nada porque parece que en la carrera de GUIs para (x)Harbour al final parece que tendrá 3 claros finalistas:

FiveWin, que es la GUI por excelencia para desarrollar aplicaciones Windows con Clipper y (x)Harobur y por otra parte su autor, Antonio Linares es el responsable de haber iniciado el proyecto Harbour, y es en buena parte gracias a él que el proyecto llega a feliz término, con sus altas y su bajas, sus dimes y diretes, como en todo. FiveWin es y seguirá siendo hoy por hoy, la herramienta para desarrollar aplicaciones Windows con (x)Harbour, porque ha demostrado ser un producto terminado, estable y que entrega resultados.

Pero nuevos jugadores entran al partido:

En segundo lugar de este competencia yo pondría a Xailer, resultado del genio de 2 mounstros de la programación como son Ignacio Ortiz y José Gimenez y que recién ha liberado su versión Pre-release a finales del Enero, Xailer, al igual que FiveWin es una libreria de nos permite crear aplicaciones para Windows, haciendo uso de las funciones estandares del API de Windows, solo que su filosofía es un tanto distinta. Xailer apuesta por una GUI totalmente orientada a 32 bits (de hecho no hay soporte para Windows 95, ni anteriores) con una jerarquía de clases similar a la de Delphi y su propio IDE, entorno integrado de desarrollo, totalmente construido en Xailer que te permite realizar desde dentro de él, todas las tareas de desarrollo, desde crear formularios, escribir código fuente, hasta compilar, enlazar y ejecutar el programa, es decir, a diferencia de FiveWin, donde tienes que tener la librerías de FW por un lado, el compilador de (x)Harbour por otro, las pantallas en RC creados con algun editor de recursos, y luego recurrir a alguna herramienta de compilación para gener el EXE, Xailer lo hace todo desde su ide, simplemente oprimiendo un botón, incluso atrapando los errores de compilacion y llevandote a la línea del código fuente donde se generó dicho error.

Finalmente, en tercer lugar, está la GUI "de casa", el Visual xHarbour o VXH para llamarlo de manera abreviada. VXH es la apuesta de la empresa xHarbour.com, de Patrick Mast y Ron Pinkas para tener su propia librería para desarrollo de aplicaciones Windows, integrada a la versión comercial de (x)Harbour (www.xharbour.com) y que claro, no forma parte del proyecto Open Soruce, por lo que se comercializará de manera separada, como un componente adicional. VXH también apuesta por un entorno integrado de desarrollo, como Xailer y por una librería de clases / funciones para manipuación del API de Windows, hasta el momento de escribir estas líneas desconozco el avance que tiene la librería de clases y su contenido.

Pues bien, he decidido entrar a programar en Xailer, y lo acepto abiertamente, estoy haciendo desarrollos en Xailer, pero a diferencia de lo que me paso con Visual Objects, definitvamente NO ABANDONO FIVEWIN, ¿ por qué ?, pues porque desde mi punto de vista, FiveWin es el camino lógico para aquel programador que viene de Clipper DOS y que quiere moverse a Windows (que hay montones), que no tiene absolutamente ninguna experiencia con programación orientada al objeto y que nunca ha desarrollado una aplicación para Windows. El desarrollo con Xailer requiere de cierto grado de "expertise" como dicen los yankis, sobre todo en lo que a POO se refiere, es necesario entender como funcionan y como se comunican entre si los objetos, además de que requiere conocer como se comporta una aplicación Windows, y esta experiencia solo se adquiere despues de haber pasado algún tiempo programando con estas herramientas.

Luego entonces.... ¿ para donde moverse ?, bien la cosa es clara, si tienes programas hechos en FiveWin/Clipper 16 bits, que ya te funcionan y quieres moverte a 32 bits, no hay que buscarle 3 pies al gato, tu decisión debería decantarse sin dudas por FiveWin Harbour con (x)Harbour.

Si aun estás programando en Clipper para DOS y quieres comenzar a moverte a 32 bits, con el código fuente que actualmente tienes, entonces no hay dudas, (x)Harbour es para tí, comienza con lo básico, pasando tu aplicación Clipper DOS a (x)Harbour en modo de consola, y luego vete moviendo hacia el mundo de la Programación Orientada al Objeto, y una vez que ya tengas ese conocimeinto podrás decidir entre las 3 opciones de GUIs para xHarbour, FiveWin, Xailer o VXH.

Finalmente, si ya tienes experiencia en FiveWin, y quieres aprender algo mas, como es mi caso, tus nuevos proyectos los puedes comenzar a trabajar con Xailer, encontrarás una forma nueva de trabajar, claro, hay que ajustar un poco la manera de pensar, pero en menos de una semana te sentirás cómodo trabajando con Xailer, sobre todo por que la experiencia de programación orientada al objeto que haz tenido con FW o (x)Harbour te servirá mucho, la filosofia de programación es un tanto distinta, pero no cuesta nada de trabajo adaptarse a ella, encontrarás que hay nuevas maneras de hacer viejas cosas y que estas nuevas maneras son sumamente eficientes y rápidas. También encontrarás cosas nuevas en cuanto a controles y componentes.

Sobre VXH no puedo opinar, se que han liberado una parte, pero desconozco si en este momento se puede utilizar para realizar alguna aplicación completa, supongo que no, porque de ser así estaría mucha gente utilizandolo, de todas formas es conveniente darse una vuelta por el sitio de xHarbour.com y revisar los avances del proyecto.

Por el momento, baste saber que he salido del armario con Xailer, que lo utilizo y que me gustan los resultados que voy obteniendo y que sigo trabajando y dando soporte a FiveWin, y que quizá en un futuro me ligue también a VXH, depende de los progresos del producto.

martes, marzo 29, 2005

It's time to get Funcky.... again !!!!

En los viejos tiempos del Clipper, una de las librerías que mas era utilizada por los programadores era precisamente Funcky.

Funcky era seguramente la librería de funciones mas completa que existía para Clipper, con mas de 1,000 distintas funciones que cubrian muchas de las necesidades de cualquier programador.
El tiempo ha pasado, y hace como 4 años años, Dirk Lesko, el autor de Funcky original, decidió embarcarse nuevamente en el proyecto de crear Funcky para los lenguajes de programación para Windows.

La versión de Funcky 6.0 es el resultado de mas de 2 años de desarrollo, el nuevo Funcky es un componente OLE que puede ser accesado desde cualquier lenguaje de programación, llamese como se llame, C++, Visual Basic, Delphi, CA-Visual Objects, etc.

Siendo (x)Harbour un proyecto solo conocido por una comunidad determinada (leáse nosotros), no figura dentro de lista de preferidos de Funcky, peeeerooo, si tomamos en cuenta que el código (x)Harbour es en realidad código en "C", luego entonces, podemos deducir que si hay Funcky para Borland C++, podemos utilizar esa versión para nuestro programa (x)Harbour.

Esto es cierto, pero hay aún una forma mucho mas sencilla de utilizar Funcky y es por medio de OLE, xHarbour tiene soporte nativo OLE con lo cual no debe significar ningún problema utilizar Funcky, con Harbour la cosa cambia, porque hay que linkear externamente la clase TOLEAUTO para hacer funcionar la librería.

Funcky no es un componente exclusivo para aplicaciones gráficas de Windows, es decir, con ventanitas, es perfectamente utilizable también desde aplicaciones (x)Harbour que se ejecuten en una ventana de terminal (DOS).

Funcky tiene funciones para un montón de cosas, algunas extremadamente útiles y otras que solo por diversión es interesante mirar. Varios objetos constituyen la librería completa de Funcky, y es sumamente simple utilizarlos, basta con crear un objeto TOLEAUTO y listo:

oFuncky := TOleAuto():New("Funcky")

A partir de este punto tenemos listo un objeto llamado oFuncky el cual podemos explotar a nuestras anchas, por ejemplo si queremos obtener una lista de todas la unidades de disco conectadas a nuestra computadora haremos una llamada al método :AllDrives() :

cDrives := oFuncky:AllDrives()

Y esto nos devolvera una cadena de caracteres con las letras de todas las unidades que existan conectadas ("a: c: d: w:" por ejemplo), de esta forma tendremos acceso a mas de 400 métodos para hacer práticamene cualquier cosa que deseemos.

Adicionalmente al objeto Funcky, existen otros 30 objetos dentro del mismo componente, cada uno con sus propios métodos, eventos y variables de instancia. Hay práticamente un objeto para cualquier cosa que quieras hacer.

Por ejemplo si queremos hacer un TraceRoute a una dirección IP, podemos hacer esto utilizando un objeto FunckyTraceRoute (ejemplo escrito en FiveWin + xHarbour + Borland C++):

oFunckyTrace := TOleAuto():New("FUNCkyTraceRoute")

nTotal = 0
aTrace := {}

oFunckyTrace:FindFirst("ciber-tec.com")

DO WHILE oFunckyTrace:Found()
AADD(aTrace,oFunckyTrace:Name+" "+ALLTRIM(STR(oFunckyTrace:RTT))+" ms")
oFunckyTrace:FindNext()
ENDDO

MsgList(aTrace)

¿ Y que pasa si queremos una lista de todas las impresoras conectadas a la computadora ?, bueno pues utilizaremos un objeto FunckyFindPrinter de esta manera:

aPrinters := {}

oFunckyPrinters := TOleAuto():New("FUNCkyFindPrinter")
oFunckyPrinters:FindFirst()

DO WHILE oFunckyPrinters:Found()
AADD(aPrinters,oFunckyPrinters:Name())
oFunckyPrinters:FindNext()
ENDDO

MsgList(aPrinters)

Como ves es super fácil utilizar Funcky, además la documentación viene super completa, con ejemplos y todo lo necesario, no esperes encontrarte una documentación para (x)Harbour tal cual, no existe, pero te las puedes arreglar con la documentación para Visual Basic o Delphi.

Una de las principales ventajas de Funcky es que tanto los valores pasados como parámetros como retornados por los métodos solo son de 3 tipos: Lógicos, Caracter o Numéricos, con lo cual te ahorras tener que complicarte la vida con cosas propias del "C" como bytes, chars, longs, doubles, etc.

He escrito un pequeño demo del uso de Funcky con FiveWin, que puedes descargar haciendo click aquí incluye código fuente y el EXE en caso de que no tengas manera de compilarlo, claro necesitarás tener Funcky instalado en tu computadora para poder ejecutarlo.

Si no cuentas con Funcky, puedes descargarte una version "lite" del su sitio en Internet www.funcky.com, solo asegurate de que descargues el componente COM, que es el que se utiliza con (x)Harbour.

Para comparlo, bueno, aquí es donde se le acaba la gracia, Funcky cuesta 349.00 USD la versión completa.... pero si tienes una Funcky para Clipper DOS solo pagas 149.00 USD, siendo sincero, es la unica librería de funciones que vas a necesitar y vale la pena el gasto.

domingo, marzo 20, 2005

Advantage lo hace de nuevo !!!!

Acabo de regresa de pasar una semana en la ciudad de Chetumal, Capital del Estado Mexicano de Quintana Roo, para que se ubiquen mis lectores no mexicanos, es el estado (provincia/departamento) donde se encuentra el mundialmente conocido centro turístico de CanCun.

No, no estaba en una playa del Caribe Mexicano tumbado al sol, estuve trabajando en la dirección de informática de la Secretaría de Hacienda del Estado, dándole los toques finales al sistema ISTUV y poniendo a punto un ADS para 100 usuarios.

ISTUV son la iniciales de Impuesto Sobre Tenencia y Uso de Vehículos, y es el sistema que utiliza el gobierno del estado para controlar automóviles, moticicletas, jets ski, botes, yates, etc. Todos los vehículos del estado y el cobro de los impuestos que el uso de estos genera, están controlados por el sistema ISTUV, el cual posteriormente los reporta al gobierno Federal.

ISTUV originalmente estaba desarrollado en Clipper 5.2, e instalado en redes de area local con servidores Novell 4.11 dentro de los centros de atención al público del gobierno del Estado, esto dificultaba contar con información en línea debido a que las redes no estaban conectadas a la central, lo cual demoraba la integración de la información hasta en 5 días.

Con el programa de modernización del gobierno, se decidió enlazar a todas las oficinas de atención al publico y centralizar la información de tal forma que todas las operaciones del padrón vehicular se pudieran llevar a cabo en tiempo real.

Se hizo una importante inversión tecnológica para conectar a todas las oficinas remotras a través de un enlace dedicados E3 a un super servidor HP Xeon Dual processor 2 procesadores de 2.8 GHertz cada uno, 2 Gbytes de memoria ram y un array de 8 discos duros de 40 gigas cada uno... un sueño de servidor.

Con tan buen hardware y excelente ancho de banda, nadie tomó en cuenta el software... y cuando se montó la version Clipper en este ambiente WAN, con todas las bases de datos a su maxima capacidad.... ¡ oh desilusión !, los sitios remotos tardaban más de 20 minutos solo en abrir la tabla del padrón vehicular (mas de 200 mil registros) y mas de 3 horas en abrir los movimientos del padrón (1,200,000 registros), fue entonces cuando entramos en acción nosotros, para sugerirles el uso de Advantage Database Server como su solución.

Cabe señalar que no es la primera vez que voy a Chetumal, ya he estado allí 3 veces, la primera fue para hacer una demostración del ADS y dejarles instalada una copia de evaluación, enseñarles las bondades de los indices CDX contra los NTX que estaban utilizando y mostrarles las técnicas de programación que debían seguir para migrar su aplicación a ADS. La dirección quedó sumamente satisfecha con los resultados de esta primera visita, que quedó pendiente una segunda visita.

La segunda vez que los visité, fue para impartir un curso intesivo de (x)Harbour y FiveWin, ya que en las pruebas efectuadas, vimos que la aplicación de Clipper DOS se volvía mas rápida usando ADS, pero debido al uso del ADSDosIP (interfaz ADS para que aplicaciones DOS puedan utilizar el protocolo TCP/IP) , había cierta caída de velocidad que no resultaba satisfactoria para el uso del programa en oficinas remotas, así que se decidió mover la aplicación completa a una Interfaz Visual de 32 bits, y dada la amplia experiencia de los programadores en Clipper, el camino obvio fue utilizar (x)Harbour con FiveWin Harbour como interfaz gráfica.

Para esta última visita, el avance del proyecto era ya del 90% y durante 5 días nos dedicamos a resolver dudas técnicas de programación y a hacerle un ajuste fino al servidor ADS.

El sistema está programado en FiveWin Harbour 2.4, con xHarbour 0.92, los reportes están hechos con Crystal Reports 8.5 utilizando el Cliente Crystal de ADS, adicionalmente cuenta con una aplicación PHP para Internet que le permite consultar al público los importes correspondientes a los impuestos de sus vehículos.

Los usuarios no son pocos, en total 75 estaciones de trabajo remotas están conectadas en la WAN via Advantage Internet Server, 10 Estaciones más utilizan el servidor ADS remoto dentro de las instalaciones del departamento de informática, y 20 usuarios adicionales se conectan utilizando Clientes Delgados de Windows Terminal Server.

Las bases de datos no son precisamente pequeñas, el padrón vehicular sobre pasa los 220 mil registros, mientras que el archivo que contiene los movimientos del padrón son aproximadamente 1,200,000 registros.

Durante los días de prueba, el servidor ADS registró mas de 300 mil operaciones a las mas de 50 tablas DBF e índices CDX que componen el sistema, sin experimentar absolutamente ningún problema y entregando la información a las estaciones remotas casi como si fuera una red de área local.

Surgieron algunos problemas con la aplicación PHP, debido a que los programadores deseban integrar algunas cosas adicionales a las tablas, como procesos almacenados (store procedures) y esquemas de seguridad a las tablas, por esa razón se decidió migrar todos los DBF y sus índices CDX al formato nativo de ADS, archivos ADT, con índices ADI todos integrados dentro de un Diccionario de Datos Advantage.

Debido a la premura del tiempo, me tocó realizar a mí la parte de la migración de los DBFs a ADT, para lo cual escribí un pequeño programa en XAILER que realizara esta tarea, el programa quedó bastante decente, pese a mi evidente inexperiencia utilizando Xailer, pero este pequeño programa cumplió bien su objetivo, con algunos pequeños bugs. Si deseas verlo en acción, puedes descargarlo haciendo click aqui, (proyecto, ejecutable y DLLs incluidos). Necesitarás Xailer para volverlo a construir.

Una vez cambiadas todas las estructuras de las tablas, únicamente tuvimos que agregar a nuestro código fuente la función ADSSetFileType(3) (para definir el formato ADT como predeterminado), volvimos a compilar el programa y ¡ listo !, nuestra aplicación estuvo lista para funcionar con tablas ADT en pocos minutos, ahora hay que cambiar todos los reportes de Crystal, pero eso es lo de menos.

Las tablas ADT se portaron bastante bien con el programa, sentimos que la velocidad del programa se incrementó, no de manera radical, pero si se siente un poco (no mucho) mas rápida que con DBFs e índices CDX, los usuarios remotos nos notificaron también de un incrmento de velocidad.

Dejé Chetumal con el servidor ADS montado y bien configurado, listo para entrar en producción, las dudas de los programadores totalmente resultas y en pocas palabras....

¡ Advantage lo hace de nuevo !

lunes, marzo 14, 2005

Una ejecución sin visión.....

A mi amigo José Ramón le escuche una frase (que seguramente la escuchó en algún lado) que me dejo gratamente impresionado y la aplico con mucha frecuencia... mas de la que me gustaría.

Una visión sin ejecución, es un sueño.....
pero una Ejecución sin visión, es una pesadilla

Esto pasa TODOS los dias en el área de informática sobre todo, cuando ponemos al frente de un proyecto importante a personas que no tienen la experiencia necesaria para llevarlo a cabo.

Si por antiguedad, o porque "ya le toca", ponemos al frente de un proyecto importante, a un buen programador, con muchos años de experiencia, pero que lo unico que sabe hacer es programar, lo mas seguro es que el proyecto vaya directamente al fracaso en el peor de los casos, y en el mejor, a una demora considerable en el tiempo de realización.

Y no tengo nada contra los programadores experimentados, al contrario, he aprendido muchisimas cosas de ellos, sin embargo hay que conscientes que un buen programador, no necesariamente es un buen analista, por eso hay niveles... hay analistas, hay programadores y hay analistas-programadores.

¿ Qué se espera de un buen analista ?, bueno, por lo menos que conozca la teoría de lo que es el diseño de sistemas, y eso no se aprende en ningún libro, ni leyendo ningún manual de Clipper, SQL o Windows, algunas universidades dedican 2 o mas semestres al estudio de estas materias, porque no es cosa fácil hacer un diseño exitoso de un sistema.

El problema es que a nivel microcomputación, la carencia de tiempo para hacer las cosas, demanda que se atienda primerlo lo urgente y que lo importante se deje para después, o que se nos olvide totalmente, así hemos estado acostumbrados a trabajar y el modelito nos ha funcionado... total ¿ para qué cambiarlos ? si así hemos trabajado hasta ahora y hemos salido adelante.....

Ese es el error mas común de todo el microinformatico, que no pensamos a futuro y cuando nos llegan los grandes proyectos, no sabemos como enfrentarlos, porque simplemente realizamos ejecución sin visión.

Esto quiere decir, que nos ponemos a tirar líneas de código como tontos, dejando de lado la parte mas importante del sistema que es .... EL OBJETIVO y cuando vienen los cambios comienza el sufrimiento porque no previmos que los requerimientos podian cambiar.

Plantear el objetivo puede parecer simplista, pero no, el objetivo no es simplemente " voy a hacer un sistema de facturacion que trabaje en entorno cliente/servidor con SQL y usando un servidor Linux", decir que este es nuestro objetivo, es una gran tonteria, ¿ porqué ?, pues porque verlo asi de simple es arrancar de ningún lado, para intentar ir a ninguna parte.

Hay muchas cosas que analizar en tan aparentemente simple objetivo. Veamos:

Vamos a relizar un sistema de facturación, bien, asumo que conozco las reglas de negocio que intervienen en una facturación, como el control de clientes, proveedores, inventarios, punto de venta, etc.

En entorno cliente/servidor, quiere decir que por lo menos conozco la arquitecutra C/S y sus ventajas contra la Arquitectura Distribuida, conozco conceptos como Rollback, transacción, seguridad, DBA, arquitectura de 3 capas, etc, los manejo con soltura y estoy dispuesto a aplicarlos.

Con SQL, lo que quiere decir, que UNA de mis herramientas va a ser este lenguaje de programación, ojo: SQL es un lenguaje de programación, no es una base de datos, ni un producto ni nada por el estilo, es simple y llanamente un vil lenguaje de programación, solo una herramienta mas del desarrollo de nuestro sistema

A partir de este conocimiento básico de lo que queremos hacer, debemos proceder con la parte mas básica de un sistema diseñado sobre arquitectura de 3 capas, que es el modelo sobre el cual se deben construir las aplicaciones Cliente / Servidor.

El primer nivel, el básico y el primero que debemos comenzar a construir, es la capa de BASE DE DATOS, es decir, el diseño de nuestro esquema de almacenamiento, este proceso requiere de mucha mas habilidad que simplemente conocer el lenguaje SQL (el SQL entra en la segunda capa del modelo, la de negocios). Para realizar un analisis exitoso y triunfador (como dice mi amigo AGG), es necesario conocer conceptos como Analisis Top-down, diagramas entidad-relación, formas normales, diagramas CRUD, la aplicación de todas estos conceptos al diseño de la base de datos (Base de datos = coleccion de tablas) nos garantiza que los siguientes pasos van construidos sobre cimientos solidos y que el proyecto no se nos vaya a venir abajo a la mitad.

SAP es el sistema ERP de mayor uso en el mundo ¿ por qué ? porque sus ingenieros se llevaron 2 años SOLO EN EL ANALISIS DE LA BASE DE DATOS, pero un buen analisis de la bd los consagro en el gigante del software que son hoy.

Un buen analisis de una base de datos, implica precisamente no casarse con ninguna marca en especial o con algún producto, nuestra base de datos debe de ejecutarse perfectamente en MySQL, Informix, Sybase, SQL Server sin alterar el diseño orignal de la misma, o bien con muy pocos cambios, a fin de cuentas el objetivo es utilizar el Cliente/Servidor, sin especificar ninguna marca de SGBDR en especial, esto no significa que tengamos que tener un servidor por cada base de datos a probar... ¡ por su puesto que no !, eso es precisamente lo que tratamos de evitar, nuestro modelo debe estar tan bien analizado, que se pueda ejecutar sobre cualquier plataforma.

Una vez que tengamos bien analizada nuestra base de datos, el objetivo esta cumplido a la mitad, ya no partimos de ningún lado puesto que ya tenemos un punto de partida bien analizado y establecido: nuestra base de datos.

Bien, ahora hacia donde vamos.... ¿ seguimos el camino a ninguna parte ?, por su puesto que no, nuestro objetivo ahora es claro, vamos a trabajar CON CUALQUIER BASE DE DATOS, esto evita que a mitad del proyecto venga algún otro programador brillante con nuevas ideas o casado con alguna marca a vendernos la moto de que tenemos que ir a donde el dice... porque claro, el que no sabe a donde va, cualquier camino le parece bueno, pero no en nuestro caso, nosotros ya sabemos a donde queremos llegar, y estamos decididos a no casarnos con ningun producto en especifico.

Vamos ahora a la segunda capa, la Capa de Negocios en esta capa se establecen las operaciones que van a hacer uso de nuestras bases de datos, es decir, las reglas de negocio, lo que conocemos a nivel programación como Queries, es decir, las instrucciones SQL que van a realizar la explotacion de nuestra base de datos, debemos siempre de tratar que nuestras instrucciones sean lo mas estandarizadas posibles al estandar SQL, y evitar en lo posible utilizar extensiones propias de algun SGBDR en particular. Si programas en Windows, la interfaz ADODB te soluciona una buena cantidad de esos problemas y nuevamente aquí tenemos que evitar casarnos con cualquier plataforma o sistema operativo.

Y finalmente, pero no por eso menos importante, la capa de interfaz, esta es la capa que le da la cara al usuario, que puede ser que se trate de un programa en Windows, una aplicacion en modo terminal, o un programa PHP o CGI corriendo sobre WEB.

La importancia de entender esto y muy poca gente lo hace, radica en que cada capa es independiente de las otras, lo que garantiza que nuestro sistema sea suficientemente versátil para soportar cualquier cambio que se haga en el diseño sobre la marcha.

Entender estos conceptos es basico para realizar un proyecto chico, mediano o grande de manera exitosa y nos capacita para responder mejor a los cambios que vayan surgiendo durante el desarrollo del proyecto.

A nivel software "en caja" tenemos que ser lo mas genericos posibles, porque no sabemos con que equipo cuente el usuario final, algunos productos como los de ASPEL en México, ahora trabajan la multiplataforma de la base de datos para que se puedan montar sobre el servidor de base de datos que se requiera, los manuales proveen de un buen diccionario de datos perfectamente documentado que permite montar productos como SAE sobre cualquier servidor de base de datos relacional..... eso si fue una "visión con ejecución".

viernes, febrero 25, 2005

La fabula de la hormiga productiva y feliz.

De entre toda la basura que recibo por e-mail todos los días, hoy recibí un correo electrónico con una interesante moraleja empresarial que me gustaria compartir con todos:


Fábula de la Hormiga Productiva y Feliz.

Todos los días, muy temprano llegaba a su empresa la hormiga productiva y feliz. Allí pasaba sus días, trabajando y tarareando una antigua canción de amor.

Ella era productiva y feliz, pero ¡ay!, no era supervisada. El abejorro gerente general consideró que ello no era posible, así que se creo el puesto de supervisor, para el cual contrataron a un escarabajo con mucha experiencia en JIT, Poka Yoke & Kan Ban.

La primera preocupación del escarabajo supervisor fue organizar la hora de llegada y de salida y también preparó hermosos informes.

Pronto fue necesario contar con una secretaria para que ayudara a preparar los informes, así que contrataron una arañita muy picuda en PFMEAs que organizó los archivos y se encargó del teléfono.

Mientras tanto la hormiga productiva y feliz trabajaba y trabajaba.

El abejorro gerente estaba encantado con los informes del escarabajo supervisor, así que pidió cuadros comparativos y gráficos, indicadores de gestión y análisis de tendencias. Entonces fue necesario contratar un gorgojo especialista en ISO-QS 9000, SPC y GDT para el supervisor y fue indispensable un nuevo computador con impresora a color.

Pronto la hormiga productiva y feliz dejó de tararear sus melodías y comenzó a quejarse de todo el papeleo que había que hacer ahora. El abejorro gerente, entonces, consideró que era momento de adoptar medidas.

Así crearon el cargo de Gerente del Área donde trabajaba la hormiga productiva y feliz. El cargo fue para una cigarra "Black Bell" que alfombró su oficina se hizo adquirir un sillón especial.

El nuevo gerente necesitó - claro está - un nuevo computador y - cuando se tiene más de un computador - hay que tener una red local y por supuesto un ingeniero de sistemas, cargo que fue ocupado por un aguerrido Piojo egresado del Tec. de Monterrey, muy trucho en Windows NT, Linux, Oracle y UNIX. con tanta información, el nuevo gerente pronto necesitó un asistente (Un grillo trilingüe con 5 años de experiencia en MRP que había sido su ayudante en la empresa anterior), para que le ayudara a preparar el plan estratégico y el presupuesto para el área donde trabajaba la hormiga productiva y feliz.

La hormiga ya no tarareaba sus viejas melodías y cada vez se le notaba más irascible. "Vamos a tener que contratar un estudio de clima laboral un día de estos" dijo la cigarra. Pero un día el gerente general, al revisar las cifras, se dio cuenta que la unidad de negocios (donde trabajaba la hormiga productiva y feliz) ya no era tan rentable como antes.

Así que contrató al búho, prestigioso consultor de World Class Consulting Group, para que hiciera un diagnóstico. El búho estuvo tres meses en la empresa y pronto emitió un sesudo informe: "Hay demasiada gente en este departamento.....".

Así el gerente general siguió el consejo del consultor y... despidió a la hormiga productiva y feliz.

Moraleja: Si eres hormiga productiva y feliz, instala tu propia empresa.-

Comenzando a Bloggear

Pues bien, me he enrrollado en esto de los BLOGS, gracias a Blogger, me he creado esta cuenta para expresar mis opiniones personales sobre temas de programacion, que es lo que mas me gusta y un poco sobre el dia a dia de mi vida laboral.

Espero que pueda aportar un poco de entretenimiento, conocimiento y compartir con todos ustedes mis experiencias.