sábado, 7 de diciembre de 2013

I Congreso Internacional de Ingeniería de Sistemas
Universidad Autónoma del Perú, 21-23 de Noviembre de 2013


Deuda Técnica, estudio del impacto del uso de la metáfora en instancias de reflexión de metodologías ágiles

 Joel Jonathan Jara Guerra1

1 Alumno de la carrera de Ingeniería de Sistemas, Universidad Autónoma del Perú. Carretera Panamericana Sur Km. 16.3 Mz. A Lt. 06, Villa El Salvador, Lima 1. jjaraguerra@gmail.com

Resumen

El presente artículo  se inicia  con la descripción de Deuda Técnica, Estudio del impacto del uso de la metáfora en instancias de reflexión de metodologías agiles. Al final se presenta  las metodologías agiles más utilizadas.

Palabras clave: Deuda técnica, proyecto, metodología ágil, feeback.

Introducción

La Deuda Técnica es una excelente metáfora (creada por Ward Cunningham) que nos ayuda a pensar sobre algunos problemas del desarrollo de software. Según la metáfora, hacer las cosas rápido y mal nos incrementa la deuda técnica, la cual es similar a la deuda financiera. Al igual que la deuda financiera, la deuda técnica tiene pago de intereses, que vienen en la forma del esfuerzo extra que será necesario hacer en el futuro por una elección rápida y mala de diseño.

Algunos dicen que el código desprolijo que es producido por personas que no conocen buenas prácticas de diseño (son ignorantes en el tema) no debería llamarse "deuda técnica". En este enfoque, la expresión "Deuda Técnica" se reserva para los casos en que las personas toman una decisión consciente de adoptar una estrategia de diseño que no es sustentable a largo plazo, pero que genera beneficios a corto plazo.

En última instancia somos las personas las que tenemos responsabilidad sobre la deuda técnica no hay nadie más entre nosotros y el código. Es cierto que podemos apoyarnos en generadores de código y en frameworks pero es decisión de la organización, del departamento o nuestra elegirlos y en muchos casos de su evolución. Son importantes en cuanto a que te evitan la realización de tareas mecánicas y en cuanto a que marcan un camino común en el desarrollo pero hay que tener en cuenta que es importante que el código generado sea de calidad porque es posible que en un futuro el equipo que se vaya a encargar de seguir evolucionando el producto no disponga de ese generador (desgraciadamente es algo que casi nunca se tiene en cuenta).

El Manifiesto Ágil o Metodología Ágil


Las metodologías ágiles surgen como una alternativa a las metodologías tradicionales. Son una forma de reacción a ellas, principalmente debido al hecho de que las metodologías tradicionales no han sido capaces de resolver todos los problemas que persiguen al desarrollo de proyectos de software desde sus inicios.

Estamos descubriendo mejores maneras de desarrollo de software, tanto por nuestra propia experiencia como ayudando a terceros. A través de esta experiencia hemos aprendido a valorar:


Individuos y sus interacciones sobre Procesos y Herramientas
Software funcionando sobre Documentación exhaustiva
Colaboración con el cliente sobre Negociación del contrato
Responder al cambio sobre Seguir un plan

Un método de desarrollo de software ágil es aquel capaz de adaptarse a los cambios, especialmente de los requisitos, según el feedback constante y temprano del cliente. El objetivo es minimizar el tiempo y el coste de realizar un proyecto de software, pero manteniendo la calidad. Todo esto se traduce en un ímpetu por las pruebas continuas, preferentemente automatizadas, y la integración continua para crear versiones de forma seguida para poderlas mostrar al cliente y recoger su opinión.

Los 12 principios son un manifiesto que distingue un proceso ágil de lo tradicional.2


Figura 1: Los 12 Principios de los métodos ágiles



Es indudable que estos métodos se estén utilizando, en su totalidad o parte, por la mayoría de las empresas, podemos observar en la ilustración el porcentaje de distribución de los métodos ágiles utilizados.

Figura 2: Distribución de Metodologías Agiles utilizadas en la actualidad.3

Conclusiones

