jueves, 7 de julio de 2011

Gestión de la calidad y pruebas del Software Libre

La bibliografía relacionada con la gestión de la calidad de software es muy amplia, sin embargo para entender los conceptos más comunes basta con revisar el artículo de Wikipedia relacionado con el tema [1]. Este artículo explica que las pruebas se pueden agrupar según el nivel de la prueba (unitarias, de integración, de regresión, de aceptación, pruebas alpha, pruebas beta), según los métodos utilizados (caja blanca, caja negra, caja gris) y además describe las siempre olvidadas pruebas no funcionales (rendimiento, estabilidad, usabilidad, seguridad). Por otra parte existen diferentes modelos que le permiten a los ingenieros asegurar la calidad a lo largo de todo el proceso de desarrollo del software, los modelos de calidad más mencionados son: CMMI y las Normas ISO.

Ahora bien, si por lo general es una tarea difícil gestionar la calidad de los proyectos de desarrollo de software, incluso cuando muchos aspectos de estos proyectos están controlados. ¿Cómo se gestiona la calidad en los proyectos de software libre?

miércoles, 6 de julio de 2011

Aprendiendo a modelar con UML

El Lenguaje Unificado de Modelado (UML, por sus siglas en inglés, Unified Modeling Language), es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes reutilizables [1].

En la actualidad UML es el lenguaje de modelado de sistemas más conocido y utilizado, de ahí la importancia de estudiarlo y aprender a utilizarlo.

martes, 5 de julio de 2011

Ingeniería del Software Libre

Cada proyecto tiene un conjunto de características y necesidades únicas (que deben ser identificadas desde el inicio); de forma similar, cada metodología de desarrollo ofrece un conjunto de ventajas y facilidades únicas, así como inconvenientes.

En ese sentido, el primer paso de la ingeniería de software es seleccionar la metodología de desarrollo que mejor se ajuste a las necesidades del proyecto, de forma tal que este sea desarrollado en el menor tiempo posible y con la mejor calidad. Para lograr esto, hoy en día tenemos la ventaja de poder escoger de una lista de metodologías que han demostrado ser eficientes en proyectos con características particulares. Por un lado tenemos las metodologías ágiles, ideal para proyectos cortos (menores a 6 meses) en los que no se tienen muy claros los requerimientos del cliente, y por otra parte tenemos las metodologías tradicionales, ideales para proyectos largos mayores a 6 meses. Pero ¿Dónde quedan los proyectos de software libre?

Profundizando conocimientos en Ingeniería del Software

Uno de los problemas actuales que enfrenta la ingeniería del software es el problema de la estimación. Aunque existen muchas teorías y técnicas al respecto, en la práctica ha resultado terriblemente difícil hacer buenas estimaciones de los proyectos de software.

Entendiendo la filosofía del Software Libre

"Como usuario de informática de hoy en día, se puede encontrar usando un programa privativo. Si su amigo le pide hacer una copia, estaría mal negarse a ello. La cooperación es más importante que el copyright. Pero una cooperación clandestina no contribuye a mejorar la sociedad. Una persona debería aspirar a vivir una vida honrada abiertamente con orgullo, y esto significa decir «No» al software privativo." [1]

Libertad y solidaridad social conforman los pilares de la filosofía del software libre. Y aunque ciertamente no es fácil seguir la línea de pensamiento de Richard Stallman, en este post intentaré explicar algunas de las ideas expresadas por el padre del software libre.

Aprendiendo los fundamentos del Software Libre

¡Hey! dije "libre", no "gratis"
Cuando se habla de software libre la mayoría de las personas tiende a pensar inmediatamente en el precio. Si bien es cierto que en muchas ocasiones el software libre es tan económico que no es necesario pagar un céntimo, la realidad es que la palabra libre se debe interpretar tal como se haría en la frase "libre expresión" y no como en la frase "barra libre".

miércoles, 10 de febrero de 2010

Gobierno Electrónico en Venezuela

Existen muchos documentos en la web que nos ayudan a entender el concepto del gobierno electrónico. Hace poco tuve la oportunidad de revisar uno de ellos, y contrastar la teoría con las acciones tomadas en Venezuela respecto a este tema.

