jun 7

RAD y ¡que sea lo que dios quiera!

Posted in analisis, off topic

Coincidiendo con la salida al blog del último articulo publicado por Jesús Arboleya: “Desarrollo rápido de aplicaciones” voy a hacer balance de lo que se nos pide, y sin querer desmerecer su artículo que es muy bueno y todo lo que comenta es cierto, voy a entrar en valorar otras cuestiones, que a veces parecen pasar desapercibidas, sobre todo para el cliente, que es a fin de cuentas, quien suelta la “pasta”.

Cuando hablamos de una herramienta de desarrollo rápido (R.A.D. para los geeks y “¡esto esta chupao pa ti!, en diez minutos lo tienes” para los clientes habituales) y me voy a centrar en este último comentario, el cliente final cree, o le interesa creer que en 10 min. vas a hacer lo mismo que otros programadores hacen en 3 semanas, y quizá sea cierto, o no, segun desde el angulo que se mire:

Miremoslo desde el ángulo “cliente/usuario final”:

Quiere que el trabajo este terminado en 10 min. por varias razones:

  1. La más importante, el coste, que ya cuando abre la boca, quiere que le cobres solo los 10 min. que vas a estar trabajando en los cambios que solicita el cliente.
  2. La urgencia, las prisas por tener realizado el trabajo en 10 min. que luego se va a quedar en un cajón durante 3 o 6 meses, y que al final se descubre el pastel cuando te llama (6 meses despues), ¿cómo funcionaba la opción que me pusiste para …? (ese es el momento en que te acuerdas de parte de su familia, aunque no tenga la culpa)
  3. La exclusividad, porque el cliente, no tiene en cuenta que no está solo, o le importa un pimiento. El quiere ser el primero porque tiene preferencia sobre los demás y además hay que hacerle ver, que cuando el silva, nosotros acudimos como perrillos falderos a ver dónde nos suelta la pelotita.
  4. La ignorancia, y no pretendo insultar al cliente, sino aclarar que no solemos conocer los métodos para realizar el trabajo de los demas, y aún asi, nos atrevemos a valorar su trabajo, quitando el mérito a esta labor siempre que sea posible. Porque si desmerecemos su trabajo, no lleva directamente al punto 1, que es a fin de cuentas, conseguir un precio más barato del producto o servicio.

Miremoslo desde el ángulo “empresario/jefe”:

Otro que tal baila, que lo quiere también en 10 min.

  1. Porque el cliente, le exige que sea rápido, y quiere tener contento al cliente, que es quién le paga. Aunque en realidad, es el empleado el que le permite conseguir esos ingresos por parte del cliente.
  2. Porque el comercial, que no tiene conocimientos técnicos, le ha vendido la moto al cliente, y el desarrollador tiene que comerse los marrones que le traen los comerciales, y como al jefe no le atañe, les pasa la pelota de unos a otros pero quiere el objetivo cumplido, y el cliente atendido para poder cobrar.
  3. Porque si hoy eres capaz de hacerlo en 10 min. mañana te enviaré el doble de trabajo y te pediré que lo tengas en 5 min. y si te ves muy apurado de tiempo, ¡no pestañees! y respira antes de entrar a trabajar, ¡ya volveras a respirar al salir! Y espabila, no sea que te lleves tarea para casa.

Miremoslo desde ¡MI! ángulo:

¿Es posible realizar el trabajo en 10 min?

Quizá, pero para empezar a trabajar a que poner en marcha las maquinas y eso tiene un coste.

  • La semana pasada me llamo un cliente para solucionar un problema en una aplicación que no modificaba desde hace 6 años. Para comprobar su error, en lo que realmente tarde 10 min., tuve que perder casi 1 hora y media en buscar la copia del programa que tenia instalada, porque no hablamos del mes pasado, hablamos de 6 años. Y considero que soy organizado y tarde muy poco en encontrarla e instalar de nuevo la aplicación para realizar las pruebas.

¿Cuando alguién te llama para que pulses un botón?

  • Si, asi es, hay veces que te llaman para pulsar un botón, porque el cliente no recuerda bien como funcionaba, y no quiere equivocarse (lo cual le honra), es preferible llamar para que seas tu el que te equivocas y echarte las culpas (lo cual no le honra). Pero sea cual sea el motivo, para pulsar el botón, has tenido que ir a su oficina (a 20 min. de distancia), tener la charla correspondiente con el encargado (15 min.), pulsar el botón (menos de 1), explicarles la operación y despedirte (30 min.) y volver a la oficina (otros 20 min.)

El caso, es que, como trabajamos con herramientas R.A.D. , ¡todo hay que hacerlo en 10!

La realidad es que hay muy pocos que saben entender lo que realmente vale este trabajo, y a esos pocos quiero agradecer desde aqui ese reconocimiento ;).

