fbpx
Wikipedia

Historia de la ingeniería del software

Desde sus inicios en la década de 1940, escribir software ha evolucionado hasta convertirse en una profesión que se ocupa de cómo crear software y maximizar su calidad. La calidad puede referirse a cuán mantenible es el software, su estabilidad, velocidad, usabilidad, comprobabilidad, legibilidad, tamaño, costo, seguridad y número de fallas o "bugs", así como, entre muchos otros atributos, a cualidades menos medibles como elegancia, concisión y satisfacción del cliente. La mejor manera de crear software de alta calidad es un problema separado y controvertido cubriendo el diseño de software, principios para escribir código, llamados "mejores prácticas", así como cuestiones más amplias de gestión como tamaño óptimo del equipo de trabajo, el proceso, la mejor manera de entregar el software a tiempo y tan rápidamente como sea posible, la "cultura" del lugar de trabajo, prácticas de contratación y así sucesivamente. Todo esto cae bajo la rúbrica general de ingeniería de software.

Visión general

Hay un sin número de áreas donde es notable la evolución de la ingeniería de software:

  • Surgimiento como una profesión: A principios del año 1980,[1]​ emergió la ingeniería de software.[2]​ Hoy en día, menos mujeres trabajan en ingeniería de software que en otras profesiones, una situación cuya razón no se identifica claramente. A menudo es atribuido a la discriminación sexual, cibercultura o sesgo en la educación.[¿quién?] Muchas organizaciones académicas y profesionales consideran esta situación desequilibrada y están tratando de resolverlo.
  • Procesos: Los procesos se han convertido en una gran parte de la ingeniería de software y son aclamados por su potencial para mejorar el software y duramente criticados por su potencial para constreñir a los programadores.
  • Costo de hardware: El costo relativo del software versus el hardware ha cambiado sustancialmente en los últimos 50 años. Cuando los mainframes eran costosos y requerían una gran cantidad de personal de soporte, las pocas organizaciones que los compraban también tuvieron los recursos para financiar proyectos de ingeniería de software a la medida, grandes y costosos. Los computadores son ahora mucho más numerosos y mucho más potentes, lo cual tiene varios efectos en el software. El mercado más grande puede soportar grandes proyectos para crear software comercialmente, como los hechos por empresas como Microsoft. Las máquinas baratas permiten a cada programador tener un terminal capaz de una compilación bastante rápida. Los programas en cuestión pueden usar técnicas como la recolección de basura, que los hacen más fáciles y rápidos de escribir. Por otro lado, menos organizaciones están interesadas en emplear programadores para grandes proyectos de software a la medida, y en su lugar utilizan software comercial tanto como sea posible.

La era pionera

El desarrollo más importante fue que las nuevas computadoras que salían, cada uno o dos años, volvía obsoletas las ya existentes. La gente del software tenía que volver a escribir todos sus programas para correr en estas nuevas máquinas. Los programadores no tenían equipos en sus escritorios y tenían que ir a la "sala de máquinas". Las tareas (jobs) eran corridas al inscribirse para tiempo de máquina o por el personal operativo. Las tareas eran corridas poniendo tarjetas perforadas como entrada en el lector de tarjetas de la máquina y se esperaban por resultados devueltos en la impresora.

El campo era tan nuevo que la idea de gestión por horario era inexistente. Era casi imposible hacer predicciones de la fecha de finalización del proyecto. El hardware del computador era específico para la aplicación. Las tareas científicas y de negocios necesitaban diferentes máquinas. Debido a la necesidad de traducir frecuentemente el software viejo para atender las necesidades de nuevas máquinas, se desarrollaron lenguajes de orden superior como FORTRAN, COBOL y ALGOL. Vendedores de hardware regalaban sistemas de software gratis puesto que no se podía vender hardware sin software. Algunas compañías vendían el servicio de construcción de software personalizado, pero no había empresas de software vendiendo paquetes de software.

La noción de reutilización floreció. A medida que el software fue libre, las organizaciones de usuarios comúnmente lo liberaban. Grupos como SHARE, el grupo de usuario científico de IBM, ofrecían catálogos de componentes reutilizables. La academia todavía no ensañaba los principios de las ciencias de la computación. La programación modular y la abstracción de datos ya se utilizaban en programación.

De 1950 a 1960: Los orígenes

El término ingeniería del software apareció por primera vez en la década de 1950 y principios de los años 1960. Los programadores siempre habían sabido sobre ingenieros civiles, eléctricos y de computadores y debatían qué podría significar la ingeniería para el software.

El Comité de ciencia de la OTAN patrocinó dos conferencias[3]​ sobre ingeniería del software en 1968 (Garmisch, Alemania — ver informe de la Conferencia) y en 1969, que dio al campo su impulso inicial. Muchos creen que estas conferencias marcaron el inicio oficial de la profesión de la ingeniería de software. El software como se ha visto, no surge con los equipos electrónicos, -aunque es con ellos que adopta el nombre- ya está presente desde el empleo de ábacos o sumadoras mecánicas. Sin embargo, en estos casos, el software no se encuentra incorporado en el equipo.

