lunes, 24 de septiembre de 2018

¿Qué importancia tiene una buena arquitectura de software en un proyecto a gran escala?




La creación de un software es como la construcción de una casa o edificio. Para tener un resultado exitoso, robusto y estable, se requiere de una serie de cimientos y estructuras que permitan unir todas las partes y secciones de la casa, para así lograr que sus habitantes puedan interactuar con los diferentes espacios de forma satisfactoria.

Para desarrollar un software se debe manejar la misma metodología; crear una estructura tecnológica óptima para que éste cumpla al 100% sus objetivos. ¿Cómo se logra esto? Con una arquitectura de software. 

Se conoce como arquitectura de software a los elementos que conforman un sistema, se trata de la estructura bajo la cual están diseñados y su interacción entre ellos. Esta estructura permite entender cómo funciona el sistema desde su componente más profundo, hasta el más superficial y cómo estos se relacionan entre sí para lograr un resultado positivo. 

La arquitectura de software también se relaciona con aspectos como rendimiento, usabilidad, presupuesto, tecnología e incluso cuestiones estéticas. Para implementarla de manera adecuada es recomendable apoyarse de una metodología de desarrollo, la cual ofrece principios básicos para su desarrollo.
Todo desarrollo de software inicia con la creación de esta estructura. Para lograr definir la directriz que se le dará a la arquitectura, se deben conocer las necesidades del negocio, para de esta forma determinar si la arquitectura será muy rígida o puede tener características flexibles. Si la arquitectura no está bien planeada y alineada a los objetivos, ésta no cumplirá con su cometido y presentará problemas durante su operación.

Dicho lo anterior, existen una serie de elementos clave que deben existir en el diseño de la arquitectura de software;
1.      Cuidar la construcción y uso de bases de datos. Las bases de datos son las que alimentarán gran parte del sistema por lo que juegan un papel fundamental en el diseño de la arquitectura. Recuerda que estas deben alinearse a las necesidades del negocio y no al revés.
2.      Seleccionar las herramientas y componentes necesarios para optimizar los procesos. Para que un desarrollo de software sea 100% relevante y funcional para la operación, debe unificar servicios de automatización de procesos e integración de aplicaciones. Esto debe ser colocado de forma estratégica, desde el inicio del diseño de la arquitectura.
3.      Para que un software pueda ser funcional por un largo periodo de tiempo, debe ser auditable y medible. Es decir, se debe crear un ambiente en donde el código pueda ser evaluado, medido y regulado. 
Dicho lo anterior pasemos a un ejemplo;
Imagina que eres el Gerente de Finanzas de un corporativo que cuenta con 80 puntos de ventas y una red de 100,000 distribuidores. Requieres de un sistema que permita automatizar la operación de tu personal administrativo y tu fuerza de distribución. Estás interesado en un sistema robusto que este conformado por diversos componentes que estén alineados a tu estrategia comercial.  
Una buena opción de arquitectura sería una basada en un servidor centralizado. ¿Cómo funciona?



La arquitectura, desde un nivel macro, comienza con la creación de una base de datos centralizada que se encuentra en un servidor en la nube que no es accesible, más que a través de una VPN (Infraestructura de red. Su función es crear una red virtual en la nube, que al momento de que algún servidor o equipo se conecta a ella es como si ésta estuviera en la misma locación, aunque no lo esté)
Por otro lado, existe un servidor en el que se encuentra un servicio que se encarga de conectarse a la base de datos. Ambos servidores se encuentran en la misma red, esto quiere decir que se pueden comunicar entre sí. Sin embargo, las peticiones, consultas o envíos de información que se hacen a la base de datos, no se hacen de forma directa, sino que se hacen a través de este servicio web, el cual valida si una petición viene de una identidad conocida o no y con base a esto aceptar o rechazar la petición. En caso de aceptarla, el servicio se comunica con la base de datos y ésta procesa la petición. Debido a la importancia que tiene la base de datos en esta arquitectura, este proceso tiene una barrera de seguridad que protege la información que llega a esta base. 

Otro elemento a tomar en cuenta para el diseño de la arquitectura son las sucursales. La base de datos centralizada nutre de información a los puntos de venta (computadoras) que hay en cada una de las sucursales. Estas generan una gran cantidad de transacciones durante doce horas de operación de lunes a sábado, por lo que es de suma importancia que éstas tengan conexión a la base de datos para consultar y modificar información.