Porque lo que hay que empezar a entender, no es que Velneo V7 es muy rapido y hace las cosas en 10 min. , que es cierto y tiene mucho mérito, lo que debemos empezar a entender es que, para hacer un desarrollo robusto y fiable:

  1. Apago el ordenador.
  2. Libreta y boli en mano, empiezo a analizar y a esquematizar las necesidades.
  3. Dedicar horas solo a pensar cual es la mejor manera de conseguir el resultado.
  4. Encender el ordenador
  5. Programar durante 10 min.
  6. Y probar el resultado para que sea aceptable.

Todo esto sin tener en cuenta la de horas de formacion y tiempo dedicado a investigación que se han perdido por el camino para conseguir el conocimiento necesario.

Pero lamentablemente, de los “clientes/usuarios” y “empresarios”, solo estan dispuestos a pagar los 10 min. y asi nos va.

Para aquellos que no quieren tener el trabajo en 10 min., pero si quieran un trabajo de calidad:

Teneis todos los datos en el apartado de contacto, y se hará un presupuesto responsable, pero no en 10 min.

Porque dicho sea de paso, Velneo V7 es una herramienta muy buena, pero detrás hay personas que la utilizan, para bien o para mal.

PDF Creator    Enviar artculo en formato PDF   
comments: 1 »
may 30

Herramientas y servicios asociados

Una buena aplicación no es solo un programa que funciona bien.

Para tener una buena aplicación hay que rodearla de un conjunto de herramientas y servicios para dar valor añadido, porque a fin de cuentas, lo que deseamos conseguir, no es que se hable bien de nuestro programa, lo que deberiamos conseguir es que se hable bien de nuestra empresa y el programa sea solo una de sus estrellas destacadas.

Para ello, si observamos a los mejores, necesitamos:

  • un buen manual, es imprescindible para el aprendizaje de las aplicaciones, y si es posible, complementarlo con videos de aprendizaje
  • una web, organizada y seria, pero no aburrida.
  • un blog, donde poder comunicar las noticias mas destacadas y mantener una información actualizada.
  • una buena base de conocimiento, donde solucionar las dudas mas frecuentes.
  • un foro, donde permitir el intercambio de opiniones entre los usuarios de nuestras aplicaciones.
  • una herramienta de control de bugs e incidencias, para solucionar los problemas conocidos y reportados.
  • una herramienta de soporte, donde recibir las dudas y comunicados de los usuarios.
  • un foro de ideas, tambien nos ayudará a saber directamente cuales son las necesidades mas demandadas por nuestros usuarios.
  • un roadmap, dónde los usuarios puedan estar informados de las próximas novedades, evitando duplicidades con el foro de ideas.
  • y formación y talleres adicionales.

Todo esto, nos da una información directa que debemos saber digerir para usar en nuestro favor y mejorar el producto en base a las decisiones tomadas analizando toda la información recibida.

Pero si sabemos leer los indicadores, hay mucha mas información que tambien podemos aprovechar para mejorar:

  • Aquellas preguntas que se repiten una y otra vez en soporte, nos indican donde debemos mejorar la documentación.
  • Cuando los errores que comenten los usuarios, son reincidentes, debemos tratar de mejorar esa funcionalidad para que no se produzcan o minimizar sus efectos.
  • Las opiniones de los comentarios del blog son buenos indicadores de como se realiza el trabajo, aunque siempre habra alguien que no esté de acuerdo, debemos tenerlos todos en cuenta, y los negativos, mucho más, pues nos ayudaran a mejorar.

Pero, y lo que no se dice, lo que no se pregunta, o lo que no se comenta, ¿qué pasa?

Esta información tambien es importante, porque cuando una funcionalidad de una aplicación, no se comenta o nadie pregunta, puede deberse a 2 motivos fundamentales:

  1. No se usa, y por tanto habria que decidir si realmente interesa mantenerla operativa o seria necesario prescindir de ella.
  2. Funciona, se usa y pasa desapercibida, precisamente gracias a su buen funcionamiento. En este caso, deberiamos tomar buena nota, pues quizá sea un buen argumento de venta de nuestra aplicación.

Ahora, solo nos quedaría tener una buena estrategia de precios, pero eso, no es un tema que debamos tocar hoy, 😉

PDF    Enviar artculo en formato PDF   
comments: 2 »
abr 26

Migración de V6 a V7

Posted in analisis, programacion

Otro de los problemas más importantes con los que se encuentran los desarrolladores que quieren adoptar la plataforma de Velneo V7 y tienen funcionando varias aplicaciones en la versión 6.x, es la migración.

Durante mucho tiempo hemos pedido a Velneo, que nos proporcionara una herramienta para migrar las aplicaciones de V6 a V7, de forma rápida, sencilla y eficiente, pero eso no ha sido posible ¡hasta ahora!.

