martes, 10 de septiembre de 2024

Pesadillas de los proyectos de software (naturaleza de los grandes problemas)

Los Proyectos de software

MONSTRUOS DE PESADILLA

Reflexiones de Federik P. Brooks


"De todos los monstruos que llenan las pesadillas de nuestro folklore, ninguno aterroriza más que los hombres lobo; porque se transforman inesperadamente de lo familiar a lo horroroso. Para éstos,se buscan balas de plata que puedan mágicamente conseguir  que descansen."



PARRAFOS DE "NO SILVER BULLET"  (una lectura para crecer)

NO SILVER BULLET

Esenciales y accidentales de la Ingeniería de Software

Federick P. Brooks Jr.  , septiembre 1986

Toda construcción de software implica tareas esenciales( la configuración del complejo concepto estructural que componen la entidad de software abstracta)  y tareas accidentales( la representación de estas entidades abstractas en lenguajes de programación y el mapeo de estas en lenguajes de máquina dentro de limitaciones de espacio y velocidad.) 

La mayoría de las grandes ganancias pasadas en la productividad del software provienen de la eliminación de barreras artificiales que han hecho que tareas accidentales excesivamente difíciles, como por ej:  restricciones de servers, programación incómoda Idiomas, falta de tiempo de máquina .

¿Cuánto de lo que hacen ahora los ingenieros de software es Todavía dedicado a lo accidental, en contraposición a lo esencial?.

...

De todos los monstruos que llenan las pesadillas de nuestro folklore, ninguno aterroriza más que los hombres lobo; porque se transforman inesperadamente de lo familiar a lo horroroso. Para éstos,se buscan balas de plata que puedan mágicamente conseguir  que descansen.

El conocido proyecto de software tiene algo de este carácter (al menos tal como lo ve el gerente no técnico), generalmente inocente y directo, pero capaz de convertirse en un monstruo de cronogramas incumplidos, presupuestos arruinados y productos defectuosos. 

Entonces escuchamos desesperadas suplicas  por una solución milagrosa, algo que haga que los costos del software caigan tan rápidamente como los costos de las computadoras. los costos de hardware sí lo hacen.

Pero, si miramos hacia el horizonte próximo, dentro de una década, no vemos ninguna solución milagrosa. no hay un solo desarrollo, ya sea en tecnología o en técnicas de gestión, que por sí solo prometa incluso una mejora de un orden de magnitud en productividad, confiabilidad y simplicidad. En esto 

En este artículo intentaremos ver por qué, examinando tanto la naturaleza del problema del software como las propiedades de las balas propuestas.

Sin embargo, el escepticismo no es pesimismo.

Dificultades esenciales:

Complejidad

La complejidad del software es una propiedad esencial no una accidental

Muchos de los problemas clásicos del desarrollo de productos de soft derivan de su esencia compleja y su crecimiento no lineal

...

Conformidad

Mucha de la complejidad que debemos manejar es "complejidad arbitraria" forzada por instituciones y sistemas creados por humanos , a cuyas interfaces el soft debe conformar

...

Cambiabilidad (posibilidad de cambio)

La entidad de software está constantemente sujeta a presiones de cambio. Por supuesto, también lo son los edificios, coches, ordenadores. Pero las cosas manufacturadas rara vez se modifican después de su fabricación; Son reemplazados por modelos posteriores, o se incorporan cambios esenciales en modelos que son el mismo diseño básico pero con numero de serie nuevos

 Las evoluciones de  automóviles son realmente bastante infrecuente; los cambios  de las computadoras lo son un poco menos. Ambos son mucho menos frecuentes que modificaciones al software . 

En parte, esto se debe a que el software de un sistema resuelve su función, y la función es la parte que más siente las presiones del cambio. En parte se debe a que el software puede ser cambiado  más fácilmente ( es pura materia de pensamiento, infinitamente maleable. )

De hecho, los edificios pueden cambiar , pero los altos costos del cambio, entendidos por todos, sirven para amortiguar los caprichos de los cambiadores.

Todo el software exitoso se cambia. Hay dos procesos en juego:

Como producto de software resulta útil, la gente lo prueba en casos nuevos que se encuentran en el límite o más allá del  dominio original. 

Las presiones para ampliar la función provienen principalmente de usuarios a quienes les gustan las funciones básicas e inventan nuevos usos para el soft.

En segundo lugar, el software exitoso también sobrevive más allá de la vida normal de la máquina durante que se escribe por primera vez. Si no son computadoras nuevas, al menos discos nuevos, pantallas nuevas. Cambian  las impresoras; y el software debe adaptarse a sus nuevos vehículos de oportunidad. 

En resumen, el producto de software está integrado en una matriz cultural de aplicaciones, usuarios, leyes y vehículos mecánicos. Todos ellos cambian continuamente, y sus cambios inexorablemente fuerzan el cambio en el producto de software

invisibilidad

El soft es invisible e imperceptible. No puede ser explicitado en un espacio , como la geometría (no en uno sino en muchos gráficos superpuestos)

...

Los términos mas adecuados serian: "esenciales y accesorios"


Obviamente en esos años Brooks creía en aspectos y herramientas que permitirían contener al LOBIZON

-LENGUAJES DE ALTO NIVEL

-TIEMPO COMPARTIDO

-AMBIENTES DE PROGRAMACION UNIFICADOS

-INTELIGENCIA ARTIFICIAL

    "No creo que de aquí provengan saltos revolucionarios en calidad y productividad

    Lo realmente duro en Construir software es: decidir que quiere uno y no: decirlo " 

 -SISTEMAS EXPERTOS

    "Como se pueden aplicar en las tareas del software? ... de muchas maneras

        .Sugiriendo reglas de interfaces

        .Consejos para estrategias de prueba

        .Recordando tipos de bugs y sus frecuencias

         .Optimización

        .etc

        Pero , la mas poderosa contribución seguramente sera: poner al servicio del programador                     inexperto la experiencia acumulada en la asbiduria de los mejores programadores

        La grieta entre los progrmadores promedio y los mejores es enorme (muchio  mayor que en otras         ingenierias)"

-PROGRAMACION AUTOMATICA

    "Todavía es difícil ver como esas técnicas se generalizarían hacia el salvaje mundo de los sistemas ordinarios "

-PROGRAMACION GRAFICA

-VERIFICACION DE PROGRAMAS

    "verificación de programas no significa programas a prueba de errores, pero la matemáticas hasta ahora solo reduce la carga de pruebas. La verificación de programas solo establece que un programa cumple con sus especificación . pero la parte mas dura de las tarea de software es arribar a especificaciones completas y consistentes, y mucha de la esencia de construir programas es de hecho : depurar las especificaciones  "

-HERRAMIENTAS Y AMBIENTES

-REFINAMIENTO DE REQUERIMIENTOS Y PROTOTIPACION RAPIDA

-DESARROLLO INCREMENTAL (CRECER NO CONSTRUIR)

-GRANDES DISEÑADORES

    "Grandes diseños provienen de grandes diseñadores , La construcción de software es un proceso creativo, la metodología puede potenciar y liberar mentes creativas nunca inspirar o inflamar a un esclavo"

...

Creo que los componentes conceptuales de la actividad están consumiendo la mayor parte del tiempo , pero ... no hay  una medida de los conceptos que pueden dar ganancias en la productividad

Entonces deberíamos considerar  los avances que apuntan a la esencia del problema del software , la formulación de esa compleja estructura conceptual .Afortunadamente son prometedores

Nota: ya sabemos que si se formula un problema ... su solución esta próxima! 


viernes, 6 de septiembre de 2024

Sistemas integrados , impacto en la empresa

SISTEMAS INTEGRADOS EXTENSOS

    ANALISIS DE IMPACTOS NO DESEADOS EN LA EMPRESA