Aunque en papel, el proyecto de gobierno electrónico en Venezuela es bastante completo, a mi parecer los avances no han logrado el impacto esperado. Sin embargo, no todo ha sido malo. A pesar de toda la complejidad tecnológica y procedimental, no se puede negar que algunas instituciones han logrado un avance sorprendente en la materia de gobierno electrónico.

El caso SENIAT, es uno de los principales casos de éxito. En resumen, el SENIAT ha logrado automatizar prácticamente el 100% del proceso de declaración y pago de impuestos. Dejando claro los beneficios de un gobierno dedicado a servir a las necesidades de los ciudadanos, aumentando la eficiencia de sus procesos y por ende fortaleciendo y generando oportunidades que aseguran el cumplimiento de sus metas como institución. Basados en el E-Governance Maturity Model (Gartner), se podría decir que el SENIAT se encuentra en la fase 3 de madurez, convirtiéndolo en un modelo a seguir para el resto de las instituciones en Venezuela.

Otros documentos interesantes de revisar, son los reportes de “Global E-Government Survey” realizados por las Naciones Unidas, donde se estudia el gobierno electrónico desde muchos aspectos, entre ellos, la capacidad y la voluntad del sector público para desarrollar las TIC para mejorar el conocimiento y la información al servicio del ciudadano.

En la publicación más reciente, el índice de desarrollo de E-Government para Venezuela es de 0.4774 (de un máximo de 1.0), muy cercano al promedio del continente. Lo que confirma que el trabajo realizado no ha sido en vano. Si la administración publica logra replicar los casos de éxito como el del SENIAT en las demás instituciones del país, tendremos muchas probabilidades de encontrar el camino hacia la exitosa implantación del gobierno electrónico en Venezuela.

martes, 9 de febrero de 2010

Sistemas empresariales de negocio

Los sistemas empresariales de negocio integran y manejan muchos aspectos de la empresa, su propósito principal es ayudar a las compañías a administrar sus procesos tanto internos como externos, tales como proveedores y clientes, así como ayudar en los procesos de toma de decisiones. Entre ellos tenemos:

ERP (Enterprise Resource Planning) Planificación de los Recursos Empresariales, son sistemas que se ubican al centro de toda la compañía y manejan múltiples procesos de la empresa, que van desde procesos administrativos, pasando por finanzas, recursos humanos, entre otros.

Algunos de los beneficios son:
  • Aumenta la calidad y eficiencia.
  • Ayuda a reducir los costos.
  • Soporte para la planificación estratégica.
  • Provee de agilidad a la empresa.

CRM (Customer Relationship Management ) Gestión de Relaciones Clientes, son sistemas que están enfocados en la relación con los clientes, generalmente están relacionados con los procesos de mercadeo, ventas, atención al cliente, entre otros.

Algunos de los beneficios son:
  • Identificar y seleccionar a los mejores clientes.
  • Ayuda a conocer a los clientes.
  • Ayuda a la personalización de productos y servicios.
  • Facilita el seguimiento de los clientes.
  • Mejorar el servicio prestado a los clientes.
  • Mejorar la retención de clientes.

SCM (Suply Chain Management) Administración de la Cadena de Suministros, son sistemas que están enfocados a los procesos de procura, venta y distribución de mercancía. Generalmente implican relaciones más estrechas con los proveedores y los clientes.

Los beneficios se pueden resumir en esta frase:
  • Tener los productos adecuados,
  • en el lugar adecuado,
  • en el momento adecuado,
  • en la cantidad adecuada,
  • a un costo aceptable.

BI (Business Intelligence) Inteligencia de Negocio, son sistemas que están enfocados al análisis de la información generada por el resto de los sistemas de la compañía, para ayudar a los procesos de toma de decisiones.

domingo, 7 de febrero de 2010

Retos y oportunidades de la Web


En esta oportunidad hablaré un poco sobre la evolución de la Web, dejaré a un lado los números de las versiones, pues considero que son simples etiquetas que de alguna forma bloquean nuestra percepción del concepto en su totalidad. Las etiquetas funcionan bien cuando se quiere organizar información, nos permiten encontrar más rápido las cosas que estamos buscando, pero si queremos hacer reflexiones más profundas es mejor no distraernos con las etiquetas y enfocarnos en el concepto global.

