Tuesday, May 26, 2009

La importancia de los requerimientos no funcionales

Queridos 2 lectores

Aqui regresando a poner un post (por fin!!!), entre influenza, chamba, etc etc. habia abandonado escribir...bien pues entremos en materia.

En estos dias he estado involucrado en unos cursos/talleres de un modelo que usamos en el trabajo llamado MOSASA, el cual combina muchos de los marcos de referencia de la industria tales como, PMBOK, RUP, CMMI-DEV, CMMI-ADQ, ITIL basicamente.

El dia de hoy me toco el track de "Administracion de Requerimientos de Software", en el cual estamos viendo las tareas que involucra este proceso, desde que estas entendiendo "lo que el cliente desea" hasta que se especifican en papel o en alguna herramienta, todos esos requerimientos.

En el transcurso del taller se genero una pregunta "¿porque es importante los requerimientos no funcionales?" en la cual los del equipo de arquitectura empezamos a sacar todos nuestros traumas...

A lo largo de N proyectos que hemos estado trabajando, nos hemos dado cuenta que muchos equipos de desarrollo no toman en cuenta este tipo de requerimientos, lo que ocasiona que se den por obvio que el sistema va a hacer maravillas... problemas que me ha tocado vivir por mencionar algunos son: Sistemas que no soportan los volumnes operacionales, saturacion de red por el uso del sistema, Requerimientos de seguridad no contemplados, Sistemas que no son escalables.. etc etc etc.

Aqui lo interesante es definir un requerimiento NO funcional... podemos consultar multiples fuentes para definirlo, aqui compartire parte de lo que he visto que nos ha ayudado a conocer las espectativas no funcionales del usuario que influyen directamente en la arquitetura del sistema:

- Volumenes: Datos interesantes son cuantos usuarios trabajaran con el sistema, 10, 10,000, 1 millon,...
- Horarios de mayor demanda: Dias picos de operacion, por ejemplo "la recaudacion que debe de recibir el seguro social es cada 17 de cada mes, dia en el cual se reciben 300,000 patrones..." como buen mexicano, lo haremos hasta el mero dia... y este requerimiento influye a la arquitectura para ver como soportar esa carga.
- Manejo de megadatos: procesamientos Batch de 10,000 registros, o de millones. Dependiendo de el dato, la arquitectura cambia.
- Volumenes a transmitir de informacion: esto influye directamente en nuestro ancho de banda, si lo que vamos a transmitir puede llegar a saturar, asi mismo si el sistema sera en nuestra intranet o va a ser trabajado desde Internet.

Para mayor detalle consulten la siguiente liga http://www.ibm.com/developerworks/rational/library/4710.html

Todo lo anterior afecta directamente a la arquitecrtura y solucion de nuestro sistema, desde el hardware hasta el software.

Espero que compartan algunas experiencias que han vivido similares a las que les he platicado..

Bueno los dejo.

"Por una cultura del desarrollo de software"

Chao

Tuzo

Tuesday, June 3, 2008

Pasos para remover el virus/gusano Bagle.RP

Pues ya inspirado me sigo de frente con mi granito de arena :-) Trataré de ser lo más breve posible en describir los pasos para remover el virus/gusano Win32.Bagle.RP una de las variantes más difíciles de remover.

La mayoría de las páginas de virus comerciales recomiendan reiniciar Windows en modo seguro para poder ejecutar herramientas que remueven virus ó propiamente un antivirus. Sin embargo, en específico el virus que se trata en este post ataca el registro de Windows borrando la información que requiere el sistema para poder reiniciar en modo seguro, de hecho, la limpia del virus no es lo complicado sino el poder hacer que la máquina pueda iniciar en modo seguro.

¿Cómo saber si tengo el Bagle.@@?

Abra el Administrador de tareas (Task Manager) [CTRL+SHIFT+ESC] y busque los siguientes nombres en la pestaña de Procesos.

• Hldrrr.exe
• Flec###.exe (# puede ser cualquier dígito)
• Mdelk.exe
• Wintems.exe

Otra forma de saber con precisión qué variante del Bagle se tiene es realizar un escaneo en línea con un antivirus comercial (se recomienda si la conexión a Internet es rápida, de lo contrario este proceso puede ser algo tardado) por mencionar algunos, Panda, Kaspersky, etc.

En caso de que haya encontrado uno o más de estos procesos seguramente su máquina está contagiada con alguna de las variantes del Bagle. Se recomienda tener acceso a una máquina limpia de virus para la descarga de las herramientas que a continuación se describen ya que el virus es tan efectivo que detecta a la mayoría de los archivos ejecutables que se cargan en memoria y cuyo objetivo es la eliminación del virus, en algunos casos daña al archivo ejecutable ó en otros simplemente no permite su ejecución.

