Blogs de MontevideoLibre

July 03, 2009

Gaba

Gestion de Configuraciones

Es el desarrollo y aplicacion de estandares y procedimientos para gestionar un sistema software evolutivo.  Porque se necesita gestionar?

  • es facil perder la pista de los cambios que se han incorporado dentro de cada version
  • pueden existir varias versioens en desarrollo y en uso al mismo tiempo
  • se podria hacer un esfuerzo inutil modificando la version erronea de un sistema, entregar una version incorrecta a los clientes o perder la pista de donde ha sido guardado el codigo fuente

Los procedimientos de gestion de configuraciones definen:

  • como registrar y procesar los cambios propuestos al sistema
  • como relacionar estos con los componentes del sistema
  • los metodos utilizados para identificar las diversas versiones del sistema

Las herramientas de gestion de configuraciones se utilizan para:

  • almacenar las versiones de los componentes del sistema
  • construir sistemas a partir de estos componentes
  • llevar el registro de entregas de las versiones del sistema a los clientes

Planificacion

  1. Definicion de lo que se debe gestionar  (fuentes, ejecutables, documentos, datos, etc) y el esquema formal para identificar estas identidades (nombre, version, tipo, proyecto, informacion del cambio o la version).
  2. Un enunciado de quien toma la responsabilidad de los procedimientos y quien envia las enttidades controladas al equipo de gestion de configuraciones.
  3. Las politicas de gestion de configuraciones utilizadas para gestionar el control de los cambios y las versoines
  4. Descripcion de las herramientas a utilizar y el proceso a aplicar cuando se utilizan.
  5. Definicion de la baase de datos que se utilizara para registrar la informacion de la configuracion.

Fuente: Ingenieria del Software de Ian Sommerville

by gaba at July 03, 2009 01:43 PM

Montevideo Telefonia Libre?

Interesante proyecto, Mesh Potato es basicamente para hacer llamadas telefonicas sobre una red Mesh : http://www.villagetelco.org/

by gaba at July 03, 2009 01:14 PM

July 02, 2009

Gaba

Evolucion del Software

cuanto mas complejo es un componente o sistema, mas caro es de mantener

Leyes de Lehman sobre evolucion de los sistemas.

  • Cambio Continuado: un programa usado en un entorno real necesariamente debe cambiar o se volvera progresivamente menos util en ese entorno.
  • Complejidad creciente: a medida que un programa en evolucion cambia, su estructura tiende a ser cada vez mas compleja.
  • Evolucion prolognada del programa:  sugiere que los grandes sistemas tienen su propia dinamica que se establece en una etapa temprana en el proceso de desarrollo. Esta determina las tendencias generales del proceso de mantenimiento del sistema y limita el numero de posibles cambios en el sistema.
  • Estabilidad organizacional: la mayoria de los proyectos de programacion grandes trabajan en lo que se denomina un estado saturado. Un cambio en los recursos o en eel personal tiene efectos imperceptibles en la evolucion a largo plazo del sistema.
  • Conservacion de la familiaridad: durante el tiempo de vida de un sistema, el cambio incremental en cada entrega es aproximadamente constante.
  • Crecimiento continuado: la funcionalidad ofrecida por los sistemas tiene que crecer continuamente paraa mantener la satisfaccion de los usuarios.
  • Decremento de la calidad: la calidad de los sistemas comenzara a disminuir a menos que dichos sistemas se adapten a los cambios en su entorno de funcionamiento.
  • Realimentacion del sistema: los procesos de evolucion incorporan sistemas de realimentacion multiagente y multibucle y estos deben ser tratados como sistemas de realimentacion para lograr una mejora significativa del producto.

Mantenimiento del software

Es el proceso general de cambiar un sistema despues de que este ha sido entregado.

  1. Mantenimiento corrrectivo  o para reparar defectos del software.
  2. Mantenimiento adaptativo o para adaptar el software a diferentes entornos operativos.
  3. Mantenimiento perfectivo o para aniadir o modificar las funcionalidades del sistema.

Los costos claves que distinguen el desarrollo del mantenimiento y conducen a costos de mantenimiento mas elevados, son:

  1. Estabilidad del equipo: usualmente el equipo de desarrollo se disuelve luego de entregar el programa y un nuevo equipo toma el mantenimiento.
  2. Responsabilidad contractual: usualmente los desarrolladores  no toman decisiones para contemplar el mantenimiento.
  3. Habilidades del personal: se relega el mantenimiento a principiantes y gente no familiarizada con el dominio de la aplicacion.
  4. Edad y estructura del programa: Aveces no se desarrollan las aplicaciones con tecnicas de ingenieria de software, no bien estructurados y a medida que pasa el tiempo la estructura tiende a degradarse con los cambios.

Predeccion del mantenimiento

Se deberia intentar predecir que cambios del sistema son probables y que partes del sistema son probablemente los mas dificiles de mantener. Tambien se deberia predecir los costos de mantenimiento durante un periodo de tiempo determinado. Estas predicciones dependen de:

  • la aceptacion o no de un cambio en el sistema depende de la mantenibilidad de los componentes del sistema afectados por el cambio.
  • la implementacion de los cambios del sistema tiende a degradarlo y por lo tanto reduce su mantenibilidad.
  • los costos del mantenimiento dependen del numero de cambio y los costos de la implementacion dependen de la mantenibilidad de los componentes del sistema.

