lunes, 22 de mayo de 2023

 INGENIEROS EN EL SOFTWARE

SNIPPETS 

 CONCEPTOS de area general: Sistemas 


Ecuacion de grado 1,Segun Gaturro (para el dia del ingeniero del 2020) resuelve la pregunta ... 

que hace un ingeniero?


En la ecuacion de gaturro no esta explicito pero todos los "ingenieros" lo tenemos absolutamente presente: trabajamos con objetos concretos y complejos , gralmente tan complejos que para poder hacer nuestro trabajo debemos claudicar genialidad por estandares establecidos ; nuestros productos deben tener evolucion controlada  y ADEMAS incorporar la transdisciplinariedad a nuestro trabajo .
Los objetos producidos (los productos) tienen propiedades concretas , con metricas bien definidas y estandares de calidad y capacidad aceptados por la industria
SISTEMAS ...

Revisemos un marco para proyectos en el ambito que yo me desenvuelvo: sistemas de produccion

Producir estransformar unos insumos en productos utiles que aportan sus propiedades a la civilización

Un sistema de producción es cualquier sistema que transforma entradas en salidas útiles. 

Cuando no referimos a sistemas , es porque productos complejos requieren  que interenga mas de una "parte"  . Es natural pensar en fabricas ,pero... un subsistema de producción que esta presente en toda actividad humana es : un sistema de información. Toda actividad de transformación necesita de información o señales para transformar sus entradas en forma controlada y optima.

"...Un sistema de producción en una organización puede ser de cualquier magnitud. Reciprocamente la unidad organizativa que contiene uno o mas sistemas de produccion tambien puede seer de cualquier magnitud... Esta definición permite aplicar los conceptos referidos al diseño de sistemas de produccion , utilizados en este libro , con prescindencia de la magnitud de los sistemas o la índole de la unidad organizativa ... " (G.Nadler Diseño de sistemas de produccion)

Toda unidad organizativa  es afectada por una ley o principio muy conocido: P-R-S

Propositos-Recursos-Sistemas :se desarrollan en equilibrio balanceado . (El cumplimiento de este principio auspicia la evolucion controlada de los sistemas de información)



Cualquier cambio  en cualquiera de las 3 componentes repercutirá en cambios en las otras para mantener el equilibrio.

Si somos geniales con los sistemas , seguramente necesitaremos recursos diferentes y sera factible alcanzar nuevos propósitos. Del mismo modo la disponibilidad de recursos nuevos aunque sea dentro del área de sistemas de información , inevitablemente repercutirá en los  método de trabajo (sistema) y en los propósitos preexistentes. Finalmente nuevos propósitos , plantearan nuevos requerimientos y se necesitaran cambios en los recursos y en los sistemas.

Pensemos solamente en nuestra area. Si hay cambios de equipamiento para producción estaremos afectados y si hay proyectos por nuevos productos , habrá que cambiar los sistemas de información

los cambios en los propósitos y en los recursos de transformación serán  "propiedad" de otras profesiones (generalmente) . De alli la trasndisciplinariedad ; porque finalmente el proyecto de sistema de información será controlado o aceptado por el sistema concreto que lo requiera ,donde sus propositos y sus recursos impondrán requisitos específicos.

Me imagino que algunos saltaran.. Eso es managment! no es software engeneering !

Ingenieria de software no es solo programacion 

PLEASE RESET YOUR MINDS!    😊


 




lunes, 27 de marzo de 2023




Un nuevo Tao para el software
Si quieres algo que no existe , tendrás que hacerlo
y si no hay nada parecido ,tendrás que investigar cual es el problema que hay que solucionar .
Cada uno elije sus batallas , las mías son los problemas de producción y la administración de sistemas de producción. Entonces el dominio esta bastante claro ... ahora que se requiere?
Investiga , descubre , reconoce , rodea lo desconocido de conceptos conocidos , haz perceptibles los diferentes requisitos!
En estas "batallas" debes salir airoso , debes poder formalizar los requisitos
Entonces estarás listo para un diseño
Conoce a fondo un lenguaje de computación para poder construir esa maquina de soft que te quita el sueño
deberás probar que hiciste algo que sirve. PERO ... debe servir para la solución que eljiste !
Luego llegara el alivio de que tu/s maquinas estén en los dedos de los usuarios , lista/s para funcionar
Grrr. ahora hay que conseguir que se use! , el usuario deberá instituirla como parte de su trabajo
y las maquinas que hiciste ... silenciosa,mente empezaran a llenar el mundo de sus esperados servicios.
Así haremos un mundo mejor
PERO ... el mundo cambia y eso hace que nuestras maquinas deban cambiar
Estarás de cabeza en el viejo garage del mantenimiento
Y finalmente , una vez muy muy lejos , tus maquinas sera sacadas de servicio.
El ciclo se habrá cumplido
Y nosotros estaremos felices de haber colaborado a mejorar la vida de los que se animaron a nuestras maquinitas de soft. Seguro aportamos un granito de arena a la evolucion.
OH y entonces .... que nos ayudara a que todo eso suceda de una forma controlada eficaz , efectiva y eficiente... ?
Dicho brutalmente (como o ya lo dijo antes un tango) : Es la INGENIERÍA  gilito embanderado ! (chan , chan!)