De 1960 a 1980: La crisis del software

La ingeniería de software fue estimulada por la llamada crisis del software de la década de 1960, 1970 y 1980, que identifica muchos de los problemas de desarrollo de software. Muchos proyectos de software sobrepasaron el presupuesto y el tiempo estimados. Algunos proyectos causaron daños a la propiedad otros proyectos causaron pérdidas de vidas.[4]​ La crisis del software originalmente fue definida en términos de productividad, pero evolucionó para enfatizar la calidad. Algunos utilizan el término de crisis del software para referirse a su incapacidad de contratar programadores suficientemente calificados.

  • Costo y desbordamiento de presupuesto: El sistema operativo OS/360 fue un ejemplo clásico. Este proyecto que duró una década[cita requerida] desde los años 1960 finalmente produjo uno de los más complejos sistemas de software de ese tiempo. El OS/360 fue uno de los primeros de grandes proyectos de software (1000 programadores).[cita requerida] En el libro The Mythical Man-Month, Fred Brooks afirma que cometió un error multimillonario por no desarrollar una coherente arquitectura de software antes de iniciar el desarrollo.
  • Daños a la propiedad: Los defectos de software pueden causar daños a la propiedad. Escasa seguridad de software permite a hackers robar identidades, costando tiempo, dinero y reputaciones.
  • Vida y muerte: Los defectos de software pueden matar. Algunos sistemas embebidos 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.

Peter G. Neumann ha mantenido una lista contemporánea de problemas de software y desastres.[5]​ La crisis del software ha estado desvaneciéndose de vista, porque psicológicamente es extremadamente difícil permanecer en modo de crisis durante un período prolongado (más de 20 años). No obstante, el software - especialmente el software embebido en tiempo real - sigue siendo arriesgado y omnipresente, y es crucial no ceder en complacencias. En los últimos 10-15 años, Michael A. Jackson ha escrito extensamente sobre la naturaleza de la ingeniería del software, ha identificado la fuente principal de sus dificultades como la falta de especialización y ha sugerido que sus marcos de problema proporcionan la base para una "práctica normal" de la ingeniería del software, un requisito previo si la ingeniería de software quiere convertirse en una ciencia de ingeniería. {Michael Jackson, "Ingeniería e ingeniería de Software" en S Nanz ed, el futuro de la Ingeniería de Software, Springer Verlag 2010; Michael Jackson, marcos de problema: Análisis y estructuración de los problemas de desarrollo de Software; Addison-Wesley, 2001}.

De 1985 a 1989: No hay balas de plata

Durante décadas, solucionar la crisis del software fue de suma importancia para investigadores y empresas productoras de herramientas de software. El costo de propiedad y mantenimiento del software en la década de 1980 fue dos veces más caro que el propio desarrollo del software. Durante la década de 1990, el costo de propiedad y mantenimiento aumentó en un 30% con respecto a la década anterior. En 1995, las estadísticas mostraron que la mitad de los proyectos de desarrollo encuestados estaban operacionales, pero no eran considerados exitosos. El proyecto de software sobrepasa su estimación en tiempo en el 50%. Las tres cuartas partes de todos los grandes productos de software son entregados al cliente con tales fallas que no son usados en absoluto, o no cumplen con los requerimientos del cliente.

Proyectos de software

Aparentemente, cada nueva tecnología y práctica de la década de 1970 a la de 1990 fue pregonada como una bala de plata para resolver la crisis del software. Herramientas, disciplina, métodos formales, proceso, y profesionalismo fueron promocionados como balas de plata:

  • Herramientas: Especialmente enfatizaba que las herramientas: programación estructurada, programación orientada a objetos, herramientas CASE, el lenguaje de programación Ada, documentación y estándares eran promocionados como balas de plata.
  • Disciplina: Algunos expertos argumentaron que la crisis del software era debido a la falta de disciplina de los programadores.
  • Métodos formales: Algunos creían que si las metodologías de ingeniería formal fueran aplicadas al desarrollo de software, entonces la producción de software sería una industria tan predecible como otras ramas de la ingeniería. Abogaron que había que demostrar que todos los programas eran correctos.
  • Proceso: Muchos abogaron el uso de procesos definidos y metodologías como el Modelo de Capacidad y Madurez.
  • Profesionalismo: Esto llevó a trabajar en un código de ética, licencias y profesionalismo.

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 rugía en la década siguiente. Defensores de Ada, los componentes y procesos continuaron años argumentando que su tecnología favorita sería una bala de plata. Los escépticos no estuvieron de acuerdo. Finalmente, casi todo el mundo aceptó que nunca se encontrará ninguna bala de plata. Sin embargo, afirmaciones sobre balas de plata saltarán de vez en cuando, aun hoy en día.

