Historia y tendencias de desarrollo de la ingeniería de software

La historia y las tendencias de desarrollo de la ingeniería de software

En el estudio, el trabajo y la vida, muchas personas han escrito artículos que pueden promover experiencias e intercambiar conocimientos. Creo que a muchos amigos les preocupa escribir ensayos. Los siguientes son artículos que recopilé sobre la historia y las tendencias de desarrollo de la ingeniería de software. Espero que le sean útiles. En el estudio, el trabajo y la vida, muchas personas han escrito artículos que pueden promover experiencias e intercambiar conocimientos. Creo que a muchos amigos les preocupa escribir ensayos. Los siguientes son artículos que recopilé sobre la historia y las tendencias de desarrollo de la ingeniería de software. Espero que le sean útiles.

Historia y Tendencias de Desarrollo de la Ingeniería de Software 1 Resumen: El software es un producto especial. A medida que aumenta su escala y complejidad y se expande su alcance de aplicación, el proceso de desarrollo de software debe controlarse desde los aspectos técnicos y de gestión. Este artículo toma la ingeniería de software como trasfondo y revisa los logros de la ingeniería de software en teoría, método y práctica en los últimos 40 años. Finalmente, combinados con los desafíos de la tecnología y las plataformas de Internet, se discuten preliminarmente los nuevos desafíos que debe enfrentar la ingeniería de software.

Palabras clave: crisis de software; construcción; gestión de proyectos de software; middleware

1. El surgimiento de la ingeniería de software

1.1 Crisis del software

A mediados del siglo XX, las computadoras recién se habían aplicado del campo militar al campo civil, y el trabajo de programación en ese momento se consideraba creación de artistas. En ese momento, el hardware de la computadora era muy costoso y los programadores buscaban cómo escribir programas con una velocidad de ejecución rápida y un tamaño pequeño bajo las limitaciones de la potencia del procesador y el espacio de memoria. Esta aplicación está repleta de todo tipo de trucos confusos. En este momento, la producción de software depende en gran medida de la inteligencia de los desarrolladores.

En la década de 1960, el alcance de las aplicaciones informáticas se expandió enormemente y la demanda de sistemas de software y la complejidad del software en sí aumentaron drásticamente. Los métodos de desarrollo tradicionales no pueden satisfacer las necesidades de los usuarios en términos de calidad y eficiencia. Esta es la llamada "crisis del software"

Para resolver este problema, el concepto de "Ingeniería de software" se propuso por primera vez en la reunión de la OTAN de 1968, transformando el desarrollo de software de "arte" e "individual". comportamiento" a "Ingeniería" y "Grupo trabajando juntos". La idea básica es aplicar las teorías y técnicas de la informática, así como los principios y métodos de gestión de proyectos. De acuerdo a presupuesto y cronograma, es un proyecto para lograr la definición, desarrollo, lanzamiento y mantenimiento de productos de software que satisfagan los requerimientos de los usuarios. Desde entonces nació una nueva disciplina: la ingeniería de software.

Hasta ahora, para lograr el objetivo original, la comunidad de ingenieros de software ha propuesto una serie de teorías, métodos, lenguajes y herramientas para resolver algunos problemas en el proceso de desarrollo de software. Sin embargo, debido a la complejidad, variabilidad e invisibilidad inherentes del software, todavía existen los problemas del largo ciclo de desarrollo del software, el alto costo y la baja calidad. Según un informe publicado por IEEE en 2002, incluso en Estados Unidos, donde la industria de TI es la más desarrollada, hubo 0,37 errores por cada 1.000 líneas de código en productos de software desarrollados por empresas estadounidenses en 2001. Para otros países fuera de Estados Unidos Estados Unidos, esta proporción es aún mayor.

1.2 La diferencia entre software y otros productos

El software es un producto especial. La gente suele ver su soporte, pero lo realmente significativo es la información del ordenador o del software en el soporte.

El software es diferente de los productos espirituales ordinarios y también diferente de los productos materiales ordinarios. La obra de un escritor es un producto espiritual que no tiene valor de uso, pero que la gente puede leer y apreciar. Si considera el software como una obra, encontrará que su valor reside en el uso que hace la gente y a nadie le gusta ver su código fuente.

El software también se diferencia de los productos industriales tradicionales. Después de diseñar un producto industrial, los costos principales son el costo de las materias primas y el costo del proceso de producción, pero el costo principal de producir cualquier software es el costo de diseño e implementación del software, así como el costo de mantenimiento después de la finalización. se pone en uso el software. El coste de fabricar software en una línea de producción es bajo. Después de que el usuario compra el producto, tiene la propiedad y el derecho a utilizar el producto. El software adquirido por los usuarios sólo tiene "derechos de uso" limitados. Los productos industriales se desgastan con el uso, pero el software no. En las mismas condiciones de hardware, no hay diferencia entre el software que usó un usuario hace un año y el software que usó cinco años después. Los productos industriales tradicionales se producen en talleres y el proceso de producción es visible y tangible. Es fácil medir el consumo y el progreso durante el proceso de producción. Pero el proceso de desarrollo de software tiene lugar dentro de la mente humana, por lo que es difícil medir su progreso.