Con conocer de computadoras y su programacion no alcanza
Construir eficientes maquinas de soft no solo implican lo que se estudia en computación
Ser experto o animarse  una herramienta que a partir de la información capturada genere un programa no alcanza
Una herramienta CASE facilita las cosas , un moderno lenguaje orientado a objetos puede ser una causa de una mejor maquina de soft ... pero es es solo una parte


Estudiando ingeniería conocí los sistemas de producción y los seductores problemas de fabricar algo en grandes escala. Conocer los modelos y decisiones que se Debian tomar para conseguir sincronizar hombres , maquinas y materiales me llevaron indefectiblemente a ser un estudioso de la plantificación   . Estudie la estadística necesaria para implementar modelos de plantificación, también la matemática financiera necesaria para la evaluación de proyectos
Y .... esos modelos solo eran posibles con la computadora.



Así comienza el viaje que todavía no termina.
Siempre me fascinaron los sistemas de producción y facilitar al hombre que consiga los resultados deseados. Estudie los sistemas de información que servían de fundamento a las decisiones y a los trabajos... y ya saben eso solo es posible con la computadora
Me atraían los mecanismos... las maquinas.
Y yo quería construir maquinas de software.
Mecanismos que procesen datos y produzcan información para incorporarse en el torrente de las decisiones y en el del trabajo.


El mundo que ves , no es el real. El real se percibe por el entendimiento
Para entender y perfeccionar el mundo real  , mejor dividirlo en capas
En la capa mas baja: el mundo de las 10000 cosas , en la mas alta el mundo ideal de los conceptos que rigen el mundo de las 10000 cosas
En la capa mas baja reside el usuario. que no es mas que un objeto, pero de carbono

La primera paradoja es que para acceder al TAO hay que entender la capa mas baja. Porque allí están las llaves que harán útil lo que se encuentra en las capas mas altas .El Tao nos permitirá navegar entre las capas

Las estructuras creadas para modificar el mundo de las 10000 cosas son como naves en el rio del tao
Lo concreto de las naves es diferente a lo concreto del TAO
Las naves son duras , el mar es blando ...
Los ingenieros construimos maquinas con el objetivo de fluir por el tao con mejor perfección . Lo que hagamos ira a parar al mundo de las 10000 cosas. allí nace , evoluciona y muere (no hay que trabajar para perpetuar la maquina )

No hay porque preocuparse , hay mundos paralelos , por lo menos uno para el que analiza , otro para el que diseña , otro para el que construye , otro para el usuario , otro para el que sin hacer nada se beneficia.

No deben haber conflictos entre todos esos mundos , porque se tocaran y se modificaran  entre ellos (como sera eso...  puede que solo podamos conjeturar lo) pero ... siempre bajo control , caso contrario llega el caos
El caos es el NO TAO , es  la derrota del maestro y sus seguidores. es el fracaso de la concepción de mundos , de las ideas utilizadas

El TAO  no es estático , fluye... y para ayudar a fluir hay que construir aparatos que ayuden a la nave a fluir o sea ... maquinas flexibles (muy blandas)

Quizás el TAO para el software es como un paraíso, allí no hay costos ni demoras ni distancias ni fronteras ....ni protocolos , todo lo que es necesario esta, todo lo que se necesita se tiene . Pero como todo paraíso: es inalcanzable , solo una fuente de inspiración ,perceptible  si utilizamos un  protocolo
Hay que trabajar par entender , porque lo que no se entiende no se ve (y viceversa)
Un mapa no es el camino , un plano no es el edificio , un programa no es la maquina ... lo sera cuando sea parte de la maquinaria del TAO
Para los humanos , también , las maquinas no son el fin ; son parte del camino

viernes, 9 de diciembre de 2022

                GRANDES PROYECTOS , GRANDES ESFUERZOS 


Hasta principios de los 80 el mundo de la computacion en serio era de las mainframes o minis

IBM , Digital , VAX , Pdp , wang , eran los nombres que sonaban en los grandes centros de computo

Cada empresa hacia el hard y el soft , lo proyetos eran monstruosos!

Como se hacia eso? , recomiendo leer : 

    El alma de una nueva maquina (Tracy Kidder) 

Cual era la problematica desde la gerencia de sistemas? 

    el mitico hombre- mes  (fred brooks)

