martes, agosto 27, 2013

HTTPS: así funciona

Muchos de los sitios que visitamos diariamente están protegidos por HTTPS. Gmail, Twitter, Facebook o Google son sólo unos ejemplos. Nos dicen que es por nuestra seguridad pero, ¿cómo nos protege ese protocolo? ¿Qué ventajas tiene frente a HTTP normal? Y, lo más importante: ¿Cómo funciona?

Vamos a intentar dar respuesta a todas esas preguntas en este artículo, empezando por la más importante: ¿por qué necesitamos HTTPS?

Imagino que todos sabréis qué es HTTP, el protocolo que utilizan los navegadores para comunicarse con los servidores web y que te permite ver páginas web como esta. Funciona bien pero tiene un problema: la seguridad.

Con HTTP, cualquier dato se transmite en texto plano, sin cifrar. Es decir, que cualquiera que se conecte a tu red WiFi, o que tenga acceso a la comunicación entre tu ordenador y el servidor (tu ISP, por ejemplo) puede ver todos los datos que recibes y envías. Por ejemplo, podrían ver las contraseñas que usas para entrar en tu correo, o realizar operaciones adicionales cuando navegas por la web de tu banco.

¿Qué es HTTPS?

Hay que cifrar esos datos para evitar que nadie más pueda verlos. Para eso está el protocolo HTTPS (Hyper Text Transfer Protocol Secure). En sí mismo HTTPS no es más que HTTP normal sobre SSL/TLS. 

SSL/TLS (Secure Sockets Layer/Transmission Layer Security) son dos protocolos para enviar paquetes cifrados a través de Internet, siendo el último el más moderno. Sirven igual para HTTP que para cualquier otro protocolo de comunicación, aunque en este artículo veremos únicamente su aplicación en HTTPS.

¿Cómo se establece una conexión segura?

Como bien sabéis, para cifrar datos se necesita una clave. Esa clave tendrá que saberla tanto el navegador como el servidor para poder comunicarse. El primer problema aparece rápidamente: ¿cómo compartimos una clave de forma segura (sin que nadie más pueda saberla)? Está claro que la clave tiene que ser única para cada conexión, por lo que no puede venir preconfigurada en los ordenadores. 

Aquí entra en juego una de las maravillas de la criptografía moderna: un sistema de clave pública/clave privada, cifrado asimétrico que ya nos explicaron en Genbeta Dev.

La pre-clave se genera en el navegador, y se comparte con el servidor usando criptografía asimétrica

Las claves pública y privada son un par de números relacionados de una forma especial, de tal forma que un mensaje cifrado con una clave sólo puede ser cifrado con su par correspondiente. Por ejemplo, si quiero enviar un mensaje a un servidor, lo cifro con su clave pública para que sólo se pueda descifrar con su clave privada.

Y precisamente este es el primer paso esencial de una conexión HTTPS. Después de haber acordado detalles técnicos entre navegador y servidor (versión del protocolo, algoritmos de cifrado asimétrico y simétrico que se usarán…), el navegador cifra una preclave generada en el momento con la clave pública del servidor al que nos queremos conectar. Eso se envía al servidor, que descifra la preclave con su clave privada. 

Tanto el servidor como el navegador aplicarán un cierto algoritmo a la preclave y obtendrán la misma clave de cifrado. De esta forma hemos superado el primer (y mayor) problema que teníamos: intercambiar la clave. A partir de entonces, simplemente se cifran y descifran los datos con esa clave. 

Como nadie más sabe esa clave, nuestras comunicaciones serán seguras y nadie podrá verlas (siempre y cuando el algoritmo de cifrado simétrico sea seguro, claro).

Alguno se preguntará por qué intercambiar una clave y no cifrar directamente los datos usando cifrado asimétrico. La principal razón es que el cifrado simétrico es muchísimo más rápido que el asimétrico, e intercambiar la clave no resulta un problema que haya que sortear.

¿Qué datos protege HTTPS?