En un post anterior hacía referencia a una charla dada por Kevin Kelly sobre los próximos 5.000 días de vida de la Web, en esa charla Kevin nos presenta una visión que realmente desafía muchos paradigmas de la actualidad. Pero los trabajos que se están haciendo hoy día nos llevan a pensar que el futuro puede llegar a ser como el descrito por Kevin.

Un punto que quiero rescatar de esa presentación es la idea de que compartir es ganar. Cada vez  es mayor la cantidad de información que compartimos en la Web, y como resultado, cada vez son más los servicios personalizados que encontramos. Búsquedas basadas en la ubicación física, información relevante según el historial de navegación, son sólo algunos de los beneficios que se pueden mencionar.

Por otra parte, tenemos la idea de una gran máquina que contendrá toda la información de la humanidad y cuyo sistema operativo será la Web. Pero ¿cómo compartimos la información del mundo en la Web? Pues bien, pareciera que el mismo creador de la Web tiene la respuesta. Hace 20 años Tim Berners-Lee creó un concepto novedoso que terminó por convertirse en la World Wide Web. 20 años después en su charla sobre la siguiente versión de la Web, Berners-Lee explica que no hay duda de que la Web ha sido explotada de manera fenomenal, pero aún así, hay mucho potencial por aprovechar. 

En esta oportunidad Berners-Lee nos reta con un nuevo concepto: “linked data” (data enlazada), un concepto tan sencillo como el de “linked documents” (documentos enlazados) al que ya estamos acostumbrados. La idea es simple, enlazar tanta data como sea posible al igual que hoy en día se enlazan los documentos entre sí (con algunas pequeñas variantes). Berners-Lee explica que, una vez iniciado este proceso de enlazado de data, no tardarán en aparecer relaciones entre objetos que permitirán realizar análisis o búsquedas más precisas (entre otras cosas), ya que cada uno de nosotros podremos aportar nuestro pedazo de data a la Web al puro estilo de OpenStreetMap o Wikimapia. Una primera implementación de este concepto es DBpedia, con la que se pueden hacer búsquedas de data almacenada en Wikipedia de una forma un poco más estructurada y humana. Aquí les dejo un ejemplo.

Lo interesante de este concepto es que nos revela todo un mundo de posibilidades, y además nos acerca un poco más a la visión de Kevin sobre el futuro de la Web. 

Retos de seguridad, éticos y sociales para las empresas

En los últimos años los sistemas informáticos han aumentado mucho sus niveles básicos de seguridad, los antivirus y firewalls se han hecho cada vez más eficaces, y por supuesto los sistemas de seguridad física se han vuelto más sofisticados.

Muchas empresas gastan miles de dólares al año en estas tecnologías para asegurar que su información este a salvo. Irónicamente numerosos estudios indican que el mayor hueco de seguridad no está en las tecnologías utilizadas para aumentar la seguridad, si no en los mismos empleados. Es por esta razón que en los últimos años han aumentado la cantidad de ataques basados en ingeniería social. Phishing, vishing, smishing, son sólo algunos de los muchos métodos utilizados por los atacantes para obtener información confidencial que les permita burlar los sistemas de seguridad de la empresa objetivo.

Sin embargo, no toda la culpa es de los empleados. La mayoría de las empresas (a pesar de conocer las implicaciones) tienen deficientes políticas de acceso, inadecuada protección de datos y en general falta de sensibilización al problema de seguridad.

Hace poco me topé con un paper, que publicó la firma de seguridad Imperva, en el que dejan al descubierto las peores prácticas usadas para la selección de contraseñas (Consumer Password Worst Practices). Este paper muestra el resultado de un análisis hecho sobre la base de datos de contraseñas de un famoso sitio Web, cuya seguridad quedo gravemente comprometida. Entre las muchas cosas interesantes que se pueden encontrar en el paper destacan las siguientes:
  • Top 5 de contraseñas: “123456”, “12345”, “123456789”, “Password”, “iloveyou”.
  • A un atacante le hubiese tomado tan sólo un segundo descubrir la contraseña de un usuario del sitio Web.
  • Recomendaciones para los usuarios: Tome una oración y conviértala en una contraseña. Ej. “la mesa de la casa tiene una pata rota” puede convertirse en “l4mdlKSAt1pr”.
  • Recomendaciones para los administradores: Mejore las políticas de seguridad. Si se le da la opción, es muy probable que los usuarios elijan contraseñas débiles.