Todos los puntos de venta se conectan al servidor través de la VPN para hacer el envío de solicitudes a la base de datos, de lo contrario no se podría interactuar. Cada sucursal puede tener más de un punto de venta operando, pero todos deben estar conectados a un mismo servidor local, el cual cuenta con una réplica de la base de datos. Esto permite una operación offline, es decir, en caso de no contar con internet o de perder la conexión con la VPN, se sigue operando de forma local hasta que detecta una conexión y sincroniza la información modificada con el servidor de la nube que posee la base de datos centralizada.

De esta forma se puede consultar y modificar; categorías de productos, productos, precios, inventario, facturas, ventas, distribuidores, ordenes de surtido, sucursales, empleados, y otros datos que se encuentra en la base de datos.

¿Cómo se nutre la base de datos y como ésta es visible para el personal de la empresa? A través de la creación de 3 componentes;

·        Backoffice: Permite administrar el alta de distribuidores, sucursales, productos, imágenes, etc.
·        Sistema central: Permite administra alta de puntos de venta y usuarios, así como sus roles y permisos específicos.

·        Oficina virtual: Permite a los distribuidores comprar productos, ver su red, así como las compras de la misma.  Así como generar un reporte de comisiones de su red.

(Estos tres componentes están en la nube, pero no requieren de una VPN)

¿Qué es lo que ofrece esta arquitectura centralizada?
  • ·        Operar offline

  • ·        Tener una base de centralizada que se sincroniza de forma constante, haciendo que todas las sucursales a nivel nacional cuenten con la información actualizada después de cada compra. Esto trae como resultado;

o   Control de inventarios
o   Facturación al día
o   Información financiera actualizada
o   Saber al instante si se debe hacer un re surtido de productos
o   Control de comisiones a los distribuidores

Uno de los retos de esta arquitectura es el diseño de la base de datos, la cual contiene grandes volúmenes de información que nutren a todos los componentes.

Tras este ejemplo, puede quedar un poco más claro la importancia de un diseño de arquitectura para un desarrollo de software.



martes, 18 de septiembre de 2018

¿Qué criterios debo calificar para elegir a un buen proveedor de software?




Invertir en desarrollos de software no es cualquier cosa, más cuando se trata de un software a la medida. El haber tomado la decisión de invertir en un desarrollo de esta índole, es sinónimo de mirar alto, de querer y buscar lo mejor para tu negocio. Por esta razón, muchas personas se preguntan ¿Qué puntos debo calificar para elegir a un buen proveedor de software?

Ningún directivo, gerente o responsable de TI busca correr riesgos cuando se le ha aprobado una inversión fuerte. Por ello, es de suma importancia que se tome el tiempo necesario para estudiar y evaluar a las empresas proveedoras de software a nivel local, nacional o internacional. Cada una de ellas ofrecerá algo diferente y se asegurará de hacerle creer a su posible cliente que es la mejor opción, sin embargo, pueden existir detalles que no se tengan en el radar y que conviertan esa inversión en un gasto.

“Caras vemos, desarrolladores no sabemos” muchas veces el análisis de proveedores no garantiza un servicio satisfactorio. Existen muchas empresas que no se toman el tiempo de hacer evaluaciones y desgraciadamente, sobre la marcha, se dan cuenta que el proveedor no suele cumplir las fechas establecidas de entrega, no reporta ni explica retrasos, no cuenta con soporte 24/7, las entregas no cumplen las expectativas, etc.

¡No te preocupes! La elección de un proveedor de software no debe ser motivo de miedo, estrés o nerviosismo. Existen una serie de criterios que, a nuestro punto de vista, ayudan a evaluar al proveedor y aminoran la posibilidad de fracaso.

1-. Años de la empresa
Según el INADEM, el 75% de las empresas en México cierran en los primeros 2 años. Si la empresa es muy joven, tiene el riesgo de no sobrevivir a la curva de los 5 años, lo que significaría un riesgo a la inversión al comprometer el posible mantenimiento del software.

2-. Certificaciones y reconocimientos
Existe una variedad de certificaciones nacionales e internacionales que toda empresa de software debe tener (CMMI, MOPROSOFT, ITIL, PMI). Estas certificaciones te darán una idea más clara del nivel de madurez de la empresa en sus procesos. Visita su página web y pon especial atención en esta sección. Si encuentras esta información, es probable que ese proveedor sea una opción a considerar. 