Algunos interpretan que no hay balas de plata significa que la ingeniería de software ha fracasado. Sin embargo, con otras lecturas, Brooks va a decir, "seguramente haremos progresos sustanciales en los próximos 40 años; un orden de magnitud en más de 40 años es casi mágico... ".

La búsqueda de una única clave para el éxito nunca funcionó. Todas las prácticas y tecnologías conocidas solo han hecho mejoras incrementales en productividad y calidad. A pesar de todo, tampoco hay balas de plata para cualquier otra profesión. Otros interpretan no hay balas de plata como prueba de que la ingeniería de software finalmente ha madurado y reconoce que los proyectos de éxito son debido al duro trabajo.

Sin embargo, podría decirse también que, de hecho, en la actualidad hay una gama de balas de plata, incluyendo metodologías livianas (ver gerencia de proyectos), calculadoras de hoja de cálculo, navegadores personalizados, motores de búsqueda en sitio, generadores de reportes de base de datos, editores de código y pruebas de diseño integrados, con memoria/diferencias/deshacer y tiendas especializadas que generan software de nicho, como sitios Web de información, a una fracción del costo de desarrollo de un sitio web totalmente personalizado. Sin embargo, el campo de la ingeniería del software aparece demasiado complejo y diverso para una única "bala de plata" que sirva para mejorar la mayoría de los problemas, y cada problema representa solo una pequeña porción de todos los problemas de software.

De 1990 a 1999: Prominencia de Internet

El auge de la Internet condujo a un rápido crecimiento en la demanda de sistemas internacionales de despliegue de información y correo electrónico en la World Wide Web. Los programadores debían manejar ilustraciones, mapas, fotografías y otras imágenes, más animación sencilla, a un ritmo nunca antes visto, con pocos métodos conocidos para optimizar la visualización/almacenamiento de imágenes (como el uso de imágenes en miniatura).

El crecimiento del uso del navegador, corriendo en el lenguaje HTML, cambió la manera en que estaba organizada la visualización y la recuperación de la información. Las amplias conexiones de red condujeron al crecimiento y la prevención de virus informáticos internacionales en computadores con MS Windows, y la gran proliferación de correo basura se convirtió en una cuestión de diseño importante en sistemas de correo electrónico, inundando canales de comunicación y requiriendo de precalificación semiautomatizada. Sistemas de búsqueda de palabra clave evolucionaron en buscadores web, y muchos sistemas de software tuvieron que ser rediseñados, para la búsqueda internacional, dependiendo de las técnicas de posicionamiento en buscadores (SEO). Fueron necesarios sistemas de traducción de lenguaje natural humano para intentar traducir el flujo de información en múltiples idiomas extranjeros, con muchos sistemas de software siendo diseñados para uso multilenguaje, basado en conceptos de diseño de traductores humanos. Típicas bases de usuarios de computadora con frecuencia pasaron de cientos o miles de usuarios a muchos millones de usuarios internacionales.

De 2000 al presente: Metodologías ligeras

Con la creciente demanda de software en muchas organizaciones pequeñas, la necesidad de soluciones de software de bajo costo llevó al crecimiento de metodologías más simples y rápidas que desarrollaran software funcional, de los requisitos de implementación, más rápidos y más fáciles. El uso de prototipos rápidos evolucionó a metodologías ligeras completas como la programación extrema (XP), que intentó simplificar muchas de las áreas de la ingeniería de software, incluyendo la recopilación de requerimientos y las pruebas de confiabilidad para el creciente y gran número de pequeños sistemas de software. Sistemas de software muy grandes todavía utilizan metodologías muy documentadas, con muchos volúmenes en el conjunto de documentación; sin embargo, sistemas más pequeños tenían un enfoque alternativo más simple y rápido para administrar el desarrollo y mantenimiento de cálculos y algoritmos de software, almacenamiento y recuperación de información y visualización.

Tendencias actuales en la ingeniería de software

La ingeniería de software es una disciplina joven y aún está en desarrollo. Las direcciones en que la ingeniería de software se está desarrollando incluyen:

