-
Nace Frederick Brooks
Frederick Phillips Brooks, Jr. es un ingeniero de software y científico de la computación, más conocido por dirigir el desarrollo del sistema operativo OS/360, -
Inicios de la Ing. de Software
El término "digital" apareció a mediados del año 1942 cuando George Stibitz aplico las ideas de George Boole a los dispositivos electromecánicos. Cuando aparecieron las primeras computadoras digitales en la década de 1940, el desarrollo de software era algo tan nuevo que era casi imposible hacer predicciones de las fechas estimadas del final del proyecto. -
Primer sistema operativo
El concepto de Sistema Operativo surge en la década de los 50. El primer Sistema Operativo de la historia fue creado en 1956 para un ordenador IBM 704, y básicamente lo único que hacía era comenzar la ejecución de un programa cuando el anterior terminaba. -
Nace Fortran
Lenguaje de programación alto nivel de propósito general, procedimental e imperativo, que está especialmente adaptado al cálculo numérico y a la computación científica. -
Nace Cobol
Cada computadora requería su propio lenguaje y eso suponía aumentar la curva de aprendizaje de los técnicos de las empresas, sobre todo, si la compañía adquiría una nueva computadora. En 1958, se opto que era necesario buscar una nacionalización que permitiese trabajar con un único lenguaje en cualquier computador, así fue como nació el lenguaje de programación COBOL (Common Business-Oriented Language) -
Period: to
Crisis de SOFTWARE
Costo y desbordamiento de presupuesto
Daños a la propiedad: Escasa seguridad de software permite a hackers robar identidades, costando tiempo, dinero y reputaciones.
Vida y muerte: Algunos sistemas en máquinas de radioterapia fallaron de una manera tan catastrófica que administraron dosis letales de radiación a pacientes. La más famosa de estas fallas es el incidente de Therac 25. -
Primera vez que se uso el termino Ing. Software
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 ingeniería de hardware mientras trabajaba en un programa espacial, el famoso proyecto Apollo y el Skylab -
Period: to
Origen del termino Ing. de Software
existen varias teorías del origen del termino ingeniería de software, entre estoy años veremos las principales. -
Anuncio de trabajo buscando un "ingeniero de sistemas de software".
La revista 'Computers and Automation', apareció un anuncio de trabajo buscando un "ingeniero de sistemas de software". -
Distinción entre ciencias de la computación y el desarrollo de sistemas intensivos de software
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 -
Nace La POO
La Programación Orientación a Objetos (P.O.O.) surge en con un lenguaje llamado Simula 67, desarrollado por Krinsten Nygaard y Ole-Johan Dahl, en el centro de cálculo noruego. Simula 67 introdujo por primera vez los conceptos de clases, corrutinas y subclases (conceptos muy similares a los lenguajes Orientados a Objetos de hoy en día). -
Introducción del término Ingeniería del Software
La introducción del término Ingeniería del Software se produce en la primera conferencia sobre Ingeniería del Software patrocinada por la OTAN, celebrada en Garmisch (Alemania) en octubre de 1968. Fue tal la aceptación de esta conferencia que se consiguió un nuevo patrocinio de la OTAN para una segunda conferencia sobre Ingeniería del Software, que tendría lugar un año más tarde en Roma -
Descomposición modular y ocultamiento de información
David Lorge Parnas, propuso una serie de recomendaciones para la descomposición de un problema total en unidades de diseño, o porciones del problema a diseñar. Las unidades de diseño se relacionan mediante interfaces de diseño (Parnas utiliza el término conexiones) las cuales son cualquier tipo de interrelaciones o interdependencias. Las unidades de diseño y sus interfaces de diseño pueden tener o no relaciones con los actuales módulos y
conexiones. -
Metodologías Estructuradas
La formación de los profesionales de la Ingeniería
del Software empieza a centrarse en las metodologías
estructuradas (Warnier, Jackson, Myers, Yourdon y
Constantine, Gane y Sarson, Demarco, SSADM, MERISE,
etc.) que supusieron un avance importante en el análisis
y diseño de software. -
Comienza surgir Metodologías que se usan mas hasta hoy en día
El Dr. Peter Pin-Shan Chen - modelo entidad relacion.
El modelo en cascada, basado en las propuestas de Winston W. Royce -
Programación Orientada a Objetos
Si bien empezaron a finales de la década
de los sesenta con el lenguaje Simula y en los setenta
con Smalltalk, se difundieron sobre todo en la década
de los ochenta con la aparición de C++, Objective-C y
Eiffel. La formación de los profesionales del software
requiere entonces el manejo de las herramientas CASE,
comprender el gran cambio de paradigma que supone la
orientación a objetos, y adquirir conocimientos sobre los
procesos software y los modelos de madurez -
No hay balas de plata
En 1986, Fred Brooks publicó su artículo No hay balas de plata, argumentando que ninguna tecnología individual o práctica jamás haría una mejora de 10 veces en la productividad dentro de 10 años.
El debate sobre las balas de plata continuaron años argumentando que su tecnología favorita sería una bala de plata. Los escépticos no estuvieron deacuerdo. Finalmente, casi todo el mundo aceptó que nunca se encontrará ninguna bala de plata. -
El desarrollo de los servidores web
El físico e informático británico Tim Berners-Lee, quien en 1989 sugirió que el intercambio de información en el CERN (Organización Europea para la Investigación Nuclear) debería realizarse a través de un sistema de hipertexto más fácil y rápido. En 1990, junto con Robert Cailliau, presentó un proyecto que con el paso del tiempo, junto con el primer servidor web, llamado “CERN httpd”, también se creó el primer navegador web y otros elementos básicos de Internet como HTML y HTTP. -
Aparición del Lenguaje de Modelado Unificado (UML) y el Proceso Unificado (UP)
En 1995, Rational Software compró Objectory AB, y en los siguientes años desarrollaron y lanzaron el estándar UML (Unified Modeling Language)
Se trata de un estándar que se ha adoptado a nivel internacional por numerosos organismos y empresas para crear esquemas, diagramas y documentación relativa a los desarrollos de software (programas informáticos).. -
Herramientas ‘CASE’
Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora) son diversas aplicaciones informáticas o programas informáticos destinadas a aumentar el balance en el desarrollo de software reduciendo el costo de las mismas en términos de tiempo y de dinero. -
Concepto de arquitectura de Sistemas Distribuidos (RMI, Corba, COM, DCOM).
El desarrollo de aplicaciones distribuidas enfrenta diferencias de arquitectura, tales como: el hardware, el sistema operativo, el ambiente de desarrollo, el lenguaje de programación e incluso el paradigma de programación, por todo esto ha sido necesario utilizar diferentes tecnologías y mecanismos de desarrollo. La programación
distribuida hace uso de distintas tecnologías e incluso
puede unirlas para generar nuevas. -
Metodologías Ágiles
métodos de desarrollo de software basados en procesos iterativos e incrementales, donde los requisitos y soluciones evolucionan durante la colaboración.
Metodologías como Scrum (1995), Extreme Programming (1999) o DSDM (1995) fueron evolucionando hasta que en Febrero del 2001 se publicó “Manifesto for Agile Software Development” para definir la aproximación ahora conocida como metodologías ágiles. -
Primer dispositivo android
El sistema operativo por excelencia en teléfonos celulares.
Android fue presentado en 2007 junto la fundación del Open Handset Alliance (un consorcio de compañías de hardware, software y telecomunicaciones) para avanzar en los estándares abiertos de los dispositivos móviles. El primer móvil con el sistema operativo Android fue el HTC Dream y se vendió en octubre de 2008. -
Redes Sociales
La primera semilla de lo que se puede considerar como una red social se plantó hace varias décadas. En 1971 se realizó el primer envío de un email a través de dos ordenadores que estaban uno al lado del otro. Lo realizó Ray Tomlinson. sin embargo su apogeo empezó en el 2013 con la red que predomina hasta hoy "FACEBOOK". -
Ingeniería de software experimental
Es la parte de la Ingeniería de Software que se enfoca en reunir evidencia, a través de mediciones y experimentos que involucran sistemas de software (productos de software, procesos y recursos). Esta información está destinada a ser utilizada como la base de teorías sobre los procesos involucrados en la Ingeniería de Software (la teoría respaldada por datos es un principio fundamental del método científico). Varios grupos de investigación usan principalmente técnicas empíricas y experimentales. -
La siguiente arquitectura ya está aquí: Docker + Kubernetes.
Ya no se trata solamente de llevar una aplicación a la nube sino de su arquitectura, se busca ayudar a la productividad del desarrollador aislando al máximo esos microservicios en su propio entorno, con solo sus propias dependencias y configuraciones, un factor fundamental en esta arquitectura es que nosotros podemos desarrollar nuevo código, crear una nueva build, empaquetarla y crear una imagen de Docker para ser desplegada a producción con la mínima fricción. un ejemplo es Amazon Web Services -
Machine Learning
Mientras que la minería de datos descubre patrones anteriormente desconocidos, el Machine Learning se usa para reproducir patrones conocidos y hacer predicciones basadas en los patrones. A medida que interactuamos y generamos mayor número de datos en el tiempo, alimentaremos con mayor información los modelos y algoritmos mejorando la precisión y la predicción; en pocas palabras el aprendizaje. Cuantos más datos, más “inteligentes sean los algoritmos” -
Blockchain madurando poco a poco para ser la base que revolucionará Internet
Un sistema distribuido, donde no necesitemos una entidad centralizada para realizar operaciones. La posibilidad de crear contratos inteligentes muestra el potencial tremendo de estas plataformas que no sólo revolucionará las finanzas sino también Internet. El principal foco es construir APIs que accedan al blockchain, crear algoritmos para verificar la información y mantener la red de blockchain sincronizadas. -
Paso a paso hacia el futuro
El avance detrás de cada uno de estos avances es el aprendizaje profundo, una técnica de inteligencia artificial inspirada en la estructura del cerebro humano. Lo que comenzó como una herramienta de análisis de datos estrecha ahora sirve como algo cercano a una plataforma informática general. Supera al software tradicional en una amplia gama de tareas y, finalmente, puede ofrecer los sistemas inteligentes que hace tiempo han eludido a los científicos informáticos.