La llamada "ingeniería de software" consiste en "visualizar" y "cuantificar" este proceso, convirtiendo actividades de pensamiento invisibles en "documentos" visibles u otras cosas visibles.

2. Métodos y tecnologías de la ingeniería de software

En los últimos 30 años, la investigación y la práctica de la ingeniería de software han logrado grandes avances. Aunque todavía existe una brecha considerable entre la solución completa de la "crisis del software" (aún es controvertido si se puede resolver por completo), los métodos de ingeniería de software han jugado un papel muy importante en la promoción del desarrollo de la industria del software. Desde la década de 1960, han surgido una serie de logros, como la tecnología de programación estructurada, la ingeniería de software asistida por computadora (CASE), los lenguajes y métodos orientados a objetos, los procesos de software y la investigación de mejora de procesos de software, y se han aplicado en la práctica. Los principales métodos y tecnologías utilizados actualmente en la ingeniería de software se pueden dividir en dos categorías: tecnología y gestión.

2.1 Perspectiva técnica

Incluye principalmente: paradigma de desarrollo de software y método de diseño de software. El paradigma de desarrollo de software se centra en la dirección de la ingeniería de software, es decir, cómo escribir software correctamente para satisfacer las necesidades. El método de diseño de software se centra en el "método" de la ingeniería de software, es decir, cómo completar el mapeo de alto nivel; modelos conceptuales a modelos conceptuales de bajo nivel.

La aplicación de la teoría de la ingeniería de software en la práctica se centra en la reutilización del software. En referencia al actual modelo maduro de desarrollo de productos industriales, la reutilización de software puede evitar la duplicación del trabajo en el desarrollo de software. Sobre la base de los resultados existentes, aprovecha al máximo el conocimiento y la experiencia acumulados en el desarrollo de sistemas de aplicaciones anteriores y se centra en los componentes únicos de las nuevas aplicaciones. Al utilizar la tecnología de reutilización de software, podemos aprovechar al máximo los resultados de desarrollo existentes al desarrollar sistemas de aplicaciones, eliminar muchas tareas repetitivas en el ciclo de vida del software y mejorar la eficiencia del desarrollo de software. Al mismo tiempo, reutilizar resultados existentes de alta calidad puede evitar errores introducidos en el desarrollo secundario, mejorando así la calidad del software.

Las tecnologías clave para realizar la reutilización de software incluyen la tecnología de componentes de software, la ingeniería de dominio y la arquitectura de software.

Los componentes de software se refieren a componentes que se pueden identificar claramente en el sistema de aplicación, y los componentes reutilizables se refieren a componentes con funciones relativamente independientes y valor reutilizable. Actualmente, el concepto de componentes incluye no solo el código fuente, sino también requisitos, especificaciones de requisitos, arquitectura de sistemas y software, documentos, planes de prueba, casos y datos de prueba, y otra información útil para las actividades de desarrollo, que pueden denominarse componentes de software reutilizables. La tecnología de componentes de software es la tecnología central que respalda la reutilización del software. Sus principales contenidos de investigación incluyen: ¿cómo producir componentes con propósito y extraer componentes de sistemas existentes? Cómo describir componentes; cómo clasificar, organizar y recuperar componentes.

La práctica de la investigación muestra que, dado que el software requerido en un dominio específico tiene requisitos similares, es más probable que la reutilización del software tenga éxito en un dominio específico, por lo que surgió la ingeniería de dominio. La ingeniería de dominio es el proceso de establecer capacidades básicas y fundamentos necesarios para un grupo de proyectos de aplicaciones de sistemas similares o similares, que cubre todas las actividades para construir componentes de software reutilizables. Muchas instituciones de investigación, incluido el Instituto de Ingeniería de Software (CMU/SEI) de la Universidad Carnegie Mellon, han propuesto algunos métodos de análisis de dominio.

Si la reutilización del software sólo se detiene en la etapa del código, los beneficios para los desarrolladores serán limitados. La tecnología de arquitectura de software permite que la reutilización del software se desarrolle desde la reutilización del código hasta la reutilización del diseño y la reutilización de procesos. En el campo de la ingeniería de la construcción, la gente utiliza la arquitectura para expresar la estructura general de un edificio. En el estudio de la ingeniería de software se introdujo el término arquitectura. Su contenido principal es la estructura de un sistema de software, que incluye las siguientes entidades: componentes, interacciones entre componentes, restricciones, topología compuesta de componentes y conectores, principios y pautas de diseño.