Académique Documents
Professionnel Documents
Culture Documents
de SOFTWARE
¡Bienvenidos!
Nos presentamos:
• Nombre y Apellidos.
• Especialidad y ciclo de estudios.
• ¿Trabaja, además de estudiar?
• ¿Qué espera del curso?
Lic. Claudio D. Fernández - 2019
INGENIERIA DE SOFTWARE
OBJETIVOS
• Conocer la situación de los proyectos de construcción de
software.
• Comprender e incorporar las actividades de planificación,
coordinación, medición, seguimiento, control e información
en los proyectos de Desarrollo de Software.
• Entender la forma de realizar mediciones de tamaño,
esfuerzo, plazo y RRHH.
• Conocer y aplica una herramienta para dichos propósitos.
• Entender las estrategias y tareas para realizar la
organización de los controles de calidad.
Contenidos Programáticos
❑ UNIDAD TEMATICA 1: La Ingeniería del Software
❑ UNIDAD TEMATICA 2: El proyecto de desarrollo de Software
❑ UNIDAD TEMATICA 3: Las Métricas
❑ UNIDAD TEMATICA 4: Los Riesgos
❑ UNIDAD TEMATICA 5: El Entorno
❑ UNIDAD TEMATICA 6: El Aseguramiento de la Calidad
Bibliografía
❑ Roger S. Pressman –
Ingeniería del Software Un enfoque Practico
Editorial Mc Graw Hill, 7ma. Edición 2010
❑ Ian Sommerville
Ingeniería de Software.
Pearson Educacion – 9na. Edición - 2011
❑ Carlos M. Zapata e Yris Olaya
Ingeniería de Software para Analistas.
Editorial Litonueve - 2007
Unidad 1 Contenidos Programáticos
❑ 1.1 Introducción a los problemas
de la producción del Software.
❑ 1.2 La Ingeniería del Software como disciplina.
❑ 1.3 Componentes de acuerdo al Ciclo de Vida.
❑ 1.4 Procesos de Mejora del Software.
❑ 1.5 Madurez de las Organizaciones.
❑ 1.6 Calidad del Software.
Y el software …
¿Dónde está?
Cada vez es más amplio el impacto
en todos los aspectos de la sociedad
SKYNET esta cada vez mas cerca
¿Cómo
nos
afecta
el
software ?
Ariane 5 Flight 501- European Space Agency
❑ Costo: 10 años y 7.000.000.000 U$D – 4 Junio 1996
❑ Llevaba 4 satélites para poner en orbita y realizaría un estudio de la
magnetosfera. No llevaba tripulación
❑ 37 segundos después del lanzamiento el cohete cambio el curso
❑ 39 segundos después del lanzamiento el cohete explotó
❑ CAUSA: ERROR DE SOFTWARE
▪ Una computadora dirigía el cohete – Reutilización de software
▪ Un bug en el software hizo pensar al cohete que necesitaba virar
▪ Fuerzas aerodinámicas dañaron el cohete
▪ El mecanismo de autodestrucción se disparó
¿Qué es ingeniería del software?
❑ Definición del Instituto de Ingeniería Electrica y
Electrónica (IEEE): Ingeniería de Software es la aplicación
de criterios sistemáticos, disciplinados y cuantificables al
desarrollo, operación y mantenimiento del software.
❑ Ingeniería de software es la aplicación práctica del
conocimiento científico al diseño y construcción de programas
de computadora y a la documentación asociada requerida para
desarrollar, operar y mantenerlos. Se conoce también como
desarrollo de software o producción de software (Bohem,
1976).
¿Qué es ingeniería del 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). Esta disciplina trasciende la
actividad de programación, que es el pilar fundamental
a la hora de crear una aplicación. (Pressman 2012)
¿Qué es ingeniería del software?
❑ La ingeniería de software se define como la disciplina
tecnológica preocupada de la producción sistemática y
mantenimiento de los productos de software que son
desarrollados y modificados en tiempo y dentro del
presupuesto definido. ... Se conoce también como
desarrollo de software de producción. (Pressman 2012)
Definamos “disciplina”
Disciplina: conjunto de reglas o normas cuyo
cumplimiento de manera constante conducen a
cierto resultado
Disciplina: es la coordinación de actitudes con las
cuales se instruye para desarrollar habilidades
mas rápido o para seguir un determinado código
de conducta u “orden”
Aplicación de Ingeniería del Software
https://es.wikipedia.org/wiki/Vasa
Rey Henrik
Gustavo II Adolfo de Hybertsson
Suecia
Algunos de los factores que contribuyeron al fracaso:
Lenguajes:
C# - VISUAL BASIC – SCALA
GROOVY - GO
Principios generales de la Ingeniería de SW
Diseño simple
Debe ser tan simple como sea posible porque esto hace
que sea comprensible fácilmente, mantenible y menos
propenso al error.
Otros consumirán lo que usted produce
Siempre otra persona usará, mantendrá o documentará el
sistema.
Tenga presente que alguien más tendrá que entender lo
que usted haga.
Principios generales de la Ingeniería de SW
Ábrase al futuro
Los sistemas deben ser fáciles de adaptar a los cambios
frecuentes de especificaciones y de hardware.
Reutilización
La planeación anticipada en busca de la reutilización
disminuye el costo e incrementa el valor tanto de los
componentes reutilizables como de los sistemas en los que
se incorpora.
LEYES DE MURPHY "Si algo puede salir mal, saldrá
• Nada es tan fácil como parece. mal. (y en el peor momento
• Todo lleva mas tiempo del que Ud. piensa. posible) "
• Cualquier solución entraña nuevos problemas.
• Siempre es mas fácil hacerlo de la manera difícil.
• Toda promesa de plazos deberá multiplicarse por un factor de 2.0
• Los cambios mas importantes de diseño se solicitaran sobre la fecha de
entrega.
• Los problemas complejos, tienen soluciones erróneas sencillas y fáciles
de entender.
• Los usuarios no saben realmente lo que quieren pero saben con
certeza lo que no quieren.
• Es inútil hacer una cosa a prueba de tontos , estos son cada vez mas
ingeniosos.
Mitos de la construcción del software
Mito: «Si nos atrasamos, podemos agregar más
programadores»
Proyecto
exitoso
ALCANCE
Gerenciar proyectos de software
Planificar proyectos
❑ Plan de pruebas
▪ Establecer el plan de pruebas durante la fase de
requerimientos y diseño
▪ Escenarios de prueba, casos de prueba, scripts
❑ Ejecución de las pruebas
❑ Informe de las pruebas
❑ Volver a probar los defectos
5.2. Verificación y validación del software
100
16
27 26 28 29
34 35 32
80 37 39
Exitoso
60
53 33 Problematicos
46 Fracaso
49 44
53
51 46 42
40 43
20 40
31 28
23 24 21
18 19 18
15
0
1994 1996 1998 2000 2002 2004 2006 2008 2010 2012
¿Por qué fallan los proyectos?
Factores % de las respuestas
▪ Requisitos y especificaciones incompletas 13,1%
▪ Falta de involucramiento del usuario 12.4%
▪ La falta de Recursos 10.6%
▪ Expectativas poco realistas 9.9%
▪ Falta de Apoyo Ejecutivo 9.3%
▪ Cambios en los requisitos y especificaciones 8,7%
▪ Falta de Planificación 8.1%
▪ No se necesita mas 7.5%
▪ Falta de Gerencia Tecnológica 6.2%
▪ Objetivos poco claros 5,3%
▪ Incompetencia en la Tecnología 4.3%
▪ Otros 9,9%
¿Por qué fallan los proyectos?
▪ Metas poco realistas o no articuladas del proyecto
▪ Estimaciones erróneas de los recursos necesarios
▪ Requisitos del sistema mal definidos
▪ Deficiente información sobre el estado del proyecto
▪ Riesgos no administrados
▪ La falta de comunicación entre los clientes, desarrolladores y usuarios
▪ Incapacidad para manejar la complejidad del proyecto
▪ Prácticas de desarrollo descuidadas
▪ La mala gestión del proyecto
▪ Las presiones comerciales
¿Por qué es tan difícil?
❑ Muchas mas "partes” que en los dispositivos mecánicos
▪ Lavavajillas - 128 piezas // Automóvil - 14.000 piezas
▪ El transbordador espacial - 2,5 millones de piezas
❑ Red Hat Linux 7.1: 30 millones de líneas de código fuente
(SLOC)
❑ Mac Office - 30.000.000 SLOC
❑ El Boeing 777 tiene 4 millones de líneas de código y junto
con el Airbus A340 son totalmente dependientes del software.
❑ Un celular : 2.000.000 SLOC
¿Por qué es tan difícil?
❑ Red Hat Linux 7.1 30.000.000 SLOC
❑ Mac Office 30.000.000 SLOC
❑ El Boeing 777 4.000.000 SLOC
❑ Un celular 2.000.000 SLOC
❑ Un programador promedio x día = 100 SLOC
❑ 5 días x semana x 52 semanas x año = 26.000 SLOC x año
❑ Un equipo de 15 programadores = 390.000 SLOC x año
▪ El Ciclo de Vida de un sistema de información
(SDLC, Systems Development life cycle) es una
metodología usada para facilitar el desarrollo de
los sistemas.
Ciclo de ▪ Es un enfoque por fases para el análisis y el diseño
Codificación.
life cycle
Desarrollo de prototipos
El prototipado permite al cliente evaluar en forma temprana el producto, e
interactuar con los diseñadores y desarrolladores para saber si se está
cumpliendo con las expectativas y las funcionalidades acordadas. Esto en
manera especial si el cliente es capaz de definir un conjunto general de
objetivos para el sistema que hemos de construir, pero no identifica los
requisitos detallados. En otros casos, puede que nosotros no estemos seguros
de la eficiencia de un algoritmo, de la capacidad de nuestro diseño para
soportar los requerimientos del sistema o de la forma en que debe diseñarse la
interfaz de usuario.
Modelos de Ciclo de Vida – Prototipado
Desarrollo de prototipos
En cualquiera de estas situaciones, resulta adecuado construir un prototipo, ya
que da una idea concreta de lo que va a hacer el sistema, aunque no poseen la
funcionalidad total del sistema, y se aplica cuando la rapidez de desarrollo es
esencial.
De cada prototipo se extraen ideas buenas que se usan para el siguiente
prototipo (usar y tirar)
Modelos de Ciclo de Vida – Clásico o Cascada
Prototipos
FASE 1.
Identificación
FASE 2.
Determinación
FASE 3. Análisis
FASE 4. Diseño
PROTOTIPO
FASE 5. Desarrollo
FASE 6. Pruebas
Producto y Proceso
Siel proceso es deficiente el producto seguramente sufrirá, pero
también es importante no generar una dependencia absoluta del
proceso
Procesos de Mejora del Software.
Conceptos de proceso
• Se puede definir como un “conjunto coordinado de actividades que proporcionan un
valor añadido al cliente, entregándole un resultado (el producto o servicio que se trate)
que le satisfaga, partiendo de una serie de entradas al proceso y con la utilización de una
serie de recursos” .
• Un proceso es “un conjunto de actividades interrelacionadas, que persiguen la creación
de valor y que su salida final es la conformación de un bien o servicio para un cliente que
puede ser interno o externo a la organización”.
• Una vez analizados los diferentes conceptos se define a un proceso como, un conjunto
de actividades o tareas que se relacionan entre sí, y que se ejecutan siguiendo un orden
lógico con el propósito de alcanzar un resultado específico a partir de las entradas de
recursos e información. Los procesos constituyen uno de los principales problemas
dentro de las organizaciones productoras de software, que impiden el incremento de la
productividad y la calidad, de ahí la necesidad de trazar estrategias para mejorarlos.
Procesos de Mejora del Software.
Conceptos de mejora
• La palabra mejora está vigente en diferentes esferas de la vida, sobre todo en
ambientes empresariales donde ha dejado de ser una opción para
convertirse en una imperiosa necesidad.
• Mejora proviene del verbo mejorar que implica cambiar, se define que
mejora no es más que mejorar algo haciéndolo pasar a un estado superior.
• Muchas organizaciones entre ellas las productoras de software, se han dado
cuenta de que no basta con incrementar su productividad, sino que es
necesario lograr productos con calidad, pues la competencia en el mercado
es cada vez mayor, preocupación que contribuyó al surgimiento de la
iniciativa de mejorar los procesos como una solución a esto.
Procesos de Mejora del Software.
• En esencia, la Mejora del Proceso del Software es simple, consiste en aplicar
las prácticas que proporcionan buenos resultados y cambiar o eliminar las
prácticas que causan problemas. Es innegable el valor que tiene la Mejora del
Proceso, pues según estudios realizados muchas empresas implicadas en la
mejora del Proceso Software, han logrado reducir los costos de producción,
mejorar la calidad del producto y ajustarse a las necesidades de los clientes.
• Otros beneficios han sido lograr un entorno de trabajo más estable, una
reducción de la tasa de rotación del personal y una mejora en las relaciones
de trabajo con los clientes. En fin son múltiples los beneficios que se pueden
obtener al llevar a cabo una Mejora de Procesos, por esto se necesita que los
grupos encargados de llevarlo a cabo se sientan comprometidos, para lograr
el CMMI.
Procesos de Mejora del Software.
CMMI como modelo para la Mejora de Procesos
Uno de los modelos de mejora de procesos más usados en las organizaciones es
el CMMI: “Capability maturity model Integration” (Integración de modelos de
madurez de capacidades)
El CMMI, es un modelo que ayuda a: integrar las funciones de la organización,
conducir la mejora de los procesos, proporciona una guía de calidad de los
procesos y puntos de referencia para la evaluación de estos. El propósito del
modelo es proveer una guía para mejorar los procesos de la organización y la
capacidad para gestionar el desarrollo, la adquisición y el mantenimiento de
productos y servicios.
Procesos de Mejora del Software.
CMMI como modelo para la Mejora de Procesos
Este modelo consta de cinco niveles de madurez que clasifican a la organización, estos
niveles sirven para conocer la madurez de los procesos que se realizan para producir
software.
Los niveles de madurez de una organización en CMMI son :
1. Inicial.
2. Gestionado.
3. Definido.
4. Gestionado cuantitativamente.
5. Optimizado.
Cada nivel comprende un conjunto de áreas de proceso estas cubren desde el
desarrollo de los productos y de los servicios hasta el mantenimiento de los mismos.
Independientemente de la disciplina a cual esté enfocada la organización, las áreas de
proceso se subdividen en grupos distintos los cuales dependen de cada
representación ya sea la continua o por etapas.
Procesos de Mejora del Software. CMMI
“Capability maturity model Integration”
(Integracion de modelos de madurez de capacidades)
OPTIMIZADO
GESTIONADO
CUANTITATIVAMENTE
DEFINIDO
GESTIONADO
INICIAL
Procesos de Mejora del Software. CMMI
5. Optimizado: Se centra en mejorar continuamente el rendimiento de sus procesos mediante
mejoras incrementales de proceso y tecnológicas. La organización se interesa en tratar
causas comunes de variación del proceso y cambia el proceso para mejorar el rendimiento.
4. Gestionado cuantitativamente: La organización y los proyectos establecen objetivos
cuantitativos en cuanto al rendimiento de calidad. Los objetivos los utilizan como criterios de
gestión. El rendimiento de calidad y del proceso se mide en términos estadísticos.
3. Definido: Los procesos son bien caracterizados y se describen en estándares,
procedimientos, herramientas y métodos. Un proceso definido establece claramente el
propósito, entradas, actividades, roles, medidas, etapas de verificación, salidas y criterios de
salida.
2. Gestionado: Los proyectos de la organización han asegurado que los procesos se planifican y
realizan de acuerdo a políticas. Los procesos se realizan y gestionan de acuerdo a sus planes
documentados.
1. Inicial: los procesos son generalmente ad-hoc y caóticos. La organización no proporciona un
entorno estable para dar soporte a los procesos. A menudo se producen productos y
servicios que funcionan, sin embargo, exceden sus presupuestos y no cumplen sus
calendarios.
Procesos de Mejora del Software.
Riesgos en la implantación de Proceso de Mejora de Software
Los procesos de mejora en el desarrollo de software, trae cambios muy
profundos en las organizaciones que desean implementar estos modelos, los
administradores o jefes de proyectos deben asumir estas transformaciones
oportunamente, para evitar catástrofes que incluso pueden llevar a la
frustración en la implementación de modelos de mejora.
Para que un Proceso de Mejora de desarrollo del software tenga éxito, se
requiere que los encargados de llevarlo a cabo estén dispuestos y preparados
para asumir los cambios que estos modelos traen para las organizaciones.
Dos tercios de los proyectos de mejora no concluyen con éxito tras una
evaluación formal, pues existen riesgos que pueden conducir al fracaso de estas
iniciativas.
Procesos de Mejora del Software.
Riesgos en la implantación de Proceso de Mejora de Software
Entre los riesgos que atentan contra la implantación exitosa de Procesos de Mejora se
encuentran:
• Comunicación poco efectiva por parte de los gestores de proyectos o dentro de los
mismos equipos de desarrollo de software.
• Poca comprensión de los equipos de desarrollo de los verdaderos objetivos y
alcances de los procesos de mejora, esto los puede hacer sentir desmotivados,
pues existen cambios organizacionales que para el equipo de desarrollo pueden
ser bastante incómodos.
• Problema de “entendimiento” entre las partes involucradas que conllevan al
fracaso del proceso.
• Falta de una cultura organizacional, lo que incide negativamente en la organización
pues es como un grupo de personas que no pueden comunicarse entre sí. La
creencia de que el software se puede mejorar sólo con estándares, métricas y
buenas prácticas, puede hacer fracasar la iniciativa de mejora.
Madurez de las Organizaciones
Calidad del Software.
Diseño
• ¿Cuantos cambios de arquitectura se han producido?
Calidad de
Arquitectura
Desarrollo
• ¿Cuántos defectos ha detectado el cliente en producción vs
Calidad de defectos encontrados en pruebas en general? ¿Cuál es el ratio nº
Pruebas defectos encontrados vs hs. Invertidas en pruebas?
¿Cómo se mide la
Calidad del Software?
ISO 25010