La pregunta obvia es saber qué datos se protegen cuando usamos una conexión HTTPS. Como está basado en SSL/TLS, que funciona en la capa más baja de comunicación, se cifran todos los datos de HTTP. Esto es, no sólo la página web sino también la URL completa, los parámetros enviados, las cookies… Lo único que se queda al descubierto son los datos del paquete TCP: el servidor y el puerto al que nos conectamos. 

HTTPS sólo deja al descubierto el servidor y puerto al que nos conectamos.
Por lo tanto, HTTPS no sólo impide que alguien vea las páginas web que estamos visitando. También impide que puedan conocer las URLs por las que nos movemos, los parámetros que enviamos al servidor (por ejemplo, los usuarios y contraseñas se envían como parámetros POST normalmente) o las cookies que enviamos y recibimos (alguien con acceso a estas cookies podría robar nuestra sesión, como demostraba la herramienta Firesheep).

¿Cómo sé qué no me estoy comunicado con un impostor?



Hay un problema adicional en la comunicación por Internet. Pongamos que quiero navegar a Genbeta.com. ¿Cómo sé que me estoy comunicando con el servidor de Genbeta y no con un servidor falso que se está haciendo pasar por Genbeta (lo que se conoce como un ataque man-in-the-middle)?

Por lo tanto, hay que autenticar los servidores. No sirve de nada tener los datos cifrados si no nos aseguramos de que nos estamos conectando al servidor correcto. Para eso están los certificados SSL, que contienen la clave pública y los nombres de dominio en los que se pueden usar. 

Las CA (terceros de confianza) nos aseguran que el certificado es válido y que el servidor es quien dice ser.

El certificado SSL por sí sólo no sirve para nada. Cualquier atacante podría falsear uno y no te darías cuenta. Ahí entran en juego las CA, o Certificate Authority, las entidades emisoras de certificados SSL firmados, que sólo dan certificados sobre un dominio a su propietario. No podría, por ejemplo, ir cualquiera y pedir un dominio para google.com. Además, las firmas aseguran que el contenido del certificado no ha variado. No voy a extenderme viendo cómo es este proceso, ya lo vimos en un artículo anterior.

En resumen, una firma de una CA nos asegura que el servidor es quien dice ser. Por supuesto, hay que verificar esa firma para asegurarse de que es real. Para ello, el navegador busca el certificado en su almacén (en realidad es una anillo de confianza, algo más complejo) y verifica la firma. Si no es válida o no encuentra el certificado, te mostrará un aviso de que no puede autenticar la conexión al servidor.

Precisamente esto último ocurría hace un tiempo con Firefox (y otros navegadores, creo), cuando intentabas conectarte a servidores seguros de la administración española. Los certificados de esos servidores estaban firmados por la FNMT, pero Firefox no tenía en su almacén los certificados de la FNMT. Por esto mismo no podía asegurar que el certificado fuese válido y avisaba al usuario.

¿Qué debilidades tiene HTTPS?

El punto más débil de HTTPS son los certificados. Si, por ejemplo, alguien roba el certificado (con la clave privada) de Google, podría crear un servidor falso sin que hubiese forma de distinguirlo de uno legítimo. 

Un problema más grande puede ocurrir si se filtra la clave privada de una CA. Un atacante podría crear y firmar certificados válidos para cualquier dominio sin que nadie se lo impidiese, y por lo tanto engañar a los usuarios para que se conectasen a servidores falsos. 

Por suerte, todos los navegadores tienen un mecanismo para revocar certificados. Cuando se compromete un certificado, se pone su huella digital del certificado en una lista. El navegador se descarga esa lista y dejará de dar por válido cualquier certificado que aparezca ahí. El único problema está en que los navegadores no siempre aprovechan bien esas listas, pero el mecanismo está ahí.

Con esto, ya hemos acabado nuestra entrega de la serie “Así funciona…” sobre HTTPS. Podréis imaginar, especialmente los más legos en la materia, que hay cosas que he pasado por alto y otras que se han simplificado para hacer más fácil la lectura. Como siempre, intentaremos resolver las dudas y críticas que tengáis en los comentarios.

