República Bolivariana de Venezuela
Ministerio del Poder Popular para la Educación Universitaria
Universidad Santa María
Facultad de Ingeniería y Arquitectura
Cátedra de Ingeniería de Software II
La Ingeniería de Software
Profesor:
Integrante:
José Ramírez Infante, Oriana.V-27.401.092
Caracas, 2024
1
INDICE
INTRODUCCION.............................................................................................................3
LA INGENIERIA DE SOFTWARE...............................................................................4
Definición Según Reconocidos Autores...............................................................4
Objetivos de la Ingeniería de Software.................................................................4
Características de la Ingeniería de Software......................................................5
Historia de la Ingeniería de Software.......................................................................5
Ingeniería de Software en la Actualidad..................................................................7
Diferencias entre Ingeniería de Software y Sistemas..........................................8
Etapas de la Ingeniería de Software..........................................................................8
Ingeniería de Software: Herramientas....................................................................9
CASE (Ingeniería de Software Asistido por Computador)................................11
Principios de la Ingeniería de Software.................................................................12
Ingeniería de Software y sus Fases..........................................................................13
Ingeniería de Software Especialización.................................................................14
CONCLUSION................................................................................................................15
BIBLIOGRAFIA.............................................................................................................16
2
INTRODUCCION
La presente investigación se refiere al tema de ingeniería de software es una disciplina
que ha revolucionado la forma en que desarrollamos y utilizamos software en nuestra
sociedad. El campo de estudio de la ingeniería de software integra ciencias de la
computación, ciencias aplicadas y las ciencias básicas en las cuales se encuentra
apoyada la ingeniería. La característica principal es la aplicación de principios de
ingeniería al desarrollo de software. Esto implica el uso de métodos sistemáticos,
disciplina, herramientas y técnicas para diseñar, desarrollar, probar y mantener
software de alta calidad y confiabilidad.
Esta investigación se llevó a cabo con el fin de satisfacer un interés académico, con el
propósito de obtener una comprensión más profunda sobre qué es la ingeniería de
software y cuál es su utilidad.
El objetivo de hacer esta investigación es contribuir al conocimiento en el área de
ingeniería de software a través de la teoría, así como aplicar estos conocimientos
teóricos en la práctica para desarrollar soluciones innovadoras y efectivas que aborden
los desafíos actuales en el desarrollo de software.
3
LA INGENIERIA DE SOFTWARE
La ingeniería de software es una disciplina formada por un conjunto de métodos,
herramientas y técnicas que se utilizan en el desarrollo de los programas informáticos
(software). La ingeniería de software engloba toda la gestión de un proyecto. Desde el
análisis previo de la situación, el planteamiento del diseño hasta su implementación,
pasando por las pruebas recurrentes para su correcto funcionamiento. Podríamos
decir que la ingeniería del software es el continente donde se aloja el contenido, que
sería el software en sí.
Definición Según Reconocidos Autores:
• Fred Brooks: "La ingeniería de software es la aplicación de principios de
ingeniería al desarrollo y mantenimiento de software".
• Grady Booch: "La ingeniería de software es la aplicación de un enfoque
sistemático, disciplinado y cuantificable al desarrollo, operación y
mantenimiento de software".
• Pressman (2010): “La ingeniería de software es la aplicación de enfoques
sistemáticos y disciplinados al desarrollo y mantenimiento de software”.
Objetivos de la Ingeniería de Software
La ingeniería de software cubre un marco muy amplio. Hay que entender esto como la
posibilidad de que enmarque varios objetivos a tener en cuenta cuando queremos
implementar u optar por un servicio de ingeniería de software:
Diseño de programas informáticos adaptados a las necesidades y exigencias de
los clientes.
Solucionar problemas de programación.
Estar presente en todas las fases del ciclo de vida de un producto.
Contabilizar los costes de un proyecto y evaluar los tiempos de desarrollo.
4
Realizar el seguimiento del presupuesto y cumplir los plazos de entrega.
Liderar equipos de trabajo de desarrollo de software.
Estructurar la elaboración de evidencias que comprueben el perfecto
funcionamiento de los programas y que se adaptan a los requerimientos de
análisis y diseño.
Diseñar, construir y administrar bases de datos.
Liderar y orientar a los programadores durante el desarrollo de aplicaciones.
Incluir procesos de calidad en los sistemas, calculando métricas e indicadores y
chequeando la calidad del software producido.
Estructurar e inspeccionar el trabajo del equipo ya sea el grupo de técnicos de
mantenimiento o el grupo de ingenieros de sistemas y redes.
Características de la Ingeniería de Software
La Ingeniería de software tiene las siguientes características:
• Es una disciplina que se basa en principios de ingeniería.
• Es un proceso sistemático y disciplinado.
• Es un proceso cuantificable.
• Es un proceso de desarrollo de software.
• Es un proceso de mantenimiento de software.
Historia de la Ingeniería de Software
Los primeros programas informáticos se desarrollaron en las décadas de 1940 y 1950.
En aquella época, el software se creaba de forma artesanal, por programadores que
trabajaban de forma independiente. Sin embargo, a medida que los programas se
volvieron más complejos y costosos de desarrollar, que se debió a una serie de
factores, como el aumento de la capacidad de las computadoras, la demanda de
sistemas de software más sofisticados y la falta de metodologías y herramientas
adecuadas para el desarrollo de software, se hizo evidente que este enfoque era
insostenible.
5
En la década de 1960, se produjo una serie de fracasos de software, que se
caracterizaba por retrasos, costos excesivos y fallas en los sistemas, que pusieron de
manifiesto la necesidad de un enfoque más sistemático para el desarrollo de software.
El término Ingeniería del Software, surge cuando se llevaba a cabo dos conferencias
estructuradas por la OTAN en los años en 1967 y 1968.
Es para mediados de la década los 70, cuando los sistemas informáticos incrementaron
la dificultad y dan pie a la creación de las redes de computadoras.
Este hecho presionó a quienes desarrollaban las computadoras personalizadas, aunque
no se sabía mucho sobre ellas; al final de esta etapa, surgieron los microprocesadores.
En la década de 1980, se produjo un auge de la informática personal. Esto condujo a
un aumento de la demanda de software, lo que a su vez aceleró el desarrollo de la
ingeniería de software.
Durante esta década, se desarrollaron una serie de nuevas técnicas y herramientas de
ingeniería de software, como:
• El desarrollo de software orientado a objetos, que utiliza objetos para
representar entidades del mundo real.
• Los lenguajes de programación de alto nivel, que hacen que el desarrollo de
software sea más fácil y eficiente.
• Los entornos de desarrollo integrado (IDE), que proporcionan herramientas
para ayudar a los desarrolladores a escribir, compilar y depurar código.
La cuarta época del progreso de los sistemas informáticos, comienza en los 90 y se
orienta hacia el impacto general de las computadoras y el software, en todos los
entornos
Aquí hay una línea de tiempo de los desarrollos importantes en la historia del
software:
Década de 1940 – Invención del primer software del mundo en Inglaterra
Década de 1970 – Lanzamiento de la primera computadora personal de Apple
Década de 1980 – Introducción de IBM PC
6
Década de 1990 – Auge del sistema operativo móvil y el primer dispositivo
BlackBerry
Década de 2000: uso del primer iPhone de Apple
Ingeniería de Software en la Actualidad
El software actúa como distribuidor y hace llegar a los usuarios, el producto más
importante del este siglo: la información.
El desarrollo de software es una pieza fundamental para la competitividad y la
supervivencia de las empresas.
La era digital ha impulsado esta transformación, y hoy en día, el software es un
habilitador clave para lograr eficiencia operativa, satisfacer las demandas del mercado
y proporcionar experiencias excepcionales a los clientes
El software modifica la información personal para hacerlos más útiles en un entorno
local, administra información comercial para mejorar la competitividad, facilita el
acceso a redes a nivel mundial, y propone la forma de obtener información de
cualquier manera.
Uno de los beneficios más significativos que ofrece el desarrollo de software es la
automatización de procesos.
Las empresas pueden optimizar sus operaciones y reducir la carga de trabajo manual
mediante la creación de aplicaciones personalizadas que automatizan tareas rutinarias.
Esto reduce el tiempo, minimiza los errores y permite a los empleados enfocarse en
actividades de mayor valor agregado.
La ingeniería del software trata campos muy variados de la informática y de las
Ciencias de la Computación, que además se aplican a un amplio espectro de campos,
tales como negocios, investigación científica, medicina, producción, logística, banca,
meteorología, derecho, redes, entre otras muchas.
En la actualidad, hay muchas demandas de ingenieros que estén altamente
preparados, como son los requerimientos de las grandes compañías como Google,
7
Facebook, Twitter entre otras, que además compiten entre sí, para obtener a los
egresados de las universidades que presenten las mejores posibilidades.
Diferencias entre Ingeniería de Software y Sistemas
La primera y más evidente diferencia radica en el enfoque principal de cada disciplina.
La Ingeniería de Sistemas se centra en la creación, gestión y mantenimiento de
sistemas completos, mientras que la Ingeniería de Software se enfoca exclusivamente
en el desarrollo de software y aplicaciones informáticas.
El nivel de detalle la Ingeniería de Sistemas se ocupa en la arquitectura global de un
sistema, incluyendo el hardware y el software, mientras que la Ingeniería de Software
puede ser el arquitecto de software, de soluciones y empresariales.
La Ingeniería de Sistemas abarca aspectos como la gestión de proyectos, la seguridad
informática y la integración de diferentes componentes, mientras que la Ingeniería de
Software se orienta principalmente en la arquitectura, metodologías, tecnologías y
herramientas.
Las aplicaciones de ambas disciplinas varían ampliamente. La Ingeniería de Sistemas se
utiliza en una amplia variedad de campos, como la industria, la salud, la defensa y más.
Por otro lado, la Ingeniería de Software es esencial en la creación de aplicaciones
informáticas para el consumo general, como aplicaciones móviles, programas de
software empresarial y más.
Los objetivos de ambas disciplinas también difieren. La Ingeniería de Sistemas busca
crear soluciones integrales para problemas complejos, considerando múltiples
componentes y su interacción.
Mientras que, la Ingeniería de Software se concentra en desarrollar aplicaciones
específicas que satisfagan las necesidades de los usuarios.
Etapas de la Ingeniería de Software
La ingeniería de Software consta de siete etapas. A continuación cada una de ellas
brevemente definidas:
8
Etapa de análisis: Es el procedimiento de investigación de un problema al que
se desea encontrar la solución.
Etapa de Diseño: Es el procedimiento que emplea la información acumulada en
la etapa de análisis al diseño del producto.
Etapa de Desarrollo: Consiste en el empleo de los diseños creados durante la
etapa de diseño para elaborar los elementos a utilizarse en el sistema.
Etapa de Implementación o Entrega Implantación: Consiste en la distribución
del producto y hacerlo llegar a manos del cliente.
Etapa de Mantenimiento: Consiste en aplicar las soluciones apropiadas a
cualquier problema del producto y re- liberar el producto mejorado, dándole
una nueva versión.
Etapa de Pruebas o Verificación Prueba: Consiste en garantizar que los
elementos individuales que componen el sistema o producto, presentan las
características requeridas en la especificación creada durante la etapa de
diseño.
Etapa final EOL (End-of-Life): Consiste en ejecutar todas las labores que
garanticen que tanto los clientes como los empleados tiene la certeza de que el
producto ya no estará más a la disposición, por lo que no se venderá más.
Ingeniería de Software: Herramientas
Las herramientas de ingeniería de software son software que se utiliza para apoyar el
desarrollo, el mantenimiento y la operación de software. Las herramientas de
ingeniería de software se pueden clasificar en dos categorías principales: herramientas
de apoyo al proceso y herramientas de apoyo a la codificación.
Herramientas de apoyo al proceso:
Las herramientas de apoyo al proceso se utilizan para apoyar las actividades del
proceso de ingeniería de software, como la planificación, el análisis, el diseño, la
implementación, las pruebas y el mantenimiento. Algunas herramientas de apoyo al
proceso comunes incluyen:
• Herramientas de gestión de proyectos: Estas herramientas se utilizan para
planificar, programar, seguir el progreso y controlar los proyectos de software.
9
• Herramientas de gestión de requisitos: Estas herramientas se utilizan para
recopilar, almacenar y gestionar los requisitos del software.
• Herramientas de modelado: Estas herramientas se utilizan para crear modelos
del software, como diagramas de flujo, diagramas de clases y diagramas de casos de
uso.
• Herramientas de análisis estático: Estas herramientas se utilizan para analizar el
código fuente del software para detectar errores y problemas potenciales.
• Herramientas de pruebas: Estas herramientas se utilizan para probar el
software para garantizar que cumpla con los requisitos.
• Herramientas de mantenimiento: Estas herramientas se utilizan para ayudar en
el mantenimiento del software, como la corrección de errores y la implementación de
mejoras.
Herramientas de apoyo a la codificación:
Las herramientas de apoyo a la codificación se utilizan para automatizar tareas de
codificación, como la escritura de código, la depuración y la documentación. Algunas
herramientas de apoyo a la codificación comunes incluyen:
• Editores de texto: Estos editores se utilizan para escribir código fuente.
• Compiladores: Estos programas se utilizan para convertir el código fuente en
código máquina.
• Enlazadores: Estos programas se utilizan para combinar los módulos de código
fuente en un programa ejecutable.
• Depuradores: Estos programas se utilizan para encontrar y corregir errores en
el código fuente.
• Herramientas de documentación: Estas herramientas se utilizan para generar
documentación del software, como los manuales de usuario y los manuales de
desarrollo.
Además de estas categorías principales, existen otras herramientas de ingeniería de
software que se utilizan para tareas específicas, como la gestión de datos, la seguridad
del software y la colaboración.
10
CASE (Ingeniería de Software Asistido por Computador)
Las siglas 'CASE' se refieren a Computer Aided Software Engineering (Ingeniería de
Software Asistida por Computadora). Por tanto se refiere al desarrollo y
mantenimiento de proyectos de Software con la ayuda de varias herramientas
automatizadas.
Las herramientas CASE son un conjunto de aplicaciones informáticas, usadas para
automatizar actividades del ciclo de vida de desarrollo de sistemas (SDLC). Las
herramientas CASE son usadas por los Directores de proyectos de software, analistas e
Ingenieros para desarrollar sistemas de software.
El uso de Herramientas CASE acelera el desarrollo del proyecto con tal de producir los
resultados deseados y ayuda a encontrar imperfecciones antes de proseguir con la
siguiente etapa del desarrollo de Software.
Los beneficios de utilizar herramientas CASE incluyen:
• Eficiencia: Las herramientas CASE pueden automatizar tareas que de otro modo
serían realizadas manualmente por los ingenieros de software. Esto puede liberar
tiempo para que los ingenieros se centren en actividades más estratégicas.
• Productividad: Las herramientas CASE pueden ayudar a los ingenieros a ser más
productivos. Por ejemplo, las herramientas de automatización de pruebas pueden
ayudar a los ingenieros a probar el software más rápidamente.
• Calidad: Las herramientas CASE pueden ayudar a mejorar la calidad del
software. Por ejemplo, las herramientas de análisis de código pueden ayudar a los
ingenieros a identificar errores en el código fuente.
• Comunicación: Las herramientas CASE pueden ayudar a los ingenieros a
comunicarse entre sí de forma más eficaz. Por ejemplo, las herramientas de gestión de
proyectos pueden ayudar a los ingenieros a compartir información sobre el progreso
del proyecto.
11
Los tipos de herramientas CASE incluyen:
• Herramientas de análisis: Estas herramientas se utilizan para analizar los
requisitos del software, el diseño del software y el código fuente del software. Eje:
Rational Rose, UML Designer, StarUML.
• Herramientas de diseño: Estas herramientas se utilizan para crear diseños de
software. Eje: Visual Studio, Eclipse, Xcode.
• Herramientas de implementación: Estas herramientas se utilizan para escribir el
código fuente del software. Eje: Visual Studio Code, Sublime Text, Atom.
• Herramientas de pruebas: Estas herramientas se utilizan para probar el
software. Eje: JUnit, Selenium, Appium.
• Herramientas de gestión de proyectos: Estas herramientas se utilizan para
gestionar los proyectos de desarrollo de software. Eje: Jira, Trello, Asana.
Principios de la Ingeniería de Software
Una serie de principios, dirige la práctica de la ingeniería de software, que son
fundamentales y además contribuyen a la aplicación de los procedimientos del
software.
En la práctica, los principios determinan los valores y reglamento que servirán para el
momento de investigar o estudiar un problema; luego se buscará y diseñará la
solución, se reparará, se probará y al estar listo, se distribuirá entre la comunidad de
usuarios.
Algunos de los principios más importantes de la ingeniería de software son:
• Orientación al cliente: El software debe satisfacer las necesidades de los
usuarios.
• Enfoque iterativo e incremental: El software se desarrolla en ciclos pequeños,
que permiten a los desarrolladores obtener retroalimentación de los usuarios y realizar
mejoras.
• Diseño modular: El software debe estar dividido en módulos independientes,
que se pueden desarrollar y mantener de forma independiente.
12
• Documentación completa: El software debe estar bien documentado para
facilitar su comprensión y mantenimiento.
• Pruebas exhaustivas: El software debe ser probado exhaustivamente para
garantizar su calidad.
• Mantenimiento sostenible: El software debe ser fácil de mantener y actualizar.
• Estos principios son aplicables a todos los proyectos de desarrollo de software,
independientemente de su tamaño o complejidad.
Ingeniería de Software y sus Fases
• Análisis de requisitos: Separar los requerimientos de un producto de software
es la primera etapa para poder crearlo.
• Diseño y arquitectura: Consiste en acordar cómo funcionará de manera general
sin especificar los detalles. Se basa en la inclusión de fundamentos de la
implementación tecnológica, como el hardware, la red, etc.
• Programación: La reducción de un diseño a código puede ser la parte más
evidente del trabajo de ingeniería de software, pero no siempre resulta ser la parte
más larga. La dificultad y la permanencia de esta etapa está estrechamente ligada al o
a los lenguajes de programación utilizados.
• Pruebas: Consiste en verificar que el software ejecute apropiadamente las
labores indicadas en la especificación. La tecnología de prueba es aplicada de manera
independiente, en cada módulo del software y luego hacer la prueba de integralmente,
para así llegar al objetivo. Es usual, además de recomendado, que las pruebas sean
realizadas por alguien distinto al que desarrolló el programa; sin perjuicio de lo
anterior el programador debe hacer sus propias pruebas.
• Documentación: Todo lo que se relaciona a la documentación del desarrollo del
software y de la administración del proyecto, pasando por modelaciones (UML),
diagramas, pruebas, manuales de usuario, manuales técnicos, etc.; todo con el
propósito de realizar correcciones con regularidad, utilidad, mantenimiento futuro y
ampliaciones al sistema.
• Mantenimiento: Conservar y realizar mejoras en el software para afrontar
fallas encontradas y nuevos requisitos. Esto puede llevar más tiempo incluso que el
13
desarrollo inicial del software. Alrededor de 2/3 de toda la ingeniería de software tiene
que ver con dar mantenimiento.
Ingeniería de Software Especialización
La Especialización en Ingeniería de Software promueve la capacitación en habilidades,
destrezas y conocimientos en torno del campo de la programación y desarrollo de
software especializado.
Algunas de las especializaciones más comunes en ingeniería de software son:
• Desarrollo de software: Esta especialización se centra en el desarrollo de
software, desde la planificación y el diseño hasta la implementación y las
pruebas.
• Arquitectura de software: Esta especialización se centra en el diseño y la
construcción de la arquitectura de software, que es la estructura de un sistema
de software.
• Ingeniería de pruebas: Esta especialización se centra en el diseño, la ejecución y
el análisis de pruebas de software.
• Gestión de proyectos de software: Esta especialización se centra en la
planificación, la ejecución y el control de proyectos de software.
• Seguridad de software: Esta especialización se centra en la protección del
software contra ataques y vulnerabilidades.
• Inteligencia artificial: Esta especialización se centra en el desarrollo de software
que utiliza inteligencia artificial.
• Machine learning: Esta especialización se centra en el desarrollo de software
que utiliza aprendizaje automático.
• Data science: Esta especialización se centra en el análisis de datos para obtener
información y tomar decisiones.
14
CONCLUSION
La ingeniería de software se erige como un campo en constante evolución,
adaptándose a las demandas cambiantes de la industria y la tecnología. Las fases de la
ingeniería de software, desde el análisis de requisitos hasta el mantenimiento, nos
permiten llevar a cabo proyectos de desarrollo de software de manera efectiva y
eficiente. Siguiendo un proceso estructurado y organizado, podemos garantizar la
calidad y funcionalidad del software entregado, cumpliendo con los requisitos
establecidos por el cliente. La actualidad de la ingeniería de software se ve marcada
por la creciente complejidad de los sistemas, el auge de la inteligencia artificial y el
enfoque en la ciberseguridad. Estos aspectos demandan una continua actualización de
las metodologías y herramientas utilizadas en el proceso de desarrollo de software.
En cuanto a las herramientas CASE, su papel es crucial para agilizar el ciclo de vida del
desarrollo de software, facilitar la colaboración entre equipos y garantizar la calidad
del producto final. La ingeniería de software no solo se mantiene relevante en la
actualidad, sino que continúa siendo un campo dinámico que se nutre de principios
sólidos y herramientas innovadoras para enfrentar los desafíos emergentes en el
desarrollo de software en un entorno tecnológico en constante cambio.
15
BIBLIOGRAFIA
https://www.teknei.com/2021/11/09/que-es-y-que-utilidad-tiene-la-ingenieria-de-
software/#:~:text=La%20ingenier%C3%ADa%20de%20software%20es,base%20para%20crear
%20una%20aplicaci%C3%B3n.
https://informatecdigital.com/articulos/historia-de-la-ingenieria-de-software/
https://www.utp.edu.pe/blog/diferencias-entre-ingenieria-sistemas-software#:~:text=La
%20Ingenier%C3%ADa%20de%20Sistemas%20busca,las%20necesidades%20de%20los
%20usuarios
https://global.tiffin.edu/noticias/areas-de-especializacion-de-la-ingenieria-en-sistemas
https://minas.medellin.unal.edu.co/formacion/especializaciones/especializacion-en-
ingenieria-de-software
https://www.tutorialspoint.com/es/software_engineering/case_tools_overview.htm
https://es.wikipedia.org/wiki/Ingeniería_de_software
https://desarrollodesoftware.dev/historia/
https://www.redalyc.org/journal/2654/265452747021/html/#:~:text=Según%20lo
%20expresa%20Pressman%20(2010,el%20estudio%20de%20estos%20enfoques.
https://micarrerauniversitaria.com/c-ingenieria/ingenieria-de-software/#google_vignette
https://www.teknei.com/2021/11/09/que-es-y-que-utilidad-tiene-la-ingenieria-de-
software/#:~:text=La%20ingeniería%20de%20software%20es,base%20para%20crear%20una
%20aplicación.
https://www.utp.edu.pe/blog/diferencias-entre-ingenieria-sistemas-software#:~:text=La
%20Ingeniería%20de%20Sistemas%20busca,las%20necesidades%20de%20los%20usuarios.
https://www.northware.mx/blog/la-importancia-del-desarrollo-de-software-en-la-
actualidad/#:~:text=Uno%20de%20los%20beneficios%20más,personalizadas%20que
%20automatizan%20tareas%20rutinarias.
https://prezi.com/maorkacn9px4/principios-fundamentales-de-la-ingenieria-de-software/
16
17