De igual manera se recomienda el uso de una memoria flash USB, SD, miniSD, microSD, MMC, etc. Que cuente con el seguro de ‘sólo lectura’ para poder ejecutar las herramientas desde la memoria y que el virus no dañe a los archivos ejecutables.

Herramientas empleadas

http://www.google.com.mx/
• ComboFix.exe -> Renombrar este ejecutable, a mí me funcionó « fc.exe »
• EliBaglA.exe

Si Usted tiene problemas para iniciar Windows en modo seguro ejecute desde el paso 1, de lo contrario puede empezar desde el paso 4.

Pasos para restaurar el inicio en modo seguro de Windows

1. Desde una máquina no infectada acceda al registro de Windows [tecla WINDOWS + R] y tecleé “regedit”

[Usuario básico] Googlear “Acceder al registro de Windows”

Exporte a un archivo .REG los valores de la llave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot

[Usuario básico] Googlear “Exportar valores del registro de Windows”

Copie el archivo .reg a su memoria flash.

2. Cierre todos sus programas y ejecute ComboFix (renombrado previamente ya que el virus lo detecta por su nombre e impide su ejecución) desde la memoria flash con el seguro de sólo lectura. Durante el proceso la barra de tareas desaparecerá por unos momentos, lo cual es normal, se recomienda no hacer nada más.

En mi caso mi máquina estaba tan infectada que sólo removió algunos de los archivos infectados y se produjo una pantalla azul (blue screen) de error de volcado en memoria. Sin embargo, fue suficiente para realizar el paso 3.

3. Haga doble clic en el archivo .REG desde su memoria flash para insertar/importar los valores relacionados con el inicio de Windows en modo seguro.

Verifique que los valores hayan sido insertados, abra el REGEDIT y consulte si existe la llave "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot"

Uno de los ataques del Bagle consiste en borrar continuamente estos valores del registro de Windows. Si usted no encontró los valores insertados el virus sigue activo por lo que será necesario realizar nuevamente el paso 2.

4. Si el paso anterior fue llevado con éxito, reinicie Windows en modo seguro (presionar F5 o F8 durante el arranque) y seleccione “Iniciar Windows en modo seguro”, se recomienda seleccionar con Funciones de red aunque es opcional.

[Usuario básico] Googlear “Arranque de Windows en modo seguro”

5. Ejecute la herramienta EliBaglA.exe, en el proceso la máquina se reiniciará.

6. Listo, se recomienda después de la realización de los pasos anteriores realizar un escaneo en línea de cualquier antivirus comercial (Panda, Kaspersky, por sólo mencionar los que probé)

En mi caso, el antivirus que tenía “Trend Micro OfficeScan Client” fue dañado y tuve que reinstalarlo, otro de los antivirus que recomiendo por su alta efectividad es el Avast!.

Espero haber sido de su ayuda y les recuerdo que estos pasos son los que ejecuté para remover la variante Bagle.RP, otras variantes pueden tener otros pasos para su limpieza. Asimismo, estoy abierto a cualquier corrección, crítica o duda que ustedes pudieran tener.

Saludos.

Rulo.

Thursday, May 22, 2008

Generar y consumir conocimiento 100% mexicano

Hola a todos, después de un largo (pero largo receso) estoy de vuelta para retomar esto del blog. :)

En esta semana viví en carne propia los estragos de un virus muy fuerte, a decir verdad, el que más lata y trabajo me ha dado para removerlo, tras dos días de intensas batallas, reiniciaciones de máquina y lectura de foros por fin pude removerlo y rescatar a ‘mi niña’ del virus Bagle.rp.worm.

Encontré información del virus en las páginas de antivirus comerciales, que sin tratar de que este post haga propaganda, la verdad de todos ellos el Panda fue el que más información me dio y el que más cerca me tuvo para poder remover el virus. Desafortunadamente después del extenso escaneo me pidió registrarme (gratis) para poder remover el virus y, entre el firewall de mi trabajo y el virus, nunca pude realizar el registro y por consecuencia no pude remover el virus de una manera cómoda por lo que tuve que arremangarme la camisa e intentarlo de manera manual. :)

Conforme iba buscando en los foros me di cuenta que la mayoría de ellos están en inglés y sólo unos cuantos en español, afortunadamente no estoy peleado con el idioma inglés y la verdad todos los foros fueron de gran ayuda para finalmente poder remover el gusano que me había infectado.