Grandes sistemas de informacion , implican un importante esfuerzo de diseño , o sea desiciones planeadas y resolucion de problemas no planeados. 
Los sistemas extensos ofrecen miriadas de caracteristicas , posibilidades de parametrizacion , acoplamientos no desdeados y etc, etc,etc. Lo llamamos "disparate systems". 
Ha sido habitual en la historia de las pymes que:al crecer , los requerimientos funcionales  han requerido de sistemas "integrados" , y obvio ... la oferta de soluciones   integradas tipo ERP , CRM y otros desarrollos "en suite" han superado ampliamente la compejidad pronosticada hace muchos años atras. 
Todavia no hay "balas de plata" (no silver bullets, Brooks) que hayan igualado los saltos de estandarizacion y produccion quehace años existe en el hardware y con ello la generacion de disminuciones impactantes en los costos
...
Revisemos algo de nuestra realidad

 IMPACTO DE LA TECNOLOGIA IMPERFECTA

Cualquier diseño tiene las limitaciones de la tecnologia de hardware y software utilizadas y de el equipo que resuelve como sirven a los propositos de la empresa


- Fragmentación

diferentes partes de una actividad esencial, se ejecutan en diferentes procesadores

La fragmentacion oculta lo esencial del mismo modo que :romper una delicada pieza de cristal destruye su forma original  

-Redundancia

La tecnología requiere y hace posible al redundancia de datos y procesos.

eso mas la necesidad de independencia de actividades  hacen que la redundancia de componentes sea parte común de la implementación de un sistema

-Extrañeza 

La tecnología y los recursos que se utilicen hacen necesario datos y actividades que no son requeridas por el sistema esencial , pero son necesarias para superar las limitaciones de los recursos utilizados

Esos temas se clasifican en:

    .Relacionados al transporte de datos

    .Relacionados a la administración de datos

-Complejidad

Muchas veces actividades y datos son aplicados a una actividad esencial de alguna manera innecesariamente compleja. generalmente con transformaciones intermedias , sincronizacion y adaptacion 

-Conglomerados

Esto es la otra cara de la fragmentación. Fragmentar crea un abanico de datos y actividades que proveen los trozos que la tecnología utilizada puede manejar. Aparecen como un conglomerado que oculta y complejiza el proposito de las actividades esenciales

-Vastedad

Clásico de los ERP : Incorporan objetivos tan extensos que se requieren tantas caracteristicas! ... ESO oculta  la esencia del sistema y  sus propositos y parecen imperceptibles sin un esfuerzo importante

fuente consultada: Essential systems analysis . M.Mcmenamin & Jhon F. Palmer

⇒SISTEMAS INTEGRADOS ... (matrimonio desparejo)

La relacion con un integrado tipo ERP , suite de aplicaciones , CRM ..., etc (sea en la empresa (on premise),o en la nube (on cloud ,saas ) o cualquier modalidad ), nos meterán en una relacion sumamente asimétrica.

Muy resumidamente: Los objetivos y problemas de los desarrolladores pueden no ser en absoluto los de su empresa ,cuanto mas "lejanos" estén , menos interés particular por su empresa ! (algunos no los conocen y no tienen ideas de SUS problemas)

Un integrado puede requerir de un importante trabajo de "adaptación" de los propósitos particulares de su empresa a los propósitos del sistema integrado .

Un ERP esta orientado a una industria , un canal , un segmento , tienen millones de parámetros y cientos de "módulos", su empresa deberá acomodarse y optar por lo mejor de ellos disponible

Si eso genera esfuerzo en la empresa ... suerte en la implementación ! 

Algunos de los clásicos "problemas" de la llegada de u ERP :

-La implementación

    .costos Iniciales

    .Tiempos hasta institucion del soft

-Mantenimiento y Actualizaciones

    .Costos Continuos

            .Actualizaciones

            .Soporte Tecnico 

      .Compatibilidad y obsolescencia

-Flexibilidad y Escalabilidad

        .Rigidez

        .Escalabilidad Cuestionable (costo y tiempo)

-Seguridad y Cumplimiento

        .Manejo de amenazas

        .Cumplimiento normativo

-Problemas de integración

        .Compatibilidad

        .conectividad

        .Flujos de información

fuente consultada :www.axonconsulting.com/blog