7 de agosto de 2007

La Web de contenidos (Web 2.0)

En sus orígenes la web era básicamente una herramienta de publicación de contenidos que vino a integrar los servicios clásicos de internet (ftp, gopher, correo electrónico), de manera que permitió una mejora en la experiencia de los usuarios. De cualquier forma, la dinámica estaba basada en la premisa de que los autores de contenido eran muy pocos, éstos, privilegiados del conocimiento del HTML, los servidores UNIX y el ftp (entre otras cosas), podían subir a los servidores web sus documentos y dejarlos para servir como fuente de consulta. Básicamente se trataba de una web de sólo lectura en la que las referencias a temas relacionados estaban prácticamente restringidas a las hiper ligas.

Poco a poco este concepto ha evolucionado radicalmente hasta recientemente. Ahora contamos con herramientas de autoría de contenidos gratuitas esparcidas en toda la red mediante las cuales prácticamente todo el mundo puede crear el contenido que más le agrade para mostrarlo al mundo. Ya no es necesario saber todos esos obscuros comandos para subir una página a la web, es más, ya ni siquiera necesitamos un dominio propio ni nada de eso. Hablamos por ejemplo de los blogs (Blogger y WordPress), de las galerías de fotografías (flickr, picasaWeb, photobucket), o sitios como MySpace, Facebook o Linkedln cuya intención es la de crer redes sociales entre individuos con intereses afines. Los wikis (como la Wikipedia), sin dejar a un lado los sitios de publicación de videos como YouTube o Brightcove y hasta los foros de discusión, esto entre otros. Ahora el paradigma cambia y la web se ha vuelto de lectura-escritura en la que los contenidos ya no son más texto y unas cuantas imágenes, si no expresiones multimedia.

La idea ahora es compartir experiencia y quizás hasta conocimientos y generar redes sociales a partir de intereses comunes. Esta idea se expresa claramente como uno de los principios fundamentales de la Web 2.0, que dice más o menos que “..nadie lo sabe todo pero cada uno de nosotros sabe algo..”, algo que se puede reducir al término de Inteligencia Colectiva.

Por cierto, si uno de estos días no tienen mucho que hacer los invito a darse una vuelta por estos sitios:

http://www.flickr.com/photos/jaramillo (Algunas fotos que me gustaron bastante)

http://picasaweb.google.com/alfredo.campos (Mis galerías de fotos), y

http://blogspot.com/alfredo.campos (mi blog, que contiene muchos de los art´ículos que he escrito a lo largo de mi vida).

Oportunidades de desarrollo a partir del Manifiesto para mejorar sitios .gob

A finales del mes de julio, representantes de 22 gobiernos estatales (entre ellos Puebla), del Distrito Federal y de tres presidencias municipales asumieron el compromiso de crear y mantener sitios web gubernamentales que sean útiles y fáciles de usar para el público más amplio, en el marco del Seminario Internacional de Usabilidad y Accesibilidad para la Web (UAWEB) celebrado en la ciudad de Monterrey.

Los 10 compromisos son:

  1. Asegurar el acceso democrático, inclusive a personas con discapacidad, a los portales gubernamentales cumpliendo con los estándares del W3C
  2. Facilitar la creación, el archivo y la administración del contenido utilizando sistemas accesibles
  3. Asegurar que el contenido y los servicios sean fáciles de encontrar, descubrir y usar según las mejores prácticas de diseño y desarrollo web
  4. Garantizar la transparencia de la información, específicamente en el uso de recursos públicos
  5. Facilitar y promover la participación ciudadana en los temas gubernamentales, así como la colaboración entre gobiernos
  6. Promover la convergencia de sistemas gubernamentales en los niveles federal, estatal y municipal para una interacción sin barreras
  7. Aprovechar el potencial de las tecnologías de información para mejorar la atención a los ciudadanos
  8. Asegurar que el contenido sea entendido fácilmente por todas las personas siguiendo las recomendaciones de Lenguaje Ciudadano
  9. Promover los ideales y los conceptos expresados en este manifiesto
  10. Mejorar constantemente las metodologías referidas en este documento