Tomado de: Articulo Original

lunes, agosto 26, 2013

Firmas Electronicas con Genexus

Tomado de: Tipo de dato Criptograpia




Las aplicaciones empresariales suelen tener necesidades de seguridad a la hora de almacenar, transportar o intercambiar información, de ahí que surge la necesidad de contar con un tipo de datos que permita manejar el cifrado de textos y la firma de documentos.
A través de los tipos de datos para Criptografía se puede:
  • Firmar digitalmente un texto.
  • Validar la firma digital.
  • Encriptar/desencriptar un texto.
  • Calcular el hash de un texto dado.
Estos métodos utilizados en conjunto pueden permitir asegurar la autenticación, integridad, la confidencialidad y el no repudio de los mensajes.

Escenarios de uso

  • Generalmente una contraseña no se debe almacenar en texto plano, sino que se almacena el resultado de aplicar el hash sobre la misma.
  • Factura electrónica. Se usan funciones de Hash y firma digital.

Implementación de los tipos de datos para Criptografía

Se cuenta con los tipos de datos: CryptoHash, CryptoSign, CryptoSymmetricEncrypt, CryptoAsymmetricEncrypt, CryptoCertificate, CryptoXMLSign, que permiten resolver las necesidades de criptografía de una aplicación GeneXus.
Se tiene un dominio enumerado CryptoAlgorithm que contiene los algoritmos de criptografía soportados.
A continuación se detallan los métodos asociados a cada uno de estos tipos de datos y ejemplos de uso.

CryptoHash

Métodos

Nombre Descripción
Compute(String text) Retorna el texto resultado de aplicar la función de hash sobre el texto ingresado.

Propiedades

Algorithm: String  Permite especificar el algoritmo de hash que se aplicará cuando se invoque al método Compute(String). Se utilizará el SHA256 por omisión.

Ejemplo

El siguiente ejemplo usa el algoritmo SHA1 de Hash.
&CryptoHash.Algorithm = CryptoAlgorithm.HashSHA1 //&CryptoHash es de tipo CryptoHash.
//CryptoAlgorithm es un dominio enumerado que contiene los algoritmos de criptografía soportados.
&resultstringSHA1 = &CryptoHash.Compute(&text) 

CryptoSign

Permite manipular firmas digitales con clave pública-privada según el estándar PKCS#7/CMS ó PKCS1 utilizando certificados X509.

Métodos

Nombre  Descripción
Sign(String text, [boolean detached]): String  Retorna el texto resultado de aplicar el algoritmo de firmado utilizando el certificado especificado sobre el texto ingresado. El parámetro detached indica si se devuelve solamente la firma o si se devuelve la firma junto con el contenido. El parámetro detached solamente es válido cuando se maneja el formato PKCS7.
Verify(String signature, String text, [boolean detached]): Boolean Dado un texto y una firma, verifica si la firma corresponde al texto utilizando la información del certificado configurado. El parámetro detached solamente es válido cuando se maneja el formato PKCS7.

Propiedades

Certificate: CryptoCertificate  Permite especificar el certificado que se utilizará para firmar el texto.
Algorithm: CryptoAlgorithm Permite especificar el algoritmo de firmado.
ValidateCertificate: Boolean Especifica si en el método Verify se debe validar o no que el certificado sea un certificado válido.

Ejemplo

A. Cómo firmar un texto