Si, digo bién, ¡hasta ahora!

Porque durante mucho tiempo he estado preparando dicha herramienta, y a fecha de hoy, puedo asegurar que esta preparada y funciona.

Con ella podemos migrar estructuras de datos, procesos, formularios, rejillas, busquedas, y casi cualquier objeto existente en V6.

El resultado es impresionante, tras unos retoques estéticos, la aplicación esta migrada y lista para ejecutar.

Esta herramienta, en la que llevo trabajando ya casi 4 años, a visto la luz hace poco tiempo, y ya la hemos probado con 2 aplicaciones de V6 que han sido migradas con exito, sin tener en cuenta las pruebas realizadas internamente con nuestras aplicaciones anteriores.

La herramienta por supuesto, no está a la venta, ya que tanto esfuerzo, como podreis comprender, hay que amortizarlo, pero si que puedo ayudaros a migrar cualquiera de vuestras aplicaciones. ¡Solo teneis que pedir presupuesto, sin compromiso!

Si no lo crees, ponte en contacto:

  • email: jose@ascsl.com
  • skype: jose.luis634
  • móvil: 637.436.425

No olvideis, que a partir de aqui, vuestra aplicación tendrá toda la funcionalidad de V7:

  • Multiplataforma: Windows, Linux, Mac y Android
  • VServers locales o en cloud, y posibilidad de trabajar sin Terminal Server
  • Mejora de interfaz de usuario
  • Ejecución desde los principales navegadores web
  • vServer como servicio
  • y muchas mas …
PDF Printer    Enviar artculo en formato PDF   
comments: 6 »
ene 22

Y que necesito para empezar?

Pues para empezar a programar con Velneo V7,

Puedes comprar este maravilloso libro :) y comenzar con el ejercicio que se plantea de inicio a fin: “Cambia el chip con Velneo V7“, es un buen comienzo, ya que en el se explican todos los pasos a seguir para desarrollar una sencilla aplicación desde cero.

También debes ayudarte con la documentación oficial que puedes descargar de la zona info, en Velneo.es. En esta página, también encontraras tutores y Open Apps (aplicaciones de código abierto) que podrás usar durante el aprendizaje.

Puedes asistir a los cursos oficiales de Velneo, que se realizan varias veces al año y en diferentes ciudades de España.

Y por supuesto, estamos a tu disposición para cualquier cosa que necesites:

  • Formación, como desarrollador certificado de Velneo V7, en la primera promoción (en nov-2011)
  • Consultoria, para el análisis de la aplicación.
  • Programación, para llevar a cabo el proyecto con el mejor resultado y en el menor tiempo posible.

Y si no te quieres complicar demasiado la vida, también tenemos la posibilidad de que empieces a trabajar desde el primer dia con aplicaciones en producción.

Asi que no lo dudes, realiza tu consulta, indicanos las necesidades que tienes y te ofreceremos el producto que mas te convenga en cada caso.

Sólo tienes que ponerte en contacto: jose@ascsl.com

PDF    Enviar artculo en formato PDF   
comments: 3 »
sep 19

Análisis, diseño y programación

Todo sistema informatico, para ser implantado requiere de 3 fases fundamentales,

  1. El análisis
  2. El diseño
  3. La programación

Vamos a ver en que consiste cada una de éstas fases:

  • El análisis, consiste en realizar el planteamiento del problema, reunir la documentación e información preliminar y determinar los requisitos necesarios para completar todo el desarrollo.
  • El diseño, consiste en especificar las caracteristicas que debe tener el producto terminado y como alcanzar dicho objetivo
  • La programación, se encarga de desarrollar todas las especificaciones descritas en el diseño mediante la creación del software necesario para implementar el diseño.

Todos habeis visto en alguna ocasión alguna de las muchas versiones que se han realizado sobre “Los 3 mosqueteros” y ahora seguramente esperais que os cuente la peli para entender estos conceptos, ¿verdad?, pues no, ésta vez no hay peli. Por cierto, os habeis dado cuenta que “Los tres mosqueteros” llevaban capa, al igual que Caperucita Roja, pues algun dia os contare una historia sobre las “capas”.

Bueno vale, os contare un cuento, pero será el de “Los 3 jabalies”:

Erase una vez un bosque en el que vivian 3 jabalies, y como no, un lobo hambriento.

Un dia hartos de que el lobo les acosara con sus tremendos colmillos y con su gran bocaza, decidieron que debían construir una choza para refugiarse en los momentos de peligro.

El jabalí programador, dijo vamos a construir una casa que nunca podrá derribar y empezo a programar, … y cuando hubo acabado, como por casualidad, el lobo apareció, y soplo y soplo hasta que la choza destruyó.

