domingo, septiembre 23, 2012

Lista de herramientas ágiles

Articulo ORIGINAL

Este es un directorio de utilidades, servicios y programas para gestión ágil (proyectos, tareas, backlogs o listas de requisitos …)

  • Comenzamos recopilado más de 80, que hemos etiquetado según la licencia de uso: (Se puede filtrar la lista pulsando sobre el nombre de las etiquetas)
  •  Comercial: Servicios o programas de venta directa o tras un periodo de prueba (shareware). Freemium: Servicios o programas que además de poder contratar un uso completo, sin limitaciones de funcionalidad o capacidad, también pueden emplearse gratuitamente sin limitación de tiempo pero sí de algunas funcionalidades o capacidades. 
  • Open: Servicios o programas que pueden emplearse de forma gratuita, al menos para uso personal. Freemium?: Servicios o programas que se ofrecen de forma gratuita, pero sin especificar si se trata de un periodo de prueba o beta, y si en el futuro se cobrará o limitará el uso. 
  • Por favor, si conocéis alguno que se nos haya pasado, lo podéis añadir directamente, o comentárnoslo. También podéis compartir vuestra opinión o valoración de aquellos que conozcáis. Apuntadnos también si véis alguna errata o clasificación incorrecta. Así, entre todos podremos ir mejorando la utilidad de esta lista. Gracias!!
Lista de Herramientas AGILES.

Las 10 Leyes de la Simplicidad

Articulo Original.

Las diez leyes y las tres claves de la simplicidad de Maeda se citan mil veces al año en todo el mundo, en exposiciones, artículos, posts y presentaciones, pero el libro, con sus ejemplos y argumentos, y sobre todo con su prosa lejana a toda tortícolis discursiva intelectual, a toda voladura caprichosa y pretenciosamente artística, es un ejemplo de instrucción y claridad.
Las Leyes de la Simplicidad del profesor de Artes y Ciencias de la Comunicación del MIT es una manual para la empresa, los negocios, el periodismo o la pedagogía. Sus ideas pueden atravesar casi cualquier campo y debería ser bibliografía obligatoria en cualquier carrera que se tope en algún momento con Internet. No sólo por sus anécdotas exquisitas sobre el diseño de gadgets, no sólo por su capacidad para relacionar lo más ordinario y cotidiano con el diseño de percepciones (y todo aquello que “esperamos” de la tecnología), sino por ser objeto de sus propias ideas y sujeto de prácticas que las lleven a prototipos funcionales. (Pablo Mancini en su blog Amphibia).

 

Las Leyes de la Simplicidad


Comienza hoy una serie de apuntes sobre la simplicidad, interpretada desde la óptica del gran consumo. El patrón serán las leyes de la simplicidad de John Maeda, un magnífico ejercicio sobre una idea sencilla y potente: en un mundo complejo, menos es más.

 

Ley Nº 1 Reducir: 

La mejor manera de alcanzar la simplicidad es mediante profunda reducción.

Para cualquier producto de consumo, una persona tiene actualmente decenas de opciones. 30 variedades de cereales son, probablemente, más de las que un consumidor necesita. En medio del caos, la simplicidad aparece como una estrategia casi imprescindible: este consumidor no tiene tiempo de estudiar todas las posibilidades, tiene que captar el mensaje y entender el producto de un vistazo.
La simplicidad aplica en muchos ámbitos: el diseño del propio producto, el packaging, la publicidad, etc. Maeda sugiere una estrategia para buscar esta simplicidad: el modelo SHE (Shrink, Hide, Embody):
  • Reducir el tamaño
  • Esconder: no hace falta que los atributos y funciones del producto estén todos visibles simultáneamente, sino solo cuando el consumidor los necesita
  • Incorporar la calidad en el producto, sin que se vea exteriormente
En el fondo, se trata de evitar la tentación de contar algo por el simple hecho de poder contarlo, de hacer gala de todos los beneficios y atributos del producto (por ejemplo, unas galletas integrales, con Omega3, con vitaminas, sin azúcar, etc.). El posicionamiento está en la mente del consumidor, y éste no hace listas de pros y contras cuando está delante del lineal del supermercado.

 

Ley Nº 2 Organizar: 

La organización consigue que muchos parezcan pocos.

Agrupar la información simplifica la comprensión y el recuerdo. 30 variedades de cereales quizá sean imposibles de memorizar, pero cinco gamas son más asequibles. Si cada gama de productos tiene un posicionamiento claro y una propuesta de valor diferenciada, el consumidor sabrá distinguirlas y recordarlas. Por ejemplo, Danone ha hecho un gran ejercicio de simplificación al crear las plataformas de Vitalínea, Activia o Danonino (aunque luego tenga cierta tendencia a expandir exageradamente cada gama).