En el siguiente ejemplo dado un certificado en formato .pfx, se firma un texto usando el algoritmo de Hash SignSHA1withRSA.
Primero se carga el certificado de disco; si no hay errores en la carga del mismo, se pregunta si éste tiene clave privada para poder firmar el texto. En caso positivo se selecciona un algoritmo de Hash para el firmado y se firma el texto usando el método Sign.
&errorCode = &CryptoCert.Load("my_keystore.pfx", &pwd) //&CryptoCert es de tipo CryptoCertificate.
if &errorCode = 0
    if (&CryptoCert.HasPrivateKey())

     &CryptoSign.Algorithm = CryptoAlgorithm.SignSHA1withRSA //&CryptoSin es de tipo CryptoSign. 
     //CryptoAlgorithm es un dominio enumerado que contiene los algoritmos de criptografía soportados.
     &CryptoSign.Certificate = &CryptoCert
     &signedText = &CryptoSign.Sign(&textToSign, false)
     if &CryptoSign.ErrCode <> 0
       //Process Errors
     endif
   else
   //Process Errors
  endif
else
//Process Errors
endif

B. Cómo verificar la firma de un texto

Dado el certificado con clave pública, se verifica la firma del texto como se muestra en el ejemplo a continuación:
&errorCode = &CryptoCert.Load("MyPublicKey.cer")
if &errorCode = 0
    &CryptoSign.Certificate = &CryptoCert //&CryptoSign de tipo CryptoSign.
    &CryptoSign.ValidateCertificate = True //Truesignifica que el certificado es validado en el proceso de validación de la firma.
    &isOK = &CryptoSign.Verify(&SignedText,&TextToSign,false)
    if not &isOK
         //Process Errors
    else
        //OK
    endif
else
   //Process Errors
endif 

CryptoXMLSign 

Permite manipular firmas digitales para documentos XML con clave pública-privada según el estándar XMLDSIG utilizando certificados X509.

Métodos

Nombre Descripción
Sign(String text): String Retorna el texto resultado de aplicar el algoritmo de firmado utilizando el certificado especificado sobre el texto ingresado.
SignElements(String:text,String:Xpath) El primer parámetro es el XML y el segundo el Xpath. Retorna el texto resultado de aplicar el algoritmo de firmado utilizando el certificado especificado sobre el texto ingresado en el Xpath indicado.
Verify(String signature) Dado un texto y una firma, verifica si la firma corresponde al texto utilizando la información del certificado configurado.

CryptoSymmetricEncrypt

Permite cifrar un texto utilizando un algoritmo simétrico (DES, Rijndael, TripleDES).
El método Create permite especificar el algoritmo que se utilizará para encriptar el texto. De esta manera se puede elegir el algoritmo de encriptación sin necesidad de agregar un nuevo tipo de dato.

Métodos

Nombre Descripción
Encrypt(String text) Dado un texto retorna un texto cifrado utilizando criptografía simétrica según el algoritmo, clave (Key) y vector de inicialización (IV) especificados.
Decrypt(String text) Devuelve el texto dado descifrado según el algoritmo, clave (Key) y vector de inicialización (IV) especificados.

Propiedades

Algorithm: CryptoAlgorithm Permite especificar el algoritmo de encriptación.
Key: String Clave de cifrado, se genera automaticamente al crear la instancia.
IV: String Vector de inicialización de cifrado, se genera automáticamente al crear la instancia.
KeySize: Numeric  
BlockSize: Numeric  

Ejemplo   

A. Encriptar un texto usando un algoritmo simétrico.

En el siguiente ejemplo se encripta el texto contenido en la variable &text, usando el algoritmo TripleDES.
&CryptoEncrypt.Key ="jSYUCTshqx0kOuDs58Nshb1OkZj7mh1S" //CryptoEncrypt es de tipo CryptoSymmetricEncrypt
&CryptoEncrypt.Algorithm = CryptoAlgorithm.EncryptTripleDES
&result = &CryptoEncrypt.Encrypt(&Text) //Se encripta el texto y se obtiene el resultado.

B. Desencriptar un texto encriptado con un algoritmo simétrico.

&Text = &CryptoEncrypt.Decrypt(&EncryptedText) //CryptoEncrypt es de tipo CryptoSymmetricEncrypt
//Process Errors
msg(format("Error %1 %2", &Cryptoencrypt.ErrCode.ToString(), &Cryptoencrypt.ErrDescription))

CryptoAsymmetricEncrypt

