2. Definición según la IEEE
Área de la Ciencia de la Computación,
que ofrece Métodos y Técnicas para
DS, estudia el conjunto de actividades
relacionadas con el ciclo de desarrollo
de SW, en particular se enfoca en SW
de Calidad.
Profa. Ing. María Andrade
3. La aplicación de enfoque sistemático, cuantifica
ble y disciplinado al desarrollo, operación y
mantenimiento de Software.
Profa. Ing. María Andrade
4. Áreas del conocimiento
Requisitos
ƒDiseño
Construcción
Pruebas
Calidad
Mantenimiento
Gestión de la configuración
Gestión de la ingeniería software
ƒProcesos
ƒHerramientas y métodos
5. Expresan las necesidades y
restricciones que debe
satisfacer un producto para
contribuir a la solución de
un problema real. Considera
la obtención, análisis,
especificación y validación de
los requerimientos y rol
dentro del proceso de
desarrollo de software.
Re q u e r i m i e n t o s
D i s e ñ o
Es donde se generan modelos
que sirven como “planos” para
la construcción. Se divide en:
Arquitectónico y Detallado.
C o n s t r u c c i ó n
Referido a la creación de
software útil a través de la
programación, depuración,
pruebas unitarias e integra-
ción de componentes. Lidia
con la creación y aplicación
de algoritmos para la reso-
lución de problemas.
Profa. Ing. María Andrade
6. Profa. Ing. María Andrade
P r u e b a s
• Consisten en la
verificación dinámica del
comportamiento real de
un programa comparado
con su comportamiento
esperado. Las pruebas se
realizan para evaluar la
calidad de un producto a
través de la detección de
fallas en éste.
C a l i d a d
• Se enfoca en la
aplicación de técnicas
estáticas para evaluar y
mejorar la calidad del
software. Involucra los
subprocesos de
aseguramiento de
calidad, verificación,
validación, revisión y
auditoria.
M a n t e n i m i e n t o
• Referido a las
modificaciones a un
producto de software
previamente liberado para
prevenir fallas
(preventivo), corregirlas
(correctivo), mejorar su
desempeño (perfectivo) o
adaptarlo a cambios en el
ambiente (adaptativo).
7. G e s t i ó n d e l a c o n f i g u r a c i ó n
Disciplina que identifica
la configuración en
distintos puntos del
tiempo, con el propósito
de controlar los cambios
a ésta, manteniendo su
integridad y rastreabilidad
durante el ciclo completo
de vida del software.
G e s t i ó n d e l a i n g e n i e r í a s o f t w a r e
Consiste en la aplicación de
actividades administrativas:
planeación, coordinación,
medición, monitoreo,
control y reporte, para
asegurar que el desarrollo y
mantenimiento de software
se lleva a cabo de manera
sistemática, disciplinada y
cuantificable.
P r o c e s o s
Considera un proceso
para las actividades
técnicas y
administrativas que
deben realizarse para
adquirir, desarrollar,
mantener y retirar
software.
H e r r a m i e n t a s y
M é t o d o s
Permiten la automatización de
tareas repetitivas y bien
definidas centrado en
aspectos creativos del
proceso.
Los métodos establecen una
estructura para sistematizar
las actividades con el objetivo
de aumentar las posibilidades
de éxito.
Profa. Ing. María Andrade
9. Años ´50
1
2
3
Se aplica al desarrollo de software el mismo
proceso que al desarrollo de hardware.
Se usa el método científico para aprender
a través de la experiencia.
El software era como un producto añadido
y la programación un arte donde no
existían métodos sistemáticos.
Profa. Ing. María Andrade
10. Años ´60
Profa. Ing. María Andrade
1
2
3
Multiprogramación y sistemas multiusuarios.
Interacción hombre – máquina.
Sistemas en tiempo real procesaban datos
para la toma de decisiones.
Sistemas de gestión de base de datos que
genera la aparición del software.
11. Años ´60
Profa. Ing. María Andrade
4
5
6
Se codifica y corrigen códigos.
Fenómeno crisis del software.
Se introduce por vez primera el término
INGENIERIA DEL SOFTWARE.
12. Años ´70
Profa. Ing. María Andrade
1 •
2
3
Evolucionan los sistemas distribuidos y las redes
con acceso a datos instantáneos.
Incrementa la complejidad de los sistemas
informáticos.
Surgen diferentes fases del desarrollo del software.
Requerimientos – Análisis – Codificación – Pruebas.
13. Años ´70
Profa. Ing. María Andrade
4 •
5
6
Introduce la programación estructurada y métodos
formales para especificar software.
Se identifican principios de diseño: Modularidad
- Encapsulación - Abstracción de tipos de datos
- Acoplamiento débil - Alta cohesión.
Se publica el modelo en cascada y definición de los
conceptos de verificación y validación.
14. Años ´80
Profa. Ing. María Andrade
1
2
3
Aumento de la productividad del software y equipos
de desarrollo.
La industria del software es la cuna de la
economía del mundo.
En el Desarrollo del Software 4GLs, cambian la forma
en que se construyen los programas.
15. Años ´80
Profa. Ing. María Andrade
4
5
Introduce la POO a través de múltiples lugares
de programación.
Se crea el primer modelo de madurez de
capacidad de procesos SW - CMM.
16. Años ´90
Profa. Ing. María Andrade
1
• La orientación a objetos se extiende
a las fases de análisis y diseño.
2
• Se implementa el lenguaje de
modelado (UML).
3
• Se genera el primer proceso
comercial de desarrollo orientado
objetos (RUP).
4
• Se emplean los patrones de diseño y
arquitectura.
5
• Se define el modelo espiral para el
desarrollo basado en el análisis de riesgos
y software iterativo e incremental.
6
• Se impulsa la creación de software
libre y de código abierto.
7
• Se emplean metodologías ágiles para
el desarrollo de sotware dinámico.
17. En la actualidad… Profa. Ing. María Andrade
Se hace necesario la agilidad para el desarrollo
del software.
Nuevos dispositivos electrónicos se involucran en
el ciclo de vida.
Principales cualidades de los software son:
Seguridad, Privacidad, Usabilidad y Confiabilidad.
Se incrementa la programación de software
empaquetado.
Desarrollo de software por modelos toma más
fuerza.
18. En la actualidad… Profa. Ing. María Andrade
La tecnología digital está transformando a las organizaciones, los sistemas actuales afectan
directamente la forma en que los directivos administran, planifican y operan los bienes y
servicios que producen. La creciente potencia de la tecnología de computación, ha dado
origen a poderosas redes de comunicación que las organizaciones pueden usar para acceder a
grandes depósitos de información a nivel mundial, coordinar sus actividades en el espacio y
tiempo transformando a las empresas, mercado y sociedad en general.
20. Principios
Métodos y
Técnicas
Metodología Herramientas
Constituyen los
elementos a
considerar para
desarrollar
software de forma
exitosa que
involucra procesos
y productos finales
Métodos:
Guías generales
que gobiernan la
ejecución de algu-
na actividad, la
cual se presenta
con enfoques:
rigurosos, sistema-
ticos y disciplina-
dos
Técnicas:
De orden mécani-
co con aspectos
técnicos y restrin-
gidos
Conjunto de mé-
todos y técnicas
con el propósito
de perfilar los en-
foques orientados
a la resolución de
un problema
Se desarrollan en
apoyo a la aplica-
ción de métodos,
técnicas y método-
logías
Profa. Ing. María Andrade
22. Rigor y Formalidad
Separación de Intereses
Modularidad
Abstracción
Anticipación al Cambio
Generalidad
Incrementalidad
Profa. Ing. María Andrade
Identificaciónde
losPrincipiosdela
IS
1
2
3
4
5
6
7
23. Rigor y Formalidad1
Rigor
•Serie de pasos
definidos, precisos
y coherentes, en
donde en cada
uno de ellos se
aplica una técnica.
La técnica
•Depende de los
resultados teóricos del
modelo, ajustes
empíricos y experiencia
del desarrollador.
Esta Interacción
•Conlleva a la
definición de
una
metodología.
Implica
•Completitud y
Correctitud.
Formalidad
•Forma en la que
debo erradicar
la ambigüedad.
No corrige
• Únicamente,
especifica lo
que se quiere,
necesita o hace.
Dependerá
• Varios
factores:
Experiencia en
el área, nivel
crítico del
producto y
definición del
proceso del
Software.
Necesariamente
• El desarrollador
debe decidir el
grado de
formalidad
necesario para
cada paso del
desarrollo.
Profa. Ing. María Andrade
24. Profa. Ing. María Andrade
Cualidades en los Productos y Procesos DS
Documentación
Rigurosa y/o Formal
Confiable
Verificable
Mantenible
Reusable
Portable
Comprensible
Interoperable
25. Separación de Intereses2
Profa.Ing.MaríaAndrade Se centra en poder analizar y estudiar aspectos separados
según los intereses de acuerdo al producto o proceso DS.
Tiempo
Planificación de
las actividades en
el tiempo.
Base del ciclo de
vida del software.
Secuencia de
actividades.
Definición de
hitos.
Cualidades
Dedicarse a
desarrollar
distintas
cualidades por
separado.
Eficiencia y
correctitud de un
programa.
Procesos
Flujo de datos y
Flujo de control.
Interfaces del
usuario y diseño
de la base de
datos.
Partes
Refinamiento del
sistema por
partes
dependiendo del
tamaño.
Modularidad.
Separación
Completo
S i m p l i c i d a d C o m p l e j i d a d
26. Profa. Ing. María Andrade
Optimalidad en la Separación de Intereses
La separación del problema completo
en pequeñas partes, sugiere que es
posible no considerar una solución
óptima global.
En general, la complejidad del
problema completo nos impide
resolver bien los problemas parciales y
también el problema global.
27. Modularidad3
Un sistema complejo puede dividirse en piezas simples que se
denominan módulos, y un sistema compuesto por módulos es
llamado modular, siendo lo más importante permitir la aplicación del
principio de separación de intereses.
Profa. Ing. María Andrade
28. Descomposición
• Descomponer un
sistema en grandes
bloques.
• Aplicar la
descomposición
recursivamente a
bloques complejos.
Composición
• Usando varios
elementos básicos
(módulos), se construye
un sistema más
complejo.
• La reutilización de
módulos de software
beneficia a todo el
proceso de desarrollo.
Compresión
• Es más fácil localizar
cambios en un sistema
modular.
• También es más fácil
comprender módulos,
tanto pequeños como
grandes.
Profa. Ing. María Andrade
Objetivosdela
Modularidad
29. Profa. Ing. María Andrade
Modularidad
Alta Cohesión
Los elementos comprendidos dentro de
un módulo están altamente relacionados.
Cooperan para lograr un mismo fin.
No están juntos al azar.
Bajo Acoplamiento
Mide la interdependencia de dos
módulos.
La relación e interacción entre los
distintos módulos debe ser simple (Ojalá
no circulen órdenes, sólo invocaciones).
Mantener a los módulos tan
desacoplados como sea posible.
Si dos módulos dependen altamente uno
del otro, es probable que los cambios en
un módulo afecten al otro.
30. Abstracción4
Profa. Ing. María Andrade
Proceso donde se identifican aspectos
relevantes de un problema, ignorando los
detalles. Es una forma de separación de
intereses cuya información extrae aspectos
esenciales y de detalles, que proporcionará
una visión real del requerimiento.
La abstracción no es única,
depende de:
Software
Usuario de la abstracción
31. Profa. Ing. María Andrade
Abstraccionesdel
Software
Software
Usuario Final
Funcionalidad,
usabilidad y
mecanismos de
interacción
Diseñador
Funcionalidad,
algoritmos y
estructuras de datos
Programador
Algoritmos,
estructuras de datos,
lenguaje de
programación
Mantenedor
Arquitectura,
funcionalidad,
lenguaje de
programación
32. Anticipación al Cambio5
Profa. Ing. María Andrade
Capacidad para prever, detectar y aprovechar el cómo,
dónde y para qué se pueden producir cambios en el
proceso o producto de forma anticipada.
En cuanto al DS
• Anticipar el cómo y
dónde van a ocurrir los
cambios.
• Proceder de modo que
haga fácil la aplicación
de futuros cambios.
Mantenibilidad,
cualidad deseable
• Corrección de errores
(correctivo).
• Aumentar la
funcionalidad
(adaptativo)
Aplica etapa de
diseño del software
• Los lugares que van a
cambiar se aíslan de
modo que los cambios
no afecten otras
porciones del software.
Laanticipacióndeloscambiospropicia
situacioneseficientes
33. Profa. Ing. María Andrade
PrincipioÚnicodel
Software
Las aplicaciones de software se
desarrollan a pesar de que sus
requerimientos muchas veces no se
han comprendido completamente.
Después de instalado el sistema, el
usuario realiza comentarios que dan
lugar a cambios y ajustes.
Las organizaciones se ven afectadas
por la instalación de un nuevo sistema,
de modo que los requerimientos
cambian con su implantación.
34. Profa. Ing. María Andrade
Reutilizaciónenla
Anticipación Reutilización es una evolución en pequeña escala,
a nivel de componentes.
Anticipar los contextos en que los componentes serán
utilizados, se diseña de modo que se pueda acomodar
fácilmente los cambios necesarios.
Un componente es reusable, si puede ser utilizado para
construir un nuevo sistema (sin cambios o con cambios
mínimos).
35. Profa. Ing. María Andrade
Controldela
Configuración
Los cambios
en las
componentes
deben ser
registrados y
almacenados.
Cada sistema
debe tener la
versión
apropiada de
cada una de
sus
componentes.
Cada
configuración
consistente
debe también
ser
almacenada.
Las
herramientas
son esenciales.
36. Profa. Ing. María Andrade
Anticipaciónenel
Proceso
Anticipa acciones de cambios en
el personal.
Se considera el mantenimiento
para la estimación de costos del
sistema.
La construcción de componentes
reutilizables se considera como
parte del proyecto o como un
proyecto paralelo.
37. Generalidad6
Profa. Ing. María Andrade
Se constituye en un
principio fundamental
siempre y cuando se
tenga como objetivo
desarrollo de
herramientas generales
o paquetes para el
mercado, por cuánto
debe atender múltiples
necesidades ajustadas
a diversos usuarios
finales.
Al resolver un
problema, es preciso
descubrir un problema
más general que se
esconde bajo el
problema particular.
Una solución más
general es
potencialmente más
reutilizable.
38. Incrementalidad7
Profa. Ing. María Andrade
Se caracteriza un proceso de pasos secuenciales de aproximaciones, en la
cual debe darse una retroalimentación entre el usuario y desarrollador
para adicionar funcionabilidades buscando confiabilidad de la aplicación, y
cuyo objetivo se logra como una sucesión de pasos construidos cada uno
sobre la anterior.
Un proceso es incremental si se
compone de pequeños pasos
(incrementos).
En el software, un proceso de desa-
rrollo es incremental si se aplica el
modelo Evolutivo de desarrollo.
Cualidades incrementales: Evolucionable, Performance, Amigable, Robustez, Confiabilidad
39. Profa. Ing. María Andrade
Proceso
Incremental
Seleccionar y desarrollar
un subconjunto de la
funcionalidad
Entregar al usuario la
funcionalidad
desarrollada
Obtener comentarios del
usuario para proseguir
con el desarrollo
41. Profa. Ing. María Andrade
¿Qué es un Software de Calidad?
o Construido para cumplir ciertas funcionalidades y satisfacer
determinadas cualidades.
o El proceso de construcción de software igualmente debe
cumplir ciertas cualidades.
o Las cualidades son referidas como requisitos no
funcionales.
42. Profa. Ing. María Andrade
¿Cómo conseguir un Software de Calidad?
Proceso
Soportado
por un
método
riguroso y
sistemático
Basado en
principios
reconocidos
Actividades
que se
estructuren
de acuerdo a
un modelo
Facilitado
por el uso de
herramientas
43. Profa. Ing. María Andrade
Cualidades del Software de Calidad
Correctitud Confiable Robusto Eficiente Verificable
MantenibleReparableEvolucionableReusablePortable
Comprensible Interoperable Productivo Oportuno Visible
44. Profa. Ing. María Andrade
Correctitud, Confiable y Robusto
Correctitud
Se comporta acorde a su
especificación
Debe satisfacer los requisitos
funcionales
Confiable
Se comporta de acuerdo a
lo esperado por el usuario
Robusto
Se comporta razonablemente
aún en cirscunstancias no
contempladas
45. Profa. Ing. María Andrade
Confiable
o ISO 9127. Confiabilidad: Referida a la capacidad de un SW de
mantenerse operativo bajo las condiciones establecidas por un pe
ríodo de tiempo.
o Informalmente, el usuario confía en el producto.
o Si las especificaciones son correctas, todo software correcto es
confiable. Pero no a la inversa, pues en la práctica, pueden haber
especificaciones incorrectas.
46. Profa. Ing. María Andrade
Eficiencia
Usa los recursos computacionales económicamente (Memoria,
tiempo de procesamiento, comunicación, entre otros).
Se mide mediante técnicas clásicas: complejidad de
algoritmos y evaluación de la eficiencia
(monitoreo, simulación, entre otros).
47. Profa. Ing. María Andrade
Portabilidad1
El software
puede correr
en diferentes
plataformas de
hardware o
ambientes de
software.
2
Se refiere a la
habilidad del
software de ser
transferido de
un ambiente a
otro.
3
Es una cualidad
relevante
cuando se
introducen
nuevas
plataformas.
4
Es relevante,
cuando el
software se
baja de
ambientes de
redes
heterogéneos.
48. Profa. Ing. María Andrade
Reusabilidad
Productos o
componentes que
son usados para
construir otros
productos
Reuso de partes
estandar miden la
madurez de una
ingeniería
Tambien aplica a
procesos
49. Profa. Ing. María Andrade
Reusabilidad
Componen-
tes
Reusables
Librerías
científicas
Librerías para
el desarrollo
de interfaces
Patrones
Especifica-
ciones
Clases
50. Profa. Ing. María Andrade
Mantenibilidad
o Se refiere a la facilidad de mantenimiento que se puede realizar al
software, el cual a su vez implica cambios posterior a la liberación
del producto y cuyos costos de mantenibilidad superan
aproximadamente el 65% de la inversión total del software.
Correctivo
Remosión de
Errores residuales
presentes en el
producto asi
como el
mantenimiento.
Representa el
20% de los
costos
Adaptativo
Relacionado al
ajuste de la
aplicación a
cambios en el
entorno. Ej.
Liberacion del
hardware o del
S.O.
Representa el
20% de los
Perfectivo
Mejorar la
calidad, satisfacer
nuevos
requisitos,
aumentar la
eficiencia,
modificar las
funcionabilidades
.Representa el
50% de los
51. Profa. Ing. María Andrade
Comprensibilidad
o Facilidad de comprender el software.
o Es una cualidad muy importante, para realizar
modificaciones de programa.
o Esta cualidad incide en la mantenibilidad.
o Desde el punto de vista externo, se considera que un
sistema es comprensible si su comportamiento es
predecible, siendo esta cualidad un componente de la
amigabilidad.
52. Profa. Ing. María Andrade
Interoperabilidad
Puede coexistir y cooperar
con otros sistemas de
software.
Ej. Habilidad de un
procesador de texto de
incluir gráficos producidos
por un paquete de gráficos
53. Profa. Ing. María Andrade
Usabilidad
o Referido al esfuerzo que se requiere por el conjunto de
usuarios para el uso del software (Iso 9127). Igualmente
es una cualidad del software que tiene múltiples
componentes y tradicionalmente es asociado con:
Aprendizaje Eficiencia Memorización
Bajo rata de
errores
Satisfacción
54. Profa. Ing. María Andrade
Usabilidad
o La usabilidad de un producto de software está
determinada por la satisfacción del usuario al utilizar el
producto.
o Fundamentalmente relacionada con las características de
la interfaz de usuario.
o Inciden diversas cualidades para garantizar la usabilidad
del software.
55. Profa. Ing. María Andrade
productividad
o Es una cualidad del proceso de produccion del software
que mide la eficiencia del proceso, es decir es la
cualidad de la efectividad aplicada al proceso.
o Un proceso eficiente resulta entrega mas rápida para el
producto.
o Se utilizan métricas que permitan comparar distintos
procesos en términos de su productividad.
56. Profa. Ing. María Andrade
Oportunidad
o Habilidad de entregar un producto a tiempo.
o La oportunidad debe estar complementada con una
agenda bien planeada , con un trabajo de estimación
acertado y puntos de revisión específicos y
verificables para garantizar la confiabilidad y la
eficiencia del sistema.
57. Profa. Ing. María Andrade
Visibilidad
o Un sistema es visible si todos sus pasos y su estado
actual son claramente documentados.
o Permite a los ingenieros, pesar el impacto de sus
acciones y los guia en la toma de decisiones.
o Es favorable dentro de la gestión de proyectos en
cuanto a la gestión de conocimiento.
58. Actividades en el Proceso
Profa. Ing. María Andrade
de Desarrollo de Software
59. Profa. Ing. María Andrade
Actividades en el proceso de desarrollo de software
Para desarrollar un producto de software se realizan
diversas actividades que se estructuran y relacionan
de acuerdo a un modelo y se desarrollan siguiendo
un método.
Los modelos encadenan las diversas
actividades
60. Profa. Ing. María Andrade
Actividades en el proceso de
desarrollo de software
Modelo
Método
Principios
Herramientas
Se relacionan
conformando un
Se desarrollan
aplicando un
El método se
fundamenta en
El método puede
soportarse en
Principios Métodos Herramientas Modelos
61. ¡A tomar en cuenta para las Actividades DS!
Utiliza y produce “artefactos”.
Se relacionan e interactúan de diferentes
maneras conformando distintos procesos
de desarrollo de software (modelos).
De acuerdo al modelo una actividad
puede jugar un rol preponderante o
incluso pudiera no existir.
Profa. Ing. María Andrade
62. ¡A tomar en cuenta para las Actividades DS!
La ingeniería de requisitos es el proceso que
lleva a la especificación del software.
Los procesos de diseño e implementación
transforman la especificación en un programa
ejecutable.
La validación involucra chequear que el
sistema cumple su especificación y las
expectativas del usuario.
La evolución concierne con la modificación
del sistema después que está en uso.
Profa. Ing. María Andrade
63. ¿Cuáles son las actividades más comunes en DS?
Profa. Ing. María Andrade
Identificación y
especificación
de requisitos
Análisis Diseño Prototipo
ProgramaciónEspecificación
Validación /
Verificación
Gestión de las
configuraciones
Integración
Desarrollo de la
interfaz
64. Relación entre las actividades de DS
Profa. Ing. María Andrade
Encadenamiento Rol
Granularidad
Modelo de DS
Método 1
Método 2…
Análisis de requisitos
Prototipaje
Especificación
Implementación
Ejemplo
65. Actividades – Modelos - Procesos Profa. Ing. María Andrade
o El modelo de desarrollo de software indica como
se relacionan las actividades.
o Los procesos de desarrollo de software indican
como se realizan las actividades para producir y
evolucionar un sistema del software.
66. Actividades – Modelos - Procesos
Profa. Ing. María Andrade
o ¿Cómo encadenar las actividades del proceso de desarrollo de software?
Modelos (ciclo de vida)
Ej.: Modelo de la cascada, UP....
o ¿Cómo realizar las actividades del proceso de desarrollo de software?
Métodos
Ej.: Orientado a objeto,…
o ¿Cuáles principios se aplican en el proceso de desarrollo de software?
Ej.: Incrementable, iterativo,...
67. Conceptos Generales
Profa. Ing. María Andrade
o CICLO DE VIDA: Conjunto de etapas que se han de llevar a cabo para crear,
explotar y mantener un Sistema Informático.
o METODOS: Son las normativas que marcan las directrices que se han de seguir
para llevar a cabo una tarea. Responde a la pregunta QUÉ.
o TECNICAS: Es un modo de representación para la solución de un problema
concreto. Responde a la pregunta CÓMO.
o METODOLOGIA: Es un conjunto coherente de métodos y técnicas que cubren más
de una etapa del ciclo de vida.
o HERRAMIENTAS: Proporcionan un soporte automático o semi-automático para el
proceso y para los métodos.