Aspectos
Los aspectos ayudan a los ingenieros de software a lidiar con los atributos de calidad al proporcionar herramientas para añadir o quitar código repetitivo de muchas áreas en el código fuente. Los aspectos describen cómo todos los objetos o funciones deben comportarse en circunstancias particulares. Por ejemplo, los aspectos puede agregar control de depuración, registro o bloqueo en todos los objetos de un tipo particular. Los investigadores actualmente están trabajando para comprender cómo utilizar aspectos para diseñar el código de propósito general. Conceptos relacionados incluyen programación generativa y plantillas.
Ágil
El desarrollo ágil de software guía a los proyectos de desarrollo de software que evolucionan rápidamente con cambiantes expectativas y mercados competitivos. Los proponentes de este método creen que procesos pesados, dirigidos por documentos (como TickIT, CMM e ISO 9000) están desapareciendo en importancia.[cita requerida] Algunas personas creen que las empresas y agencias exportan muchos de los puestos de trabajo que pueden ser guiados por procesos pesados.[cita requerida] Conceptos relacionados incluyen la programación extrema, scrum y lean software development.
Experimental
La ingeniería de software experimental es una rama de la ingeniería de software interesada en la elaboración de experimentos sobre el software, en la recolección de datos de los experimentos y en la elaboración de leyes y teorías desde estos datos. Los proponentes de este método defienden que la naturaleza del software es tal que podemos hacer avanzar el conocimiento en software a través de solo experimentos.[cita requerida]
Model-driven
El diseño manejado por modelos desarrolla modelos textuales y gráficos como artefactos primarios de diseño. Hay disponibles herramientas de desarrollo que usan transformación de modelo y generación de código para generar fragmentos de código bien organizado que sirven como base para producir aplicaciones completas.
Líneas de productos de software
Las líneas de producción de software es una forma sistemática para producir familias de sistemas de software, en lugar de crear una sucesión de productos completamente individuales. Este método destaca una extensiva, sistemática, reutilización de código formal, para intentar industrializar el proceso de desarrollo de software.

El futuro de la Conferencia de ingeniería de Software (FOSE),[6]​ celebrada en ICSE 2000, documenta el estado del arte de SE en 2000 y lista muchos problemas a resolver en la próxima década. El FOSE sigue la pista de las conferencias ICSE 2000[7]​ y el ICSE 2007[8]​ y también ayudar a identificar el estado del arte en ingeniería de software.

La ingeniería de software hoy

La profesión está tratando de definir sus límites y contenido. El Software Engineering Body of Knowledge SWEBOK ha sido presentado como un estándar ISO durante 2006 (ISO/IEC TR 19759).

En 2006, la revista Money y Salary.com calificaron la ingeniería de software como el mejor trabajo en Estados Unidos en términos de crecimiento, paga, niveles de estrés, flexibilidad en horas y medio ambiente de trabajo, creatividad y lo fácil que es entrar y avanzar en el campo.[9]

Figuras prominentes en la historia de la ingeniería de software

  • Charles Bachman (nacido en 1924) es particularmente conocido por su trabajo en el área de bases de datos.
  • Laszlo Belady (nacido en 1928) el redactor jefe de la IEEE Transactions on Software Engineering en la década de 1980
  • Fred Brooks (nacido en 1931) conocido por el desarrollo del OS/360.
  • Peter Chen conocido por el desarrollo del modelo entidad-relación.
  • Edsger Dijkstra (1930–2002) desarrolló el marco para la programación adecuada.
  • David Parnas (nacido en 1941) desarrolló el concepto de ocultamiento de información en la programación modular.
  • Michael A. Jackson (nacido en 1936) experto en Ingeniería de software responsable del método de diseño de programa JSP; el método de desarrollo de sistema JSD (con John Cameron); y marcos de problema para el análisis y estructuración de los problemas de desarrollo de software.

Referencias

  1. "Software engineering ... has recently emerged as a discipline in its own right." Sommerville, Ian (1985) [1982]. Software Engineering. Addison-Wesley. ISBN 0-201-14229-5. 
  2. Soteldo, Oriana. Definición de Software. Consultado el 12 de noviembre de 2017. 
  3. The NATO Software Engineering Conferences
  4. Therac-25
  5. Computer Risks
  6. . Archivado desde el original el 23 de marzo de 2012. Consultado el 19 de agosto de 2012. 
  7. ICSE 2000
  8. ICSE 2007
  9. Kalwarski, Tara; Daphne Mosher, Janet Paskin and Donna Rosato (2006). . MONEY Magazine. CNN. Archivado desde el original el 24 de octubre de 2007. Consultado el 20 de abril de 2006.  , "MONEY Magazine and Salary.com researched hundreds of jobs, considering their growth, pay, stress-levels and other factors. These careers ranked highest. 1. Software Engineer..."

Véase también

Enlaces externos

  • Oral history interview with Bruce H. Barnes, Charles Babbage Institute, University of Minnesota. Barnes describes the National Science Foundation (NSF) and its support of research in theoretical computer science, computer architecture, numerical methods, and software engineering, and the development of networking.
  • Oral history interview with Laszlo A. Belady, Charles Babbage Institute, University of Minnesota.
  • Brian Randell: The NATO Software Engineering Conferences (The site includes the original two NATO reports—from 1968 and 1969—as well as photographs of the participants and some of the sessions at Garmisch)
  •   Datos: Q3348143