En el lineal de un supermercado, el consumidor busca categorías antes que marcas, así que la buena organización es fundamental: dirige la vista del cliente, simplifica su proceso de decisión y le ayuda a encontrar lo que quiere comprar.

 

Ley Nº 3 Tiempo: 

El ahorro de tiempo se percibe como simplicidad.

A nadie le gusta esperar; y la frustración de la espera es aún mayor en un momento en que todos tratamos de comprimir en un día decenas de actividades, exprimiendo las horas y correteando de un lado a otro. Para ahorrar tiempo también puede ayudar el modelo SHE: reducir el tiempo (con productos como un GPS que indica la ruta más corta, o un libro de cocina con recetas listas en cinco minutos), esconderlo (entretener a las personas que esperan en una cola con un video), e incorporarlo (indicar el tiempo de lectura en un artículo). El objetivo es doble: reducir el tiempo de espera y hacer esa espera más tolerable.
En el mundo del marketing, la ley del tiempo puede llevar a diseñar productos cuyo beneficio principal es ahorrar tiempo (arroz listo en 3 minutos), a diseñar procesos de compra más rápidos (las listas en los supermercados online), a crear productos autoexplicativos, que se pueden usar desde el primer minuto sin libro de instrucciones (como el iPhone, que literalmente no tiene instrucciones) o a crear campañas promocionales donde el regalo es tiempo (por ejemplo, un servicio de limpieza doméstica).

 

Ley Nº 4 Aprender: 

El conocimiento lo hace todo más fácil.

Todos nos hemos enfrentado a una tarea que nos parecía muy compleja la primera vez y trivial al cabo de un tiempo. Aprender a conducir es un reto, pero luego se hace de forma automática, casi sin pensar.
Para amar un producto hay que conocerlo, hay que pasar la barrera de la primera cita y llegar al noviazgo lo más rápidamente posible. Educar al consumidor es fundamental para que aprecie la marca, especialmente aquellas con propuestas de valor más premium.
En la innovación de las marcas, a menudo basada en constantes lanzamientos, enseñar es también un punto clave: lo peor que le puede pasar a un producto es que el consumidor no sepa para que sirve, o no sepa que hacer con él.

 

Ley Nº 5 Diferencias: 

La simplicidad y la complejidad se necesitan.

La simplicidad solo se percibe como contraste de la complejidad. Por eso es cada vez más relevante, porque la complejidad aumenta en todas las áreas de la vida. Lo ideal es encontrar un ritmo que alterne las dos situaciones extrayendo lo mejor de cada una.
Un anuncio sin sonido destaca en un mar de anuncios gritones; una página en blanco de un periódico sobresale entre tanta letra negra; un aparato con un sólo botón sorprende frente a otro con 10 botones; un producto con un sólo beneficio se entiende mejor que uno que pretende ser bueno en todo. Como algunas artes marciales, donde la estrategia consiste en apoyarse en la fuerza del contrincante, la simplicidad se apoya en complejidad de los demás.

 

Ley Nº 6 Contexto: 

Lo que hay en la periferia de la simplicidad no es periférico.

No se puede simplificar algo solamente centrándose en sus aspectos definitorios; el contexto en el que se sitúa es clave para percibir su simplicidad. Demasiado enfoque es negativo, se ven sólo los árboles y no el bosque.
Al diseñar un producto, no sólo hay que hacerlo sencillo, potente y elegante, sino pensar en como se verá en los dos momentos de la verdad: en el lineal, entre otros muchos productos, y en casa del consumidor.

 

Ley Nº 7 Emoción: 

Más emoción es mejor que menos.

Llenar de emoción un producto puede requerir alejarse de la simplicidad, para introducir nuevos niveles de significado. Hay personas que eligen productos sencillos y minimalistas, como algunos móviles o un iPod, y lo primero que hacen es personalizarlos, con pegatinas, fundas y todo tipo de accesorios. Dotar de sentimiento y emoción a un objeto es una característica muy humana.
Aunque parezca contradecir la ley de reducir, hay algunas cosas donde más es mejor que menos: más cariño, más amor, más intensidad, más significado.
En los últimos años, muchas campañas de marketing se han centrado casi exclusivamente en comunicar emociones, olvidando los aspectos racionales y contando historias extrañas y complejas. El reto es mantener el nivel emocional, aunándolo con un enfoque más simple y directo.

 

Ley Nº 8 Confianza: 

Confiamos en la simplicidad.