3-. Recomendaciones
¿Qué tanto conoces al proveedor? En caso de que no lo conozcas, ¿Conoces a alguien que lo haga? Muchas empresas entran a una zona de confort de la cual es difícil salir. Resulta lógico que aquel proveedor que ha dado buenos resultados sea una opción recurrente tanto para la empresa como para sus allegados.

Solicita al proveedor un listado de sus clientes actuales que cuente con los nombres y número de contacto, de esta forma podrás solicitar sus puntos de vista, conocer su testimonio y confirmar que es una opción fiable y segura. 

3-. Sectorización
Desde nuestro punto de vista, este es el criterio más importante a tomar en cuenta. Saber que el proveedor de software ha trabajado y desarrollado soluciones para empresas del mismo sector en el que tu negocio se desenvuelve, es una señal de que sabe cuáles son tus necesidades y cómo saciarlas.

4-. Especialización
No sólo es importante que el proveedor haya realizado desarrollos para tu sector, también es imprescindible que sus consultores cuenten con experiencia en el sector y ámbito en el que se desenvuelve tu compañía.

5-. Conectividad
Conocer alternativas tecnológicas para la integración y conectividad con otras herramientas como un ERP, sistemas de control de producción o sistemas de administración comercial, es vital para desarrollar un software sumamente funcional. Esto te permitirá realmente lograr una centralización de información y automatización de actividades, con la ventaja de no tener que reinvertir para hacer todo.

6-. Servicio post venta
Muchas empresas creen que la venta es el final del proceso de atención, pero la realidad es que es sólo el inicio de una relación. Es de vital importancia que el proveedor ofrezca soporte y atención después de la venta, que las consultorías especializadas continúen y la empresa se convierta en un aliado estratégico.

Una manera de evaluar la calidad en el servicio es solicitando un documento de acuerdos de niveles de servicio (SLA’s). Este documento especifica qué compromisos adquiere el proveedor contigo en términos de sus tiempos de respuesta a incidentes.

7-. Garantías y pólizas de soporte
Asegúrate que el proveedor ofrezca un servicio de garantía al terminar el proceso de desarrollo e implementación. Esto dará la seguridad que cualquier falla que presente el sistema podrá ser resuelto por el proveedor en un determinado período de tiempo.

Muchas empresas ofrecen pólizas de soporte, esta es una gran idea para cuando el período de garantía terminó y tu desarrollo de software sigue creciendo y actualizándose.

8-. Seguridad
Todo desarrollo de software cuenta con información sensible que debe ser protegida a diferentes escalas (internas y externas). Asegúrate de que esta información no quede suelta y que el proveedor cuente con las herramientas y conocimientos necesarios para protegerte de cualquier situación legal. Un buen sistema de configuración de menús, niveles de acceso, roles de usuario, así como de auditoría de datos, aportarán un plus de confianza adicional hacia el nuevo sistema.

9-. Atención personalizada (matriz de escalamiento)
Cuando se presenta algún problema lo último que quieres es tener que escuchar un molesto conmutador con mil opciones. Contar con un proveedor que ofrezca atención personalizada será un atributo que valoraras mucho.

Saber que cada llamada será contestada por un especialista dispuesto a ayudarte, da gran tranquilidad. También la da el saber que, en el caso de que el ejecutivo de soporte no pueda resolver el problema en ese momento, la solicitud escalará a un nivel superior asegurando un apoyo sea cual sea la petición.

10-. Precio
Este criterio es, sin duda, uno de los principales al momento de tomar una decisión, pues cuando no se tiene mucho conocimiento del sector el precio más bajo siempre será el más atractivo, esto no debe ser así.

Desde nuestro punto de vista, este debería ser el último criterio a tomar en cuenta. En muchas ocasiones lo “barato sale caro” y es preferible elegir un proveedor con precios altos y alta calidad, a uno que por poco te provoque grandes dolores de cabeza.

La situación económica de los mercados es apremiante y en algunos casos ya se encuentra en fase de crisis, sin embargo, si es posible y la situación financiera de tu empresa te lo permite; invierte y no gastes, elige un proveedor 100% calificado.