El jabali diseñador, dijó, voy a diseñar una casa que ni siquiera un elefante derribará, y comenzo a desarrollar, … y cuando hubo acabado, como siempre, el lobo volvió para incordiar, y comenzo a soplar y soplar, y aunque un poco más le costó, al final la casa derribó.

El jabalí analista, dijo finalmente, voy a analizar una casa y cuando haya termiando, tú (al jabali diseñador) la diseñaras y tú (al jabali programador) la crearás y asi lo hicierón.

Al finalizar, como siempre, el lobo (jefe del proyecto) empezó a soplar y soplar, luego empezo a golpear y por mas que soplaba y golpeaba, la casa no se derribaba.

Si bién es cierto, que despues de tanto ajetreo, los jabalies tubieron que hacer alguna reforma y redecorar algunos detalles de la choza, pero ésta se mantuvo en pie y por fin el proyecto llegó a buen puerto.

Después de leer el cuento, seguramente habrá varias dudas que os mantendrán intrigados, vamos a resolverlas ya, no os volvais impacientes:

  1. ¿Porque jabalies en vez de cerditos?, pues es lógico, hemos indicado al principio del cuento que estaban en el bosque, y la inmensa mayoria de los cerdos que conocemos son de granja, además de evitar así polemicas sobre si el cuento tiene o no, derechos de autor y evitar las posibles represalias de la S.G.A.E.
  2. ¿Porque el lobo siempre aparece cuando ya han terminado?,  pues sencillo, porque como jefe de proyecto que es, debe estar enterado de todo lo que hacen los jabalies.

Este cuento, como todos, viene con moraleja:

En cualquiera de los 3 casos comentados anteriormente, solo el 3º consiguió su objetivo, y lo hizó porque a diferencia de los dos anteriores, trabajarón en equipo, y ello les condujó al éxito.

Además, el problema principal en la mayoria de las aplicaciones que realizamos, y yo también he cometido esos errores, es el tiempo.

Asi es, el tiempo, y no me refiero a la climatología, si llueve, si hace calor, si nieva, aunque esto también influye en nuestro estado de animo.

Me refiero a “otro” tiempo, al tiempo que dedicamos a cada una de estas tareas, y es que hay una regla que no falla (ya que se trata de una simple regla estadistica y la estadistica nunca falla, ya que se regula asi misma en el mismo momento en que hay variaciones).

Esta regla es la del 80/20, que seguro conocereis, y según la cual debemos dedicar el 80% de nuestro tiempo y recursos a las tareas o fases más importantes y asi minimizaremos los errores cometidos, que serán el 20% y ademas, dichos errores serán mas faciles de solucionar y no afectaran a la estructura principal del proyecto.

Y aquí viene donde uno debe pensar y decidir cuales son las fases mas importantes y cuales no.

Yo he resuelto este dilema desde hace mucho tiempo, ¿quereis saber como?

Cuando nos casamos (mi esposa y yo), llegamos a un acuerdo para evitar futuras discusiones:

– En casa, siempre seria yo quien tomara las decisiones importantes

– Pero ella sería quien decidiría que tareas son importantes y cuales no.

Espero vuestras aportaciones 😉

PDF    Enviar artculo en formato PDF   
comments: Comentarios desactivados en Análisis, diseño y programación
sep 5

MVC en Velneo V7

Posted in analisis, rayaduras

MVC son las siglas de Modelo, Vista, Controlador, o lo que viene a ser lo mismo, un patrón que se suele seguir en la arquitectura de software para separar los datos de una aplicación, del interfaz de usuario y de la lógica de control.

Primero vamos a definir que son estos conceptos:

  • Modelo: es la estructura de la base de datos
  • Vista: se corresponde con la interfaz, como visualiza los datos el usuario y como se organiza el acceso a los mismos
  • Controlador: son todos los eventos y procesos necesarios para realizar peticiones a la base de datos e interactuar con el interfaz.

¿Sigues sin entender nada?, pues lo voy a explicar de otra forma para que todos lo puedan entender, y para ello voy a recurrir al cine como de costumbre, entre otras cosas porque asi me monto la pelicula como yo quiero.

Pongamos en situación,vamos a elegir en primer lugar un protagonista para la peli:

James Bond, Superagente 86, o Johnny English, cualquiera de ellos me vale, pero habeis elegido a éste último por mayoria absoluta.

Ahora toca elegir la escena, en la que nuestro protagonista, es capturado por el malo malisimo y quiere obtener la información en poder de nuestro protagonista.

El malo, un tipo duro pero inseguro de si mismo (por eso siempre va acompañado por otros 3 o 4 tipos malos y un poco mas tontos que el) desea obtener la información en poder de nuestro espia preferido, mamporro que va, mamporro que viene, le increpa en tono amenazante y repetidamente:

Malo: Dime quién fué primero, ¿la gallina o el huevo?

Jonnhy English: No te lo diré, aunque me invites a cañas de aqui hasta navidad