Los aparatos y los servicios que utilizamos son cada vez más complejos, pero para nosotros es irrelevante: confiamos en que harán bien su misión, y los usamos sin tener ni idea de como funcionan. El paradigma es un coche, que casi todo el mundo sabe utilizar pero casi nadie sabe como funciona por dentro.
La simplicidad transmite confianza, y la confianza nos ahorra tiempo y esfuerzo. Las marcas son el paradigma de la confianza, y ese es su mayor valor. No deben confundirse en batallas de precios o perderse en innovaciones innecesarias.
Para las marcas de servicios, la confianza es especialmente relevante, ya que al no existir un objeto físico es lo único que garantiza la calidad al cliente. En gran consumo, las marcas que consigan aprender de un cliente y simplificar sus decisiones tendrán mucho ganado.

 

Ley Nº 9 Fracaso: 

Algunas cosas no se pueden simplificar.

A pesar de la enorme importancia que le otorgo a la simplicidad, en algunos casos la complejidad es necesaria. Hay temas demasiado difíciles, llenos de matices y detalles que no pueden ser explicados de un plumazo. Sin embargo, las personas rechazan cada vez más un enfoque complejo (leer un párrafo de más de 6 líneas, memorizar algo que no puedo aprender de un vistazo, etc.). El resultado es que la simplicidad se convierte en simplismo, se cae en lugares comunes y cualquier cosa se acaba pareciendo a muchas otras.
Cuando una marca tiene un producto suficientemente bueno y diferente, no debe tener miedo de explicar su complejidad, si es necesario para apreciar su valor. Hay que darle un voto de confianza a los consumidores, y tratarlos/tratarnos como seres inteligentes.

 

Ley Nº 10 La Clave: 

La simplicidad consiste en eliminar lo obvio y añadir lo relevante.

Las diez leyes, resumidas en una. Cualquier campaña de marketing puede aprender de esta ley: eliminar textos absurdos y repetitivos, tópicos mencionados por todas las marcas, guiños que nadie entiende, etc; y añadir mensajes relevantes, que aporten valor al que los escucha, que diferencien de la competencia, que den una buena razón para levantarte de tu silla, ir a la tienda y comprar el producto.
Autor: Juanjo Rodríguez

Herramientas UML para el modelado de sistemas

Articulo Original.


Los seres humanos utilizamos diversos modelos para poder representar elementos o concepciones en diversas áreas como pintura, artes plásticas, construcción, sistemas de software e incluso en nuestra vida cotidiana. El modelado de sistemas es una actividad importante e imprescindible en la construcción de cualquier tipo de sistema, está considerado como un plano que nos muestra la estructura genérica o abstracta de algún sistema.
Debido a importancia que ha tomado el hecho de modelar y diseñar antes de construir se han desarrollado diversas herramientas de software que facilitan esta actividad. Al elegir una herramienta de software se debe considerar elementos como son: el tipo de licenciamiento, plataforma, sistema operativo, generación de código.

Lenguaje de modelado unificado

El lenguaje de modelado unificado está compuesto por diversos elementos gráficos que se combinan para formar diagramas, cuenta con reglas para combinar tales elementos. La finalidad de los diagramas es presentar diversas perspectivas de un sistema, a las cuales se le conoce como modelo. El Modelo UML es similar a un modelo a escala de un edificio junto con la interpretación del artista del edificio, describiendo lo que se supone hará el sistema, pero no como implementarlo.
Los diagramas más importantes y sus funciones se enlistan a continuación:
  • Diagramas de clases: Permite representar los atributos y acciones de un objeto, así como identificar relaciones entre objetos.
  • Diagrama de objetos: Muestran entidades que tienen valores específicos y acciones.
  • Diagramas de casos de uso: describe las acciones de un sistema desde la visión del usuario, aunque también puede representar la visión del programador.
  • Diagrama de Estados: Muestra los estados que toma un objeto.
  • Diagrama de Secuencias. Muestra la interacción de los objetos en base a tiempo, aunque realmente es una vista estática./li>
  • Diagrama de Colaboraciones: Representan la manera en que los elementos del sistema trabajan en conjunto.
  • Diagrama de Componentes: muestran el producto final del software.
  • Diagramas de Distribución: Muestran la arquitectura física de un sistema de información.

Licenciamiento de software