martes, 11 de septiembre de 2018

Programación para todos, guía para principiantes y poco experimentados.


Por Ernesto Hernández. 

Esto es un artículo dedicado a todos aquellos que quieren iniciar en el mundo de la programación y para los que aún tienen ciertas dificultades al momento de programar.

CUALIDADES Y ACTITUDES

Primero tengo que hablarte de las cualidades y actitudes que deberías tener o desarrollar para dedicarte al mundo de la programación:

    1)     Disciplina: Es muy importante que tengas el hábito de estudiar, investigar y hacer proyectos en horarios/días establecidos previamente. Recuerda que la programación es de mucha práctica y sólo así podrás convertirte en un buen desarrollador.

       2)     Perseverancia: En el día a día te enfrentarás a todo tipo de problemas y algunas veces tendrás que investigar o buscar la manera para resolverlo. Esto podrá tomarte horas, días o meses, debes ser perseverante y pensar que todo puede tener una solución. No te desesperes, ten paciencia.

     3)  Crear: Como te decía en el punto uno, la única manera de entender la programación es practicando. Te será de gran ayuda crear mini proyectos y fijarte pequeños objetivos para ir entendiendo conceptos y la manera en la que funciona la programación.

     4)     Jugar: Este es un término que siempre he utilizado cuando desconozco una herramienta y necesito entenderla. Para ello me pongo a utilizarla con el único objetivo de entender su funcionamiento. Siempre es necesario explorar la herramienta para saber qué tanto nos ofrece y cómo ayuda a resolver un problema, ya que al explorarla y entenderla podrás dar una mejor solución.

INICIANDO EN EL MUNDO DE LA PROGRAMACIÓN
Si eres completamente nuevo en la programación te recomiendo que empiezas en el mundo web ya que verás resultados más rápidos al momento que estés practicando y te mantendrás motivado.

Si quieres empezar hoy mismo en la programación te recomiendo las siguientes tecnologías para que comiences a practicar:

            NIVEL BASICO
       HTML: Este no es un lenguaje de programación, pero te ayudará a crear tu primera página web y es necesario que aprendas lo básico ya que todas las páginas web que visitas están basadas en este formato.

       CSS: Si quieres que tu primera página web tenga un diseño bonito, este te ayudará a cambiar el color de las letras, el color de fondo y a darle efectos a las imágenes. 

NIVEL INTERMEDIO
       JavaScript: Hoy en día, es unos de los lenguajes de programación más populares y te ayudará a que tu página sea más dinámica, más amigable y a realizar operaciones matemáticas.

     En este punto puedes comenzar a explorar herramientas (librerías o plugins) creadas por terceros, como: Bootstrap, JQuery, FontAwesome, etc.

NIVEL AVANZADO
Si necesitas guardar información de tus clientes entonces necesitarás un lenguaje de servidor, como: PHP, JavaScript, Java, C#, etc… Además de un motor de base de datos, como: MySQL o SQL Server.

COSAS QUE NO DEBERÍAN PREOCUPARTE EN LOS PRIMEROS AÑOS DE PROGRAMACIÓN

Algoritmos: No es necesario conocerlos ya que la mayoría de las herramientas que usarás ya los traen implícitamente.

Aplicaciones de escritorio: En la actualidad la mayoría de los proyectos son basados en web y solo ciertos proyectos necesitarán una aplicación de escritorio.

Conocer todas las tecnologías o herramientas: Hasta ahorita no he conocido a nadie que domine ni la mitad de ellas, ya que es un mundo muy cambiante y que avanza muy rápido. Es mejor que te enfoques en pocas tecnologías, en las que te agraden más y profundices en los conceptos básicos, ya que al dominarlos no te será difícil aprender otras tecnologías cuando sea necesario.

Pensar que lo que haces o tus soluciones están mal: Probablemente sí, pero en un principio no tienes que preocuparte ya que con el paso del tiempo te irás dando cuenta como se hacen las cosas de la manera correcta.

POSIBLEMENTE LA PROGRAMACIÓN NO ES LO TUYO
Por último, me gustaría mencionar que si eres de las personas que no pueden permanecer más de 6 horas sentadas frente a una computadora entonces probablemente la programación no sea lo más adecuado para ti, ya que habrá días que tendrás que estar 14 horas o más frente a la computadora.

