Está en la página 1de 11
3119/2020 Laistora dela Ingenieria de software - Ouracademy Ouracademy La historia de la Ingenieria de software a Diana © historia ingenieria de software Quintanilla personajes del software Una resumen del articulo realizado por Grady Booch por el aniversario de los 50 aftos de la Ingenieria de software: The History of Software Engineering 4Como se inicié la ingenieria del software, cual es el origen del término, exactamente qué es, que eventos marcaron e hicieron que evolucione, que debo hacer como ingeniero de software? Este post ayuda a aclarar a todas estas interrogantes, gracias al excelente articulo de Grady Booch, uno de los creadores de UML. Puedes ver el Webinar original de Grady Booch en: hitpsfour-academy.oralposs/software-engineering-history/ am sv9/2020 Laistora dela Ingenieria de software - Ouracademy Hace no menos de 100 afios las computadoras no existian, eran las personas que se encargaban de realizar el procesamiento manualmente, en especial las mujeres jugaban un rol fundamental en ello. Por ejemplo, en los afios 1800s, en Harvard, las mujeres se encargaban de muchas de los calculos matematicos usados en la astronomia, a este equipo se le conocio como "Computadoras de Harvard", aunque no existian computadoras digitales en si. Sin embargo el término “digital” aparecio a mediados del afio 1942 cuando George Stibitz aplico las ideas de George Boole a los dispositivos electromecanicos. El término "Software" vino una década despues, gracias a John Tukey. Pero y que del término “ingenieria de software"? Origen del término ‘Ingenieria de oftware’ Muchas personas sugieren que fue Friedrich Bauer quien acufio este termino en la conferencia de ingenieria de software de la OTAN en 1968, otros creen que fue Anthony Oettinger, el cual uso este termino en 1966 para hacer referencia a la distincion entre ciencias de la computacion y el desarrollo de sistemas intensivos de software, Sin embargo, afios atras, en la edicién de junio de 1965 de la revista ‘Computers and Automation’, aparecié un anuncio de trabajo buscando un “ingeniero de sistemas de software". hitps:lour-academy orgpossisaftware-engineering-histry! am sv9/2020 Laistora dela Ingenieria de software - Ouracademy Pero no fueron ninguno de los anteriores, Grady Booch sostiene que todos sus datos apuntan a que Margaret Hamilton usé por primera vez el término ‘ingenieria de software’ para distinguir su trabajo de la ingenieria de hardware mientras trabajaba en un programa espacial, el famoso proyecto Apollo y el Skylab, entre 1963 y 1964. Ingenieria de software vs Ciencias de la computacion La diferencia entre ellas, es parecida a la diferencia entre la ingenieria quimica y quimica: ambas son itiles y validas; ambas tienen sus conjuntos particulares de prcticas; ambas son cosas muy diferentes, La ingenieria de software es un arte y una ciencia, es el arte de lo practico. La ingenieria en todos los campos tiene que ver con la resolucion de fuerzas, Podemos pensar sobre fuerzas en una materia que permitan mantener el equilibrio de tal, en ingenieria de software, también se debe equilibrar cosas, estas son: el costo, el cronograma, la complejidad, la funcionalidad, el rendimiento, la confiabilidad y la seguridad, asi como las fuerzas legales y éticas. Booch explica muy bien con lo mencionado anteriormente que es la ingenieria de software, y es facil deducir que debemos hacer como ingeniero de software, debemos mantener el equilibrio, hacer que el software que hagamos no caiga al lado oscuro. La tecnologia ha cambiado mucho a lo largo del tiempo, sin embargo los fundamentos de la ingenieria atin siguen siendo verdad, aunque como veremos, cada época descubre nuevas verdades acerca de la ingenieria de software.. hitps:lour-academy orgpossisaftware-engineering-histry! ait 3119/2020 Laistora dela Ingenieria de software - Ouracademy Del siglo XIX al XX: computadoras humanas El mundo de la computacién tiene raices muy antiguas, desde Ada Lovelace quien quizé fue la primera persona en comprender que la programacién era algo importante (mucho antes que existiera cualquier computadora en si) al gran aporte que dio George Boole ala légica, Ademas del rol de las "Computadoras humanas" (que vimos antes) - y que sorprendentemente se organizaban de una manera similar a las las practicas contempordneas de desarrollo gil, y que con el pasar los afios (el siglo XX), y que a medida que los problemas de computacién eran mas grandes y con el apoyo de dispositivos mecénicos para hacer calculos, se organizaban en filas, donde cada fila se encargaba de un calculo y se lo pasaba a la siguiente fila, organizandose en forma de lo que conocemos, en arquitectura, como pipelines. De la Gran Depresion a la Segunda Guerra Mundial: el nacimiento de la computadora electronica En esos tiempos el mundo industrial, como ahora, buscaba la eficiencia en sus procesos, muchas de las ideas de Frederick Taylor emerger. Ademés los Gilbreth promocionaron el concepto de diagramas de proceso, los predecesores a los diagramas de flujo. Pero la gran Depresién aparecio, con el fin de combatirla, el presidente Roosevelt, lanzo muchos proyectos. Uno de ellos el proyecto de las Tablas Matematicas, liderado por Gertrude Blanche, quien desarrollarla muchas practicas para hacer computacién manual (Computadoras humanas!). En 1940, Wallace Eckert, en base a ello desarrolaria la 1ra metodologia de computacién. Mientras que en Europa los aires de que sucederia una guerra estaban ocurriendo, el mundo de la computacién digital habia sido iniciada cuando George Stibitz aplico las ideas de logica de George Boole para construir el primer sumador digital hecho a base de réles electromecanicos. Tiempo después nace una nueva forma de pensamiento: el concepto de un ordenador electrénico programable, siendo una de las primeras el famoso ENIAC. hitpsfour-academy.oralposs/software-engineering-history/ amt 3119/2020 Laistora dela Ingenieria de software - Ouracademy Passi te VNU i Pi FA z E Grace Hooper; muy en el espiritu de Ada Lovelace, quien tenia la idea de que el software podria ser una cosa en si misma, se percato que se podria crear un lenguaje mas cercano a los humanos, un lenguaje de mas alto nivel, lejano al hardware. De hecho, uno podria usar su computadora para traducir estas expresiones de alto nivel al lenguaje de maquina, esto marcaria el inicio del compilador. Mas importante, en plena Segunda Guerra Mundial, Alan Touring, daria las bases de la computacién moderna, de donde Tommy Flowers pondria en practica estas bases para construir el famoso Colossus. Después de la Segunda Guerra Mundial: crecimiento de la computacion Al final de la Segunda Guerra Mundial, empezabamos a ver la informatica aplicada a dominios problematicos mas alla de la guerra, Herman Goldstine, en base a las ideas de los Gilbreth, junto a John von Neumann, desarrollarian los diagramas de flujo. Maurice Wilkes, David Wheeler y Stanley Gill crerian el concepto de subrutinas, el poder de descomponer algoritmos. John Backus, en base al trabajo de Grace Hooper, desarrolaria el famoso lenguaje de alto nivel Fortran, quien dominaria el mundo por muchos afios. El mundo comercia empezaba a usar las computadoras, quienes daban nuevas oportunidades de crecimiento. La 1ra computadora comercial fue de Lyons Electronic Office (LEO). John Pinkerton, el chief engineer de LEO, se dio cuenta de que muchas tareas de programacién se volvian a repetir al desarrolar las computadoras, el hitpsfour-academy.oralposs/software-engineering-history/ om srrz020 La historia dla genoa de soars -Curacademy junto estas tareas en librerias, formando lo que hoy conoceriamos ‘como Sistemas Operativos y frameworks. Con el famoso System/360 de IBM, se dio la idea de separar el software del hardware, y con ello ahora las personas podrian desarrollar separadamente software. No solo eso, con ello personas como Dina St. Johnson, desarrollarian las primeras empresas de software, otras empresas podrian externalizar el desarrollo de software a ellas!. Incluso una organizacién SHARE, la llevo al siguiente nivel, al brindar una plataforma para desarrollar software que ellos no controlaban, es decir, fueron los precursores del movimiento open source. El ascenso de la guerra fria: madurez de la computacion y el nacimiento de la ingenieria de software La Guerra Fria generé otro conjunto de fuerzas que llevaron a la ingenieria de software a la madurez. Con el fin de defenderse ante la Union Sovietica, el sistema SAGE se desarrollo, este daria grandes aportes al mundo del software: el desarrollo de interfaces humano-computador y la toma de conciencia de desarrollar software en ambientes distribuidos, Es decir, desarrollar software se habia vuelto un problema central y complejo. En los afios 60s, era notorio el avance del software comercial, que se estaban desarrollando sistemas complejos (como el SAGE y en general por la industria espacial), es en este contexto donde Margaret Hamilton acuiié el término “ingenieria de software” y en el que la OTAN declaré que habia una “crisis del software". Claro, en esas epocas las computadoras eran muy caras, existian pocos programadores, pero las cosas cambiarian con el ascenso de hitpsfour-academy.oralposs/software-engineering-history/ em 3119/2020 Laisa dea genia de sofware -Curcademy las microcomputadoras. Con este cambio es que nace el insight de que la ingenieria de software, no solo era un proceso técnico sino tambien muy humano, los principios basicos de la gestién de proyectos serian dados por Fred Brooks, descritas en The Mythical Man Month. De los ajios sesenta a la Aftos ochenta: la maduracion En esta etapa se introdujo la programacion modular junto con conceptos de acoplamiento y cohesién como mecanismos de composicion de algoritmos, Edsger Dijkstra adopté un enfoque formal y nos dio la idea de la programacién estructurada, mucho despties Ole Dahl y Kristen Nygaard, crearian Simula, el 1er lenguaje de programacion orientada a objetos. Las ideas de Barbara Liskov sobre tipos Abstractos de Datos y el modelado de entidad-relacion por Peter Chen y muchas mas conceptos, aportarian en esta época, y con ello se generaron las primeras metodologias de ingenieria de software, por ejemplo, Winston Royce desarrollaria el famoso proceso en cascada (muy aparte de ello, el apoyaria la idea de desarrollo iterativo y de prototipos), y los métodos de andlisis y disefio estructurado como los de Ed Yourdon, Tom DeMarco, entre muchos otros. Ademis de los muchos otros trabajos como el de John Backus (sobre functional programming), Leslie Lamport (distributed computing), entre otros. Los afios ochenta y mas adelante: la edad de oro Debido a los crecientes problemas de calidad del software, el auge de los sistemas intensivos de software, la globalizacién del software y el desarrollo de sistemas distribuidos, nuevos enfoques fueron necesarios, Es aqui cuando las ideas de Ole Dahl y Kristen sobre programacion orientado a objetos (00) dio lugar a lenguajes de programacién como Smalltalk, C with Classes (posteriormente renombrado a C++), Ada, y muchos otros. Los metédos de anilisis y disefio estructurado (como los de Ed hitpsfour-academy.oralposs/software-engineering-history/ 7m s1raz020 La historia dela Ingenieria da software - Ouracademy Yourdon) se adaptaron al enfoque OO, ademas de nuevas ideas de disefiar OO, como los de Rebecca Wirfs-Brock sobre Responsability Driven Design, Stephen Mellor sobre Modelos de Dominio Conceptuales, y las notaciones para modelar objetos como el. método Booc! OMT, estos ltimos 3 se unirian para formar UML. Nacerian entre otras: * El modelo de vistas 4+1 por Philippe Kruchten * El modelo espiral del desarrollo de software y muchos aportes ala economia de desarrollar software por Barry Boehm * Métricas de software por Capers Jones * El modelo formal clean-room por Harlan Mills * La programacién literaria por Donald Knuth * El modelo de madurez de capacidades (CMM) por Watts Humphrey * Modelos de component-based engineering Los afios noventa y el milenio: la era de las disrupciones hitpsfour-academy.oralposs/software-engineering-histry/ am 3119/2020 Laistora dela Ingenieria oftware - Quracademy Y el boom de Internet habia llegado al mundo de los negocios, de pronto ahora habia una nueva plataforma, todo ahora pasaria a ser distribuido! Los clientes tendrian acceso directo desde cualquier parte del mundo a los sistemas y los sistemas se interconectarian con otros programas externos. Todo ello trajo que la Integracién Continua y el desarollo Iterativo sea la forma principal de desarollo, el mundo de patrones se lanzaria a la fama con el famoso libro de la Banda de los Cuatro (Gang of Foun), y se expandiria a otras areas como la organizacién (ver los trabajos de Jim Coplien), de arquitectura (Mary Shaw y David Garlan). Un cambio parecido pasaria con la llegada de los dispositivos moviles, del mundo de servicios web se iria a un mundo de microservicios, y el crecimiento de infraestructuras Web aparecio y pronto seria la plataforma por defecto gracias a compaitias como Amazon, Google, Microsoft, IBM, Facebook, entre otras. Y claro nuevos lenguajes vienen y van: Javascript, Python, Swift, Rust, .. y lo mismo sigue sucediendo con los frameworks: Bootstrap, JQuery, React, MongoDB8, Flutter - y seguira dandosé. Y claro, en los afios 90, aparecieron los métodos giles, aunque en 1986, Hirotaka Takeuchi y Ikujiro Nonaka acufaran el término “Scrum” como un enfoque de desarrollo de productos, Ken Schwaber y Jeff Sutherland lo adaptarian al mundo del software, Kent Beck, casi en la misma época lanzaria eXtreme Programming y en si muchas nuevas métodos y practicas aparecerfan como la técnica de Refactorizar (popularizada por Martin Fowler) que se unirfan bajo un mismo término paraguas "Agile" en Febrero del 2001 hitpsfour-academy.oralposs/software-engineering-history/ ont 3119/2020 oftware - Quracademy Una nue} aparecid Andrew Internet learning} La dé Actualmente estamos en un nuevo cambio, aunque la 1A ha existido decadas, ella esta influyendo el mundo de la ingenieria de software de una forma distinta a como antes. Todo ello gracias al crecimiento de la data de todas partes (imagenes, videos, audio) y el poder de la computacién!, el Big Data, ha hecho posible el uso de la lA. Y ya hemos visto grandes hitos, como el de AlphaGo. Sin embargo, como industria recien estamos viendo como impactard la IA a este campo, ¢Qué ciclo de vida es el mejor para estos componentes que aprenden por si sola? gLa gestion de la configuracién como encaja cuando la data es mas importante que la red neuronal en si? {Como se disefia estos tipos de sistemas donde partes de las operaciones no podemos explicar o completamente confiar? Agregale a estos problemas, los cambios que traeran las nuevas tecnologias como la computacién ctiantica, la Realidad Aumentada, el Internet de las Cosas... La ingenieria de software ha crecido y cambiado mucho, sin embargo los fundamentos permanecen: desarrollar abstracciones (de Lenguaje maquina a alto nivel, de subrutinas a componentes y de componentes a servicios); separar intereses; distribuir responsibilidades (sea en Sistemas Operativos, en la gestién de proyectos o al disefiar software); buscar simplicidad. Y seguiran habiendo cambios pero los aspectos fundamentales siempre permaneceran, hitpsfour-academy.oralposs/software-engineering-history/ tom 3119/2020 © Cambios y revisiones: Laistora dela Ingenieria de software - Ouracademy 31/08/2019: initial SE history article completed version 31/08/2019: initial review until human computers section Si te fue Util este articulo, por favor compartelo. Apreciamos los comentarios y el aliento. Quiza te pueda interesar... 3 amigos y la historia de UML Una breve historia de UML por parte de 3 amigos, el porqué del termino Unificado y como esta historia se repite con los metodos agiles, lean y los lenguajes de programacién. hitpsfour-academy.oralposs/software-engineering-history/ Cuestionando las metaforas enel desarrollo de software Te haz topado con los terminos Fabricas de software, Arquitectura de software, Ingenieria de software..son metaforas que pueden estar haciendo dafio » 9069 Por: Mas control de versiones Si usamos Git, SVN y varios control de versiones al desarrollar software, zporqué no aplicamos lo mismo en otras areas, en nuevas aplicaciones? wm

También podría gustarte