El malo le suelta una tanda de mamporros y lo zarandea mientras Jonnhy rie,

Malo: Dimelo, o te invitaré a una mariscada con copa y puro para rematar la faena.

Johnny English: No sigas, por favor, te lo diré, te lo escribiré todo, pero la mariscada no, por favor.

Al final Johnny empieza a cantar y suelta todo lo que sabe, que no es mucho, y ademas se lo toma con calma.

Ahora que ya tenemos la escena, vamos a ver si lo habeis entendido:

¿Quien es el Modelo?, pues está clarisimo, el modelo es nuestro espia, Johnny English, es quien tiene la información, y como la tiene organizada.

¿Donde está la Vista?, pues igual de sencillo, la vista es cuando al final, el espia suelta todo lo que sabe, que no era mucho y lo escribe en el papel. La vista es el papel con el texto.

¿Y cual es el Controlador?, ésta pregunta es interesante, porque aqui el controlador son varias cosas: los mamporros, los zarandeos y las amenazas que recibe nuestro espia para conseguir la información al final.

Claro que, visto lo dificil que fue obtener la información y la calidad de los datos del informador, seguramente podriamos comparar a nuestro Modelo con MS Access. 😀

Seguramente seguis igual que al principio, pero es que hay peliculas en las que el guion brilla por su ausencia. Asi que vamos a continuar con lo nuestro.

En lenguajes orientados a la web como PHP, es facil diferenciar y desarrollar aplicaciones siguiendo esta lógica de programación.

En Velneo V7 no es tan sencillo ya que por una parte tenemos los proyectos de datos y los objetos que contienen (tablas, variables, constantes, etc), que se corresponderian el Modelo, y los proyectos de aplicación que se corresponden con la Vista (con objetos como formularios, rejillas, informes).

Pero ¿que pasa con el Controlador?, en la mayoria de los casos, se confunde con las Vista, ya que no podemos separar los eventos de los objetos que los disparan.

Para esto, disponemos de objetos como Procesos que podemos encontrar en ambos proyectos (de datos y de aplicación), Eventos de tablas (en los proyectos de datos), y también eventos en Formularios, Rejillas, etc (en proyectos de aplicación) y objetos como las Búsquedas que aunque pertenencen a los proyectos de aplicación, son de dificil clasificación.

En cualquier caso y después de muchas horas de estudio y muchos errores, vamos por el buen camino, y la organización interna de nuestros proyectos, que para nosotros es tan importante o más que la apariencia percibida por los usuarios.

Asi pués, a pesar de que separar Vista y Controlador se hace complicado, hemos conseguido acercarnos un poquito más a este sistema de desarrollo de aplicaciones, permitiendonos una mejor comprensión de la solución.

Y en éste sentido, debemos decir una buena forma de acercarnos inicialmente a este modelo es implantar la plantilla vDiseño en nuestras aplicaciones.

Espero que al menos os sirva para empezar la semana con una sonrisa, aunque no hayais entendido nada.

Y si quieres aprender más sobre como implementar el interfaz de vDiseño a tus aplicaciones, te recomiendo la lectura de mi libro Cambia el chip con Velneo V7, que ya deberías haber reservado si deseas recogerlo en el evento ¡Life is soft!

Nos vemos allí 😉

PDF    Enviar artculo en formato PDF   
comments: 2 »
abr 14

De lo genérico a lo específico

Posted in analisis

Muchas veces se ha hablado ya sobre cual es la estructura ideal para una aplicación, y como aqui la mayoria somos usuarios de Velneo como herramienta de trabajo, ya sea para desarrollar o para ejecutar aplicaciones de gestión, voy a hacer referencia a vERP, a vGestión, a vConta y a vBase como plantillas genericas para usar en nuestras aplicaciones.

Y partiendo de vBase como ejemplo, cuantas veces hemos debatido sobre la forma ideal de abordar un tema tan genérico, y cual es la estructura mas apropiada para algo tan simple, como podria ser, guardar un registro de personas y empresas, donde el 80% de los datos almacenados son comunes a todos ellos.

Todas las entidades tienen nombre, dirección, población, telefonos, contactos, relaciones entre ellas, esto solo por decir algunos de los campos más comunes que podemos encontrar en esta ficha.

Algo tan simple, y a la vez tan complicado, …

  1. ¿se puede hacer una plantilla vBase que sea válida para todo el mundo?
  2. ¿quien tiene el mejor análisis de una plantilla de este tipo?
  3. ¿porque es tan dificil ponerse de acuerdo en algo tan simple?
  4. una tabla común de entidades, tablas de clientes, proveedores y agentes por separado, una tabla de entidades para los datos comunes y tablas adicionales separadas para los datos comerciales, ¿cual es el mejor esquema?
  5. ¿fue el Big-Bang el origen del universo?,  ¿puedes confirmarlo?, ¿estabas allí cuando ocurrió?