Permite cifrar un texto utilizando un algoritmo asimétrico.

Métodos

Nombre Descripción
Encrypt(String text) Dado un texto lo retorna cifrado utilizando criptografía asimétrica según el algoritmo y clave pública del certificado especificado.
Decrypt(String text) Devuelve el texto dado descifrado según el algoritmo y clave privada del certificado especificado. Requiere que el certificado contenga la clave privada.
 

 Propiedades

Algorithm: String Permite especificar el algoritmo de hash que se usará. Se utilizará el SHA256 por omisión.
Certificate: GXCertificate Permite especificar el certificado que se utilizará para encriptar o desencriptar.

Ejemplo
     

A. Encriptar un texto usando un algoritmo de encriptación asimétrico.

En el siguiente ejemplo, se encripta un texto dado un certificado de clave pública.
&ErrorCode = &cryptoCert.Load("MyPublicKey.cer")
if &ErrorCode = 0
      &CryptoEncrypt.Certificate = &cryptoCert //&CryptoEncrypt es de tipo CryptoAsymmetricEncrypt
      &result = &CryptoEncrypt.Encrypt(&Text)
      if &CryptoEncrypt.ErrCode <> 0
           //Process Errors
      endif
endif

B. Desencriptar un texto encriptado con un algoritmo asimétrico.

En este ejemplo se muestra como se desencripta un texto encriptado usando un algorimto asimétrico.
&ErrorCode = &cryptoCert.Load("MyPFX.pfx",&pwd) //&CryptoCert es de tipo CryptoCertificate.
 if &ErrorCode= 0
    if &cryptoCert.HasPrivateKey() 
        &CryptoEncrypt.Certificate = &cryptoCert //&CryptoEncrypt es de tipo CryptoAsymmetricEncrypt
        &Text= &CryptoEncrypt.Decrypt(&EncryptedText)
    else
       //Process Errors
  endif
else
//Process Errors
endif

CryptoCertificate

Es una API que permite la manipulación de certificados.

Métodos

Load(String certPath, [password]): Int ErrCode Permite inicializar un certificado a partir de la ruta y el password en caso de que sea necesario.
FromBase64(String data) Inicializa el certificado a partir de su representación en base64.
ToBase64(): String Obtiene una representación del certificado en base64.
KeyInfo: StringCollection Permite especificar que información del certificado debe ser agregada a la firma cuando se genera una firma XML.
HasPrivateKey(): Boolean Devuelve true si el certificado tiene asociado una private key. La private key es imprescindible para desencriptar un texto.
Verify(): Boolean   Indica si el certificado es confiable.    

Propiedades

 Issuer: Character 
Subject: Character 
SerialNumber: Character  
Thumbprint: Character  
NotAfter: DateTime 
NotBefore: DateTime
Version: Character 
ErrCode  Retorna el error de la última operación
ErrDescription  Retorna la descripción del error de la última operación

Certificados soportados

NET (para el firmado digital, se necesita que tenga asociada la clave privada)
  • DER Encoded Binary X.509 (.cer)
  • Base64 Encoded X.509 (.cer)
  • PKCS#7 / Cryptographic Message Syntax Standard (.p7b)
  • PKCS#12 / Personal Information Exchange (.pfx o .p12)
JAVA
  • DER Encoded Binary X.509 (.cer)
  • Base64 Encoded X.509 (.cer)
  • PKCS#7 / Cryptographic Message Syntax Standard (.p7b)
  • PKCS#12 / Personal Information Exchange (.pfx o .p12)
  • Java Key Store (.jks)
 

jueves, agosto 22, 2013

Introducción a Business Process Management (BPM)



Resumen:  El presente artículo tiene como objetivo presentar de manera breve los conceptos fundamentales de la disciplina de BPM, por qué ésta se debera adoptar en las empresas y finalmente cómo la misma se relaciona con las tecnologías de IT para dar soluciones de valor agregado a los negocios de empresa. Está pensado para una audiencia que no conoce de este tópico y con la necesidad de querer aprenderlo de una forma rápida y sencilla.