Lo anterior nos deja ver que al menos en el plano de las intenciones, existiría un compromiso para consolidar y unificar la gran variedad de servicios de información existentes en los varios niveles de gobierno a fin de brindar al ciudadano medios de acceso a servicios e información, de rápido y fácil acceso.

Ahora, un enfoque interesante desde el punto de vista funcional sería la creación puntos de acceso a los servicios, en un esquema basado en capas. ¿Cómo es esto?

De entrada se retomaría el esquema de aplicaciones de tres capas y se llevaría algunos pasos más allá introduciendo capas dentro de las tres principales. Las tres capas tradicionales en el desarrollo de sistemas en web son: presentación, reglas del negocio y acceso a los datos.

Para atacar los puntos uno y cinco, se podría inclusive pensar en que la aplicación no solamente maneje interfaces en web, si no también aplicaciones ligeras (agnósticas especto al sistema operativo), para instalarse directamente en las computadoras de escritorio. Obviamente se requerirá de expertos en funciones de usabilidad de las interfaces de usuario, tanto en formato web como de escritorio. Del mismo modo será necesario contar con datos de contacto de los ciudadanos a fin de hacerles llegar información de interés sobre temas de la comunidad, el estado o incluso el país.

Respecto al punto número dos, es necesario contar con alguna herramienta de administración de contenidos que proporcione flexibilidad y capacidades a los autores de contenido para modificar y personalizar la información desplegada de acuerdo a los perfiles de usuarios. Así mismo será necesario que se identifique la información más importante para el usuario a fin de ponerla más al alcance de éste, garantizando también el punto número tres.

Para el punto número seis será necesario crear conectores hacia cada una de las fuentes de información y sistemas de cada una de las entidades participantes. Un conector de cada lado y un traductor para que haga las veces de punte entre estos y que as su ves medie la autenticación y la seguridad de las transacciones.

Como se ve, esta tarea es ardua y complicada, pero a su ves, esto abre una oportunidad de negocio para las empresas regionales dedicadas al desarrollo de software, tanto para web, como de escritorio, middleware; así como para aquellas dedicadas a la consultoría en seguridad informática y varios otros rubros. Inclusive hasta sería una buena oportunidad para las universidades.

Ojalá que el gobierno del estado tome en cuenta todos los factores que involucran el desarrollo de sistemas como los que se proponen según el manifiesto, así mismo, que se de cuenta de todo el potencial que existe en las empresas de desarrollo de la región y apueste por manufactura local a fin de crear un mercado interno de producción de software.