La prediccion del numero de peticiones de cambios del sistema requiere entender la relacion entre el sistema y su entorno. Y para evaluar las relaciones entre un sistema y su entorno hay que tener en cuenta:

  • el numero y la complejidad de las interfaces del sistema
  • el numero de requerimientos del sistema intrinsecamente volatiles
  • los procesos de  negocios en los que se utiliza el sistema

Fuente: Ingenieria del Software de Ian Sommerville

by gaba at July 02, 2009 01:14 AM

June 30, 2009

Mauricio Campiglia (coco)

Certificado JNCIA-FWV

En un paréntesis entre los objetivos de certificación que me propuse para este año le tocó el turno a Juniper. Aprobé el examen JN0-521 que me habilita a la certificación JNCIA-FWV. El sabor que me queda luego de estos últimos exámenes es agridulce y quizá en algún momento escriba algo sobre la efectividad de los [...]

by Mauricio at June 30, 2009 09:14 PM

Darío Clavijo (daedalus)

Google Chrome en linux (nativo)



Hay un release (inestable) de Google que nos permite correr de forma nativa Google Chrome en linux debian o ubuntu y que viene empaquetado en formato deb listo para usar
Pueden instalarlo entrando desde este link.

Luego podemos ejecutar dpkg en el directorio en que quedo guardado:

$ dpkg -i google-chrome-unstable_current_i386.deb

O podemos instalarlo con el gdebi.

Algunas cosillas que tenemos que tener en cuenta sobre este software:
*Primero que nada es inestable, lo que quiere decir que el correcto funcionamiento no esta para nada asegurado.
* No tiene soporte para plugins, esto quiere decir que no hay soporte incluso para flash (no youtube, etc...).
* No hay soporte para impresión.
* Arrastrado complejo de Pestañas
* No hay soporte para la API de Google Gears.

by Daedalus2027@gmail.com (Daedalus) at June 30, 2009 07:59 PM

Gaba

Verificacion y Validacion

Es el proceso de analiss y pruebas para asegurar que el programa que se esta desarrollando satisface su especificacion y entrega de la funcionalidad esperada por las personas que pagan por el software.

Validacion: Estamos construyendo el producto correcto?
Verificacion: Estamos construyendo el producto correctamente?

Dentro del proceso de V&V existen dos aproximaciones complementarias para el analisis y comprobacion de  los sistemas:

  1. Inspecciones de Software : analizan y comprueban las representaciones del sistema tales como el documento de requerimientos, los diagramas de disenioo y el codigo fuente del programa. Tecnica statica de V&V.
  2. Pruebas del Software: implica ejecutaar una implementacion del software con datos de prueba. Tecnica dinamica de V&V.

by gaba at June 30, 2009 06:47 PM

June 29, 2009

Gaba

Pruebas de Software

“las pruebas solo pueden demostrar la presencia de errores, no su ausencia”
Dijikstra

Objetivos

  • Demostrar a l@s desarrollador@s y al cliente que el software satisface sus requerimientos.
  • Descubrir defectos en el software en que el comportamiento de este es incorrecto, no deseable o no cumple su especificacion.

La mayoria de los tratamientos de pruebas comienzan con las pruebas de componentes y a continuacion se realizan las pruebas del sistema.

Pruebas del Sistema

Implican integrar dos o mas componentes que implementan funciones del sistema y a continuacion se prueba este sistema integrado. Existen dos fases:

  1. Pruebas de integracion - se tiene acceso al codigo fuente y se intentan buscar defectos del sistema. cuando se encuentra uno se intenta solucionarlo.
  2. Pruebas de entregas - se prueba el sistema como si fuera una caja  negra y como si fuera lo que se va a entregar al cliente.

Pruebas de integracion

  • Integracion descendente: cuando se crea un esqueleto y se le va agregando los componentes.
  • Integracion ascendente: se integran los componentes que proporcionan servicios comunes.

Pruebas de entregas o pruebas funcionales

Es el proceso de probar una entrega del sistema que sera distribuida a los clientes. Hay guias (Whittaker, 2002) que pueden incrementar la probabilidad que las pruebas de defectos tengan exito. Por ejemplo, elegir entradas que fuerzen a que el sistema genere todos los mensajes de error.

Pruebas de rendimiento o estress

Una vez que el sistema se ha integrado, se puede probar rendimiento y fiabilidad. Implica planificar una serie de pruebas en las que la carga se va incrementando regularmente hasta que el rendimiento del sistema se hace inaceptable.

Pruebas de Componentes o Pruebas de Unidad

Es el proceso de probar los componentes individuales en el sistema. El objetivo es encontrar defectos en los componentes. Usualmente l@s encargad@s de las pruebas de componentes son l@s desarrollador@s de las mismas.
Tipos de componentes a probar

  1. Funciones individualles o metodos dentro de un objeto
  2. Clases de objetos que tienen varios atributos y metodos
  3. Componentes compuestos formados por diferentes objetos o funciones