Ya después de que respiré tranquilo por el regreso de mi máquina, caí en la cuenta de que de los foros en español no encontré ninguno pero absolutamente ninguno que fuera de México en cuanto al tratamiento de virus. Si acaso en los foros gallegos encontré a varios usuarios que eran de México posteando ya sea su problema o a veces compartiendo una solución pero como tal un foro 100% mexicano no encontré, si alguien sabe de alguno por favor hágamelo saber.

Para terminar este post quisiera animar al lector(a) que adquiramos cada vez más la cultura de compartir y generar el conocimiento en cuanto a software se refiere, así como cada vez hay más foros/blogs mexicanos (pero aún son muy pocos, considero yo) los que tratan metodologías de desarrollo, arquitectura, consejos de algún lenguaje de programación en particular, también generar conocimiento para videojuegos, virus o cualquier otro tipo de anécdota no precisamente formal. El caso es ser generadores y consumidores de lectura del software.

Nuevamente sin que este post sea propaganda yo recomiendo las siguientes páginas para su lectura:

http://www.sg.com.mx – Software Gurú

http://podcast.pozotecnico.com – Pozo Técnico

Además, claro, de las que están ligadas a este sitio.

Saludos.

Rulo.

Wednesday, September 12, 2007

Entre change managment y pantallas verdes

Hola que tal, este post originalmente fu creado para integramx, pero aqui les va

¿cuantas veces les ha tocado hacer un cambio en una aplicación? ¿Cuantas veces pensamos en las aplicaciones que se verán afectadas cuando cambiamos algo? ¿Quienes de nosotros tenemos un control de nuestras aplicaciones así como las dependencias que tenemos con otros sistemas?
¿Cuantas veces no les ha pasado que alguna área cambia versión de aplicación y las nuestras dejan de funcionar correctamente? nunca !!.. que bien!!! ... pero a los que nos ha pasado eso y fuera de los dolores de cabeza, a los jefes esperando, el tiempo encima.... todo, todo es desesperante.......... ahora combinen esa situación con una solución de integración mmm digamos ..... Mainframe si Mainframe, pantallas verdes, screen scraping, emuladores 3270... ¿Interesante escenario?

La finalidad de este post es tratar de mostrar una de las debilidades pienso yo, que existe en la integración de aplicaciones basada en captura de pantallas o screen scraping. Cabe resaltar que este tipo de integración tiene una ventaja importante: no es intrusivo en las aplicaciones a las que se trata de integrar.

Aquí en la empresa, tenemos varias interfaces basadas en este estilo de integración (échale un vistazo a esta liga ); como veras nosotros utilizamos Iway Telnet 3270, que es una serie de APIs que permiten interactuar con las pantallas verdes del mainframe... bien pues el punto flaco de estas interfaces es que están altamente acopladas por decirlo de alguna manera a las coordenadas, quien ha trabajado alguna vez con COBOL sabe de que le estoy hablando...

Bajo este esquema hasta un guión"-" te puede afectar (y mas si lo agregan de un día a otro :S, ahh y en la noche), sí, literalmente un guión te puede afectar.... eso fue lo que nos paso recientemente... se agrego un carácter a una pantalla de una aplicación dentro del mainframe y esto ocasiono que se movieran las posiciones de los campos, es decir, si para mi el campo 76 era NSS, ahora se había recorrido hasta la 78.... el punto delicado aquí es que la producción estaba parada mientras se detectaba el error, una vez que se detecto se dio marcha atrás a la versión de la aplicación mainframe....... mientras todo esto ocurría la operación se detuvo por al rededor de 3 horas...

Se aplico el cambio tal y como se debió de hacer desde un principio, es decir nos colocaron la versión de la aplicación mainframe en DESARROLLO hicimos los ajustes en nuestra interfase y liberamos a la par las nuevas versiones...

Todo el cuento anterior se pudo evitar teniendo un buen CONTROL DE CAMBIOS... se escucha tan sencillo y a veces trillado cuando nos hablan de esto en CMM, ITIL, RUP, en lo que ustedes quieran.... pero créanme que es muy importante...

Para muestra basta un botón... ¿recuerdas cuantos millones perdió TELCEL hace unos meses debido a un problema en su sistema?

Por una integración mejor, hasta la vista!!!

Tuzo

Tuesday, June 26, 2007

Metodologias de desarrollo ¿se usan?

Hola que tal tuzolectores

¿Frases conocidas? Lider: "El proyecto lleva un atraso un año (bromeo,... jaja eso no sucede :P )", Usuario final: "Aaahhh no es lo que yo queria", Desarrollador "Aarrgg no se pueden poner de acuerdo, van N veces que cambio el codigo" El que pone el $ para el proyecto: "uupss llevamos invertidos $$$ y no veo resultados".... y muchas mas.......