Se pueden bajar gratis  de mi drive:

El alma de una nueva maquina : https://drive.google.com/file/d/1RflomscW2S3dqQh4T9JSNdAy5L1dBwuW/view?usp=share_link

el mitico hombre- mes:
https://drive.google.com/file/d/1iJ7NTfQAoL2GUdJBX7pckFDU78htv8mU/view?usp=share_link

viernes, 13 de mayo de 2022

 CAPITULO (2) INFORMACION Y DATOS


Recordamos: nuestro sistema objeto sera la empresa o parte o dentro de la empresa

Un programa y una computadora pueden intervenir de muchisimas formas en todos los aspectos de una empresa .

► Hay muchos propositos para lo que puede ser necesario ese programa que vamos a hacer.

Pero básicamente hay que concentrarse en algo:

►SISTEMAS DE INFORMACION

Para conseguir los propositos asignados a una empresa , se organizan sus recursos , se planifica la acción , se dirige los procesos de transformación de insumos y se controla los resultados 

El clásico enfoque de la estructuracion es el de:  los sistemas en equilibrio controlado.

Un proceso insume recursos y produce una salida. para cada proceso se ha instrumentado un sistema de control de resultados. en función de los resultados se corrige el funcionamiento  del proceso hasta un estado de equilibrio que genera los resultados esperados

Los procesos de transformación generan muchos datos  que  llevan mensajes solo si hay un observador.

Un proceso insume recursos y produce una salida. para cada proceso se ha instrumentado un sistema de control de resultados.

Como se sabe que esta "controlado"? porque cuando se planifico como se desarrollaría la "acción" , también se decidio que información será relevante para controlar los resultados 

Con los datos generados , el observador a cargo del control puede armar información



AHA! , La información que manejan los programas !  😤

NO!  😕

► Los datos se estructuran en mensajes , los mensajes se estructuran en información

► Los programas manejan datos y estructura de datos . La información son datos con sentido para el observador humano. 

Entonces ...  eres programador y quieres hacer programas que sean de utilidad para el proceso de funcionamiento de una empresa.

Entonces ... debes conocer a fondo las estructuras de datos de la programacion y las estructuras de datos de los repositorios (base de datos).

Algoritmos + estructuras de datos=programas enunciaba hace muchos años N. Wirth  .Esa idea es la base de lo que hace un programador.




miércoles, 11 de mayo de 2022

 capitulo (1)   QUE LO QUE

Un modelo para la empresa donde trabajaremos ...


 



Ok  ... sabes usar la computadora y un lenguaje de programacion

-Y que haras con eso? ...:

-Programas?

-Para que? ...

El sistema real del que sera parte tu "programa" , es lo mas importante que hay que conocer.

Alli es donde tu "programa" desplegara sus virtudes y hara que algo sea diferente a como era antes.

Los requisitos , las restricciones , las preferencias , daran lugar a las metricas del exito ... o al reconocimiento del fracaso.

El sistema real o concreto donde vivira tu programa es lo que algunos llaman : "EL SISTEMA OBJETO"

En el sistema objeto , se medira si tu programa hace/genera lo que se requirio , cuanto esfuerzo se invirtio (costo) , cuantos recursos se utilizaron.

En Este caso mi interes perSonal ha sido: la empresa . 

Por lo tanto lo primero es:  hacer algun modelo generico de la empresa , mostrando la relacion entre ella y los actores habituales :Proveedores de material , proveedores de capital/dinero, clientes 

Podemos hacer simplemente rectangulos para los actores  y flechas para lo que entrega/reciben

Luego  hay que subdividir  el rectangulo de la empresa segun los basicos procesos: ce compra , de recepcion  de mercaderia , almacenamiento , transformacion a producto terminado (produccion), vent , expedicion

Lo segundo es : dibujar flechas que indiquen  el flujo de informacion entre los actores y procesos

Lo tercero es : identificar actividades de control sobre la informacion

Bueno , se trata de modelar la empresa que nos requiere y su ambiente inmediato



... Y los programas ...?

NO MOLESTAR FALTA MUCHO PARA ESO!


 Simplemente hay que hacernos una imagen mental del modelo donde nuestro programa hara cambios importantes. NO SE PRETENDE SABER A FONDO , pero si pueden investigar a fondo mejor . cuanto mas se sabe de algo menos cosas son imperceptibles y fuente de futuros problemas




miércoles, 29 de diciembre de 2021

 Modas y Evolucion

(Un viejo ensayo del 2018 )

Desde que empecé a analizar la evolución de las empresas (originalmente solo las industriales) me llamo la atención los conceptos de moda

Parece que al principio el problema de las estructuras organizativas era el santo grial y entonces toda solución incluía un organigrama y un manual de funciones.

Después avanzaron sobre  la ecuación de utilidades Util.=Venta - costo