historia, ingeniería, software, este, artículo, sección, necesita, revisión, ortografía, gramática, puedes, colaborar, editándolo, cuando, haya, corregido, puedes, borrar, este, aviso, iniciado, sesión, puedes, ayudarte, corrector, ortográfico, activándolo, pr. Este articulo o seccion necesita una revision de ortografia y gramatica Puedes colaborar editandolo Cuando se haya corregido puedes borrar este aviso Si has iniciado sesion puedes ayudarte del corrector ortografico activandolo en Mis preferencias Accesorios Navegacion El corrector ortografico resalta errores ortograficos con un fondo rojo Este aviso fue puesto el 25 de febrero de 2017 Desde sus inicios en la decada de 1940 escribir software ha evolucionado hasta convertirse en una profesion que se ocupa de como crear software y maximizar su calidad La calidad puede referirse a cuan mantenible es el software su estabilidad velocidad usabilidad comprobabilidad legibilidad tamano costo seguridad y numero de fallas o bugs asi como entre muchos otros atributos a cualidades menos medibles como elegancia concision y satisfaccion del cliente La mejor manera de crear software de alta calidad es un problema separado y controvertido cubriendo el diseno de software principios para escribir codigo llamados mejores practicas asi como cuestiones mas amplias de gestion como tamano optimo del equipo de trabajo el proceso la mejor manera de entregar el software a tiempo y tan rapidamente como sea posible la cultura del lugar de trabajo practicas de contratacion y asi sucesivamente Todo esto cae bajo la rubrica general de ingenieria de software Indice 1 Vision general 2 La era pionera 3 De 1950 a 1960 Los origenes 4 De 1960 a 1980 La crisis del software 5 De 1985 a 1989 No hay balas de plata 6 Proyectos de software 7 De 1990 a 1999 Prominencia de Internet 8 De 2000 al presente Metodologias ligeras 9 Tendencias actuales en la ingenieria de software 10 La ingenieria de software hoy 11 Figuras prominentes en la historia de la ingenieria de software 12 Referencias 13 Vease tambien 14 Enlaces externosVision general EditarHay un sin numero de areas donde es notable la evolucion de la ingenieria de software Surgimiento como una profesion A principios del ano 1980 1 emergio la ingenieria de software 2 Hoy en dia menos mujeres trabajan en ingenieria de software que en otras profesiones una situacion cuya razon no se identifica claramente A menudo es atribuido a la discriminacion sexual cibercultura o sesgo en la educacion quien Muchas organizaciones academicas y profesionales consideran esta situacion desequilibrada y estan tratando de resolverlo Procesos Los procesos se han convertido en una gran parte de la ingenieria de software y son aclamados por su potencial para mejorar el software y duramente criticados por su potencial para constrenir a los programadores Costo de hardware El costo relativo del software versus el hardware ha cambiado sustancialmente en los ultimos 50 anos Cuando los mainframes eran costosos y requerian una gran cantidad de personal de soporte las pocas organizaciones que los compraban tambien tuvieron los recursos para financiar proyectos de ingenieria de software a la medida grandes y costosos Los computadores son ahora mucho mas numerosos y mucho mas potentes lo cual tiene varios efectos en el software El mercado mas grande puede soportar grandes proyectos para crear software comercialmente como los hechos por empresas como Microsoft Las maquinas baratas permiten a cada programador tener un terminal capaz de una compilacion bastante rapida Los programas en cuestion pueden usar tecnicas como la recoleccion de basura que los hacen mas faciles y rapidos de escribir Por otro lado menos organizaciones estan interesadas en emplear programadores para grandes proyectos de software a la medida y en su lugar utilizan software comercial tanto como sea posible La era pionera EditarEl desarrollo mas importante fue que las nuevas computadoras que salian cada uno o dos anos volvia obsoletas las ya existentes La gente del software tenia que volver a escribir todos sus programas para correr en estas nuevas maquinas Los programadores no tenian equipos en sus escritorios y tenian que ir a la sala de maquinas Las tareas jobs eran corridas al inscribirse para tiempo de maquina o por el personal operativo Las tareas eran corridas poniendo tarjetas perforadas como entrada en el lector de tarjetas de la maquina y se esperaban por resultados devueltos en la impresora El campo era tan nuevo que la idea de gestion por horario era inexistente Era casi imposible hacer predicciones de la fecha de finalizacion del proyecto El hardware del computador era especifico para la aplicacion Las tareas cientificas y de negocios necesitaban diferentes maquinas Debido a la necesidad de traducir frecuentemente el software viejo para atender las necesidades de nuevas maquinas se desarrollaron lenguajes de orden superior como FORTRAN COBOL y ALGOL Vendedores de hardware regalaban sistemas de software gratis puesto que no se podia vender hardware sin software Algunas companias vendian el servicio de construccion de software personalizado pero no habia empresas de software vendiendo paquetes de software La nocion de reutilizacion florecio A medida que el software fue libre las organizaciones de usuarios comunmente lo liberaban Grupos como SHARE el grupo de usuario cientifico de IBM ofrecian catalogos de componentes reutilizables La academia todavia no ensanaba los principios de las ciencias de la computacion La programacion modular y la abstraccion de datos ya se utilizaban en programacion De 1950 a 1960 Los origenes EditarEl termino ingenieria del software aparecio por primera vez en la decada de 1950 y principios de los anos 1960 Los programadores siempre habian sabido sobre ingenieros civiles electricos y de computadores y debatian que podria significar la ingenieria para el software El Comite de ciencia de la OTAN patrocino dos conferencias 3 sobre ingenieria del software en 1968 Garmisch Alemania ver informe de la Conferencia y en 1969 que dio al campo su impulso inicial Muchos creen que estas conferencias marcaron el inicio oficial de la profesion de la ingenieria de software El software como se ha visto no surge con los equipos electronicos aunque es con ellos que adopta el nombre ya esta presente desde el empleo de abacos o sumadoras mecanicas Sin embargo en estos casos el software no se encuentra incorporado en el equipo De 1960 a 1980 La crisis del software EditarArticulo principal Crisis del software La ingenieria de software fue estimulada por la llamada crisis del software de la decada de 1960 1970 y 1980 que identifica muchos de los problemas de desarrollo de software Muchos proyectos de software sobrepasaron el presupuesto y el tiempo estimados Algunos proyectos causaron danos a la propiedad otros proyectos causaron perdidas de vidas 4 La crisis del software originalmente fue definida en terminos de productividad pero evoluciono para enfatizar la calidad Algunos utilizan el termino de crisis del software para referirse a su incapacidad de contratar programadores suficientemente calificados Costo y desbordamiento de presupuesto El sistema operativo OS 360 fue un ejemplo clasico Este proyecto que duro una decada cita requerida desde los anos 1960 finalmente produjo uno de los mas complejos sistemas de software de ese tiempo El OS 360 fue uno de los primeros de grandes proyectos de software 1000 programadores cita requerida En el libro The Mythical Man Month Fred Brooks afirma que cometio un error multimillonario por no desarrollar una coherente arquitectura de software antes de iniciar el desarrollo Danos a la propiedad Los defectos de software pueden causar danos a la propiedad Escasa seguridad de software permite a hackers robar identidades costando tiempo dinero y reputaciones Vida y muerte Los defectos de software pueden matar Algunos sistemas embebidos en maquinas de radioterapia fallaron de una manera tan catastrofica que administraron dosis letales de radiacion a pacientes La mas famosa de estas fallas es el incidente de Therac 25 Peter G Neumann ha mantenido una lista contemporanea de problemas de software y desastres 5 La crisis del software ha estado desvaneciendose de vista porque psicologicamente es extremadamente dificil permanecer en modo de crisis durante un periodo prolongado mas de 20 anos No obstante el software especialmente el software embebido en tiempo real sigue siendo arriesgado y omnipresente y es crucial no ceder en complacencias En los ultimos 10 15 anos Michael A Jackson ha escrito extensamente sobre la naturaleza de la ingenieria del software ha identificado la fuente principal de sus dificultades como la falta de especializacion y ha sugerido que sus marcos de problema proporcionan la base para una practica normal de la ingenieria del software un requisito previo si la ingenieria de software quiere convertirse en una ciencia de ingenieria Michael Jackson Ingenieria e ingenieria de Software en S Nanz ed el futuro de la Ingenieria de Software Springer Verlag 2010 Michael Jackson marcos de problema Analisis y estructuracion de los problemas de desarrollo de Software Addison Wesley 2001 De 1985 a 1989 No hay balas de plata EditarArticulo principal No hay balas de plata Durante decadas solucionar la crisis del software fue de suma importancia para investigadores y empresas productoras de herramientas de software El costo de propiedad y mantenimiento del software en la decada de 1980 fue dos veces mas caro que el propio desarrollo del software Durante la decada de 1990 el costo de propiedad y mantenimiento aumento en un 30 con respecto a la decada anterior En 1995 las estadisticas mostraron que la mitad de los proyectos de desarrollo encuestados estaban operacionales pero no eran considerados exitosos El proyecto de software sobrepasa su estimacion en tiempo en el 50 Las tres cuartas partes de todos los grandes productos de software son entregados al cliente con tales fallas que no son usados en absoluto o no cumplen con los requerimientos del cliente Proyectos de software EditarAparentemente cada nueva tecnologia y practica de la decada de 1970 a la de 1990 fue pregonada como una bala de plata para resolver la crisis del software Herramientas disciplina metodos formales proceso y profesionalismo fueron promocionados como balas de plata Herramientas Especialmente enfatizaba que las herramientas programacion estructurada programacion orientada a objetos herramientas CASE el lenguaje de programacion Ada documentacion y estandares eran promocionados como balas de plata Disciplina Algunos expertos argumentaron que la crisis del software era debido a la falta de disciplina de los programadores Metodos formales Algunos creian que si las metodologias de ingenieria formal fueran aplicadas al desarrollo de software entonces la produccion de software seria una industria tan predecible como otras ramas de la ingenieria Abogaron que habia que demostrar que todos los programas eran correctos Proceso Muchos abogaron el uso de procesos definidos y metodologias como el Modelo de Capacidad y Madurez Profesionalismo Esto llevo a trabajar en un codigo de etica licencias y profesionalismo En 1986 Fred Brooks publico su articulo No hay balas de plata argumentando que ninguna tecnologia individual o practica jamas haria una mejora de 10 veces en la productividad dentro de 10 anos El debate sobre las balas de plata rugia en la decada siguiente Defensores de Ada los componentes y procesos continuaron anos argumentando que su tecnologia favorita seria una bala de plata Los escepticos no estuvieron de acuerdo Finalmente casi todo el mundo acepto que nunca se encontrara ninguna bala de plata Sin embargo afirmaciones sobre balas de plata saltaran de vez en cuando aun hoy en dia Algunos interpretan que no hay balas de plata significa que la ingenieria de software ha fracasado Sin embargo con otras lecturas Brooks va a decir seguramente haremos progresos sustanciales en los proximos 40 anos un orden de magnitud en mas de 40 anos es casi magico La busqueda de una unica clave para el exito nunca funciono Todas las practicas y tecnologias conocidas solo han hecho mejoras incrementales en productividad y calidad A pesar de todo tampoco hay balas de plata para cualquier otra profesion Otros interpretan no hay balas de plata como prueba de que la ingenieria de software finalmente ha madurado y reconoce que los proyectos de exito son debido al duro trabajo Sin embargo podria decirse tambien que de hecho en la actualidad hay una gama de balas de plata incluyendo metodologias livianas ver gerencia de proyectos calculadoras de hoja de calculo navegadores personalizados motores de busqueda en sitio generadores de reportes de base de datos editores de codigo y pruebas de diseno integrados con memoria diferencias deshacer y tiendas especializadas que generan software de nicho como sitios Web de informacion a una fraccion del costo de desarrollo de un sitio web totalmente personalizado Sin embargo el campo de la ingenieria del software aparece demasiado complejo y diverso para una unica bala de plata que sirva para mejorar la mayoria de los problemas y cada problema representa solo una pequena porcion de todos los problemas de software De 1990 a 1999 Prominencia de Internet EditarEl auge de la Internet condujo a un rapido crecimiento en la demanda de sistemas internacionales de despliegue de informacion y correo electronico en la World Wide Web Los programadores debian manejar ilustraciones mapas fotografias y otras imagenes mas animacion sencilla a un ritmo nunca antes visto con pocos metodos conocidos para optimizar la visualizacion almacenamiento de imagenes como el uso de imagenes en miniatura El crecimiento del uso del navegador corriendo en el lenguaje HTML cambio la manera en que estaba organizada la visualizacion y la recuperacion de la informacion Las amplias conexiones de red condujeron al crecimiento y la prevencion de virus informaticos internacionales en computadores con MS Windows y la gran proliferacion de correo basura se convirtio en una cuestion de diseno importante en sistemas de correo electronico inundando canales de comunicacion y requiriendo de precalificacion semiautomatizada Sistemas de busqueda de palabra clave evolucionaron en buscadores web y muchos sistemas de software tuvieron que ser redisenados para la busqueda internacional dependiendo de las tecnicas de posicionamiento en buscadores SEO Fueron necesarios sistemas de traduccion de lenguaje natural humano para intentar traducir el flujo de informacion en multiples idiomas extranjeros con muchos sistemas de software siendo disenados para uso multilenguaje basado en conceptos de diseno de traductores humanos Tipicas bases de usuarios de computadora con frecuencia pasaron de cientos o miles de usuarios a muchos millones de usuarios internacionales De 2000 al presente Metodologias ligeras EditarArticulo principal Metodologias ligeras Con la creciente demanda de software en muchas organizaciones pequenas la necesidad de soluciones de software de bajo costo llevo al crecimiento de metodologias mas simples y rapidas que desarrollaran software funcional de los requisitos de implementacion mas rapidos y mas faciles El uso de prototipos rapidos evoluciono a metodologias ligeras completas como la programacion extrema XP que intento simplificar muchas de las areas de la ingenieria de software incluyendo la recopilacion de requerimientos y las pruebas de confiabilidad para el creciente y gran numero de pequenos sistemas de software Sistemas de software muy grandes todavia utilizan metodologias muy documentadas con muchos volumenes en el conjunto de documentacion sin embargo sistemas mas pequenos tenian un enfoque alternativo mas simple y rapido para administrar el desarrollo y mantenimiento de calculos y algoritmos de software almacenamiento y recuperacion de informacion y visualizacion Tendencias actuales en la ingenieria de software EditarLa ingenieria de software es una disciplina joven y aun esta en desarrollo Las direcciones en que la ingenieria de software se esta desarrollando incluyen Aspectos Los aspectos ayudan a los ingenieros de software a lidiar con los atributos de calidad al proporcionar herramientas para anadir o quitar codigo repetitivo de muchas areas en el codigo fuente Los aspectos describen como todos los objetos o funciones deben comportarse en circunstancias particulares Por ejemplo los aspectos puede agregar control de depuracion registro o bloqueo en todos los objetos de un tipo particular Los investigadores actualmente estan trabajando para comprender como utilizar aspectos para disenar el codigo de proposito general Conceptos relacionados incluyen programacion generativa y plantillas Agil El desarrollo agil de software guia a los proyectos de desarrollo de software que evolucionan rapidamente con cambiantes expectativas y mercados competitivos Los proponentes de este metodo creen que procesos pesados dirigidos por documentos como TickIT CMM e ISO 9000 estan desapareciendo en importancia cita requerida Algunas personas creen que las empresas y agencias exportan muchos de los puestos de trabajo que pueden ser guiados por procesos pesados cita requerida Conceptos relacionados incluyen la programacion extrema scrum y lean software development Experimental La ingenieria de software experimental es una rama de la ingenieria de software interesada en la elaboracion de experimentos sobre el software en la recoleccion de datos de los experimentos y en la elaboracion de leyes y teorias desde estos datos Los proponentes de este metodo defienden que la naturaleza del software es tal que podemos hacer avanzar el conocimiento en software a traves de solo experimentos cita requerida Model driven El diseno manejado por modelos desarrolla modelos textuales y graficos como artefactos primarios de diseno Hay disponibles herramientas de desarrollo que usan transformacion de modelo y generacion de codigo para generar fragmentos de codigo bien organizado que sirven como base para producir aplicaciones completas Lineas de productos de software Las lineas de produccion de software es una forma sistematica para producir familias de sistemas de software en lugar de crear una sucesion de productos completamente individuales Este metodo destaca una extensiva sistematica reutilizacion de codigo formal para intentar industrializar el proceso de desarrollo de software El futuro de la Conferencia de ingenieria de Software FOSE 6 celebrada en ICSE 2000 documenta el estado del arte de SE en 2000 y lista muchos problemas a resolver en la proxima decada El FOSE sigue la pista de las conferencias ICSE 2000 7 y el ICSE 2007 8 y tambien ayudar a identificar el estado del arte en ingenieria de software La ingenieria de software hoy EditarLa profesion esta tratando de definir sus limites y contenido El Software Engineering Body of Knowledge SWEBOK ha sido presentado como un estandar ISO durante 2006 ISO IEC TR 19759 En 2006 la revista Money y Salary com calificaron la ingenieria de software como el mejor trabajo en Estados Unidos en terminos de crecimiento paga niveles de estres flexibilidad en horas y medio ambiente de trabajo creatividad y lo facil que es entrar y avanzar en el campo 9 Figuras prominentes en la historia de la ingenieria de software EditarCharles Bachman nacido en 1924 es particularmente conocido por su trabajo en el area de bases de datos Laszlo Belady nacido en 1928 el redactor jefe de la IEEE Transactions on Software Engineering en la decada de 1980 Fred Brooks nacido en 1931 conocido por el desarrollo del OS 360 Peter Chen conocido por el desarrollo del modelo entidad relacion Edsger Dijkstra 1930 2002 desarrollo el marco para la programacion adecuada David Parnas nacido en 1941 desarrollo el concepto de ocultamiento de informacion en la programacion modular Michael A Jackson nacido en 1936 experto en Ingenieria de software responsable del metodo de diseno de programa JSP el metodo de desarrollo de sistema JSD con John Cameron y marcos de problema para el analisis y estructuracion de los problemas de desarrollo de software Referencias Editar Software engineering has recently emerged as a discipline in its own right Sommerville Ian 1985 1982 Software Engineering Addison Wesley ISBN 0 201 14229 5 Soteldo Oriana Definicion de Software Consultado el 12 de noviembre de 2017 The NATO Software Engineering Conferences Therac 25 Computer Risks Future of Software Engineering Archivado desde el original el 23 de marzo de 2012 Consultado el 19 de agosto de 2012 ICSE 2000 ICSE 2007 Kalwarski Tara Daphne Mosher Janet Paskin and Donna Rosato 2006 Best Jobs in America MONEY Magazine CNN Archivado desde el original el 24 de octubre de 2007 Consultado el 20 de abril de 2006 La referencia utiliza el parametro obsoleto coautores ayuda MONEY Magazine and Salary com researched hundreds of jobs considering their growth pay stress levels and other factors These careers ranked highest 1 Software Engineer Vease tambien EditarIngenieria de software Crisis del softwareEnlaces externos EditarOral history interview with Bruce H Barnes Charles Babbage Institute University of Minnesota Barnes describes the National Science Foundation NSF and its support of research in theoretical computer science computer architecture numerical methods and software engineering and the development of networking Oral history interview with Laszlo A Belady Charles Babbage Institute University of Minnesota Brian Randell The NATO Software Engineering Conferences The site includes the original two NATO reports from 1968 and 1969 as well as photographs of the participants and some of the sessions at Garmisch Datos Q3348143Obtenido de https es wikipedia org w index php title Historia de la ingenieria del software amp oldid 136211109, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos