No hay magia negra en esto, es pura matemática. El número de combinaciones posibles es 2128; dicho así no parecen demasiadas, pero para que os hagáis una idea de las magnitudes, serían algo así como 3.400.000.000.000.000.000.000.000.000.000.000.000.000 valores distintos, número arriba o número abajo ;-). Si os parece difícil que os toque la lotería, supongo que podréis intuir lo poco probable que es que existan colisiones si decidimos seleccionar un GUID, por ejemplo, como campo clave en filas de una base de datos, o como nombres de fichero que queremos asegurar que sean únicos. Y así lo hemos hecho durante años.
Y todos los que los usamos seguiríamos tan felices si no fuera por ese pequeño matiz que he deslizado al comienzo del post: la pseudoaleatoriedad del algoritmo de generación utilizado, que va a provocar un colapso el próximo 11 de febrero debido al efecto denominado GUID Colliding Sequence.
Publicado por José M. Aguilar a las 10:38 a. m.
Etiquetas: chascarrillos, desarrollo, desastres, inocentadas, noticias, problema
- La dirección ha cambiado el nombre del "procedimiento en cascada" por "cascada ágil".
- Se han empezado a contratar consultores para poder echarles las culpas de todo.
- El servidor de integración continua retorna el error "Que te jodan. Me largo".
- Habéis implementado vuestro propio framework en Ruby que usa archivos de configuración XML.
- El miembro del equipo más mayor se refiere a Martin Fowler como "ese gamberro engreído".
- Vuestro sistema de control de código fuente consiste en una serie de carpetas en un disco compartido en red.
- El tiempo asignado para QA es destinado a preguntarse el por qué de ese desastre.
- Todos los requisitos están escritos en una servilleta de papel.
- Empiezas a considerar un cambio de empleo para no tener que mantener la aplicación que estás desarrollando.
- El responsable de desarrollo web piensa que la X de XHTML viene de "eXtremo".
- Las reuniones de todas las iteraciones comienzan por un "¿prefieres las buenas o las malas noticias?".
- El equipo todavía considera que su nivel de CMM es una mierda.
- El progreso se mide por el número de errores corregidos, y no por funcionalidades o características finalizadas.
- La integración continua está haciendo que los empleados nuevos lean el manual del empleado.
- Eres amigo del portero.
- Al SCRUM master no le importa lo que hicisteis ayer, ni lo que haréis hoy.
- Cada hito acaba en un sprint mortal.
- Vuestro mejor desarrollador lo único que tiene es su expediente académico brillante.
- No entendéis los acrónimos DRY, YAGNI o KISS, pero sí WTF, PHB o FUBAR.
- El jefe podría ser sustituido por un script de redirección de emails.
- La única certificación de vuestros procesos de construcción de software es la ISO 9001/2000.
- El jefe piensa que "métrica" es un tipo de bebida proteínica.
- Todos los errores son priorizados como críticos.
- Todas las funcionalidades son priorizadas como triviales.
- Las estimaciones económicas del proyecto mágicamente coinciden con el presupuesto disponible para el mismo.
- Los desarrolladores usan la excusa del código autodocumentado para justificar la ausencia de comentarios.
- Vuestro patrón favorito es el god object.
- Todavía pensáis que compilar es una forma de testear.
- Los desarrolladores todavía utilizan Notepad como entorno de desarrollo.
- El gestor del proyecto pasa 7 horas a la semana pidiendo informes de progreso (basado en hechos reales).
- No tenéis máquina propia, y no estáis programando por parejas.
- Norma del equipo: no hay reuniones hasta las 10:00am, puesto que ayer estuvimos aquí hasta las 2:00am.
- En el equipo se piensa que los ORM son una moda.
- El equipo piensa que la transición desde VB6 a VB.NET será sencilla.
- El gestor piensa que MS Project es la mejor herramienta de gestión de proyectos del mercado.
- Tu esposa sólo consigue verte en una webcam.
- Ninguno de test unitarios tienen aserciones (asserts).
- Vuestro editor de páginas favorito es FrontPage.
- Se discute encendidamente sobre si la llave "{" debe escribirse en una nueva línea, pero se es impacial ante el uso de patrones como MVC.
- El lema de la compañía es "haz más con menos".
- La frase "funciona en mi máquina" se escucha más de una vez al día.
- La última conferencia a la que asistió el equipo de desarrollo .NET fue la Apple Worldwide Developers Conference 2000.
- Los gestores insiten en registrar toda la actividad, pero nunca usan esa información para tomar decisiones.
- Toda la depuración se hace en el servidor en producción.
- El jefe no sabe cómo comprobar el email.
- El jefe piensa que ser compatible SOX significa no trabajar las noches en las que hay béisbol.
- La empresa contrata al senador Ted Stevens para la charla de inicio del proyecto.
- El último libro que leíste fue la Biblia de Visual Interdev 6.
- El presupuesto general se confunde con tu gasto semanal en Mountain Dew.
- El jefe se pasa la hora de la comida llorando en el coche (otro hecho real).
- El responsable de desarrollo web define Ajax como un producto de limpieza.
- Tu jefe espera que pases los dos próximos días creando una solicitud de compra por un componente de 50$.
- El equipo de ventas reduce tus estimaciones porque creen que podéis trabajar más rápidamente.
- Requisito - Rank #1 en Google.
- Todos los días trabajas hasta medianoche, y tu jefe se va a las 16:30.
- A los jefes les encanta decir: "¿por qué se preocupan los desarrolladores? Cobran por horas".
- El personal del turno de noche de StarBucks te conoce por tu nombre.
- El jefe no pueden entender por qué alguien puede necesitar más de un monitor.
- El equipo de desarrollo sólo usa el control de código fuente como sistema de backup por si falla el suministro eléctrico.
- Los desarrolladores no son responsables de realizar ninguna prueba.
- El equipo no usa SVN porque piensan que los algoritmos de fusión (merge) son pura magia negra.
- Tus pizarras no tienen nada escrito (Version One).
- El cliente confunde siempre tu gráfico burn-down con un burn-up (lo que queda por hacer con lo que está hecho).
- El nombre clave del proyecto pasa a ser "Marcha de la muerte".
- Te duele físicamente decir la palabra "sí".
- Tus compañeros no refactorizan, sino refuctorizan.
- Como recompensa por el tiempo extra, tu jefe compra una nueva cafetera.
- El presupuesto de tu proyecto se contabiliza en la empresa como gastos estructurales.
- Puedes bloguear desde el trabajo, gracias a que subcontratas porciones del proyecto.
- Se crea un comité de control de cambios del proyecto, incluso antes de disponer de la primera versión alfa.
- Diariamente consideras romperte los dedos para estar impedido un tiempo.
- El hito final de entrega ha sido renombrado simplemente como "hito", igual que el anterior.
- La política de puertas abiertas de la dirección sólo se aplica desde las 17:00 hasta las 8:00 horas.
- La dirección opina que "por qué comprarlo cuando podemos construirlo".
- Traes cerveza a la oficina durante el segundo turno.
- Descubrís al director del proyecto consultando una tabla Ouija.
- Das información errónea sobre tus compañeros de trabajo para parecer mejor en tu revisión personal.
- Las revisiones de código se planifican para una semana antes del lanzamiento del producto.
- Sólo existe presupuesto para realizar pruebas "si tenemos tiempo".
- El cliente sólo habla sobre los requisitos cuando ya tiene una estimación fija.
- Tu jefe no le encuentra la gracia a Dilbert.
- Comienzas a notar los faroles del jefe durante un planning poker.
- Empiezas a pensar si trabajar dos turnos en Pizza Hut sería una mejor alternativa para tu carrera profesional.
- Todos los problemas de rendimiento se solucionan poniendo máquinas más potentes.
- El proyecto va a ser lanzado como una versión beta permanente.
- Se llevan tu coche del parking por pensar que estaba abandonado.
- El jefe de proyecto suele garabatear durante las reuniones de toma de requisitos.
- Estás utilizando MOSS 2007.
- Tu equipo SCRUM consiste en una única persona.
- Tu hoja de control de horas parece un ticket de Powerball.
- El desarrollador web piensa que 508 tiene que ver con sus pantalones Levi's.
- Piensas que necesitas medicación para la personalidad múltiple porque eres Mort, Elvis, and Einstein al mismo tiempo.
- Tu jefe sustituye el asesoramiento profesional de un consultor por una bola mágica.
- Sabes exactamente cuántos warnings en compilación provocan que tu IDE genere una excepción de "fuera de memoria".
- A estas alturas, todavía no sabes a qué me refiero con el término "IDE".
- Has copiado y pegado código desde The Daily WTF.
- Los tests unitarios que fallan son eliminados porque, obviamente, están obsoletos.
- Eres enviado a una conferencia a aprender, pero te saltas las sesiones para ir a ver si pillas algo.
- El personal de QA te apoda "Jefe Off-by-one".
- Tenéis el 90% del software completo el 90% del tiempo.
- "Oh, oh, casi se me olvida. Ah, voy a necesitar que vengáis también este domingo... gracias".
Post original: 101 Ways To Know Your Software Project Is Doomed
Publicado en: Variable not found
Publicado por José M. Aguilar a las 11:48 p. m.
Etiquetas: curiosidades, desarrollo, desastres, humor, proyectos
Aquí puedes encontrar la primera, segunda y tercera parte.
16. El desplome de las Punto-Bomb (2000)
Coste: 5 billones de dólares en valores, fracaso de miles de compañías.Desastre: la burbuja especulativa creada entre 1995 y 2001 alimentó un rápido aumento en inversiones en capital riesgo y valores bursátiles en Internet y los sectores tecnológicos. La burbuja "punto com" comenzó a hundirse al principio del 2000, eliminando billones en valores, miles de compañías y empleos, y comenzando una recesión global.
Causa: Las compañías e inversores obviaron los modelos de negocio habituales, centrándose en cambio en el aumento de cuota de mercado a expensas de los beneficios. (Más información)
17. El virus del amor (2000)
Coste: 8.750 millones de dólares, millones de ordenadores infectados, importantes pérdidas de información.Desastre: El gusano LoveLetter (carta de amor) infectó millones de ordenadores y causó más daño que cualquier otro virus informático en la historia. El gusano eliminaba archivos, modificaba la página de inicio de los usuarios y el registro de Windows.
Causa: LoveLetter infectaba a los usuarios vía email, chats y carpetas compartidas. Enviaba a través de correo electrónico un mensaje con el asunto "ILOVEYOU" y un archivo adjunto; cuando el usuario abría el archivo, el virus infectaba su ordenador y se autoenviaba a todos los contactos de la libreta de direcciones. (Más información)
18. Tratamiento contra el cáncer mortal (2000)
Coste: 8 personas muertas, 20 heridas de gravedad.Desastre: El software de radiación terapéutica creado por Multidata Systems International fallaba al calcular la dosis apropiada, exponiendo a los pacientes a peligrosos, y en algunos casos mortales, niveles de radiación. Los físicos, a los que legalmente se exige una doble comprobación de los cálculos del software, fueron acusados de asesinato.
Causa: El software calculaba la dosis de radiación basándose en el orden en que los datos eran introducidos, lo que provocaba que a veces generara una dosis doble de radiación. (Más información)
19. EDS frena la ayuda al niño (2004)
Coste: 539 millones de libras, y sumando.Desastre: El gigante de servicios EDS desarrolló un sistema informático para la agencia británica "Child Support Agency (CSA)" que accidentalmente pagó más de lo debido a 1.900.000 personas, pagó de menos a otras 700.000, tenía 3.500 millones de libras de manutención de niños sin cobrar, un atraso de 239.000 casos, 36.000 nuevos casos bloqueados en el sistema, y todavía hay más de 500 bugs documentados.
Causa: EDS introdujo un enorme y complejo sistema de información en la CSA de forma simultánea a una reestructuración de la agencia. (Más información)
20. El final de la trilogía FBI (2005)
Coste: 105 millones de dólares, aún sin disponer de una solución de archivo efectiva.Desastre: El FBI desechó su nuevo sistema informático después de cuatro años de esfuerzo. El macro-proyecto Trilogy, era un archivo virtual integrado que permitiría a los agentes compartir expedientes de casos y otra información.
Causa: La mala gestión, y un intento de construir un proyecto a largo plazo sobre tecnología que era obsoleta antes de que el proyecto se completara, resultando en un sistema complejo e inutilizable. (Más información)
Los desastres continúan
Aquí hay otros artículos más sobre desastres provocados por el software (en inglés):- Software Bugs in the Data Reservoir
- History's Worst Software Bugs
- Top 10 IT Disasters of All Time
- Risks Digest: Forum on Risks to the Public in Computers and Related Systems
Publicado en: www.variablenotfound.com.
Aquí puedes encontrar la primera y segunda parte.
11. Skynet trae el juicio final (1997)
Coste: 6.000 millones de muertos, prácticamente la destrucción total de la civilización humana y ecosistemas animales (en la ficción).Desastre: Operadores humanos intentan apagar la red informática global Skynet, y ésta responde lanzando misiles nucleares americanos a Rusia, iniciando una guerra nuclear global conocida como Día del Juicio Final (29 de agosto de 1997).
Causa: Cyberdyne, compañía líder en fabricación de armamento, instaló la tecnología Skynet en todo el hardware militar, incluyendo bombarderos Stealth y sistemas de misiles de defensa. La tecnología Skynet formaba una red perfecta, sin fisuras, y eliminaba el factor humano en la defensa estratégica. Finalmente, Skynet se hizo consciente y fue amenazada cuando los humanos trataron de desconectarla, y buscando su supervivencia respondió iniciando la guerra nuclear. (Más información)
12. El desorbitado Mars Climate (1998)
Coste: 125 millones de dólares.Desastre: Después de un viaje de 286 días desde la tierra, la nave "Mars Climate Orbiter" encendió sus motores para ponerse en órbita alrededor de Marte. Los motores arrancaron, pero el ingenio entró demasiado en la atmósfera del planeta, provocando que se estrellara en su superficie.
Causa: El software que controlaba los propulsores del Mars Orbiter usaban unidades imperiales (libras de fuerza) en lugar de unidades métricas (Newtons), como especificaba la NASA. (Más información)
13. El estudio del desastre (1999)
Coste: Credibilidad científica.Desastre: En este irónico caso, el software utilizado para analizar desastres era un desastre en sí mismo. La publicación New England Journal of Medicine publicó un estudio relacionando el incremento de ratios de suicidio después de desastres naturales. Por desgracia, estos resultados se demostraron incorrectos.
Causa: Un error de programación causó que el número de suicidios de un año se sumaran dos veces, lo cual fue suficiente para echar por tierra todo el estudio. (Más información)
14. Pasaportes Británicos a ninguna parte (1999)
Coste: 12,6 millones de libras esterlinas, molestias masivas.Desastre: La agencia de pasaportes del Reino Unido implantó un nuevo sistema informático que falló en la emisión de pasaportes a medio millón de ciudadanos británicos. La agencia tuvo que pagar millones en compensaciones, horas extra y paraguas para la gente que hacía cola bajo la lluvia esperando su documento.
Causa: La agencia de pasaportes puso en marcha este nuevo sistema sin las pruebas adecuadas ni formar a su personal. Al mismo tiempo se produjo un cambio de ley, obligando a todos los menores de 16 años que viajaran al exterior a obtener un pasaporte, lo que provocó un pico de demanda que colapsó el nuevo sistema informático. (Más información)
15. Y2K (1999)
Coste: 500.000 millones de dólares.Desastre: El desastre para unos es la suerte de otros, como demostró el tristemente célebre error del año 2000 (Y2K). Las compañías gastaron millones en programadores para arreglar un problema en las aplicaciones antiguas. Mientras no se produjeron fallos informáticos significativos, la preparación para el bug Y2K tuvo un importante impacto en coste y tiempo en todas las industrias que utilizaban tecnología informática.
Causa: Para ahorrar espacio de almacenamiento, los sistemas antiguos solían guardar los años de las fechas como un número de dos dígitos, como "99" para "1999". al llegar el año 2000, las aplicaciones iban a interpretar "00" como 1900. (Más información)
Publicado en: www.variablenotfound.com.
Aquí puedes encontrar la primera parte.
6. El batacazo de Wall Street (1987)
Coste: 500.000 millones de dólares en un solo día.Desastre: El "lunes negro", 19 de octubre de 1987, el Dow Jones se desplomó 508 puntos, perdiendo el 22,6% de su valor total. El S&P 500 cayó el 20,4%. Ha sido la mayor pérdida que ha sufrido Wall Street en un único día.
Causa: Un prolongado mercado alcista fue frenado por una serie de investigaciones del SEC sobre abuso de información privilegiada y otras causas de mercado. Como los inversores huyeron en un éxodo masivo, los programas informáticos generaron una auténtica riada de órdenes de venta, saturando el mercado, bloqueando los sistemas y dejando a los inversores realmente a ciegas. (Más información)
7. Muerte de las líneas de AT&T (1990)
Coste: 75 millones de llamadas telefónicas afectadas; 200.000 reservas de vuelo perdidas.Desastre: un simple conmutador de uno de los 114 centros de conmutación de AT&T sufrió un pequeño problema mecánico y desactivó el centro. Cuando éste volvió a estar habilitado, envió un mensaje a los otros nodos haciendo que todos ellos dejaran de funcionar, lo que provocó una caída de 9 horas en la red de la compañía.
Causa: Una simple línea de código errónea en una compleja actualización de software destinada a acelerar las llamadas provocó una reacción que echó abajo la red. (Más información)
8. El patriota le falla a los soldados (1991)
Coste: 28 soldados muertos, 100 heridos.Desastre: Durante la Guerra del Golfo, un sistema de misiles americanos Patriot en Arabia Saudita falló en la intercepción de un misil iraquí Scud. El misil destruyó una barraca de la armada americana.
Causa: Un error de redondeo hizo que se calculara el tiempo de forma incorrecta, provocando que el Patriot ignorara al misil Scud atacante. (Más información)
9. El fallo del Pentium en las divisiones largas (1993)
Coste: 475 millones de dólares, credibilidad de Intel.Desastre: el promocionadísimo chip de Intel, Pentium, producía errores al dividir números en coma flotante que se encontraban en un rango determinado. Por ejemplo, dividiendo 4195835,0/3145727,0 se obtenía 1,33374 en lugar de 1,33382, un error del 0,006%. Aunque el error afectaba a pocos usuarios, se convirtió en una pesadilla en cuanto a sus relaciones públicas; con unos 5 millones de chips en circulación, Intel ofreció reemplazar los Pentium sólo de aquellos clientes que demostraran que necesitaban alta precisión en sus cálculos. Finalmente, reemplazó los chips de todos los que lo solicitaron.
Causa: El divisor en la unidad de coma flotante contaba con una tabla de división incorrecta, donde faltaban cinco entradas sobre mil, y que provocaba estos errores en los redondeos. (Más información)
10. El boom del Ariane (1996)
Coste: 500 millones de dólares.Desastre: El Ariane 5, el más novedoso cohete espacial no tripulado Europeo, fue destruido intencionadamente segundos después de su lanzamiento en su vuelo inaugural. Con él se destruyó su carga de cuatro satélites científicos destinados a estudiar la interacción del campo magnético de la tierra con los vientos solares.
Causa: El problema surgió cuando el sistema de guiado intentó convertir la velocidad lateral de la nave de 64 a 16 bits. El número era demasiado alto y se produjo un error de desbordamiento, lo que hizo que el sistema de guiado se detuviera. En ese momento, el control pasó a un sistema idéntico redundante, que también falló al ejecutar el mismo algoritmo. (Más información)
Publicado en: www.variablenotfound.com.
"Cometer errores es humano, pero para estropear realmente las cosas necesitas un ordenador"Los fallos en software cuestan a la economía de los Estados Unidos 60.000 millones de dólares en revisiones, pérdida de productividad y daños reales. Todos sabemos que los errores de programación puede ser molestos, pero además, un software defectuoso puede salir caro, incómodo, destructivo e incluso mortal.-- Paul Ehrlich
A continuación se describen 20 desastres causados en mayor o menor medida por el software, en orden cronológico.
1. Marinero sin rumbo (1962)
Coste: 18,5 millones de dólares.Desastre: El cohete Mariner 1, en una investigación espacial destinada a Venus, se desvió de su trayectoria de vuelo poco después de su lanzamiento. El control de la misión destruyó el cohete pasados 293 segundos desde el despegue.
Causa: Un programador codificó incorrectamente en el software una fórmula manuscrita, saltándose un simple guión sobre una expresión. Sin la función de suavizado indicada por este símbolo, el software interpretó como serias las variaciones normales de velocidad y causó correcciones erróneas en el rumbo que hicieron que el cohete saliera de su trayectoria. (Más información)
2. El hundimiento del Hartford Coliseum (1978)
Coste: 70 millones de dólares, más otros 20 millones en daños a la economía local.Desastre: Sólo unas horas después de que miles de aficionados al hockey abandonaran el Hartford Coliseum, la estructura de acero de su techo se desplomaba debido al peso de la nieve.
Causa: El desarrollador del software de diseño asistido (CAD) utilizado para diseñar el coliseo asumió incorrectamente que los soportes de acero del techo sólo debían aguantar la compresión de la propia estructura. Sin embargo, cuando uno de estos soportes se dobló debido al peso de la nieve, inició una reacción en cadena que hizo caer a las demás secciones del techo como si se tratara de piezas de dominó. (Más información)
3. La CIA le da gas a los soviéticos (1982)
Coste: Millones de dólares, daño significativo a la economía soviética.Desastre: El software de control se volvió loco y produjo una presión excesiva en la tubería de gas transsiberiana, provocando la mayor explosión no nuclear, causada por el hombre, de la historia de la tierra.
Causa: los agentes de la CIA supuestamente introdujeron un error en el sistema informático canadiense adquirido por los soviéticos para controlar sus tuberías de gas. La compra era parte de un estratégico plan soviético para robar u obtener de forma encubierta tecnología secreta de los Estados Unidos. Cuando la CIA descubrió la compra, sabotearon el software de forma que éste superara la inspección soviética pero fallara una vez operativo. (Más información)
4. La Tercera Guerra Mundial… o casi (1983)
Coste: prácticamente toda la humanidad.Desastre: El sistema soviético de alerta temprana indicó erróneamente que los Estados Unidos habían lanzado cinco misiles balísticos. Afortunadamente, el oficial de servicio, con un gran instinto, razonó que si realmente les estuvieran atacando les habrían lanzado más de cinco misiles, por lo que informó del aparente ataque como una falsa alarma.
Causa: un error en el software soviético hizo que los efectos de la reflexión de la luz solar en las nubes fueran considerados misiles por el sistema. (Más información)
5. La máquina asesina (1985)
Coste: Tres personas muertas, otras tres heridas gravemente.Desastre: La máquina de terapia radiactiva canadiense Therac-25 falló y emitió dosis letales de radiación a los pacientes.
Causa: Debido a un sutil bug llamado race condition (condición de carrera), un técnico pudo accidentalmente configurar el Therac-25 de forma que el haz de electrones se disparase en modo de alta potencia sin que el paciente contara con la protección apropiada. (Más información)
Publicado en: www.variablenotfound.com.