(Más información en: http://www.uaweb.org.mx/content/view/61/79/lang,es/).

Sistemas pequeños y modulares en la economía regional del software.

Hace algunos años ya estuve muy involucrado en el desarrollo de sistemas de administración escolar para universidades y por experiencia propia pudo decirles que es un proceso complicado el adaptar uno de estos sistemas a la medida de cualquier cliente. ¿La razón? Pues que algunos usan sistemas de créditos y otros no, pero incluso algunos más usan híbridos de los anteriores. Por otro lado, cada quién maneja sus procesos de control escolar de maneras tan diversas, cada quién tiene requisitos diferentes y procesos que no se semejan en mucho a los del resto de las instituciones. Incluso en algunas de estas universidades las materias pueden tener varios nombres (¡Haga usted el favor!).

Ahora imagínense la tarea que representa implantar un sistema genérico bajo estas condiciones. Es una ardua tarea a todas luces.

Esto es sólo un ejemplo de lo que puede representar la adopción de un sistema genérico de grandes proporciones en cualquier empresa (o institución académica, en el ejemplo).

Pero qué sucedería si en lugar de instalar una aplicación que haga de todo un poco, adoptamos una solución mucho más reducida pero que cumpla una función en específico.

Supongamos que solamente necesitamos aplicaciones muy específicas como por ejemplo llevar una lista de los alumnos, los profesores, las materias que se imparten en un semestre determinado y en base a ello generar re portes de horas por profesor, listas de asistencia, horarios de alumnos y grupos, entre otros.

Ahora, digamos que mi escuela ahora quiere llevar los contenidos de sus cursos a la web en un formato en el que el estudiante pueda descargar información, presentar exámenes, subir tareas, etc. Después podemos agregar un bloque para que los profesores guarden las calificaciones de lo alumnos. De aquí obtendremos también historias académicas de los alumnos y tendremos también las bases para la creación de un módulo para que los alumnos se puedan inscribir por Internet.

¿Y cómo lo armamos?

Simple, si se quiere diseñar una aplicación casera basta con instalar un servidor con un sistema operativo adecuado (Linux por ejemplo), un servidor de web robusto (Apache), una base de datos potente (PostgreSQL) y lo más importante, hacer todo esto con un lenguaje de programación que sea simple pero poderoso como PHP. El costo básicamente se reduce al aprendizaje. Ahora, si lo que queremos es que alguien más lo haga la historia quizás sea diferente.

¿Qué tal comenzar poco a poco con sistemas pequeños, a la medida y no muy caros, hechos en casa o por alguna empresa de la región, con software abierto y flexible? ¿Esto no nos ayudaría a darle un empujoncito al mercado del software en Puebla?

En general, este tipo de recetas se puede aplicar no sólo a las universidades, si no a muchas más áreas tanto productivas como académicas. Inclusive sería interesante encargar desarrollo de software a las universidades o bien, a algunas empresas que empleen de manera parcial y a manera de tercerizados a algunos estudiantes.

Que quede claro que no estoy en contra de las soluciones grandes, finalmente también han invertido dinero en el mejoramiento de sus productos, pero ¿para qué comprar un cañón para matar moscas?

30 de julio de 2007

Enterprise Resource Planning o Planificación de recursos empresariales

Los sistemas de planificación de recursos de la empresa (en inglés ERP, enterprise resource planning) son sistemas de gestión de información que integran y automatizan muchas de las prácticas de negocio asociadas con los aspectos operativos o productivos de una empresa.

Los sistemas ERP son sistemas integrales de gestión para la empresa. Se caracterizan por estar compuestos por diferentes partes integradas en una única aplicación. Algunos de los módulos que componen un ERP son por ejemplo: producción, ventas, compras, logística, contabilidad, gestión de proyectos, GIS (sistema de información geográfica), inventarios y control de almacenes, pedidos, nóminas, etc. Sólo podemos definir un ERP como la integración de todas estas partes. Lo contrario sería como considerar que un simple programa de facturación es un ERP por el simple hecho de que una empresa integre únicamente esa parte. Ésta es la diferencia fundamental entre un ERP y otra aplicación de gestión. El ERP integra todo lo necesario para el funcionamiento de los procesos de negocio de la empresa. No podemos hablar de ERP en el momento que tan sólo se integra uno o una pequeña parte de los procesos de negocio. La propia definición de ERP indica la necesidad de "Disponibilidad de toda la información para todo el mundo todo el tiempo".

Los objetivos principales de los sistemas ERP son:

* Optimizar de los procesos empresariales.
* Brindar acceso a toda la información de forma confiable, precisa y oportuna (integridad de datos).
* Compartir información entre todos los componentes de la organización.
* Eliminar datos y operaciones innecesarias o reundantes.

Los propósitos fundamentales de un ERP son: apoyar a los clientes reduciendo los tiempos de respuesta a sus problemas, así como hacer más eficiente el manejo de información de modo que permita la toma oportuna de decisiones, con la consecuente disminución de los costos de operación.

Las características que distinguen a un ERP de cualquier otro software empresarial, es que deben de ser sistemas integrales, con modularidad y adaptables

Integrales, porque permiten controlar los diferentes procesos de la compañía entendiendo que todos los departamentos de una empresa se relacionan entre sí, es decir, que el resultado de un proceso es punto de inicio del siguiente. Generalmente, una empresa que no usa un ERP necesitará de varios programas que controlen los procesos anteriormente mencionados, con la desventaja de que al no estar integrados, la información se duplica, crece el margen de contaminación en la información (sobre todo por errores de captura) y se crea un escenario favorable para malversaciones. Con un ERP, el operador simplemente captura el pedido y el sistema se encarga de todo lo demás, por lo que la información no se manipula y se encuentra protegida.

Modulares, debido a que entienden que una empresa es un conjunto de departamentos que se encuentran interrelacionados por la información que comparten y que se genera a partir de sus procesos. Una ventaja de los ERP, tanto económica como técnicamente es que la funcionalidad se encuentra dividida en módulos, los cuales pueden instalarse de acuerdo con los requerimientos del cliente. Por ejemplo: ventas, materiales, finanzas, control de almacén, recursos humanos, etc.

Adaptables, ya que están creados para adaptarse a la idiosincrasia de cada empresa. Esto se logra por medio de la configuración o parametrización de los procesos de acuerdo con las salidas que se necesiten de cada uno. Por ejemplo, para controlar inventarios, es posible que una empresa necesite manejar la partición de lotes pero otra empresa no. Los ERP más avanzados suelen incorporar herramientas de programación de 4ª Generación para el desarrollo rápido de nuevos procesos. La parametrización es el valor añadido fundamental que se debe hacer con cualquier ERP para adaptarlo a las necesidades concretas de cada empresa.

Otras características destacables de los sistemas ERP son:
Poseen una base de datos centralizada.
Los componentes del ERP interactúan entre sí consolidando todas las operaciones.
En un sistema ERP los datos se ingresan sólo una vez y deben ser consistentes, completos y comunes.
Las empresas que lo implanten suelen modificar alguno de sus procesos para alinearlos con los del sistema ERP. Este proceso se conoce como Reingeniería de Procesos, aunque no siempre es necesario.
Aunque el ERP pueda tener menús modulares configurables según los roles de cada usuario, es un todo. Esto es, es un único programa (con multiplicidad de librerías), con acceso a una base de datos centralizada. No debemos confundir en este punto la definición de un ERP con la de una suite de gestión.
La tendencia actual es a ofrecer aplicaciones especializadas para determinadas empresas. Es lo que se denomina versiones sectoriales o aplicaciones sectoriales.

Las soluciones en ocasiones son complejas y difíciles de implantar debido a que necesitan un desarrollo personalizado para cada empresa partiendo de la parametrización inicial de la aplicación genérica. Las personalizaciones y desarrollos particulares para cada empresa requieren cierto esfuerzo en tiempo y dinero a fin de modelar todos los procesos de negocio de la vida real dentro la aplicación.

Las metodologías de implantación de los ERP en la empresa no siempre son todo lo simples que se desearía, dado que entran en juego múltiples factores en función de que no hay recetas ni guias para llevar a cabo implantaciones exitosas; solamente trabajo bien realizado, una correcta metodología y aspectos cuidar ciertos aspectos antes y durante el proceso de implantación, e inclusive cuando el sistema entra en función. Por ello, antes, durante y después de la implantación de un ERP es conveniente efectuar las siguientes tareas:

* Definición de los resultados que se esperab con la implantación de un ERP.
* Definición del modelo de negocio.
* Definición del modelo de gestión.
* Definición de la estrategia de implantación.
* Evaluación de oportunidades para software complementario al producto ERP.
* Alineamiento de la estructura y plataformas tecnológicas.
* Análisis del cambio organizativo.
* Entrega de una visión completa de la solución a implantar.
* Implantación del sistema.
* Controles de calidad.
* Auditoría del entorno técnico y del entorno de desarrollo.
* Mediciones periódicas del rendimiento de la implantación.

Al implementar tales sistemas, se debería involucrar a un grupo de analistas, programadores y usuarios, con el fin de tener acceso a datos actualizados y estandarizados. Sin ayuda profesional, puede ser un proyecto muy caro para grandes compañías, especialmente para las transnacionales.

Los sistemas de planificación de recursos empresariales están muchas veces estrechamente ligados a la cadena administrativa y los sistemas de automatización logística. El software de cadenas de suplemento administrativo puede extenderse a los sistemas ERP para incluir enlaces con proveedores.

Con la implementación de estos sistemas, las compañías generalmente buscan la asesoría de un proveedor o vendedor de ERP o de compañías consultoras. Este tipo de consultorías incluye dos niveles, que son: consulta del negocio y consulta técnica. Una consulta del negocio estudia los procesos de negocio actuales en la compañía a fin de establecer en la medida de los posible una correspondencia con los procesos del sistema ERP. La consulta técnica muchas veces implica programación. La mayoría de los vendedores de ERP permiten modificar sus software para las necesidades de los negocios de sus clientes.

Muchas de las empresas que buscan la implantación de un ERP comenten el error de no contratar a una empresa integradora, la cual no solamente les ayudaría en la implantación sino que les apoyaría a visualizar todos los aspectos, tanto en hardware, software y en la administración del cambio. Muchas de las empresas por no gastar más dinero en este tipo de proveedores pueden fracasar en sus procesos de implantación ya que el personalizar un paquete ERP puede resultar complicado, porque muchos paquetes no están diseñados para el soporte personalizado. Algunos paquetes ERP son muy genéricos en sus reportes e informes, tal personalización se espera en cada implementación.

La seguridad también es un punto importante de cualquier ERP pues será necesario otorgar protección contra de crímenes externos, tal como el espionaje industrial y ataques interno, tal como malversación. Una falsificación en el escenario de los datos puede involucrar la alteración en el recibo de materiales como por ejemplo poner veneno en los productos alimenticios, u otro sabotaje. La seguridad del ERP ayuda a prevenir el abuso.

Hay conceptos de mercadeo y ventas (los que incluyen CRM o la relación administrativa con los consumidores, back end (el trabajo interno de la compañía para satisfacer las necesidades de los consumidores) que incluye control de calidad, para asegurarse que no hay problemas no arreglados, en los productos finales; cadena de abastecimiento (interacción con los proveedores y la infraestructura) que pueden integrarse a través de la ERP, aunque algunos sistemas tengan espacios de menos comprensibilidad y efectividad. Sin un ERP que integre todo esto, puede dificultarse la administración de la manufactura.

Por otro lado, muchos de los problemas que tienen las compañías con el ERP se den en gran medida a la inversión inadecuada (o a veces nula), para la educación continua del personal relevante y una falta de políticas corporativas que afecten el modo en el que se obtienen los datos del ERP y como se mantienen actualizados.

Para finalizar, siempre es indispensable analizar si una compañia de verdad necesita de un sftware tan grande. También si los procesos del negocio tienen una estructura adecuada a fin de que sufran el menor número de cambios Por otro lado, existen varias alternativas libres de sistemas ERP que valdrían la pena investigar.

6 de enero de 2007

Si de seguridad hablamos

Hace tiempo leí los comentarios de un gerente de una empresa de TI en el sentido de que existe una cultura de la seguridad informática prácticamente nula, opinión con la que estoy totalmente de acuerdo.

Es en las instituciones de educación superior que cuentan con carreras relacionadas con las TI donde se ha puesto un mayor empeño por abordar este tema, en la UNAM existen los seminarios GASU, el diplomado de seguridad en cómputo, los días de la seguridad en cómputo y algunos otros eventos para promover este cultura entre los futuros administradores de redes y sistemas.

Por su parte el ITESM comienza a impartir cursos referentes la seguridad informática, algunos sólo a manera de materias optativasy también en sus diplomados y maestrías relacionadas. En la BUAP se llevó a cabo hace un par de años un seminario sobre criptografía y desde hace 4 años se lleva a cabo un evento especializado en software libre y seguridad en cómputo. Y como éstos, múltiples foros orientados originalmente para sofware libre han adopado también temáticas sobre seguridad en cómputo.

Pese a esta insistencia en seguridad se detectan con frecuencia sitios web con alto grado de vulnerabilidad a ataques hackers, durante un rato de ocio en la semana me dediqué a verificar como estaba eso de la seguridad en algunos servidores de portales de noticias y entretenimiento poblanos.

Aclaro que estos resultados de ninguna manera son concluyentes puesto que solamente realicé el procedimiento de escaneo con un algoritmo, por lo que es altamente probable que los resultados aquí expuestos difieran de la realidad.
Los resultados me dejaron un poco sorprendido pues aparecen demasiados servicios abiertos y sobre todo por la facilidad en que los servidores me brindaron la información. Hubo ortos, por ejemplo el sitio del Gobierno del Estado de Puebla, que se resistió a darme informción de ninguna clase, el resto dio su brazo a torcer. Las estadísticas son las siguientes:

angelopolis.com 20
pipopes.com.mx 7
depuebla.com.mx 9
tvaztecapuebla.com.mx 16
puebla.net.mx 8
quechulaespuebla.com 17
puebla.gob.mx 0
puebladelosangeles.gob.mx 10
intolerancia.com.mx 12
e-consulta.com.mx 13
oem.com.mx 7

De lo anterior se ve que el 45.5% de los sitios encuestados tienen abiertos más de 10 puertos, mientras que el otro 54.5% tienen menos de 10 lo que nos habla de una política de "puertos abiertos" en la que los servidores son plurifuncionales, lo cual rompe la regla de la descentralización de los servicios y aquella vieja máxima que dice que se deben cerrar todos aquellos servicios que no se utilicen, o bien, que los administradores están de vacaciones.
Respecto a los servicios ofrecidos, se concluyó que el 100% de los sitios encuestados tienen abiertos los puertos 21 y 80 (obviamente), 135, 139 y 445. Por otro lado, solamente el 37.5% de los sitios utiliza alguna forma de comunicación cifrada, llámese SSH o HTTPS. Ese mismo porcentaje usa una base de datos de tipo MySQL con el socket de Internet abierto, lo cual es potencialmente peligroso. El 62.5% de los sitios parece emplear autenticación por medio de LDAP o al menos tener instalado el servicio. La mayoría de los servidores parecen comparir sus sistemas de archivos mediante SMB y utilizan NetBIOS.

Como se ve por estos resultados, la problemática no debería ser grande si es que los adminisradores cuentan con un entrenamiento adecuado. Por otro lado, se recomienda que se sustituyan los protocolos como ftp y telnet por sftp y ssh. Otra conclusión sería que aquellos que usan MySQL y SAMBA (si tienen Linux) configuren adecuadamente sus servidores a fin de exponer lo menos posible a sus sistemas ya que como dicen por ahí: en arca abierta, hasta el más justo peca.
En este punto, muchos podrán pensar que comprando una suite de seguridad podría resolver sus problemas, idea que no comparto por cierto. Me parece más inteligente el entrenar adecuadamente al staff de sistemas en procedimientos de seguridad y de ser posible, asignar a alguien dedicado completamente a revisar integridad de datos y todo eso.
Finalmente, mencionaré que la herramienta con la que hice los escaneos es un nmap versión 3.0 sin acualizar, eso en caso de que alguien quiera comprobar lo que escribo.

(Publicado el 18 de agosto de 2003)