• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
No silver bullets- VicMan
 

No silver bullets- VicMan

on

  • 295 views

 

Statistics

Views

Total Views
295
Views on SlideShare
295
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    No silver bullets- VicMan No silver bullets- VicMan Presentation Transcript

    • No hay bala de plata: esencia yaccidentes de la Ingeniería deSoftwareIngeniería del Software II1
    • Reflexiones El disfrute del oficio Las desgracias del oficio La leyenda del Hombre-lobo Dificultades esenciales y accidentales La esencia del software Conclusiones - ¿Qué podemos intentar?2
    • El disfrute del oficio3Lo divertido de hacer cosas...El placer de que las cosas quehacemos sean útiles a otraspersonasLa fascinación de diseñar complejosrompecabezas...La diversión queconlleva el siempreaprender...El disfrute de trabajar con algotan maleable: el pensamiento(como los poetas)...
    • El disfrute del oficioLa programación es divertida porque despiertala creatividad que hay dentro de nosotros,con la cual podemos obtener placerescomunes que tenemos todos los sereshumanos.4
    • Las desgracias del oficio5Debe realizarse perfectoDependemos de otrosOtra persona nosasigna losobjetivos, recursos y lainformación necesariaDiseñar conceptos es divertido, peroconstruirlos es el trabajo realUsualmente elproducto que se estáconstruyendo se nosvuelve obsoleto antesde terminarlo
    • A pesar de todo ... Para muchos de nosotros el disfrute sobrepasa a las desgracias y hemosdecidido continuar con esta profesión ...6
    • La leyenda del “Hombre-lobo”7De todos los monstruos quetenemos como parte del folclore denuestras pesadillas, ninguno esmás terrorífico que el Hombre-lobo,porque se transforma –inesperadamente- de lo familiar alo horrorífico ...
    • La leyenda del “Hombre-lobo”8Para el Hombre-lobo buscamos unabala de plata que pueda -mágicamente- destruirlo ...o almenos “mandarlo a descansar”
    • Los proyectos de software tienen algo del“Hombre-lobo”...9Al principio son inocentes y hastaparecen factibles (y hasta fáciles)...Entregas fuera detiempo ...Presupuestosincorrectos ...y productos inútilesPero son capaces deconvertirse enCaracterizados por ...
    • Las Dificultades pueden serEsenciales o Accidentales Esencial: una cualidad fundamental del software. Constituye o forma parte de la esencia de algo; es inherente. Accidental: un problema en los métodos de producción actuales Relativo a una propiedad, factor o atributo que no es esencial.10
    • Pero muchas de las dificultades accidentales yahan sido resueltas, por ejemplo...11La dificultad de programar por elbajo nivel de abstracción de loslenguajes ...Facilitar el acceso al poder decómputo ...El uso de múltiplesherramientas: ambientesintegrados de desarrollo ...Mucha de la ganancia lograda enproductividad de software ha sidoconsecuencia de eliminar estas barrerasartificiales que hacen que las tareasaccidentales sean “inordinariamente”difíciles
    • ¿Cuánto del esfuerzo realizado por los ingenieros de software eshacia lo accidental y no hacia lo esencial?“...para que exista una mejorasignificativa en laproductividad, confiabilidad ysimplicidad, el 90% de lasdificultades al desarrollarsoftware deberían seraccidentales (poco probable) ylas técnicas y herramientasdeberían buscar reducirlas al0% (difícil que ocurra)...”12
    • ¿Cuál es la esencia del software?13El software es una construcción deconceptos interrelacionados:Conjuntos de datosRelaciones entre datosAlgoritmosInvocación defuncionesEsta esencia es abstracta, en elsentido de que la construcciónconceptual es la misma bajo muchasrepresentaciones diferentes. Noobstante es altamente precisa yricamente detallada.
    • ¿Cuál es la esencia del software?“...La parte difícil de construir softwarees la especificación, diseño y prueba deesta construcción conceptual, no lalabor de representarla y probar lafidelidad de esta representación...”14Si esto es verdad, construir softwaresiempre será difícil. De formainherente la bala de plata no existe...Consideremos entonces las propiedades inherentes deesta esencia irreducible de los sistemas de software:complejidad, conformidad, maleabilidad einvisibilidad
    • El software es complejo Porque: No hay dos partes iguales (a menos a nivel superior alestatuto, si así fuera lo hacemos subrutina). El número de estados del software es mucho mayorque cualquier otro hardware creado por el hombre. Escalar software no es la repetición de elementospreexistentes a un tamaño mayor: es necesarioincrementar el número de elementos (y esto se veafectado por el aumento en la complejidad –no lineal- de la interrelación con los elementos restantes).15
    • Por esta complejidad se han generado muchos de losproblemas del desarrollo de software16Dificultad de comunicaciónentre los miembros delequipo... Dificultad de enumerar (mucho menosentender) todos los posibles estados de unprograma (y de ahí viene la falta deconfiabilidad)...Dificultad de invocarfunciones complejas, lo cualhace a los programas difícilesde utilizar
    • Por esta complejidad se han generado muchos de losproblemas del desarrollo de software17Dificultades degestión delproyecto
    • Por esta complejidad se han generado muchos de losproblemas del desarrollo de software18Estas dificultades en la gestión deproyectos conllevan al problema deIntegridad ConceptualMuchas catedrales Europeasmuestran diferencias en los planesy el estilo arquitectónico entrepartes construidas por diferentesgeneraciones y diferentesconstructores. Los últimosintentaron mejorar los diseños delos primeros por moda o gustopersonal ...La Integridad Conceptual es laconsideración más importante en eldiseño de sistemas.Es mejor tener un sistema queomita ciertas característicasfantásticas y mejoras, pero querefleje un conjunto coherente deideas de diseño y no un conjuntode ideas brillantes independientesy no coordinadas
    • Conformidad19No solamente la gente que desarrollasoftware se enfrenta a la complejidad.Los físicos, por ejemplo se tienenque enfrentar con objetosterriblemente complejos, aún en laspartículas fundamentales...Sin embargo, los físicosfundamentan su labor en una fefirme de que existen principiosunificadores que debenencontrarse en cualquier área desu estudio“Deben existir explicaciones sencillas dela naturaleza, porque Dios no escaprichoso o arbitrario ...”
    • Conformidad20Muchas de las veces los sistemas desoftware llegan después que lossistemas de negocios (estos yaexisten). A diferencia de lanaturaleza, estos sistemas fueroncreados por humanos...Mucha de la complejidad quedebe enfrentar el ingeniero desoftware es arbitraria, forzada sinritmo y razón por las institucioneshumanas y los sistemas a loscuales las interfaces de laaplicación debe conformarse “Como el sistema suele ser el últimoque llega, a él le toca conformarse.Además siempre es visto como lomás fácil de conformar (sic) ...”
    • Maleabilidad21Los cambios en edificios,automóviles y hardware decomputadoras ocurren pero nocon la misma frecuencia que elsoftware...Esto es porque el softwareencierra funcionalidad y esta esla parte más sujeta a la presióndel cambio. A su vez estafuncionalidad está hecha delmaterial más altamente maleable:el pensamiento “Los edificios también se puedencambiar, pero los costos sonaltos y eso impide el cambiofrecuente..”
    • Maleabilidad22Todo software exitosotiene cambios en dosaspectos principales ...Conforme el software resultaútil, los usuarios intentanusarlo en nuevos casos enla frontera del dominio (omás allá) inventan nuevosusos para él ...El software exitoso sobrevivemás allá de la vida normaldel hardware
    • Invisibilidad23El software es invisible yno visualizable...Las abstraccionesgeométricas son poderosaspara capturar realidadesgeométricas, pero la realidaddel software es que no estáincrustado en el espacio
    • Invisibilidad24La realidad es que losaspectos estructurales son...Muy complejos ...Ocultos ...Y poseen solamente unavista externa deentrada/salida
    • ¿Hay alguna esperanza?25Comparemos con la medicinaSe dejó a un lado lassoluciones simples ycreencias falsas paracurar lasenfermedades...Para aplicar un esfuerzopersistente quelentamente logreerradicar lasenfermedades
    • ¿Hay alguna esperanza?26Y comparemos con la químicaSe dejó a un lado laalquimia ...Para invertir muchosaños en la comprensióndel átomo y despuésaprender a sintetizar eloro...¿Podremos aprender algode estas disciplinas?
    • ¡ Sí !“...Un esfuerzodisciplinado, consistente paradesarrollar, propagar yexplotar estasinnovaciones, deberíallevarnos a una mejorasignificativa en orden-de-magnitud. No haycamino de reyes, pero almenos hay un camino...”27¡Este se parecea mi!
    • ¿Qué podemos hacer para tratar deatacar la esencia?28Ningún monto de actividadque se dedique a la expresiónde las construccionesconceptuales de las tareaspuede darnos grandesganancias en productividadSe debe entonces consideraratacar la esencia del software, enpocas palabras “la formulaciónde las complejas estructurasconceptuales”
    • ¿Qué podemos intentar para tratar de atacar la esencia?29Comprar, no construir(reutilizar)...Refinamiento de requisitos yprototipado rápido ...Desarrollo incremental (growdon’t build)...Más entrenamiento en SE ynutrirse de los grandes