Una licencia de software otorga al usuario el derecho legal a utilizar un software, existen básicamente dos tipos de licencias: Licencia de software libre y Licencias de software comercial.
Según la Fundación de Software Libre (Free Software Foundation) “el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software”, se refiere a cuatro libertades para los usuarios del software: la libertad de usar el programa, con cualquier propósito; de estudiar el funcionamiento del programa, y adaptarlo a las necesidades; de distribuir copias, con lo que puede ayudar a otros; de mejorar el programa y hacer públicas las mejoras, de modo que toda la comunidad informática se beneficie.
En las licencias de software comercial una compañía o corporación, posee los derechos de autor sobre un software, negando o no otorgando los derechos de usar el programa con cualquier propósito, de estudiar cómo funciona el programa y adaptarlo a las propias necesidades y además el acceso al código fuente es una condición previa, se pueden distribuir copias, o mejorar el programa y hacer públicas las mejoras, para poder realizar los cambios, el acceso al código fuente es un previo requisito. Así, un software sigue siendo no libre aún si el código fuente es hecho público, cuando se mantiene la reserva de derechos sobre el uso, modificación o distribución.

Elementos de evaluación de herramientas

Se consideraron aspectos como:
  • El Sistema operativo, es el software encargado de la administrar y coordinar el hardware con programas de una manera transparente, nos indica la portabilidad de la herramienta.
  • La plataforma, se considera el software sobre el cual se ejecuta la aplicación sobre el sistema operativo.
  • Diagramas soportados, los tipos de diagramas son muy diversos y algunas de las herramientas ofrecen una amplia o mínima variedad de estos, según sea el estándar de la Herramienta en el cual este basado.
  • Generación de código. La herramientas de modelado ofrecen una diversidad de diagramas generan código en algún lenguaje de programación, lo que nos permite que a partir del modelo gráfico se construya software.

Análisis de herramientas de software libre

La siguiente tabla muestra las herramientas de software con los sistemas operativos que predominan en la actualidad, en donde la celda llena indica el sistema soportado.

La tabla siguiente muestra una relación entre herramientas y plataformas.

Debido a la amplia gama de diagramas y para efectos de un análisis se utilizó la siguiente nomenclatura para cada tipo de diagrama: Casos de uso (CU), Clases (CL), Secuencia(S), Colaboración (CO), Actividades(A), Despliegue (D), Objetos=(O), Paquetes (P), Componentes (COM), Estados (E), Estructura (ET).

La siguiente tabla muestra los lenguajes de programación que las herramientas de modelado analizadas pueden generar código.

Conclusiones

El Lenguaje Unificado de Modelado (UML), fue creado por la necesidad de utilizar un lenguaje estándar para el modelado de sistemas, debido a que existía una diversidad de modelos o métodos.
En cuestiones de desarrollo de sistemas, para que el producto final sea funcional, es necesario que durante el proceso de desarrollo se realicen ciertas actividades que permitan el buen funcionamiento de un sistema, por lo que el aplicar el modelado de sistemas nos dará la pauta para definir la estructura que tendrá nuestro sistema. Para realizar el modelado existen diversos tipos de diagramas y cada uno tiene los elementos requeridos para satisfacer cada una de las necesidades del sistema según su estructura, las herramientas son muy diversas y su licenciamiento puede variar.
Se han creado herramientas de software para una variedad de sistemas operativos dentro de los cuales destacan Windows y Linux, en particular la mayoría de las herramientas fueron generadas en Java, además los requerimientos de instalación en cuanto a hardware no son muy primordiales para la mayoría de las herramientas. En cuanto a la utilización de las herramientas, independientemente del lenguaje que soporte o del sistema operativo, cada una tiene los elementos y características que satisface la necesidad de sus usuarios.
De las herramientas el 32% trabajan sobre el sistema Operativo Windows, 29% en Linux, 26% en Unix y el 13% MacOS.
Los sistemas operativos en los cuales pueden ser instaladas las herramientas, se observó que el promedio de sistemas operativos pueden ser instaladas es de tres. Siendo BOUML y NetBeans UML con soporte para todos los sistemas operativos, Umbrello con dos y StarUML con un sistema operativo.
Las plataformas requeridas para el funcionamiento de las herramientas analizadas fueron muy diversas y amplias. El 34% requiere Java, el 26% requiere C++, 8% requiere Gtl+ ,8% requiere Flash MX, el 8% requiere Mono, 8% requiere Eclipse, 8% requiere Delphi.
El número de diagramas que pueden generar se encuentran en un rango de 2 a 11 diagramas, en donde Netbeans UML es el que más diagramas genera, en tanto que GModeler y MonoUML los que memos diagramas generan.
Las herramientas que presentan mayor diversidad en cuanto a la generación de código en diversos lenguajes de programación destacan ArgoUML y BOUML por generar código en 5 lenguajes y FuJaba, Día, GModeler. MonoUML, Papyrus solo en un lenguaje.
Autores: Ricardo Armando Barrera Cámara, Jesús Alejandro Flores Hernández, José Alonso Pérez Cruz

