Ingeniería de Software:
Ingeniería de Software I
Introducción
Edgar Sarmiento Calisaya
Universidad Nacional de San Agustín de Arequipa – Perú
Departamento Académico de Ingeniería de Sistemas – DAISI
Escuela Profesional de Ciencia de la Computación – EPCC
esarmientoca@[Link]
6/04/2025 @EPCC/UNSA 1
Breve Biografía
• Formación:
• Graduación en Ingeniería de Sistemas, UNSA – Arequipa
• Maestría en Informática, UFRJ – Brasil
• Doctorado en Informática, PUC-Rio - Brasil
• Profesional:
• Ingeniero de software
• Arquitecto de Software
• Consultor de Software
• Academico:
• Docente Auxiliar, UNSA - Arequipa, 2018 - …
• Docente Invitado, UNMSM – Lima, 2024 -
6/04/2025 @EPCC/UNSA 2
Ingeniería de Software
Desarrollo Basado Lenguajes de
en Plataformas: Base de Datos
Programación
Web & Mobile
Ingeniería de Software I: Ingeniería de Software II: Ingeniería de Software III:
1. Ingeniería de Requisitos 1. Herramientas y 1. Gestión de Proyectos
2. Diseño de Software Entornos de IS 2. Gestión de Calidad
3. Construcción de 2. V&V 3. Gestión de Pruebas
Software 3. Evolución
Desarrollo de Software Empresarial: ERP, CRM, BPM, SOA, EBS, BI
Tópicos en Ingeniería de Software
6/04/2025 @EPCC/UNSA 3
Agenda
Temas:
1. Realidad del Software
2. Ingeniería de Software
3. Proceso de Software
4. Conclusión
6/04/2025 @EPCC/UNSA 4
Realidad del Software
The XGH Principles:
1. I think therefore it's not XGH.
In XGH you don't think, you do the first thing that comes
to your mind. There's not a second option as the first
one is faster.
2. There are 3 ways of solving a problem: the right way, the
wrong way and the XGH way which is exactly like the
wrong one but faster.
3. …
…
10. There's no refactoring just rework.
…
19. If it's working don't bother.
20. Tests are for pussies (cobardes).
21. Be used to the 'living on the edge' feeling.
22. The problem is only yours when your name is on the
[Link] code docs.
5
Realidad del Software
[Link]
6
Realidad del Software
7
Realidad del Software
All software Code
engineers can Quality
program, but not all
Embracing Environments
programmers can Tools and Testing
engineer software
Software
Engineer Software engineers do
not think of their career
Reliability,
Security, and
Cost and as just writing
Efficiency
Safety programs. They think in
terms of satisfying
Usability needs and solving
problems.
[Link]
8
Realidad del Software
[Link]
6/04/2025 @EPCC/UNSA 9
Realidad del Software
• Desarrollar software es una actividad compleja por naturaleza.
• Una de las razones de esta afirmación es que no existe una única solución
para cada escenario de desarrollo.
• Además, nos ocupamos todo el tiempo con personas, lo que hace que el
éxito del proyecto esté bastante relacionado con:
• la competencia del equipo y la forma en que trabajan, y
• para dificultar aún más, muchas veces no hacemos uso de un proceso bien definido
para apoyar las actividades del proyecto.
6/04/2025 @EPCC/UNSA 10
Realidad del Software
• Se entiende por proceso, en este contexto, como un conjunto de
actividades bien definidas con los respectivos responsables de ejecución,
herramientas de apoyo y artefactos producidos. Es decir, se define cómo el
equipo deberá trabajar para alcanzar el objetivo: desarrollar software con
calidad dentro de plazos, costos y requisitos definidos.
Ingeniería de
Requisitos
ATIVIDADES DE APOYO
Evolución Diseño
PERSONAS HERRAMIENTAS
PROCESO DE
SOFTWARE
Implemen
Prueba PRÁCTICAS
tación
6/04/2025 @EPCC/UNSA 11
Realidad del Software
• Standish CHAOS Summary Report:
• 71% de los proyectos no alcanzan sus objetivos, y tienen como origen Requisitos de software
imprecisos entre sus causas.
2020
06/04/2025 12
Realidad del Software
Agile projects are statistically 3X more likely to succeed,
and 1/3 less likely to fail than waterfall projects (2015)
06/04/2025 13
Realidad del Software
• Project Management Institute – 2014:
• 47% de los proyectos de software que fallaron tiene como origen Requisitos de
Software imprecisos como su causa principal.
Firesmith Donald, 2003
Halligan Robert, 2014 - Project Performance International (PPI)
06/04/2025 14
Realidad del Software
• HOY dedicamos nuestros esfuerzos a corregir lo que hicimos mal AYER –
REWORK
Arnd Von Staa, PUC-Rio.
Rebecca Staton-Reinstein, Irv Browntein, 2012
06/04/2025 15
¿Qué hacer?
Artesanía Ingeniería
Cambio cultural de los
interesados!
¿Ingeniería de Software?
06/04/2025 16
Ingeniería de Software
• La buena noticia es que muchas empresas se están moviendo en el sentido
de definir detalladamente sus procesos para apoyar sus actividades de
desarrollo.
• Productos y servicios de mejor calidad;
• Internacionalización
6/04/2025 @EPCC/UNSA 17
Ingeniería de Software
• Sin embargo, el escenario de desarrollo de software actual y el escenario
ideal de la ingeniería de software todavía están distantes.
• Varios factores contribuyen a ello, podemos citar dos:
• El no uso de los fundamentos de la ingeniería de software para apoyar las actividades
del desarrollo;
• El mal uso de los fundamentos de la ingeniería de software para apoyar las
actividades del desarrollo.
6/04/2025 @EPCC/UNSA 18
Ingeniería de Software
Ingeniería de Software (IS): La aplicación de un enfoque sistemático,
disciplinado y cuantificable en el desarrollo, operación y mantenimiento
de software [IEEE].
Provee Ingeniería de
Requisitos
Métodos
Evolución Diseño
Incorpora
PROCESO DE
Prácticas para SOFTWARE
minimizar
problemas
Impleme
Prueba
ntación
Técnicas Herramientas
Producto de Software
6/04/2025 @EPCC/UNSA 19
Ingeniería de Software
• Sistemático porque parte del principio de que existe un proceso de
desarrollo definiendo las actividades que deberán ser ejecutadas.
• Disciplinado porque parte del principio de que los procesos definidos
serán seguidos.
• Cuantificable porque se debe definir un conjunto de medidas a ser
extraídas del proceso durante el desarrollo de forma que las decisiones
relacionadas al desarrollo del software (por ejemplo, mejora de proceso)
se basen en datos reales, y no en “creencias" .
• Algunos de sus principales objetivos son:
• Calidad de software;
• Productividad en el desarrollo, operación y mantenimiento de
software;
• Permitir que los profesionales tengan control sobre el desarrollo de
software dentro de costos, plazos y niveles de calidad deseados.
6/04/2025 @EPCC/UNSA 20
Ingeniería de Software
Procesos de Apoyo Herramientas & Entornos Prácticas
Ingeniería de
Gestión de Requisitos
Configuración
y Cambio
Evolución Diseño
PROCESO DE
DESARROLLO
CI/CD
Gestión de Integración Continua
Entrega Entrega Continua
(Release) Impleme Despliegue Continuo
Prueba
ntación
6/04/2025 @EPCC/UNSA 21
Proceso de Software
• Un proceso de software se puede definir
como un conjunto de actividades,
Ingeniería de
métodos, prácticas y transformaciones Requisitos
que las personas usan para desarrollar y
mantener software y productos
asociados (por ejemplo, planes de Evolución Diseño
proyecto, documentos, código, casos de PROCESO DE
SOFTWARE
prueba y manuales de software).
usuario) [ IEEE-STD-610].
Impleme
Prueba
ntación
6/04/2025 @EPCC/UNSA 22
Modelos de Proceso de Software
debem incorporar una
• Métodos estratégia de
• Procesos Eng.
Software desarrollo
• Técnicas
• Herramientas
Las organizaciones dividen el desarrollo de proyectos de software en
fases con el fin de asegurar un mejor control y vinculación con las
operaciones actuales de la empresa;
El conjunto de fases de un proyecto de software se conoce como:
06/04/2025 23
Modelos de Proceso de Software
debem incorporar una
Métodos estratégia de
Procesos Eng.
Software desarrollo
Técnicas
Herramientas
Modelo de Proceso
Paradigma de Ingeniería de Software
Ciclo de Vida
Modelo de Ciclo de Vida
Metodología
06/04/2025 24
Modelos de Proceso de Software
• Es escogido con base en:
• la naturaleza del diseño y la aplicación
• en los métodos y herramientas a utilizar
• en los controles y productos que necesitan ser entregados
06/04/2025 25
Modelos de Proceso de Software
• Todo desarrollo de software puede ser caracterizado como un ciclo de
solución de problema
• El ciclo de solución puede ser usado en diferentes niveles de resolución
Ingeniería de
Requisitos
Evolución Diseño
PROCESO DE
SOFTWARE
Impleme
Prueba
ntación
06/04/2025 26
Modelos de Proceso de Software
• Todas las demás actividades dependen del Proceso de desarrollo.
• Proyectos de software modernos utilizan algún tipo de metodología basada en
iteraciones o espiral sobre uno en cascada.
• Alguns Modelos de Processo: Ingeniería de
Requisitos
• Waterfall
• Iterative
• Spiral Evolución Diseño
• Agile
PROCESO DE
• Lean SOFTWARE
• DevOps
Impleme
Prueba
ntación
06/04/2025 27
Modelos de Proceso de Software
Metodologías: cascada, iterativo, espiral, ágil, devops…
Ingeniería de
Requisitos
Diseño
Impleme
ntación
Prueba
Despliegue Uso
6/04/2025 @EPCC/UNSA 28
Modelos de Proceso de Software
Metodologías: cascada, iterativo, incremental, espiral, ágil, devops…
Necesidades de Usuario
6/04/2025 @EPCC/UNSA 29
Modelos de Proceso de Software
Metodologías: cascada, iterativo, incremental, espiral, ágil, devops…
Iterative vs Incremental Flashcard – safety dave
6/04/2025 @EPCC/UNSA 30
Modelos de Proceso de Software
Metodologías: cascada, iterativo, espiral, ágil, devops…
Ingeniería de
Requisitos
Diseño
Incremental Uso
Iterativo
Impleme
Prueba Despliegue
ntación
6/04/2025 @EPCC/UNSA 31
Modelos de Proceso de Software
Metodologías: cascada, iterativo, espiral, ágil, devops…
Ingeniería de Despliegue Continuo
Requisitos
Diseño
Despliegue
Impleme
ntación Uso
Prueba Monitorear
Integración Continua
6/04/2025 @EPCC/UNSA 32
Modelos de Proceso de Software
Metodologías: cascada, iterativo, espiral, ágil, devops…
DevOps: Es la combinación de filosofías culturales, prácticas y herramientas que aumenta la
capacidad de una organización para entregar aplicaciones y servicios a alta velocidad:
evolucionando y mejorando productos a un ritmo más rápido que las organizaciones que utilizan
procesos tradicionales de desarrollo de software y gestión de infraestructura (AWS).
6/04/2025 @EPCC/UNSA 33
Trazabilidad de Software
• Trazabilidad de Requisitos
en Diseño, Código,
Pruebas, Cambios, …
Jacobson, I., Spence, I., &
Kerr, B. (2016). Use-Case
2.0. Queue, 14(1), 94-123.
6/04/2025 @EPCC/UNSA 34
Resultados
Más proyectos
concluidos con éxito;
Gestión adecuada de
grandes equipos de
software;
Calidad del software
mejorada;
Disminución de los
costos de desarrollo.
06/04/2025 35
Resumen
• Todas las demás actividades dependen del proceso de desarrollo.
• Proyectos de software modernos utilizan algún tipo de metodología basada
en iteraciones o espiral sobre uno en cascada.
• Um proceso gerenciado (establecido, comprendido y controlado) puede
ayudar a alcanzar la calidad del producto.
06/04/2025 36
Bibliografia Principal
• Pressman, R. S. and Maxim, B. (2014). Ingeniería de Software: Un Enfoque
Práctico. McGraw-Hill, 8th edition.
• Sommerville, I. (2010). Ingeniería de Software. Addison-Wesley, 9th
edition.
• McConnell S. (2011). Code Complete: A practical Handbook of software
construction. Segunda edición. Microsoft Press.
• Winters, T., Manshreck, T., & Wright, H. (2020). Software engineering at
google: Lessons learned from programming over time. O'Reilly Media.
• Valente, M. T. (2024). Software Engineering: A Modern Approach.
Disponible en: [Link]
06/04/2025 37
Bibliografia Complementar
• CMMI. Disponível em: [Link]
• Sanches, R. Notas de Aula. Qualidade de Software. ICMC-USP-Brasil.
• Falbo, R. Notas de Aula. Tópicos Especiais – Qualidade de Software. UFES-Brasil.
• [Link]. Fundamentos de Engenharia de SW. Ciclo de Vida de Projetos de SW. NCE, PPGI, UFRJ – Brasil
• Inês [Link]. Engenhar’ia de Software. O produto e o Processo. UNESP – Brasil.
• Robert Half. 6 Basic SDLC Methodologies: Which One is Best?, 2017. Disponible en: [Link]
skills/6-basic-sdlc-methodologies-which-one-is-best
• Altexsoft – Software R&D Engineering. Agile Project Management: Best Practices and Methodologies, 2018. Disponible em:
[Link]
• Instinctools. Advantages of Lean Software Development. Disponible en: [Link]
lean-software-development
06/04/2025 38