Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INGENIERÍA DE SOFTWARE
UNIDAD I: LA INGENIERÍA DE SOFTWARE: VISION GENERAL
2
UNIDAD III: GESTIÓN DE INGENIERÍA DE SISTEMAS Y DE COMPONENTES
3
INGENIERÍA DE SOFTWARE
UNI- FIIS / INGENIERIA DE SISTEMAS
UNIDAD I
LA INGENIERÍA DE SOFTWARE:
VISION GENERAL
1. ESTRUCTURA DE
LA GUÍA SWEBOK 3.0
INGENIERIA DE SOFTWARE
6
1.1 Objetivos y Alcance del curso
Se explica el ciclo de vida de la Ing. de Software (ISO 12207) dentro del Ciclo de Vida
de Ing. de Sistemas (ISO 15288), la naturaleza del software y todos los aspectos claves
que un Ing. de sistemas necesita saber sobre la Ing. de Software.
1.2 La naturaleza del software
1. Complejidad
2. Conformidad
3. Mutabilidad
4. Invisibilidad.
Brooks afirma:
Las entidades de software son más complejas por su tamaño que tal vez cualquier otra
construcción humana porque no hay dos partes iguales (al menos por encima del nivel
de declaración). Si lo son, convertimos las dos partes similares en una subrutina: abierta
o cerrada. A este respecto, los sistemas de software difieren profundamente de las
computadoras, edificios o automóviles, donde abundan los elementos repetidos.
(Brooks 1995, p 82)
... La naturaleza del software
1. Complejidad
La complejidad del software surge del gran número de piezas de interacción únicas en
un sistema de software . Las piezas son únicas porque se encapsulan como funciones,
subrutinas u objetos e invocan según sea necesario en lugar de replicarse.
La complejidad dentro de las piezas y en las conexiones entre las piezas requiere que los
cambios experimenten un rigor de diseño sustancial y pruebas de regresión.
El software puede implementar bucles de control simples, así como algoritmos
complejos y heurística.
2. Conformidad
Un compilador puede detectar un error sintáctico u otro error sintáctico que falta, pero
un defecto en la lógica del programa o un error de sincronización puede ser difícil de
detectar hasta que se encuentra durante el funcionamiento.
3. Mutabilidad
4. Invisibilidad
Se dice que el software es invisible porque no tiene propiedades físicas. Si bien los
efectos de la ejecución de software en una computadora digital son observables, el
software en sí no puede ser visto, probado, olido, tocado u escuchado.
El software es una entidad intangible porque nuestros cinco sentidos humanos son
incapaces de detectarlo directamente.
Como el software no tiene presencia física, los ingenieros de software deben usar
diferentes representaciones en diferentes niveles de abstracción en un intento de
visualizar la entidad inherentemente invisible.
... La naturaleza del software
Unicidad
Otro punto sobre la naturaleza del software al que Brooks alude pero no llama
explícitamente es la singularidad del software.
Los proyectos de software y software son únicos por las siguientes razones:
▪ El software por sí solo es inútil, ya que siempre es parte de un sistema más grande; y
▪ El software es el elemento más frecuentemente cambiado de los sistemas intensivos
de software.
1.3 Una descripción general de la guía SWEBOK
ESTRUCTURA DE LA GUÍA SWEBOK
Áreas de Conocimiento:
1. Requisitos de software
2. Diseño de software
3. Construcción de software
4. Pruebas de software
5. Mantenimiento de software
El diseño se define como "el proceso de definir la arquitectura, los componentes, las
interfaces y otras características de un sistema o componente" y "el resultado de [ese]
proceso"
Visto como un proceso, el diseño de software es la actividad del ciclo de vida de ingeniería de
software en la que se analizan los requisitos de software con el fin de producir una
descripción de la estructura interna del software que servirá como base para su
construcción.
El área de conocimiento de construcción de software (KA) está vinculada a todos los demás KAs, pero está
fuertemente vinculado a diseño de software y pruebas de software porque el proceso de construcción de
software implica un diseño y pruebas de software significativos.
El proceso utiliza la salida de diseño y proporciona una entrada para las pruebas ("diseño" y "prueba" en este
caso que se refieren a las actividades, no a los KAs).
... Construcción de software
• KA Diseño Software.
• KA Prueba de Software (durante la construcción, los ingenieros de software, tanto de prueba unitaria
como de integración, prueban su trabajo)
• KA de Gestión de Configuración de software (se produce el mayor número de elementos de
configuración a administrarse en un proyecto de software: archivos de origen, documentación, casos de
prueba, etc.)
• KA Calidad del software (el código es el máximo entregable de un proyecto de software)
• KA Computing Foundations (por los conocimiento de algoritmos y de prácticas de codificación que
apoyan el diseño y la construcción de productos de software.
• También, está relacionado con la gestión de proyectos.
Contenido
1 Fundamentos de la construcción de software 4 Tecnologías de construcción
1.1 Minimizar la complejidad 4.1 Diseño y uso de API
1.2 Anticipar el cambio 4.2 Problemas de tiempo de ejecución orientados a objetos
1.3 Construcción para verificación 4.3 Parametrización y genéricos
1.4 Reutilización 4.4 Afirmaciones, diseño por contrato y programación defensiva
1.5 Normas en la construcción 4.5 Manejo de errores, manejo de excepciones y tolerancia a errores
4.6 Modelos ejecutables
2 Gestión de la construcción 4.7 Técnicas de construcción basadas en el Estado y basadas en tablas
2.1 Construcción en modelos de ciclo de vida 4.8 Configuración e internacionalización en tiempo de ejecución
2.2 Planificación de la construcción 4.9 Procesamiento de entrada basado en gramática
2.3 Medición de la construcción 4.10 Primitivas de simultaneidad
4.11 Middleware
3 Consideraciones prácticas 4.12 Métodos de construcción para software distribuido
3.1 Diseño de construcción 4.13 Construcción de sistemas heterogéneos
3.2 Idiomas de construcción 4.14 Análisis y ajuste del rendimiento
3.3 Codificación 4.15 Normas de plataforma
3.4 Pruebas de construcción 4.16 Programación de prueba primero
3.5 Construcción para reutilización
3.6 Construcción con reutilización 5 Herramientas de construcción de software
3.7 Calidad de construcción 5.1 Entornos de desarrollo
3.8 Integración 5.2 Constructores gui
5.3 Herramientas de prueba de unidades
5.4 Herramientas de generación de perfiles, análisis de rendimiento y
corte
3. Construcción de software
4. Pruebas de software
Las pruebas de software son, o deben ser, omnipresentes a lo largo de todo el ciclo de vida de desarrollo y
mantenimiento. De hecho, la planificación de las pruebas de software debe comenzar con las primeras
etapas del proceso de requisitos de software, y los planes y procedimientos de prueba deben desarrollarse
sistemática y continuamente —y posiblemente perfeccionarse— a medida que avance el desarrollo de
software.
Para muchas organizaciones, el enfoque de la calidad del software es uno de prevención: obviamente es
mucho mejor prevenir problemas que corregirlos.
Las pruebas se pueden ver, entonces, como un medio para proporcionar información sobre la funcionalidad
y los atributos de calidad del software y también para identificar fallas en aquellos casos en los que la
prevención de errores no ha sido efectiva.
Tal vez sea obvio, pero vale la pena reconocer que el software todavía puede contener fallas, incluso
después de la finalización de una amplia actividad de pruebas.
Los fallos de software experimentados después de la entrega se abordan mediante el mantenimiento
correctivo.
Contenido
1 Fundamentos de pruebas de software 4 Medidas relacionadas con las pruebas
1.1 Terminología relacionada con las 4.1 Evaluación del programa en pruebas
pruebas 4.2 Evaluación de las pruebas realizadas
1.2 Problemas clave 5 Proceso de prueba
1.3 Relación de pruebas con otras 5.1 Consideraciones prácticas
actividades 5.2 Actividades de prueba
2 niveles de prueba 6 Herramientas de prueba de software
2.1 El objetivo de la prueba 6.1 Soporte de herramientas de prueba
2.2 Objetivos de las pruebas 6.2 Categorías de herramientas
3 Técnicas de prueba
3.1 Basado en la intuición y la
experiencia del ingeniero de software
3.2 Técnicas basadas en dominios de
entrada
3.3 Técnicas basadas en código
3.4 Técnicas basadas en fallas
3.5 Técnicas basadas en el uso
3.6 Técnicas de prueba basadas en
modelos
3.7 Técnicas basadas en la naturaleza de
la aplicación
3.8 Selección y combinación de técnicas
4. Pruebas de software
5. Mantenimiento de software
Los esfuerzos de desarrollo de software dan como resultado la entrega
de un producto de software que satisface los requisitos del usuario.
En consecuencia, el producto de software debe cambiar o evolucionar.
Una vez en funcionamiento, se descubren defectos, cambian los entornos operativos y surgen nuevos
requisitos de usuario.
La fase de mantenimiento del ciclo de vida comienza después de un período de garantía o entrega de
soporte de post-implementación, pero las actividades de mantenimiento se producen mucho antes.
El mantenimiento de software es una parte integral de un ciclo de vida de software.
El KA de mantenimiento de software está relacionada con todos los demás aspectos de la ingeniería
de software.
Contenido
1 Fundamentos de mantenimiento de software
1.1 Definiciones y terminología
1.2 Naturaleza de mantenimiento
1.3 Necesidad de mantenimiento
1.4 La mayoría de los costes de mantenimiento
1.5 Evolución del software
1.6 Categorías de Mantenimiento
2 problemas clave en el mantenimiento de software
2.1 Problemas técnicos
2.2 Problemas de gestión
2.3 Estimación de costes de mantenimiento
2.4 Medición de mantenimiento de software
3 Proceso de mantenimiento
3.1 Procesos de mantenimiento
3.2 Actividades de mantenimiento
4 Técnicas de mantenimiento
4.1 Comprensión del programa
4.2 Reingeniería
4.3 Ingeniería inversa
4.4 Migración
4.5 Jubilación
5 Herramientas de mantenimiento de software
5. Mantenimiento de software
6. Gestión de la Configuración de software
Un sistema se puede definir como la combinación de elementos de interacción organizados para lograr
uno o más propósitos declarados. La configuración de un sistema son las características funcionales
y físicas del hardware o software establecidas en la documentación técnica o logradas en un producto;
también se puede considerar como una colección de versiones específicas de hardware, firmware o
elementos de software combinados de acuerdo con procedimientos de compilación específicos para
servir a un propósito particular.
La administración de la configuración (CM), se define formalmente como una disciplina que aplique
la dirección técnica y administrativa y la vigilancia a:
En cierto sentido, debería ser posible gestionar un proyecto de ingeniería de software de la misma
manera que se gestionan otros esfuerzos complejos. Sin embargo, hay aspectos específicos de los
proyectos de software y los procesos del ciclo de vida del software que complican la gestión eficaz,
incluidos estos:
❑ Los clientes a menudo no saben lo que se necesita o lo que es factible.
❑ Los clientes a menudo carecen de apreciación por las complejidades inherentes a la ingeniería de
software, particularmente con respecto al impacto de los requisitos cambiantes.
❑ Es probable que el aumento de la comprensión y las condiciones cambiantes generen requisitos
de software nuevos o modificados.
Los procesos de ingeniería de software se refieren a las actividades de trabajo realizadas por los
ingenieros de software para desarrollar, mantener y operar software, tales como requisitos, diseño,
construcción, pruebas, gestión de configuración y otros procesos de ingeniería de software.
El "proceso de ingeniería de software" se denominará "proceso de software" en esta KA.
La KA de Calidad de software se ocupa de los procesos de planificación, garantía y control para la calidad
del proyecto y del producto.
Los resultados de medición y medición en KA engineering foundations son esenciales para evaluar y
controlar los procesos de software.
Contenido
1 Definición de proceso de software
1.1 Gestión de procesos de software 4 Medición de software
1.2 Infraestructura de procesos de software 4.1 Proceso de software y medición de productos
4.2 Resultados de calidad de la medición
2 Ciclos de vida de software 4.3 Modelos de información de software
2.1 Categorías de procesos de software 4.4 Técnicas de medición de procesos de software
2.2 Modelos de ciclo de vida de software
2.3 Adaptación del proceso de software 5 Herramientas de proceso de ingeniería de
2.4 Consideraciones prácticas software
Los modelos y métodos de ingeniería de software varían ampliamente en alcance, desde abordar
una sola fase del ciclo de vida del software hasta cubrir el ciclo de vida completo del software.
El énfasis en este área de conocimiento (KA) se centra en los modelos y métodos de ingeniería de
software que abarcan múltiples fases del ciclo de vida del software, ya que los métodos
específicos para las fases del ciclo de vida único están cubiertos por otros KAs.
Contenido 4 Métodos de ingeniería de software
1 Modelado 4.1 Métodos heurísticos
1.1 Principios de modelado 4.2 Métodos formales
1.2 Propiedades y expresión de 4.3 Métodos de prototipado
modelos 4.4 Métodos ágiles
1.3 Sintaxis, semántica y pragmática
1.4 Condiciones previas,
postcondiciones e invariables
2 Tipos de modelos
2.1 Modelado de información
2.2 Modelado conductual
2.3 Modelado de estructura
3 Análisis de modelos
3.1 Análisis de la integridad
3.2 Análisis de consistencia
3.3 Análisis de la corrección
3.4 Trazabilidad
3.5 Análisis de interacción
9. Modelos de ingeniería de software
10. Calidad del software
¿Qué es la calidad del software y por qué es tan importante que se incluya en muchas áreas
de conocimiento (KAs) de la Guía SWEBOK?
La calidad del software puede referirse: a las características deseables de los productos de software,
en la medida en que un producto de software en particular posee esas características, y a los
procesos, herramientas y técnicas utilizados para lograr esas características.
A lo largo de los años, los autores y las organizaciones han definido el término calidad de manera
diferente:
• Para Phil Crosby, era "conforme a los requisitos".
• Watts Humphrey se refiere a él como "lograr excelentes niveles de "aptitud para el uso".
• IBM acuñó la frase "calidad impulsada por el mercado", donde el "cliente es el árbitro final“.
… Calidad del software
Más recientemente, la calidad del software se define como la "capacidad del producto de software
para satisfacer las necesidades declaradas e implícitas en condiciones específicas"
y como "el grado en que un producto de software cumple con los requisitos establecidos; sin
embargo, la calidad depende del grado en que esos requisitos establecidos representen con
precisión las necesidades, deseos y expectativas de las partes interesadas".
Ambas definiciones adoptan la premisa de la conformidad con los requisitos. Ninguno de los dos se
refiere a los tipos de requisitos (por ejemplo, funcional, fiabilidad, rendimiento, fiabilidad o cualquier
otra característica). Ambas definiciones hacen hincapié en que la calidad depende de los requisitos.
La calidad del software se logra mediante la conformidad con todos los requisitos, independientemente
de qué característica se especifique o cómo se agrupan o nombran los requisitos.
10. Calidad del software
Contenido
3 Consideraciones prácticas
3.1 Requisitos de calidad del software
3.2 Caracterización de defectos
3.3 Técnicas de gestión de la calidad del software
3.4 Medición de la calidad del software
Las aplicaciones generalizadas de los productos de software en la vida social y personal, generan que la
calidad de los productos de software tengan un profundo impacto en nuestro bienestar personal y
armonía social.
Los ingenieros de software deben manejar problemas de ingeniería únicos, produciendo software con
características conocidas y fiabilidad; siendo necesario que posean un conjunto adecuado de
conocimientos, habilidades, capacitación y experiencia en la práctica profesional.
El término "práctica profesional" se refiere a una forma de realizar servicios para lograr ciertas normas o
criterios tanto en el proceso de prestación de un servicio como en el producto final resultante del servicio.
El concepto de práctica profesional puede considerarse más aplicable dentro de aquellas profesiones
que tienen un cuerpo de conocimiento generalmente aceptado; códigos de ética y conducta profesional
con sanciones por violaciones; procesos aceptados para la acreditación, certificación y concesión de
licencias; y sociedades profesionales para proporcionar y administrar todos ellos.
Un ingeniero de software mantiene una práctica profesional realizando todo el trabajo de
acuerdo con las prácticas, estándares y directrices generalmente aceptados, en particular
establecidos por la sociedad profesional aplicable.
Todos estos son elementos que sentaron las bases de la práctica profesional de la ingeniería
de software.
11. Práctica profesional Contenido
de ingeniería de software
1 Profesionalidad 2 Dinámicas grupales y
1.1 Acreditación, Certificación y psicología
Licencias 2.1 Dinámica de trabajo en
1.2 Códigos de Ética y Conducta equipos/grupos
Profesional 2.2 Cognición individual
1.3 Naturaleza y función de las 2.3 Hacer frente a la complejidad
sociedades profesionales del problema
1.4 Naturaleza y función de las 2.4 Interactuar con las partes
normas de ingeniería de interesadas
software 2.5 Lidiar con la incertidumbre y
1.5 Impacto económico del la ambigüedad
software 2.6 Tratar entornos
1.6 Contratos de trabajo multiculturales
1.7 Cuestiones legales
1.8 Documentación 3 Habilidades de comunicación
1.9 Análisis de compensación 3.1 Lectura, comprensión y
resumen
3.2 Escritura
3.3 Comunicación en equipo y
grupo
3.4 Habilidades de presentación
11. Práctica profesional de
ingeniería de software
12. Economía de la ingeniería de software
La economía de la ingeniería de software consiste en tomar decisiones relacionadas
con la ingeniería de software en un contexto empresarial.
El éxito de un producto de software, servicio y solución depende de una buena gestión empresarial.
Sin embargo, las relaciones comerciales de software con el desarrollo de software y la ingeniería
siguen desconocidas.
La economía es el estudio del valor, los costos, los recursos y su relación en un contexto o
situación determinada. En la disciplina de la ingeniería de software, las actividades tienen costos,
pero el software resultante en sí tiene atributos económicos también.
En todo tipo de organizaciones , ya sea "con fines de lucro", "sin fines de lucro" o gubernamentales
- esto se traduce en dar sostenibilidad con rentabilidad al negocio.
Contenido
En el capítulo 10 del SWEBOK se describen los principios y tipos de modelado, así como
los métodos y herramientas que se utilizan para desarrollar, analizar, implementar y
verificar los modelos.
Los otros capítulos de SWEBOK sobre las fases de desarrollo de software (por ejemplo,
Diseño de software) discuten métodos y herramientas específicas de la fase.
PÁGINA 61 61
CONCLUSIONES
Esto es lo que hemos
aprendido
(a responder por los
estudiantes)
Logros de
Aprendizaje
• …
• …
• …
PÁGINA 62 62
Mg. Ing. Wilfredo Carranza
wcarranzab@uni.edu.pe
63