Introducción a Business Process Management (BPM)


El presente artículo tiene como objetivo presentar de manera breve los conceptos fundamentales de la disciplina de BPM, por qué ésta se debería adoptar en las empresas y finalmente cómo la misma se relaciona con las tecnologías de IT para dar soluciones de valor agregado a los negocios de empresa.


Está pensado para una audiencia que no conoce de este tópico y con la necesidad de querer aprenderlo de una forma rápida y sencilla.


Se puede definir a BPM como una disciplina o enfoque disciplinado orientado a los procesos de negocio, pero realizando un enfoque integral entre procesos, personas y tecnologías de la información.


BPM busca identificar, diseñar, ejecutar, documentar, monitorear, controlar y medir los procesos de negocios que una organización implementa. El enfoque contempla tanto procesos manuales como automatizados y no se orienta a una implementación de software.


Algo importante a tener presente es que BPM no es una tecnología de software, pero se apoya y hace uso de las mismas para su implementación efectiva.


Dependiendo del uso del enfoque y su aplicación, BPM puede verse como una metodología, como una herramienta estratégica o bien como conjunto de herramientas tecnológicas, no existe definición precisa, todo depende del prisma que utilicemos para ver la realidad. No obstante, personalmente creo que la definición de “enfoque disciplinado” es el mejor acercamiento para describirla.


Una organización podría hacer uso de este enfoque por muchas razones, pero personalmente creo que el hecho que BPM traiga de la mano a los procesos, las personas y la tecnología de la información de manera conjunta es la razón principal para adoptarla.


Los enfoques previos trataban de manera separada a estos tres elementos, produciendo una brecha a veces insalvable entre las tecnologías de IT y negocio. Esta brecha al mediano/largo plazo resulta en pérdidas (millonarias en muchos casos) que las empresas deben afrontar.


La orientación al proceso es un enfoque más real para el modelado de situaciones organizacionales. Una organización esta regulada por procesos, y son estos lo que hacen que la organización tenga vida. Dependiendo de cómo estos están implementados, esta vida podrá ser mas corta o larga.


Si una empresa conoce de sus procesos, podrá entonces modelarlos, estudiarlos, medirlos y finalmente optimizarlos para satisfacer los objetivos del negocio.


Si en este modelado de procesos, además se integran las tecnologías de IT de manera inteligente y los recursos humanos que forman parte de los procesos, el producto final será más integral, consistente y con menos grietas.



BPM se basa en muchos principios o consideraciones que atacan a problemas típicos del día a día en empresas y el desarrollo de sistemas de información dentro de las mismas. Todas estas consideraciones llevadas a la práctica efectiva mitigan estos problemas diarios. 


BPM considera fundamental el monitoreo del proceso para estar midiendo su performance y detectar posibles falencias. Mediante el monitoreo se puede determinar si el proceso genera los resultados esperados en función de los objetivos del negocio. La creación y uso de métricas y KPIs (Key Performance Indicators), es clave para realizar un control detallado de cada proceso.


Dado el dinamismo externo al cual están expuestas las empresas, es necesario tener una documentación detallada de cada actividad organizacional. BPM impulsa el entendimiento y modelado de todos los procesos por medio de la documentación. Apoyándose en herramientas de software de modelado de procesos este punto puede ser alcanzado eficientemente.


Otro aspecto importante es la automatización de los procesos. Esto es algo que toda empresa quiere lograr para mejorar sus operaciones, reducir costos y aumentar las ganancias. La cuestión clave que muchos olvidan, es que antes de automatizar cualquier proceso primero se lo tiene que entender y mejorar. Bien vale recordar las palabras de Bill Gates respecto a este tema:


La primera regla de cualquier tecnología usada en una empresa es que la automatización aplicada a una operación eficiente magnificará la eficiencia. 

La segunda es que la automatización aplicada a una operación ineficiente magnificará la ineficiencia.