Como experiencia propia puedo contarles una anegdota que tuve hace algunos años "me piden estimar un modulo para un proyecto (no digo nombres para evitar suceptibilidades), bien, llego feliz y le doy mi estimacion:

Tuzo: 1 mes sin contar pruebas.....
Lider Proyecto: ¿que?¡¡¡ es mucho tiempo... lo tenemos que entregar en 3 dias ¡¡ ya me comprometi con el usuario ¡¡¡¡

¿que dirian ante esto?.... ¿Felicidades?.... Ha veces digo ahh como quisiera regresar a los tiempos de la escuela cuando solo era el gusto por programar sin preouparte de todas estas cosas, en fin ¿a que voy?....

Hoy en dia (y aunque parezca broma), hay quien todavia tiene la creencia que las metodologias de desarrollo no funcionan o peor aun que solo sirven para generar documentacion de mas, .....Falso con F mayuscula, lo importante aqui es saber que metodoliga ocupar para nuestro proyecto asi como la documentacion que genera mas valor en nuestro ciclo de vida del proyecto.

Actualmente existen un sin numero de metodologias de desarrollo divididas en dos grandes grupos... Metodologias Formales y Metodologias Agiles.

Las metodologias Formales son planeadas y disciplinadas generalmente usadas para sistemas de mediano a largo plazo, a diferencia de las metodologias Agiles... que no por ser agiles sean completamente contrarias a las formales... que quiero decir que no por ser agiles, sean llevadas a cabo sin plan, mas bien este tipo de metodologias son Adaptativas..... ¿porque adaptativas? simple y sencillamente porque al usuario siempre se le ocurre algo nuevo... y cambia constantemente los requerimientos...

Rational Unified Process es una metodologia formal, la caracteristica principal es que es Iterativo e Incremental, es centrado en la arquitectura, dirigido por casos de uso y busca mitigar lo menos posible los riesgos de un proyecto..... a diferencia Xtreme Programing es una metodologia agile, adaptativa y centrada en el usuario.. cuyo ciclo principal es Capturar el Requerimiento, desarrollar y probar con el usuario...

Ya cualquier chavo le preguntas ¿El Modelo Tradicional de Cascada es Malo? y te contestan de facto SI

pensemos ... y de verdad el ¿Modelo de Casadada es Malo? entonces ¿porque lo toman como base las demas metodologias?.. vuelvo al comentario inicial.. simplemente debemos ver en DONDE ocupar QUE, ese es el secreto de todo..quizá no exista una clasificacion de tipos de proyectos, pero asi de simple como responder las preguntas ¿usarias RUP para hacer un sistema de mantenimiento de inventario? o ¿usarias XP para un sistema de calculo de nomina bancaria?

Podemos encontrar muchas metodologias: RUP, XP, Agile Modeling, Scrum, MSF, etc..

Asi que como gente de sistemas debemos de tener claras cada una de las ventajas de usar las metodologias de desarrollo.. asi que a estudiar!!!!

Por el buen compartir, hasta la vista

Javo

Tuesday, June 19, 2007

Un poco de conciencia ambiental

Hola a todos. Cada día a través de los medios de comunicación escuchamos más y más acerca de la deploración ambiental que está sufriendo nuestro planeta y si no ha hecho aún, debería ya, hacer conciencia en nuestra persona.

Podría yo buscar en internet y listar aquí un buen de estadísticas acerca de cuándo se tiene estimado que se acaben cada uno de los recursos naturales (agua, árboles, petróleo, etc) A cambio solamente enlistaré algunas de las actividades que hago día con día para tratar de ayudar a no contaminar de más y proponer que tal vez si cada uno de nosotros hiciera algo diferente podría ayudar en tener una Tierra más limpia (o menos sucia :)).

En el baño no gasto agua de más.
En lo que sale el agua caliente pongo una cubeta para que esa cantidad de agua sirva para el inodoro.
Minimizo el uso del papel.
En la oficina uso papel reciclable.

Bueno, son algunas de las cosas que en lo personal realizo y propongo para un mejor cuidado del medio ambiente, ya que aquel futuro lejano en el que se veía a la Tierra desvastada cada vez es más cercano.

Me falta hacer algo más con la clasificación de la basura en mi casa, creo que ese será el siguiente hábito por tomar. :)
Saludos.

Monday, June 4, 2007

Web Services Manejables

Hola que tal tuzo lectores

Espero que hayan disfrutado de un buen fin de semana.

Como les comente estare publicando una serie de post referentes a lo Servicios Web, por lo pronto he publicado uno llamado Web Services Manejables, en el blog hermano de integracion a la mexicana espero le echen un vistaso, son algunas recomendaciones, que aunque basicas.. son elementales.. espero les sea de utilidad.

Por el buen compartir, hasta la vista!!

Javo