Si alguien tiene las respuestas, de verdad que me gustaria saberlas.

Por esa razón, no os voy a dar las respuestas a esas preguntas, porque no las se, y porque para responder a esas preguntas, hay que hacerse muchas más preguntas aún.

Cuando hablamos de tener una plantilla vBase generica está muy bien, si lo planteamos como tener un punto de partida para desarrollos futuros, y debemos realizar un buen analisis de la misma.

Pero lo primero que debemos saber, antes incluso de comenzar el análisis de dicha plantilla, es el destino. ¿A quién va dirigido el desarrollo?, ¿Que funcionalidad debe tener la aplicación? y al final, la pregunta que nos resuelve todas las respuestas a las preguntas anteriores: ¿quién paga el analisis y el desarrollo de la apliación?

Si, tantas incognitas para resolverlas con esta ultima pregunta, porque al final da igual como se plantea un analisis, al final es el cliente el que decide como quiere su analisis porque él es el que paga. Porque trabajamos a medida, para lo que el cliente nos solicita, y podemos aconsejarle pero no imponerle un modo de trabajo.

Y si de verdad quieres crear tu popio analisis y llevarlo a cabo, has de plantear el desarrollo de otra forma, ¿como?

  1. analiza la aplicación y toma todas las decisiones sobre las preguntas anteriores
  2. desarrolla la aplicación, y vuelve a decidir sobre su interfaz
  3. distribuye y vende la aplicación

Pero claro, ahora el precio de la misma debe ser acorde con existentes en el mercado para aplicaciones del mismo tipo. Y si despues de hacer esto, obtienes buenos resultados en la venta de la misma, es porque has realizado un buen trabajo.

Veamos esto que digo con un ejemplo real:

Este blog, está realizado con WordPress, para no irnos mas lejos a buscar.

Me permite publicar los articulos, incluir imagenes, cambiar el aspecto mediante multitud de CSS adaptados, y tengo a mi disposición miles de plugins que puedo instalar para mejorar la calidad de este sitio.

Es una aplicacion generalista, y la finalidad del mismo ha sido llegar a miles (o millones) de usuarios …

Y que coste tiene, ¡nada!, no cuesta absolutamente nada, pero a cambio tienes que tener un minimo de conocimientos para realizar la instalación y puesta en marcha.

Ante estas condiciones, como puede un usuario de WordPress, quejarse sobre la funcionalidad (ya sea por defecto o por exceso). ¿A quien te vas a quejar?, si además dispones del codigo fuente para modificar el problema.

Luego, al final, al única conclusión válida es la respuesta a una única pregunta.

  • Si realizas un analisis generalista y lo vendes a un precio acorde con su funcionalidad.
  • O por el contrario, se trata de una aplicación a medida y la funcionalidad la decide el cliente, que es quién paga.

Y a todo esto, debemos añadir, en el 2º de los casos, el carácter del cliente. Y la capacidad del mismo para dejarse aconsejar, o la capacidad de establecer un analisis previo y ceñirnos a sus exigencias.

En cualquiera de los casos, el beneficiario o perdudicado al final siempre es el mismo, el usuario que debe introducir los datos a la aplicación. 😉

PDF Creator    Enviar artculo en formato PDF   
comments: 1 »
ene 13

Calculo de stocks II

En el post de ayer, veiamos como realizar un sistema de control de existencias, el más básico de todos, con un solo almacén.

Aqui teneis el enlace para los que no lo visteis:

Calculo de stocks I

Hoy vamos a complicar un poquito el ejemplo, y vamos a convertir nuestro control de existencias en un sistema multi-almacén.

Y para el ejemplo de hoy vamos a necesitar unos cuantos cambios sobre el ejercicio de ayer, pero, dejando claro, que ambos sistemas son compatibles y pueden ser realizados sobre el mismo ejercicio.

Para convertir el ejercicio anterior a multi-almacén necesitamos lo siguiente:

  • Una tabla de Almacenes
  • Una tabla para controlar el Stock

Y por supuesto, necesitamos enlazar estas tablas en el esquema anterior.

Control de stocks en varios almacenesPara incorporar estas tablas a nuestro anterior esquema, solo necesitamos:

  1. En la tabla de “Lineas de documentos”, creamos un enlace a la tabla maestra “Almacen”, para saber en que almacén se produce cada movimiento.
  2. La tabla de “Stock” debe tener enlaces a las tablas maestras “Almacen” y “Productos”, y por supuesto, un campo numerico para guardar el Stock, #STOCK
  3. En la tabla “Stock”, tambien necesitamos un indice de clave unica, formado por los campos #PRODUCTO y #ALMACEN, para evitar que esta tabla tenga registros repetidos.
  4. De nuevo, en la tabla “Lineas de documentos”, necesitamos un campo “Puntero indirecto” a la tabla “Stock” mendiante el indice de clave única formado por #PRODUCTO y #ALMACEN, al que llamaremos #PROD_ALM .
  5. Y para terminar, tambien en la tabla de “Lineas de documento”, necesitamos crear la “Actualización”, a través del campo #PROD_ALM , para acumular la #CANTIDAD en el campo #STOCK de la tabla “Stock”