Posiblemente en el artículo, se refiere a las metodologías ágiles y lo nuevo que precisamente no son las técnicas que utilizan, sino el hecho de reconocer que las personas son lo más importante para que el desarrollo del proyecto de software sea un éxito, la importancia de tener satisfecho al cliente cuando se le entrega el proyecto y no solo en el momento del inicio de este con un contrato. Son necesarios métodos que acepten los cambios del cliente, reaccionar ante los cambios con velocidad y destreza y cambiar la dirección manteniendo el equilibrio del proyecto.
Las metodologías ágiles surgen como una necesidad a la hora de satisfacer los cambiantes requerimientos de desarrollo de los sistemas actuales, pero manteniendo la calidad del producto resultante. Por eso es que han sido adoptadas por variadas organizaciones de desarrollo de software como lo demuestra el estudio anteriormente analizado.
Sin embargo, existen algunos problemas que a criterio de los autores dificultan todavía su correcta implementación:
− Lograr la participación activa y comprometida del usuario formando parte del equipo de desarrollo durante todo el proyecto.
− La no fijación de pautas suficientes respecto de la ingeniería del producto.
− La conformación del equipo del proyecto con recursos que puedan adaptarse a las metodologías ágiles.

Referencias Bibliográficas:


·         Santiago Matalonga (2013). Deuda Técnica en instancias de reflexión de metodologías ágiles. Presentado en el I Congreso Internacional de Ingeniería de Sistemas Universidad Autónoma del Perú,  Peru2.

·         http://www.versionone.com/pdf/7th-Annual-State-of-Agile-Development-Survey.pdf3.

·         PFC Raúl Úbeda (2009). Métodos ágiles para el desarrollo de software. PFC Raúl Úbeda Métodos ágiles para el desarrollo de software Descargado desde: http://www.upcommons.upc.edu/pfc/bitstream/2099.1/6859/1/PFC%20Ra%C3%BAl%20%C3%9Abeda%20%20M%C3%A9todos%20%C3%A1giles%20para%20el%20desarrollo%20de%20software.pdf

·         http://sedici.unlp.edu.ar/bitstream/handle/10915/19292/Documento_completo.pdf?sequence=1
Cuadro de texto: Figura 1: Los 12 Principios de los métodos agiles

domingo, 13 de octubre de 2013

10 tecnologías del futuro que revolucionarán nuestro planeta antes del año 2030

EL FUTURÓLOGO GEORGE DVORSKY AFIRMA QUE LAS INVESTIGACIONES PARA PRODUCIR LAS SIGUIENTES INVENCIONES NO SÓLO YA HAN COMENZADO, SINO QUE ESTARÁN LISTAS Y SERÁN UNA REALIDAD COTIDIANA EN LOS ALREDEDORES DEL AÑO 2030.

CIENCIA Y TECNOLOGIA / FUTURISMO


futurecitytoorobertdbrown

El futurólogo George Dvorsky –que describe su trabajo como una predicción sobre las posibilidades de la ciencia más que como una carta de buenos deseos– afirma que durante los próximos 15 a 20 años veremos algunos adelantos que, al igual que el Internet para la generación actual, revolucionará ámbitos como la salud, el hambre y la catástrofe ecológica.
Como en la serie inglesa Black Mirror, Dvorsky imagina la evolución probable del estado actual de la tecnología y propone las siguientes 10 invenciones como inminentes antes del año 2030.

1. Asistentes personales con Inteligencia Artificial

El programa Siri para los más recientes modelos de Apple será solamente el ancestro de los asistentes personales de las siguientes generaciones de dispositivos y computación personalizada. Ubicuos, capaces de adaptarse y comprender las necesidades precisas de los usuarios, estos asistentes serán capaces de comportarse como nosotros lo haríamos al responder emails y acordar citas, llevando una agenda por ellos mismos e informándonos sobre ella, como un auténtico asistente personal. Dvorsky advierte, sin embargo, que debemos cuidar qué grado de autonomía le damos a nuestros clones virtuales.

2. Computadoras, computadoras por todas partes

La noción de un mundo completamente computarizado no es solamente el argumento de una novela futurista, sino algo que ya comenzamos a ver en los automóviles y en muchos electrodomésticos. Este fenómeno es descrito como “everyware”: las computadoras estarán presentes en nuestra ropa, en nuestros accesorios de moda e incluso en lentes de contacto. Nos comunicaremos con ellos a través de una interfaz basada en gestos táctiles naturales y lenguaje vocal cotidiano; sin embargo, la diferencia será que las computadoras tomarán decisiones autónomas (como ajustar el tamaño de la ropa, tal cual podemos ver en la película Back To The Future 3), por lo que su presencia será casi imperceptible.

3. Animales virtuales con mentes digitales

