Publicado el 15 de Enero del 2017
2.900 visualizaciones desde el 15 de Enero del 2017
27,5 MB
662 paginas
Creado hace 10a (05/06/2014)
Compendio de Ingeniería del Software
Rev. 1.0 Mayo 2014
Juan Palacio
Tabla de contenido
Prólogo
Verificación y validación
Introducción a la ingeniería del software
Mantenimiento
Gestión de proyectos predictiva
Producción basada en procesos
Ingeniería de procesos de software
Gestión de la configuración
Agilidad
Conocimiento
Modelo de procesos CMMI
Síntesis entre procesos y agilidad
Modelo de procesos ISO IEC 15504
Ciclo de vida del software
Scrum: el marco
Scrum: Métricas
Ciclos de desarrollo y patrones de gestión de
Scrum: prácticas
proyectos
Los requisitos del software
Diseño del software
Documentación de usuario
Kanban
Gestión en organizaciones ágiles
Prólogo
Este Compendio de Ingeniería del Software recopila apuntes preparados por el autor para
formación, que resumen aspectos pragmáticos de Ingeniería del Software.
Se comparten con una licencia abierta1 para su uso en autoformación, o en foros que requieran la
exposición de alguna de las áreas de la Ingeniería del Software que cubren, con un enfoque
ejecutivo o general, sin la densidad propia del texto académico:
Formación de Ingeniería del Software como asignatura complementaria en programas de
estudio técnicos.
Formación continua de gestores intermedios o directivos de empresas de software.
Presentaciones de asesoría y formación profesional durante la implantación de procesos de
mejora.
Etc.
Este no es un trabajo completo, y por su carácter general no pretende cubrir todos los modelos,
técnicas o líneas de trabajo de la Ingeniería del Software, sino las más pragmáticas para la industria
del software.
Si resulta posible, en futuras versiones, además de la revisión de este contenido, se incluirán temas
que por razones de tiempo y prioridad se quedan fuera.
3
Juan Palacio
(1) Para consultar los usos autorizados de este trabajo o contactar con el autor:
http://www.safecreative.org/work/1401289956290
Introducción a la
Ingeniería del Software
1.0
4
Introducción Ingeniería del Software
1952
5
Introducción Ingeniería del Software
6
1965
Crisis del software
Introducción Ingeniería del Software
1950
1960
1970
1980
1990
1990
2000
Crisis
Software ?
del
7
Crisis del software
Introducción Ingeniería del Software
Este problema se identificó por primera vez en 1968, año en el que la organización NATO desarrolló
la primera conferencia sobre desarrollo de software, y en la que se acuñaron los términos “crisis
del software” para definir a los problemas que surgían en el desarrollo de sistemas de software, e
“ingeniería del software” para describir el conjunto de conocimientos que existían en aquel
estado inicial.
Algunas referencias útiles para comprender cuáles eran los conocimientos estables para el
desarrollo de software en 1968 son:
En 1962 se publicó el primer algoritmo para búsquedas binarias.
C. Böhm y G. Jacopini publicaron en 1966 el documento que creaba una fundación para la
eliminación de “GoTo” y la creación de la programación estructurada.
En 1968 los programadores se debatían entre el uso de la sentencia GoTo, y la nueva idea
de programación estructurada; ese era el caldo de cultivo en el que Edsger Dijkstra escribió
su famosa carta “GoTo Statement Considered Harmful” en 1968.
La primera publicación sobre programación estructurada no vio la luz hasta 1974, publicada
por Larry Constantine, Glenford Myers y Wayne Stevens.
El primer libro sobre métrica de software fue publicado en 1977 por Tom Gilb.
El primero sobre análisis de requisitos apareció en 1979
8
LA PRIMERA SOLUCIÓN A LA CRISIS DEL SOFTWARE
Introducción Ingeniería del Software
INGENIERÍA DEL SOFTWARE
Aplicación de un enfoque sistemático, disciplinado y cuantificable en el
desarrollo, operación y mantenimiento de software.
INGENIERÍA DE PROCESOS
(Producción basada en procesos / mejora continua del proceso)
Aplicación del principio de calidad de Jurán empleado en la producción
industrial a la producción de sotware: “La calidad del resultado depende de
la calidad del proceso” -> modelos de procesos: CMMI, ISO 15504…
GESTIÓN DE PROYECTOS
(Aplicación del modelo de gestión de proyectos predictivo en los proyectos de software)
Aplicación de procesos de planificación, ejecución y control para alcanzar un
objetivo final en un plazo de tiempo determinado con el coste y nivel de
calidad previstos
9
Introducción Ingeniería del Software
10
1980
Introducción Ingeniería del Software
11
1986
Introducción Ingeniería del Software
12
1990
Introducción Ingeniería del Software
13
2000
Introducción Ingeniería del Software
14
2005
Introducción Ingeniería del Software
15
2010
Crisis del software
Proyectos para desarrollo de sistemas de software
Introducción Ingeniería del Software
Fracaso
24%
19%
23%
Problemático
44%
53%
49%
28%
46%
40%
31%
33%
53%
2009
2004
2000
1998
1995
1994
16
Éxito
32%
29%
28%
26%
27%
16%
Fuente: Standish Group Survey,
Crisis del software
Proyectos para desarrollo de sistemas de software
Introducción Ingeniería del Software
Fracaso
24%
19%
23%
Problemático
44%
53%
49%
28%
46%
40%
31%
33%
53%
2009
2004
2000
1998
1995
1994
17
Éxito
32%
29%
28%
26%
27%
16%
Fuente: Standish Group Survey,
Introducción Ingeniería del Software
Ingeniería del software
Definición original:
“Establecimiento y uso de principios de ingeniería para obtener software
económico que trabaje de forma eficiente en máquinas reales”.
Fritz Baver, 1968 (conferencia NATO)
Otras definiciones
“Disciplina para producir software de calidad desarrollado sobre las agendas y
costes previstos y satisfaciendo los requisitos”.
S. Schach 1990, Software Engineering
“(1) La aplicación de métodos sistemáticos, disciplinados y cuantificables para el
desarrollo, operación y mantenimiento de software; esto es, la aplicación de la
ingeniería al software.
(2) El estudio de (1)”.
IEEE 1993
18
Ingeniería del software
Introducción Ingeniería del Software
Desde 1968 hasta la fecha han sido muchos los esfuerzos realizados por los departamentos de
informática de las universidades, y por organismos de estandarización (SEI, IEEE, ISO) para
identificar las causas del problema y definir pautas estándar para la producción y mantenimiento del
software.
Los esfuerzos se han encaminado en tres direcciones principales.
Identificación de los factores clave que determinan la calidad del software.
Identificación de los procesos necesarios para producir y mantener software.
Acotación, estructuración y desarrollo de la base de conocimiento necesaria para la
producción y mantenimiento de software.
El resultado ha sido la necesidad de profesionalizar el desarrollo, mantenimiento y
operación de los sistemas de software, introduciendo métodos y formas de trabajo
sistemáticos, disciplinados y cuantificables.
La forma de trabajo de programadores individuales surgida por la necesidad de los primeros
programas, ha creado una cultura de la programación heroica, para el desarrollo de software que es
la principal causa de los problemas apuntados, y en la actualidad una de las principales resistencias
a la implantación de técnicas de ingeniería para el desarrollo de sistemas
19
Ingeniería del software
Introducción Ingeniería del Software
La Ingeniería del Software es una ingeniería muy joven que necesitaba:
Definirse a sí misma: ¿Cuáles son las áreas de conocimiento que la comprenden?
Definir los procesos que intervienen en el desarrollo, mantenimiento y operación
del software
De las mejores prácticas, extraer modelos de cómo ejecutar esos procesos para
evitar los problemas de la “crisis del software”
Definir criterios unificadores para las tareas de requisitos, pruebas, gestión de la
configuración, etc.
Los estándares son útiles porque:
Agrupan lo mejor y más apropiado de las buenas prácticas y usos del desarrollo de
software.
Engloban los “conocimientos”.
Proporcionan un marco para implementar procedimientos de aseguramiento de la calidad.
Proporcionan continuidad y entendimiento entre el trabajo de personas y organizaciones
distintas.
20
Ingeniería del software
Introducción Ingeniería del Software
Desde la identificación del fenómeno “crisis del software”, han sido muchas las organizaciones que
han abordado, con mayor o menor rigor, el análisis de problemas en el desarrollo de sistemas de
software. Sus trabajos se han encaminado a la localización de las causas; y a la exposición en
textos didácticos, normativos o estándares de procesos o prácticas necesarias para abordar el
desarrollo, mantenimiento y operación con las mayores garantías de éxito.
Han sido muchos los departamentos de universidades, organismos de normalización o investigación
nacionales o internacionales, sociedades de profesionales, departamentos de defensa,
departamentos de calidad y procesos de empresas los que han ido generando normas y estándares.
Este compendio considera como entidades de mayor reconocimiento internacional, por sus trabajos
y esfuerzos realizados para la normalización, y reconocimiento de la Ingeniería del software a: ISO,
IEEE- Computer Society y SEI.
21
Introducción Ingeniería del Software
Ingeniería del software
ISO
Organización Internacional para la Estandarización. Fundada en 1947
Son miembros 87 países.
En 1987 la Organización Internacional para la Estandarización (ISO) y la Comisión
Internacional Electrotécnica (IEC), establecieron un Comité Internacional (JTC1) para las
Tecnologías de la Información. La misión del JTC1 es la “estandarización en el campo de
campo de los sistemas
Comentarios de: Compendio de Ingeniería del Software rev. 07 (0)
No hay comentarios