Una vez creada la actualización, solo debemos indicar el campo a actualizar #STOCK, el modo de actualización “ACUMULAR” y como formula:

¿que formula usariais para actualizar? … pensad un poquito

… pensad un poquito mas

… vale, es que no deberia tener que decirla, es la misma de ayer.

choose( #TIPO=”C” , #CANTIDAD , – #CANTIDAD)

¿Como es posible que la misma formula sirva para actualizar el sistema multi-almacén?

Pues, muy sencillo, porque la actualización se realiza sobre una tabla diferente y esa tabla (Stock), dispone de un indice de clave única que combina las 2 tablas maestras “Productos” y “Almacén”.

¿Cuantos almacenes puedo controlar con este sistema: 2 , 3 , 4?

El ejemplo de ayer nos permitia controlar solo UN almacén. En este ejemplo, no hay una limitación del número de almacenes, en realidad depende del campo #ID de la tabla “Almacén”, si has creado un #ID con valor autonumerico de 1 byte, podrás controlar 255 almacenes, pero si amplias el numero de bytes del valor numérico a 2, podrás contolar más de 65.000 almacenes, y puedes seguir ampliando el número de bytes, pero la pregunta es ¿cuantos almacenes necesitas realmente?

Si vamos a usar la misma formula para actualizar y las dos actualiaciones deben ser creadas en la misma tabla de “Lineas de documento” ¿podemos hacer esto con una actualizacion para las 2 tablas?

La respuesta es ¡NO!, ya que, cada actualización debe corresponderse a un campo enlazado a una tabla maestra o a un puntero indirecto, y como puedes comprobar, la primera actualización acumula el resultado en la tabla “Productos” y la segunda, acumula el resultado en la tabla “Stock”

Y una última pregunta, ahora que he creado el sistema de control multi-almacén, ¿para que necesito mantener la acualización del ejemplo de ayer?

Por una razón muy sencilla: porque manteniendo las 2 actualiaciones, gestionamos mejor nuestro almacén, sabiendo las existencias de cada producto en cada uno de los almacenes, pero también, conociendo el stock acumulado de cada producto.

¿Alguna pregunta más?

PDF Printer    Enviar artculo en formato PDF   
comments: 6 »
ene 12

Calculo de stocks I

Vamos a analizar a partir de ahora y en los proximos post, un sistema de control de existencias, y porque en varios post, y no solo uno.

Pues bien, no se trata de hacer un culebrón con este articulo, ya que lo que pretendo es finalizar cada ejemplo en cada uno de los articulos. Se trata de realizar varios ejemplos en base a diferentes analisis para cubrir varias posibilidades.

Y en este primer articulo vamos a ver como realizar el calculo de existencias cuando trabajamos con un almacén, que seria el caso mas sencillo que se nos va a presentar en cualquier aplicación de gestión.

Bueno, es falso, en realidad el ejemplo mas sencillo, seria no tener que controlar el stock 😀 , pero en ese caso, este articulo no tendria ningún sentido.

¿Que necesitamos para realizar este ejercicio?

Pues basicamente, 3 tablas:

  • La tabla de Productos,
  • La tabla de Albaranes (Documentos de venta y/o de compra)
  • Y la tabla de Movimientos (Lineas de documentos)
  • Si utilizamos la misma tabla para movimientos de compra y de venta, entonces, tambien necesitaremos una tabla estatica para diferenciar el tipo de movimiento a realizar, aunque también podriamos usar otros metodos para resolver ese problema.

Ahora que ya conocemos la estructura de nuestra aplicación, ¿cual es el siguiente paso?

Algunos se estaran preguntando, ¿y la tabla de entidades?, ¿donde está?, ¡vaya ejemplo de gestión!, pero es que, para este ejemplo, la tabla de entidades no pinta absolutamente nada, y como no nos resulta útil, he decidido prescindir de ella y centrarnos solo en lo verdaderamente importante: los productos y su stock.

Control de stock de un almacénAhora que ya he dejado claro este punto, seguimos con el ejemplo, el siguiente paso.

La tabla estatica, solo necesita 2 valores, “C” para compras y “V” para ventas. Y en la tabla de Lineas de documentos, debemos crear un enlace a la tabla estatica, para conocer el tipo de cada una de las operaciones realizadas.

Debemos crear las relaciones entre tablas, y aunque puede haber preferencias al elegir el tipo de tabla, el esquema quedara asi. La tabla de movimientos puede ser maestra con un enlace a “Documentos” o tambien submaestra de “Documentos” , pero eso depende de cada uno.

El calculo del stock, lo vamos a realizar directamente en la tabla de Productos, con un campo numérico para acumular el resultado.

Y para obtener dicho acumulado, solo necesitamos crear una “actualización” en la tabla de “Lineas de documentos”, sobre el campo enlazado a la tabla maestra de “Productos”.

Para finalizar el ejercicio, solo debemos indicar el modo de actualizar “ACUMULAR”, y en la Formula: ¿que?

En la formula bastaria una función:

choose( #TIPO=”C” , #CANTIDAD , – #CANTIDAD)

que en castellano, viene a significar:

Si el movimiento es una Compra, “Suma” el campo #CANTIDAD y si no lo es, “Resta” el campo #CANTIDAD.

PDF Download    Enviar artculo en formato PDF   
comments: 7 »
dic 20

Soluciones sencillas para optimizar el rendimiento.

Nuestro amigo sat.sbinario plantea el siguiente problema en el foro de V7

Preocupación con el rendimiento con número de registros elevado y optimización

en el que expone lo siguiente:

Hola a todos:

La situación es esta. Tabla con 40 campos (2 de ellos singular de plural por índice), unos 10 índices y 180000 registros.

He notado que el rendimiento de la aplicación cuando se trabaja con esta tabla decae notablemente. Por ejemplo, una rejilla que muestra todos los registros (resultado de una búsqueda), “se ve” en pantalla mientras la carga cómo va refrescando los datos, en especial los resueltos a través de los punteros singular de plural. Además cuando utilizas algún localizador asociado a la tabla, tienes tiempos de espera notables, que incluso provocan la rotura del vClient si no eres suficientemente paciente.

Esto nunca me había pasado en v6, así que lanzo varias preguntas.

¿Se debe a los punteros singular de plural? ¿A los componentes visuales? ¿Qué aspectos intervienen en estos tiempos de espera? ¿Optimización? ¿Alguna experiencia con número de registros elevados?

Un saludo y gracias.

Y despues de varias respuestas en el mismo hilo del foro se llega a la conclusion de que el problema esta en los “Punteros singular de plural”. Y la verdad, considero que es un problema muy puntual, para casos especiales.

Como ya sabeis, yo suelo protestar mucho donde otros no protestan, pero como me gusta llevar la contraria a todos, 😀 , donde los demas se quejan, yo busco soluciones,  asi que analicemos el planteamiento y veremos la solución:

Planteamiento:

  1. La tabla tiene “muchos campos”
  2. La tabla tiene varios “punteros singular de plural por indice”
  3. La tabla tiene 180000 registros, pero podria tener más.

Problema:

Ya hemos identificado que el problema son los “punteros singular de plural por indice”

Solución:

A la vista de estos parametros tenemos varias soluciones posibles:

  1. El problema son los “Punteros” pues una solución sencilla es “Quitar los punteros”, 😀 , creo que es la más fácil, la mas sencilla de implementar y la que mejor soluciona el problema. Ahhhhhhhhh, vale, ¡que no se puede hacer eso!, :( , pues vamos a buscar otra solución.
  2. En el foro se aporta una solución que también es valida, dejar los punteros en la tabla, pero quitarlos de la rejilla. Es una buena solución, pero que pasa si necesito mostrar columnas a través de los punteros y no puedo eliminarlos, esta solución tampoco es valida.
  3. Olvidemos el problema principal, que parecen ser los “Punteros” y centremonos en el resto de parámetros de la ecuación. Haber, para que necesito mostrar 180000 registros, acaso tengo que memorizarlos, :( , ¿necesito verlos todos? si falta uno, o faltan 1000 registros, ¿te vas a dar cuenta?. Pues ahi tienes la solución, prepara un paginador y muestra los registros de 100 en 100 o de 5000 en 5000 y veras como la velocidad aumenta considerablemente. Ademas, antes de mostrar cantidades indecentes de información, deberiamos pensar todos en el ahorro economico (si, economico), porque vamos a utilizar las aplicaciones con moviles, y las compañias van a cobrar por volumenes de transmisión de datos, y de esta forma, además, matamos 2 pajaros de un tiro (ahorramos dinero a nuestros clientes, beneficiandoles a ellos, y reducimos su factura de consumo telefónico, perjudicando al operador de telefonia).

Piensa en verde, porque ahorrar es sano, sobre todo para el bolsillo, … y en estos tiempos que corren, más.

Y ahora me direis algunos, … ¿y como se hace un paginador en V7? … vale, vale, lo preparo y otro dia os lo cuento. 😉

PDF Printer    Enviar artculo en formato PDF   
comments: 5 »