Aunque emular un cerebro humano está aún muy por encima de las capacidades de la tecnología actual, proyectos actuales como OpenWorm buscan digitalizar el cerebro de un gusano, por lo que pronto comenzarán los experimentos para emular las funciones neuronales de organismos más complejos, como mamíferos. Las mentes digitales de los animales podrían ser “subidas” a una interfaz robótica, revolucionando nuestra relación con las mascotas y permitiéndonos comprender mejor la evolución de las especies.

4. Los primeros proyectos de geoingeniería a gran escala

A medida que el cambio climático se vuelve más dramático, la ciencia tendrá que comenzar a buscar soluciones prácticas para mantener las condiciones de vida en la Tierra como estables. Algunas de las técnicas de geoingeniería más polémicas van desde árboles artificiales y fertilización de los océanos hasta proyectos de control climático para contrarrestar las emisiones de carbono en la atmósfera terrestre.

5. Internet interplanetario

Las misiones tripuladas a Marte serán una realidad para el 2030, ya sea en proyectos de exploración de la NASA o de colonización interplanetaria, como el proyecto MarsOne de la empresa Virgin, que planea llevar una tripulación civil al planeta rojo. Sin embargo, la comunicación entre Marte y la Tierra también puede ser vista como la primera forma de contacto interplanetario que haya emprendido el hombre, con lo que habrá multitud de necesidades técnicas que resolver.

6. Los primeros tratamientos anti-edad verdaderamente efectivos

La gerontología avanza a pasos agigantados, y mientras la vejez sigue siendo una condición inevitable, esta rama de la medicina está explorando qué es lo que hace el código genético de las poblaciones o familias centenarias para alcanzar la longevidad y perpetuar la salud. Algunos de estos proyectos para vencer a la vejez definitivamente incluyen terapias para recargar las mitocondrias de las células y mapear el código genético de los individuos especialmente longevos. 

7. Máquinas militares autónomas

Aunque podría parecer una fantasía de tipo Terminator, hoy en día ya existen sistemas no controlados con humanos que tienen potencial militar, táctico y estratégico. El Aegis Combat System, que ya está en funcionamiento, tiene un sistema no vigilado por operadores humanos que detecta automáticamente lanzamientos de misiles enemigos para interceptarlos y destruirlos, además del sistema REDOWL, que se encarga de buscar y eliminar francotiradores enemigos en zonas de guerra.

Naturalmente las mayores preocupaciones vienen por el lado ético más que técnico, aunque la tecnología militar ha sido, históricamente, una de las que avanza con mayor velocidad y que posibilita el poderío tecnológico de un país o grupo sobre otros.

8. Trasplantes de órganos para todos

La medicina personalizada basada en los genes particulares de las personas y la posibilidad de producir, mediante biotecnología, órganos humanos autónomos hechos a la medida de los pacientes, volverá eventualmente irrelevante la figura del donador de órganos. Para el 2030 podremos producir órganos y tejidos a partir de las células madre de cada persona, lo que disminuiría casi en su totalidad el riesgo de que los órganos sean rechazados por el cuerpo.

9. Impresoras 3D en cada casa

Como ocurrió con los televisores en los 50 o las computadoras personales durante los últimos 30 años, las impresoras 3D seguirán el mismo ciclo de lenta adopción y masificación. El tener una máquina que pueda producir cualquier objeto que necesitemos cambiará radicalmente nuestros hábitos de compra y la manera en que las compañías comercializan sus productos: en lugar de ofrecer objetos terminados en una tienda física, las marcas ofrecerán planos tridimensionales para descargar y usar en nuestras impresoras tridimensionales.
Además, los primeros intentos para “imprimir” comida en estos aparatos ya está en marcha, y existen planes para producir vacunas “impresas” en 3D, por lo que, durante una pandemia, la gente ni siquiera tendría que salir de sus casas (por lo que el Apocalipsis Zombi o “Z-Day” quedaría definitivamente cancelado).

10. Curar la sed del mundo con agua de mar

Hoy en día ya existen grandes proyectos para desalinizar el agua marina y utilizarla como agua potable. Para el 2030, estos proyectos crecerán a escala industrial, echando mano de los recursos de energías renovables para su operación, como la energía solar y células fotovoltáicas. Los expertos afirman que los déficits de agua potable en grandes zonas del planeta serán historia para finales de la década del 2030.
Es probable que nuestro entendimiento de lo que debería ser el futuro de nuestra civilización esté menos relacionado con buscar la producción en masa de autos voladores y concentrarnos en soluciones de salud y alimentación que posibiliten la vida en el planeta tal como la conocemos.