De esta frase se desprenden muchas lecciones por aprender en todo la disciplina IT (podría ser artículo completo respecto al asunto), pero yendo a lo específico del modelado de procesos es el punto es que la automatización no sirve de nada si no se arregla o mejora el proceso desde el punto de vista del negocio. Mediante BPM es más fácil comprender los procesos, por ende modelarlos, entenderlos y optimizarlos, para luego una posterior automatización.


Como se menciono previamente, la visión conjunta de los procesos, las personas y la tecnología, en orden para mejorar la performance de los procesos es clave para el éxito de cualquier empresa. 


Muchos estudios sobre empresas que han aplicado BPM han demostrado los beneficios son mayores a los intentos tradicionales de otras metodologías o enfoques. Personalmente creo que la clave del éxito fue poner mismo canal el lenguaje de los negocios (procesos y recursos humanos) y el lenguaje de IT, y conjuntamente definir un enfoque para mejorar las ganancias y beneficios del negocio.



Como se mencionó previamente, BPM se basa en las últimas herramientas tecnológicas de software para la implementación de soluciones.

IBM proporciona una suite de productos para desarrollar de forma exitosa todas las etapas que intervienen en el desarrollo de una solución BPM. La siguiente tabla describe los principales productos.



ProductoDescripción
WebSphere Business ModelerEsta herramienta es utilizada por el analista de negocios para modelar, documentar, visualizar y entender los procesos del negocio.

La misma permite ejecutar simulaciones sobre los procesos definidos para identificar problemas o cuellos de botella.

También en esta etapa de modelado se pueden definir métricas y KPIs para luego ser utilizados por WebSphere Business Monitor.

Los modelos aquí generados luego se pueden exportar para tomarlos como entrada en WebSphere Integration Developer para el desarrollo de los artefactos de software. Es importante destacar que los modelos se exportan a lenguaje BPEL (Business Process Execution Language), siendo éste último un estándar de la industria.

WebSphere Integration DeveloperCon WebSphere Integration Developer se pueden desarrollar servicios o soluciones basadas en SOA (Service Oriented Architecture) utilizando WebSphere Process Server, WebSphere Enterprise Service Bus y WebSphere Adapters.

Esta herramienta fomenta el uso de SOA, creando activos de IT como componentes de servicios y fomentando la reutilización de componentes.

Al momento de trabajar, el desarrollo y conexión de componentes es muy fácil dado que los mismos se desarrollan visualmente y con la tecnología de drag and drop.

WebSphere Process ServerEste producto es el motor donde se instala y ejecuta la solución BPM desarrollada en WebSphere Integration Developer.

El mismo tiene en su base un servidor IBM WebSphere Application Server, trayendo consigo la confiabilidad y robustez ya característica de este servidor líder en el mercado.

WebSphere Business MonitorEs un entorno que permite monitorear de manera constante e integral la solución BPM, proporcionando visibilidad punto a punto de toda la actividad del negocio.

Mediante este producto los analistas de negocio y ejecutivos pueden ver de manera sencilla la performance de sus procesos.



La siguiente Figura 1 muestra un ciclo básico de vida bajo el enfoque BPM utilizando las herramientas que se describieron.


La siguiente figura muestra un ciclo básico de vida bajo el enfoque BPM utilizando las herramientas que se describieron.

Al utilizar una suite unificada de herramientas de alto nivel, todos los artefactos que se generan en el proceso quedan interrelacionados y conectados. Esto último permite reducir las brechas que casi siempre se producen entre las fases de:

  • Análisis – Desarrollo
  • Desarrollo – Implementación
  • Implementación – Monitoreo/Mantenimiento

Recordar siempre que es vital nunca perder la interrelación de los artefactos que se producen en las diferentes etapas, esto es clave para la etapa de mantenimiento del sistema (le etapa que más tiempo consume del ciclo de vida del sistema!!!).




lunes, agosto 19, 2013

Los 10 errores más comunes en las empresas


 Secretaría de Comercio identificó los 10 errores más comunes en la micro y pequeña empresa.

