Componentes de un erp para pequeña empresa

Durante los últimos 10 años nos hemos dedicado a programar ERPs para empresas pequeñas: empezamos con un pequeño sistema de gestión para escuelas de música, en el que se gestionaba principalmente el cobro de los recibos, y una base de datos de alumnos… supongo que todos más o menos hemos empezado de la misma forma.

Poco a poco, los sistemas que diseñamos son más complejos, e intentan abarcar más procesos dentro de la empresa: la facturación, la gestión del cobro, el seguimiento de la producción, esas cosas… con el incremento del número de procesos a abarcar, en seguida aparece la necesidad de la gestión de usuarios, y por tanto la división del sistema en procesos diferentes, que puedan ser asignados o eliminados a dichos usuarios…

Actualmente, utilizamos una división entre tipos de tareas y procesos que nos resulta muy útil para reducir la complejidad y las interferencias enre procesos.

Como podéis ver, definimos tres aplicaciones principales, como puntos de entrada al sistema:

  1. Lanzadera
  2. Aplicación de administración
  3. Aplicación de modelado de datos

La lanzadera ataca a dos componentes principales:

  1. Procesos
  2. Informes

La aplicación de administración está compuesta por:

  1. Administración de usuarios/privilegios
  2. Editor de informes
  3. Actualizador del sistema

Según lo veo yo ahora, si tienes una solución técnica para organizar tu sistema de esta forma, estás preparado para afrontar todos los cambios que se puedan presentar, has limitado todo lo posible los problemas de interacción entre componentes… siempre encontrarás problemas, pero esta arquitectura nos ha servido muy bien durante los últimos años.

Como además gran parte de los componentes del sistema se pueden estandarizar, cuando acometes el desarrollo de un proyecto nuevo, partes de una base buena: excepto los informes, el modelo de datos y los procesos propios del sistema (e incluso algunos de estos pueden ser reutilizables), la mayoría de los componentes del sistema ya los tienes disponibles, y con eso consigues dos cosas:

  1. El proceso de desarrollo se acorta sensiblemente (no reinventas la rueda, gran problema de los programadores, que nunca les gusta la rueda que les presentas)
  2. El número de errores se reduce (al utilizar componentes ya existentes).