Pruebas de Interfaces

Muchos componentes en un sistema no son simples funciones u ojbetos, sino que componentes compuestos formados por varios objetos que interactuan. Las pruebas sobre estos componentes se hacen a traves de sus interfaces definidas, probando que esta se comporta como fue especificado.

Diseno de Casos de Pruebas

El objetivo del proceso de disenio de casos de prueba (entradas y salidas esperadas) es crear un conjunto de casos de prueba que sean efectivos descuriendo defectos en los programas y muestren que el sistema satisface sus requerimientos.
Para diseniar un caso de prueba, se selecciona una caracteristica del sistema o componente que se esta probando. Se selecciona un conjunto de entradas qeu ejecutan dicha caracteriztica, documenta las salidas esperadas o rangos de salida.

Pruebas basadas en requerimientos

Los casos de prueba se disenian para probar los requerimientos del sistema. Las pruebas basadas en requerimientos son pruebas de validacion en lugar de pruebas de defectos.

Pruebas de particiones

Los datos de entrada y resultados de salida se pueden agrupar en varias clases diferetnes qeu tienen caracteristicas comunes, estas clases se denominan particiones de equivalencia o dominio. Se espera que el programa se comporte igual para todos los miembros de una clase. Se disenian los casos de pruebas para que se usen entradas de todas las particiones y se generen salidas de todas las particiones.

Pruebas estructurales o de caja blanca

Se crean casos de prueba para que se ejecute cada linea de codigo una vez.

Pruebas de Caminos

Son una estrategia de pruebas estructurales cuyo objetivo es probar cada camino de ejecucion independiente en un componente o programa.

Fuente: “Ingenieria de Software” de Ian Sommerville

by gaba at June 29, 2009 08:27 PM

June 28, 2009

Darío Clavijo (daedalus)

June 27, 2009

1000ton

tplink_003


nodo-palola_1 tplink_003

Después de los dolores de cabeza, finalmente encontré la causa de los problemas y la solución. Ahora estoy escribiendo desde Palola sentadito en el sillón del living y mirando unos videos de música. Tengo cobertura inalámbrica en cualquier rincón de la casa y afuera también, utilizando como hardware a Nodo-Palola (un pc de lo más pedorro) y una tarjeta wireless TP-LINK.

Tenía todo compilado, instalado y configurado en Nodo-Palola, pero la cosa no funcionaba del todo bien. Al momento de conectarme desde un dispositivo inalámbrico a Internet, se hacía todo lentísimo, con cortes de conexión a cada rato.

Fue así que decidí probar otra distribución GNU/Linux: WifiSlax. Y ahí funcionó todo ok.

No recibía respuestas a mis consultas con acciones que solucionaran los problemas en comunidades de redes inalámbricas, ni tampoco encontraba soluciones en Internet; ya estaba medio desesperado. Pero de los estudios deduje que los problemas eran de la distribución y/o de los drivers y/o del kernel, no de la tarjeta ni del pc (funcionaba todo ok en modo ad-hoc).

Decidí instalar Debian Lenny. Luego compilar los fuentes de Madwifi y realizar los mismos pasos que con Ubuntu. Para mi sorpresa: ¡¡¡siguieron los mismos problemas!!!

Ya con Debian instalado, chequeo los logs del sistema y me encuentro con esta línea, que aparece con frecuencia en el syslog:

wifi0: ath_bstuck_tasklet: Stuck beacon; resetting (beacon miss count: 11)

Buscando el raro stuck beacon, me encuentro con este artículo del Proyecto Madwifi. Resumiendo, es un problema conocido pero sin solución específica. ¡Suerte loca!

Parece que el TX DMA del frame beacon (frame que envía el access point a sus clientes, brindando distinto tipo de información), no se puede completar en el intervalo utilizado. El problema pasa en algunos casos, y tampoco están determinadas las condiciones para que esto pase.

Solución

Hice todos los workarounds aconsejados por el sitio, pero nada funcionó. Por ahí leí que un flaco tenía Debian Etch y cuando actualizó a Debian Lenny le dejó de funcionar. Y se me prendió la lamparita (se me prende un par de veces por año, así que me queda una para el 2009…).

¿Y si asumo mi enfermedad de versionitis y trato de enfrentarla? Sí que puedo. ¡¡¡Bajemos de versión de Debian y nos dejamos de joder!!!

Instalé la versión Debian Etch (anterior a Debian Lenny) e hice los mismos pasos que con la última Debian estable. ¡¡¡Y acá estoy!!! Funciona de maravilla. Y por supuesto, se fueron los problemas de stuck beacon.

Restan algunos retoques, como cambios en las reglas IPtables del firewall y configuración del servidor DHCP. Pero eso ya no es problema si funciona bien la red.

Igual la alegría no me dura mucho y me aburro, así que me voy a tocar la guitarra.

Chau.-

Posted in Proyecto Nodo-Palola, Redes Inalámbricas Tagged: Redes Inalámbricas

by Milton at June 27, 2009 01:27 PM