Durante mucho tiempo las soluciones apuntaron a disminuir costos .

En esa época las soluciones eran utilizar materiales mas baratos diseños que utilicen menos material , maquinas que cumplían múltiples funciones . En Gral. era diseño de ingeniería  

 Parece que por este camino rápidamente se llego a un limite, entonces se avanzo sobre las ventas. Cuando fue complicado se empezó a trabajar sobre la productividad y las palabras racionalización , métodos  y los enfoques sistémicos eran imprescindibles.La ingeniería industrial era una necesidad  Esto también se volvió marginal y empezaron a verse las soluciones basadas en marketing , veíamos los términos mercado y valor por todos lados.

Cuando el rendimiento de estas soluciones se vuelve marginal se volvió brutalmente a las viejas soluciones que tenían como condición  la escala (el tamaño) así desembarcamos en la globalización  y un termino un poco odioso que daba vueltas mas fuerte que antes era: reingenieria.

Ahora el temino es conocimiento o inteligencia de negocios

Como verán se fue evolucionando de factores aislados a factores integrados o sistémicos y de recursos concretos a otros cada ves mas intangibles

En medio de eso estamos nosotros con nuestro esfuerzo simultáneo de crear soluciones y de no caernos en el camino.

Porque las nuevas soluciones no niegan las anteriores, al contrario las abarcan y eso es mucho esfuerzo

Las soluciones que requiere una empresa puede requerir de nuestra participación

Si participampos solo como expertos en hacer que el codigo de un programa haga algo,     estamos cediendo posiciones a otro participante

 Entonces es impresciondible capacitarse para aumentar el “campo de la inteligencia de nuestras soluciones” ya no se liquidan sueldos o se controla inventarios ….solamente

domingo, 10 de octubre de 2021

DEL CONCEPTO AGILE EN EL DESARROLLO

Nuevos recursos , repercuten inebitablemente en nuvos metodos de transformacion.

El metodo de produccion de software tuvo que adaptarse a nuevas herramientas y nuevos propositos requeridos por sus consumidores.

El metodo conocido como "agile" fue una renovada y sobre todo "gerenciable" manera de organizar , dirigir y controlar la produccion de software bajo el estres de los requisitos y herramientas actuales.

El enfoque que se conoce es un marco muy comodo por los ingenieros. No es una novedad, mas bien esta maduro como para que apareca otro nuevo mas efectivo eficiente y eficaz.

"Desarrollo ágil de software es un conjunto de métodos de desarrollo de software en el que las necesidades y soluciones evolucionan a través de la colaboración entre la auto-organización, equipos multifuncionales. Promueve la planificación adaptativa, desarrollo evolutivo, parto prematuro, la mejora continua, y anima a la respuesta rápida y flexible a los cambios.El Manifiesto de Agile Software Development, (Beck. 2001)también conocido como el Manifiesto Ágil, que por primera vez estableció los conceptos subyacentes de desarrollo ágil, introdujo el término en 2001."

... 

"Los defensores de los métodos ágiles ligeros sostienen que están regresando a las prácticas de desarrollo que estaban presentes temprano en la historia del software."

"El Desarrollo de software ágil, es un grupo de métodos basados en el desarrollo iterativo e incremental. Bajo esta filosofía, los requerimientos y soluciones evolucionan por medio de la colaboración de equipos multifuncionales autorganizados.

El Manifiesto Ágil fue promulgado en 2001 y desde entonces el movimiento ágil a continuado evolucionando, con exponentes como el Desarrollo basado en comportamiento (2006), el Lean Software Development (2003) y el Kanban aplicado al desarrollo de Software (2007)."

del manifiesto agile

Manifiesto por el Desarrollo Ágil de Software




Estamos descubriendo formas mejores de desarrollar
software tanto por nuestra propia experiencia como
ayudando a terceros. A través de este trabajo hemos
aprendido a valorar:

Individuos e interacciones sobre procesos y herramientas
Software funcionando sobre documentación extensiva
Colaboración con el cliente sobre negociación contractual
Respuesta ante el cambio sobre seguir un plan

Esto es, aunque valoramos los elementos de la derecha,
valoramos más los de la izquierda.


Agile es un paso mas hacia la real posibilidad de administrar realmente la actividad del software

Observo que los programadores o profesionales de informatica que adoptan los principios agile no registraron que algunnos  derivados adoptados  (por ejemplo SCRUM y LEAN) provienen de un modelo que en sus origenes mas difundidos(toyota) tienen hasta mucho fundamento matematico en base a la produccion repetitiva  , donde hay puestos de trabajo cuyo modelo no son asimilables a un puesto de trabajo en el ambito del software. En un ambiente de produccion repetititva real las herramientas tipo  Kanban son para controlar la sincronizacion de puestos de trabajo en una linea de produccion.