Se los explico y ustedes analicen su empresa para que se vayan calificando con palomita y digan: cumplo, cumplo, cump... ah caray, ¡ahí me falta!, cumplo y cumplo.

1.- Falta de misión y visión
La Misión expone el ¿POR QUÉ? de la existencia de la organización.
Responde ¿quiénes somos?, ¿para qué existimos?, ¿qué hacemos?, ¿para quién trabajamos?, ¿cuáles son nuestros valores?
Todas las decisiones estratégicas surgen a partir de la misión.
La Visión consiste en una declaración formal de lo que la empresa trata de lograr. La descripción minuciosa de este elemento ayuda a guiar la formulación de estrategias.

2.- Desconocimiento de la matriz FODA
Fortalezas. La carta de presentación, es todo aquello que la empresa puede hacer bien. Habilidades, capacidades, recursos valiosos o logros. Cualquier característica que le dé una posición favorable o ventaja competitiva en el mercado.
Oportunidades. Aquellas áreas que están descuidadas, potencial desaprovechado que ofrece importantes vías de crecimiento y desarrollo.
Debilidades. Cualquier actividad que provoque una posición desfavorable para la empresa.
Amenazas. Factores del ambiente externo de una empresa que pueden afectar su bienestar y crecimiento.
Ambiente interno de la empresa: fortalezas y debilidades.
Ambiente externo de la empresa: oportunidades y amenazas.

3.- Estructura organizacional deficiente
Falta de organización ordenada, funcional, jerárquica y responsable.

4.- Centralización del poder
La mayor parte de las empresas son familiares, priorizan intereses personales y sentimentales.

5.- Carencia de establecimiento de objetivos
El empresario se forma mentalmente cuál es el objetivo de su empresa, sin embargo no lo establece de manera escrita ni formal por lo que el personal que colabora con él no los conoce y por lo tanto las actividades que realiza muchas veces no se encaminan a la consecución del objetivo.

6.- Falta de evaluación y seguimiento
La mayoría de las empresas carecen de sistemas de evaluación de desempeño del personal. Cuando se establecen políticas en las empresas no se supervisan que ésta sea cumplida por el personal, incluso el primero en romper las políticas de procedimientos es el dueño del negocio, lo cual trae como consecuencia que el personal minimice la importancia de las mismas.

7.- Comunicación deficiente
El no tener definidas las líneas de autoridad genera una comunicación deficiente entre los miembros de la organización ya que estos no saben con certeza a quién acudir o no se generan vínculos de confianza para que se puedan comunicar los problemas que surjan en la operación cotidiana del negocio.

Recomendación: la comunicación debe ser escrita y firmada, teniendo así respuesta efectiva y eficiente.

8.- Falta de controles administrativos
Los empresarios en su mayoría desconocen la situación financiera exacta de su negocio, debido a que no llevan los controles ni registros necesarios para conocer sus ingresos, egresos, rotación de inventarios, porcentaje de ventas a crédito etc.
La contabilidad sólo se utiliza con fines fiscales y no para la toma de decisiones de las empresas.

Recomendación: El dueño debe fijarse un "salario del mercado" por ejemplo $20,000 y sobre ese salario fijar su nivel de vida. De ahí debe pagar sus viajes, compras personales, etc., y no tomar más dinero de la empresa para su uso personal.

9.- Desinterés por los aspectos jurídicos - corporativos
Tomando en consideración que la mayoría de las empresas son familiares se les da poca importancia a los aspectos jurídico-corporativos de los negocios ya que se cree que el único requisito que se debe cumplir es concurrir al notario para estar legalmente como sociedad.

10.- Utilizar un estilo de administración reactiva y no preventiva
No perder de vista aspectos de planeación, organización, dirección y control. Para esto deben agruparse en áreas las diversas actividades que se llevan a cabo como: ventas, servicio, personal, finanzas.
Identificando lo que se hace en cada una con la finalidad de delegar autoridad y responsabilidad.