1. Actualidad
1.1. software redes Neuronales
1.2. intelicencia artificial
1.3. software en la nube
1.4. conectividad
2. años 50
2.1. Se trabajaba con la idea "codificar y corregir". No existía un planteamiento previo. NO existía documentación de ningún tipo.
2.1.1. Existencia de pocos metodos formales y poco creyentes en ellos.
2.1.2. Desarrollo a base de prueba y error.
2.2. Primeros compiladores.
2.2.1. Fortran
2.2.2. Flow-matic
2.2.3. cobol
3. Años 60
3.1. Desarrollo tipo "codifica y corrige"
3.2. Cultura hacker.
3.2.1. Se inició la cultura del hacker en el buen sentido de la palabra, es decir experto en programación
3.3. Desarrollo cowboy.
3.3.1. El vaquero (cowboy) que hacia desarrollos heroicos de última hora.
3.4. Aparece el lenguaje Basic.
3.4.1. Beginner's All-purpose Symbolic Instruction Code. Diseñado en 1964 porJohn George Kemeny y Thomas Eugene Kurtz en el Dartmouth College en Nuevo Hampshire, Estados Unidos.
3.5. Termino ingeniería de software.
3.5.1. En el Comite de Ciencia de la OTAN celebrada en Garmisch (Alemania) celebrada en octubre de 1968 Fritz Bauer utiliza por primera vez el termino ingeniería de software
3.6. Crisis del software.
3.6.1. La crisis del software abarca los problemas asociados con cómo desarrollar el software, cómo mantener un volumen creciente de software existente y cómo podemos esperar satisfacer la demanda creciente de software.
4. Años 70
4.1. Fase del desarrollo.
4.1.1. Se identifican las diferentes fases del desarrollo: requerimientos, análisis, diseño, codificación y pruebas.
4.2. Principios de diceño.
4.2.1. -Abstracción y refinamiento. -Modularidad. -Variaciones protegidas. -Acoplamiento. -Cohesión. -Refactorización -Reutilización.
4.3. Programación estructurada.
4.3.1. La programación estructurada propone segregar los procesos en estructuras lo más simple posibles, las cuales se conocen como secuencia, selección e interacción
4.4. Modelo cascada.
4.4.1. Considera las actividades fundamentales del proceso especificación, desarrollo, validación y evolución. Los representa como fases separadas del proceso, tales como la especificación de requerimientos, el diseño del software, la implementación, las pruebas, etcétera.
4.5. Surgieron empresas dedicadas al desarrollo de software.
4.5.1. El software se empieza a ver como un producto comercial, que se puede vender a usuarios con necesidades específicas
5. Años 80
5.1. ingeniería de software como profesión.
5.1.1. A principios de los años 80 la ingeniería del software ya había surgido como una genuina profesión, para estar al lado de las ciencias de la computación y la ingeniería tradicional.
5.2. Herramientas CASE.
5.2.1. las herramientas CASE son herramientas que generan código pero esto no ayudo a mejorar la calidad a gran nivel porque se necesita también conocimiento
5.3. Auge de la programación orientada a objetos.
5.3.1. Bjarne Stroustrup de AT&T Labs., amplió el lenguaje C para crear C++ que soporta la programación Orientada a Objetos. En esta misma década se desarrollaron otros lenguajes Orientados a Objetos como Objective C, Common Lisp Object System (CIOS), object Pascal, Ada y otros. Posteriores mejoras en herramientas y lanzamientos comerciales de C++ por distintos fabricantes, justificaron la mayor atención hacia la programación Orientada a Objetos en la comunidad de desarrollo de software.
5.4. Métodos formales
5.4.1. Los métodos formales son los que ayudaron a tener una buena calidad de código, estos métodos se utilizan hasta hoy en día porque son de buena calidad, estos métodos son la programación estructurada y la programación orientada a objetos.
6. Años 90
6.1. Lenguaje de modelado unificado
6.1.1. Es un lenguaje de modelado visual que se usa para especificar, visualizar, construir y documentar artefactos de un sistema de software. El lenguaje UML comenzó a gestarse en octubre de 1994, cuando Rumbaugh se unió a la compañía Rational fundada por Booch.
6.2. Concurrencia.
6.2.1. Es el nombre dado a notaciones de programación y técnicas para expresar paralelismo potencial y resolver los problemas resultantes de sincronización y de comunicación
6.3. Software libre.
6.4. Seis Sigma
6.4.1. un método de gestión de calidad combinado con herramientas estadísticas cuyo propósito es mejorar el nivel de desempeño de un proceso mediante decisiones acertadas, logrando de esta manera que la organización comprenda las necesidades de sus clientes.