sábado, septiembre 22, 2012

Protegiendo nuestros servidores SSH

EL PROTOCOLO SSH

SSH es un reemplazo seguro del (obsoleto) telnet que se usa para administrar remotamente una máquina. Tanto windows como linux tienen servidores ssh, aunque windows no lo incorpora “de serie”, sino que tenemos que instalar algún software como por ejemplo freessh (http://www.freesshd.com/).

SSH COMO OBJETIVO DE LOS HACKERS

El protocolo ssh es muy lento de atacar por fuerza bruta, pero también es muy fácil … Por eso mismo, no es extraño ver en los logs del sistema continuos intentos de acceso vía ssh, que suelen proceder de BOTNETS, a nuestros servidores:
Mar 10 12:05:11 servidor sshd[1220]: Invalid user jaime from ::ffff:192.168.1.20
Mar 10 12:05:18 servidor sshd[1220]: Failed password for invalid user pedro from ::ffff:192.168.1.20 port 2446 ssh2
El hacker, simplemente prueba su suerte usando algún script para probar una larga lista de passwords recolectadas de algún modo, ya que el username es fácil de adivinar … root para linux y administrador/administrator para windows. Y claro, él tiene mucha más paciencia que nosotros.
TRES SIMPLES MEDIDAS PREVENTIVAS

Como medidas preventivas, porque más vale prevenir que curar, vamos a nombrar unas cuantas:
  1. Usar certificados como método de identificación para entrar, en lugar del “común” usuario/password: la mejor medida, pero requiere más trabajo, así que normalmente no nos la encontraremos implementada, y mucho menos en una intranet.
  1. Restringir el acceso mediante firewall a una serie de IPs, que son las que realmente se encargarán de administrar el servidor: también muy buena medida, pero todos tenemos en casa IPs estáticas, así que en la práctica no siempre es posible …
  1. Elegir passwords fuertes: esto debería hacerse siempre, independientemente de si estamos hablando de ssh o cualquier otro protocolo. No debería hacer falta nombrarlo.
  1. Cambiar el puerto en el que escucha ssh: el normal es TCP/22 ¿Y si lo cambiamos? Sí, es cierto que puede escanearse toda nuestra red hasta encontrarlo, pero cuesta trabajo y, por el camino, nos quitamos gusanos y script-kiddies de encima …
  1. No entrar con el usuario administrador/root: en linux, puede hacerse “su root” una vez que hemos loggeado. Y en windows, también existe un “sudo” (http://sourceforge.net/projects/sudowin) que podemos usar para las tareas de administración remota. Salvo que haya algún ataque por timing, basado en vulnerabilidades del servidor ssh, es bastante difícil imaginarse que el único usuario que puede loggear se llama “userdns09″ …
RESUMEN

Simplemente con las medidas 3,4 y 5 podemos hacer la vida del cracker mucho más difícil. Son fáciles de implementar y nos evitaremos mirar alertas de nuestros IDS de la DMZ para nad

martes, septiembre 04, 2012

Liberar la memoria en Linux

Tomado de: Articulo Original

Me ha sucedido en Linux que a pesar de bajar aplicaciones, la memoria sigue estando ocupada, como si no se liberara. Este comportamiento busca lograr un mejor uso de la memoria dejando cargadas las aplicaciones recientes.
 
En principio lo que se describe en este artículo no es algo que deba preocupar a la mayoría de los usuarios, ya que el kernel se encargará de administrar la memoria y de manejar estos datos cacheados; pero puede darse la situación (me ha pasado varias veces) que se necesita memoria libre y no se puede esperar por el kernel, así que aquí describo el procedimiento para liberar la memoria.

A partir del kernel 2.6.16 hay una forma de decirle al kernel que limpie esa memoria que mantiene en cache. Para esto se utiliza el archivo /proc/sys/vm/drop_caches que generalmente tiene un cero si lo desplegamos.

Para liberar paginas en cache, como root ejecutamos:
sysctl vm.drop_caches=1
Para liberar dintries en cache,
sysctl vm.drop_caches=2
Para liberar páginas de cache, dentries e inodos:
sysctl vm.drop_caches=3
Cuando ejecutamos estos comandos se cambia el número cero por el número que pasamos y, apenas el kernel libera la memoria, vuelve a restaurar el cero.
Lo ideal es ejecutar sync primero y luego los comandos de arriba, por ejemplo:
sync; sysctl vm.drop_caches=2
y esto perfectamente puede ser colocado en el crontab de root o en un script en la carpeta /etc/cron.hour