Si no eres autodidacta, tienes poca imaginación y creatividad tendrás muchas dificultades al resolver problemas.  Recuerda que una habilidad que se ha hecho sumamente popular en el mercado laboral es que tengas la capacidad de aprender rápido y en ocasiones hacerlo solo.

Espero este pequeño artículo basado en mi experiencia personal te sirva como una especie de guía para que inicies en el mundo de la programación.

Si ya tienes experiencia programando y te interesa crear un código limpio y elegante, da clic aquí

lunes, 3 de septiembre de 2018

¿Qué es y qué importancia tiene un software a la medida?


Cada empresa cuenta con necesidades tecnológicas muy puntuales, ya sea en infraestructura o en implementación de herramientas. Estas soluciones son las que les permiten desarrollar funciones de operación, desde las más básicas, hasta la más complejas, lo que se traduce en una productividad efectiva.

En numerosas ocasiones, el software con formato de licencia que se encuentran en el mercado no se adapta a las necesidades tecnológicas, los procesos actuales de la empresa, ni al crecimiento de la operación, lo que lleva a invertir en múltiples plataformas, lo cual descentraliza la operación y no permite automatizar procesos. Esta actividad orilla a las empresas a adecuar su operación al software.

El software a la medida es una herramienta desarrollada con determinaciones específicas en base a las necesidades y las políticas de una empresa. Por lo cual, puede resultar imposible implementar el mismo software en más de una empresa, ya que como su nombre lo describe es un producto personalizado.

Cuántas veces no se implementa una herramienta comercial para gestionar un área, otra herramienta para medir ciertos indicadores clave, y otra más para llevar las ventas de la empresa, ¿Realmente se logran utilizar todas y cada una de las funciones de estos 3 software? La mayoría de veces, la respuesta es no.

Un desarrollo a la medida es, nada más y nada menos, que un traje a la medida, una solución diseñada según las características de la empresa, que permite que cada una de sus funciones sean sumamente útiles para la operación.

¿Qué es lo que hace estos desarrollos tan importantes? Lo comentado anteriormente tiene gran relevancia y puede ser la punta de lanza para aprobar su implementación. Sin embargo, hace falta el eslabón que cierra la cadena; un software a la medida tiene la capacidad de integrarse con diversos sistemas administrativos, permitiendo así lograr el resultado más importante; centralizar y automatizar la información en su máxima expresión.

Desde la integración con sistemas ERP, como sistemas de control de producción o sistemas de administración comercial, hasta integrar desarrollos de procesos altamente especializados para el control de la lógica del negocio, en cualquier industria en la que se desarrolle.

Un software a la medida se va actualizando con base a tu crecimiento. Las empresas que deciden implementarlo se olvidan de pagar licencias mensuales o de tener que esperar a que la empresa proveedora decida sacar al mercado una nueva actualización o funcionalidad. Si las reglas de tu negocio sufren cambios, el software también. 

Un desarrollo a la medida se traduce en las siguientes ventajas

1.  El software se adapta al negocio. Es el traje a la medida de tu empresa
2. Se puede desarrollar e implementar por partes o módulos, conforme vayan apareciendo necesidades
3.  Si las reglas del negocio sufren cambios, el software puede sufrir cambios. El software crece junto contigo
4. Se pueden desarrollar adaptaciones o módulos de comunicación hacia otras herramientas. Integrar para centralizar y automatizar.
5. Al desarrollar una herramienta personalizada se garantiza contar con una solución que la competencia no tiene. 

Sin embargo, no todo lo que brilla es oro. El software a la medida cuenta, también, con una serie de desventajas: 
  •       Costo del desarrollo
  •       Tiempo de desarrollo e implementación
Dicho lo anterior, podrás decir que un software a la medida es una excelente alternativa, y es que realmente lo es. Sin embargo, es de suma importancia elegir un proveedor que cuente con la madurez y experiencia necesaria para convertirse en un aliado estratégico de sus clientes; el proceso y la manera de gestionar el desarrollo debe sentar sus bases en metodologías probadas y reconocidas que permitan el éxito en esta importante tarea. 

Si te interesa evaluar si tu empresa es candidata a un software a la medida, da clic aquí.

Si deseas simplificar tu negocio y desarrollar tus sueños, es momento de comenzar a analizar un software a la medida.



Te recomendamos