Tópicos Selectos para la Enseñanza de la Ingeniería de Software:

Anuncio
Benemérita Universidad Autónoma de Puebla
Facultad de Ciencias de la Computación
Tópicos Selectos para la Enseñanza de la
Ingeniería de Software:
Introducción a la Ingeniería de Software
Academia del Área de Bases de Datos e
Ingeniería de Software
Otoño 2011
ISBN: 978-607-487-368-9
Autoridades.
Dr. Enrique Agüera Ibáñez
Rector de la Benemérita Universidad Autónoma de Puebla
Mtro. José Jaime Vázquez López
Vicerrector de Docencia
Dr. Pedro Hugo Hernández Tejeda
Vicerrector de Investigación y Estudios de Posgrado
M.C. Marcos González Flores
Director de la Facultad de Ciencias de la Computación
Dr. Luis Carlos Altamirano Robles
Secretario De investigación y de Estudios de Posgrado
M.C. Yalú Galicia Hernández
Secretaria Académica
Dr. Roberto Contreras Juárez
Secretario Administrativo
Revisores.
M.C. Martín Estrada Analco.
Prof. José Luis Luna Govea.
Edición: 1ra, Otoño 2011
ISBN: 978-607-487-368-9
Benemérita Universidad Autónoma de Puebla
Dirección de Fomento Editorial
4 sur 104 Puebla, Pue. México.
Teléfono y fax 0122229-55-00
2
Autores y Profesores de la Academia del Área de Bases de Datos e
Ingeniería de Software participantes:
M.C. Alma Delia Ambrosio Vázquez.
C. Dr. Mario Anzures García.
Dra. Etelvina Archundia Sierra.
M.C. María del Rocío Boone Rojas
Dra. Maya Carrillo Ruiz.
Dr. Juan Manuel González Calleros
Dra. Josefina Guerrero García
M.C. María del Consuelo Molina García.
Dra. María de la Concepción Pérez de Celis Herrero.
Dra. María Josefa Somodevilla García.
Coordinadora del Área de Bases de Datos e Ingeniería de Software y
Coordinadora de la Publicación del Libro.
M.C. María del Rocío Boone Rojas
Autora Colaboradora, P.I. de la Facultad de Ciencias de la
Computación, BUAP.:
M.E. María del Carmen Cerón Garnica.
3
Presentación
La comunidad de la Facultad de Ciencias de la Computación, se ha distinguido
entre cosas, por su constante preocupación por actualizar los contenidos
temáticos de los planes y programas de estudio, lo cual se ha reflejado
formalmente en la actualización de los planes y programas de estudio realizada en
diferentes periodos y bajo los diversos modelos establecidos institucionalmente,
tales como el modelo de créditos y recientemente el Modelo Minerva.
Sin embargo, el desarrollo vertiginoso, propio del ámbito de las Ciencias de
la Computación, requiere que se adopten estrategias propias que permitan
atender las demandas de actualización de los planes y programas de estudio y
que bajo las restricciones propias institucionales para oficializar tales cambios, se
puedan realizar en la práctica y permitan atender adecuadamente las necesidades
de preparación actualizada de nuestros estudiantes.
En particular, en nuestra comunidad se han adoptado un conjunto de
estrategias que pretenden atender los retos anteriores, entre las cuales, se
pueden citar las siguientes:
-Incorporar, dentro de los planes y programas de estudio, asignaturas con
programas abiertos que permitan introducir tópicos selectos correspondientes al
desarrollo de las Ciencias de la Computación.
-Contemplar, dentro de los planes y programas de estudio, un conjunto de
materias electivas, con programas que permitan la especialización y actualización
en las diversas líneas del conocimiento de las Ciencias de la Computación.
-Promover la participación de los profesores en diversas actividades de
actualización disciplinaria, profesional y docente. Tales como su incorporación a
programas de especialización, de diplomado y de certificación profesional, entre
otros.
-Promover el desarrollo o la incorporación del personal docente en diversos
proyectos de investigación de las diferentes áreas de las Ciencias de la
Computación así como su participación activa en los diversos eventos y foros
académicos especializados y de relevancia tanto a nivel nacional como
internacional.
4
En este contexto, en el presente periodo de verano y como parte de los
trabajos del personal docente del área de Bases de Datos e Ingeniería de
Software de la Facultad de Ciencias de la Computación, se ha organizado el
seminario del área, en el cual se ha propuesto como objetivo fundamental lograr
unificar los materiales, métodos, estrategias y técnicas en la enseñanza de las
asignaturas del área. Lo cual lleve por una parte a preparar los elementos
necesarios para poder enfrentar las futuras actualizaciones de los programas de
estudio, que de acuerdo a los lineamientos institucionales y propios del desarrollo
de la educación, deberán de tener un enfoque orientado al desarrollo de
competencias. Y por otra, integrar elementos necesarios para conformar a
mediano plazo nuestro repositorio de objetos de aprendizaje para las diversas
asignaturas del área.
Asimismo y con base en el planteamiento realizado en la primera sesión de
los trabajos del seminario del área, se abordaron los contenidos de las primeras
unidades del programa de
la
asignatura de “Ingeniería de Software”
correspondiente a los Planes y Programas de Estudio de los Programas de
Licenciatura e Ingeniería de la Facultad.
En el presente texto, se reportan los resultados de los trabajos
desarrollados en el
citado seminario, las experiencias compartidas y
principalmente el conjunto de actividades propuestas por cada uno de los
profesores participantes.
Para cada uno de los temas desarrollados se ha propuesto adoptar el siguiente
tipo de esquema de trabajo, en este caso correspondiente al tema de
“Antecedentes y Conceptos básicos de la Ingeniería de Software”
2. Antecedentes y Conceptos básicos de la Ingeniería de Software.
2.1 Propuesta de actividades de motivación y diagnóstica para el estudio de
la Ingeniería de Software.
2.2 Planeación didáctica de los antecedentes y conceptos básicos de la
Ingeniería de Software.
2.3 Desarrollo de las actividades de antecedentes y conceptos básicos de
la Ingeniería de Software.
2.3.1 Conceptos y términos de la Ingeniería de Software.
2.3.2 Antecedentes de la Ingeniería de Software.
2.3.3 El Concepto de Ingeniería de Software.
2.3.4 Factores de Calidad del Software.
5
2.4 Comentarios, Conclusiones y Actividades Complementarias sobre los
antecedentes y conceptos básicos de la Ingeniería de Software.
2.5 Referencias capítulo 2.
De acuerdo al esquema de trabajo anterior, el presente texto, consta de
seis capítulos. Con el propósito de establecer un antecedente al marco de trabajo
adoptado para el presente texto, en el capítulo 1 se presenta un panorama general
sobre los antecedentes y conceptos de Planeación Didáctica. En el capítulo 2, se
revisan los antecedentes, conceptos y términos de la Ingeniería de Software. El
ciclo de vida y las etapas del proceso de desarrollo de un proyecto de software,
se aborda en el capítulo 3. En el Capítulo 4, se revisan los modelos Desarrollo
Rápido de Aplicaciones y de Métodos Formales. La tecnología CASE (Ingeniería
de Software Asistida por Computadora) se revisa en el Capítulo 5. Finalmente y
como parte de las tendencias en el desarrollo de la Ingeniería de Software, en el
capítulo 6, se presentan los modelos ágiles de Procesos.
Expreso mi reconocimiento y agradecimiento a cada uno de los profesores
participantes en estos trabajos, sin duda alguna, sus valiosas experiencias en el
ejercicio docente y profesional, reflejadas en este documento, establecen ya un
precedente y referencia para la organización y mejora de la calidad de los trabajos
académicos en nuestra Facultad. En particular, agradezco ampliamente la
contribución de la Dra. Etelvina Archundia S., quien nos ha proporcionado la
orientación metodológica para el desarrollo de los mismos.
Así mismo, de manera especial, agradezco al M.C. Martín Estrada Analco y al
Prof. Jose Luis Luna Govea, su trabajo y disposición para realizar la revisión
general de este reporte.
Resalto también el valioso apoyo de las autoridades administrativas tanto a nivel
institucional como de la Facultad que hacen posible la divulgación y oficialización
de los resultados de estos trabajos. A cada uno ellos, expreso mi agradecimiento.
M.C. María del Rocío Boone Rojas.
Coordinadora del área de Bases de Datos e Ingeniería de Software
Facultad de Ciencias de la Computación.
Otoño 2011
6
Contenido
Portada
1
Página Legal
2
Autores
3
Presentación
4
Capítulo 1 Perspectivas de la Reforma Integral Educativa en México.
Etelvina Archundia Sierra, María del Carmen Cerón Garnica.
10
1.1 Comentarios sobre el Proyecto Tuning en América Latina.
12
13
13
14
15
16
1.2 Experiencias en Espacios Comunes en México ECOES.
1.2.1Planeación didáctica en la Educación Superior
1.2.2 Actividades de aprendizaje
1.3 Evaluación sumativa y formativa
1.4 Referencias Capítulo 1
Capítulo 2 Antecedentes y Conceptos Básicos de la Ingeniería de Software.
Etelvina Archundia Sierra, María del Rocío Boone Rojas.
17
2.1 Propuesta de actividades de motivación y diagnóstico para el estudio de la Ingeniería de
Software.
2.2 Planeación didáctica de los antecedentes y conceptos básicos de la Ingeniería de Software.
2.3 Desarrollo de las actividades de antecedentes y conceptos básicos de la Ingeniería de
Software.
2.3.1 Conceptos y términos de la Ingeniería de Software.
2.3.2 Antecedentes de la Ingeniería de Software.
2.3.3 El Concepto de Ingeniería de Software.
2.3.4Factores de Calidad del Software.
2.4 Comentarios, Conclusiones y Actividades Complementarias sobre los antecedentes y
conceptos básicos de la Ingeniería de Software.
2.5 Referencias Capítulo 2
18
19
21
21
22
26
27
29
29
7
Capítulo 3 Ciclo de Vida.
Alma Delia Ambrosio Vázquez, Ma. del Consuelo Molina García.
31
3.1 Propuesta de Actividades de Motivación y Diagnóstico para el Estudio de el Ciclo
de vida del software.
3.2 Planeación Didáctica de Ciclo de vida en la Ingeniería de Software.
3.3 Desarrollo de las Actividades de ciclo de vida del software.
3.3.1 Conceptos y Términos de ciclo de vida, las P`s de la Ingeniería de Software.
32
3.4 Comentarios, Conclusiones y Actividades Complementarias del ciclo de vida del
software.
33
35
35
40
3.5 Referencias Capítulo 3
41
Capítulo 4 Los Modelos DRA y de Métodos Formales
42
Mario Anzures García, Maya Carrillo Ruiz.
4.1 Planeación Didáctica del Modelo de Desarrollo Rápido de Aplicaciones.
4.2 Propuesta de Actividades del Modelo de Desarrollo Rápido de Aplicaciones.
4.3 Planeación Didáctica del Modelo de Métodos Formales.
4.4 Propuesta de Actividades del Modelo de Métodos Formales.
4.5 Referencias Capítulo 4
43
44
47
48
51
Capítulo 5 Herramientas de Ingeniería de Software Asistida por Computadora.
María Josefa Somodevilla García, María de la Concepción Pérez de Celis Herrero,
María del Rocío Boone Rojas.
52
5.1 Propuesta de actividades de motivación y diagnóstico para el estudio de las Herramientas
de la Ingeniería de Software Asistida por Computadora.
5.2 Planeación didáctica de los antecedentes y conceptos básicos de las Herramientas de la
Ingeniería de Software Asistida por Computadora.
5.3 Desarrollo de las actividades de antecedentes y conceptos básicos de las Herramientas de
la Ingeniería de Software Asistida por Computadora.
5.3.1 El Concepto CASE.
5.3.2 Componentes básicos de CASE.
5.3.3 Taxonomía de Herramientas CASE.
5.3.4 Caso de Estudio. Introducción a una Herramienta de Ingeniería de Software
Asistida por Computadora.
5.4 Comentarios, Conclusiones y Actividades Complementarias sobre los antecedentes y
conceptos básicos de las Herramientas de la Ingeniería de Software Asistida por
Computadora.
5.5 Referencias Capítulo 5
53
57
58
58
60
61
66
68
68
8
Capítulo 6 Modelos Ágiles de Procesos.
Josefina Guerrero García, Juan Manuel González Calleros.
70
6.1 Propuesta de actividades de motivación y diagnóstico para el estudio de modelos ágiles de
proceso.
6.2 Planeación Didáctica de modelos ágiles de proceso.
6.3 Desarrollo de las Actividades de Introducción a los métodos ágiles de la Ingeniería de
Software.
6.3.1Introducción a los modelos ágiles.
6.4 Desarrollo de las actividades de métodos ágiles de la Ingeniería de Software.
6.4.1 Programación Extrema [Extreme Programming ( XP)]
6.4.2 Metodologías Crystal [CrystalMethodologies (CM)]
6.4.3 SCRUM
6.5 Comentarios, conclusiones y actividades complementarias sobre los antecedentes y
conceptos básicos de la ingeniería de software.
6.6 Referencias Capítulo 6
71
74
75
75
81
81
85
89
94
103
9
Capítulo 1
Antecedentes y Conceptos de
Planeación Didáctica.
Etelvina Archundia Sierra
María del Carmen Cerón Garnica
1. Perspectivas de la Reforma Integral Educativa en México
La Secretaría de Educación Pública ha emitido documentos para la formación docente
como lo son el desarrollo de proyectos didácticos, los cuales permiten atender
diferentes aspectos que se vinculen con los aprendizajes, las relaciones docente/alumno,
la organización de actividades y los intereses educativos en general. De esta manera, los
proyectos didácticos son entendidos como actividades planificadas que involucran
secuencias de acciones y reflexiones coordinadas e interrelacionadas para alcanzar los
aprendizajes esperados que, en el caso de la asignatura de español favorecerán el
desarrollo de competencias comunicativas. Los proyectos didácticos se conforman de
cuatro elementos fundamentales para su desarrollo: propósito, actividades a
desarrollar, productos y evaluación. [1].
Basándose en las investigaciones educativas y el consenso del camino que debe de
seguir el sistema educativo mexicano, se han establecido acuerdos para la
10
implementación del enfoque en competencias, el cual incide desde el nivel básico,
medio superior y superior, en donde cada nivel contempla las competencias a
desarrollar, en el caso del nivel básico se promueve la comunicación y las habilidades
del pensamiento como observar, analizar, razonar, aprender y el ser a través de la
socialización. En el nivel medio superior se contempla: la comunicación, el
pensamiento crítico y creativo, la responsabilidad social y cívica. En la educación
superior el estudio de la propia disciplina y su relación con el campo laboral (Véase
figura 1).
Figura 1. Competencias a desarrollar de acuerdo a los niveles de estudio
Fuente: Elaboración propia de los autores
Con lo anterior se busca la articulación curricular, en el marco de la Reforma
Integral de la Educación Básica (RIEB), basándose en el requisito para el cumplimiento del
perfil de egreso, lo que implica integrar los niveles de preescolar, primaria y secundaria
para que exista consistencia entre las competencias a desarrollar, a fin de sentar las bases
para atender las necesidades de la sociedad actual [2].
Hoy la necesidad de educar para la vida demanda múltiples competencias a los
maestros, de modo que éstos sean agentes de cambio que contribuyan a elevar los
aprendizajes en los niños, en dotarles de herramientas para el pensamiento complejo y para
un desarrollo humano pleno e integral, así como competencias cívicas y sociales que
contribuyan a que todas las personas gocen de iguales derechos, libertades y oportunidades,
así como elevar el bienestar general.
Lo mencionado para la educación básica y media superior se debe de continuar en la
educación universitaria en las diversas áreas del conocimiento para desarrollar individuos
con capacidades que les permita incidir en el momento actual y sean transformadores de su
contexto social. Por lo que la actividad del docente en el proceso de enseñanza aprendizaje
requiere de la profesionalización del docente para atender los retos de la educación hoy en
día, por lo que el docente universitario debe de ser competente en el dominio de los
contenidos de enseñanza del currículo y que desarrolle las capacidades intelectuales de
pensamiento abstracto y complejo en los alumnos universitarios. Para el proceso de
enseñanza aprendizaje el docente debe de estudiar la forma en la cual planea, el cómo
imparte y evalúa sus actividades en el aula. Debe de relacionar en el conocimiento
disciplinar los beneficios de las corrientes pedagógicas a través de los estudiosos como los
11
son: Jean Piaget, Bruner, Lev Vigotsky y Gagne; además del uso de recursos de vanguardia
como lo son las Tecnologías de Información TIC´s(Véase figura 2).
Figura 2: Esquema aprendizaje para el docente en la impartición de su práctica profesional
Fuente: Elaboración propia de los autores
1.1 Comentarios sobre el Proyecto Tuning en América Latina
El enfoque en competencias presentado desde las Reflexiones y Perspectivasde la
Educación Superioren América Latina en el Informe Final del Proyecto Tuningen América
Latina durante los años 2004-2007, muestra las propuestas de las competencias genéricas,
disciplinares y laborales en las diversas áreas del conocimiento.
Las competencias genéricas son los criterios generales que se desarrollan durante
los procesos de aprendizaje y su autogestión, por ejemplo: la comunicación, aprender a
aprender, aprender ser, aprender a hacer (habilidades procedimentales y técnicas).
Las competencias disciplinares se construyen por la integración de los saberes
disciplinares y su aplicación contextual en un marco de conciencia social.
La competencias laborales se relacionan con las disciplinares para la formación y
desempeño profesional en un puesto laboral, identificando lo que es capaz de realizar,
juzgar y la aptitud del poseedor de la competencia.
Cabe mencionar de acuerdo al informe Tuning, la participación de 62 universidades
latinoamericanas debatiendo en 4 grupos de trabajo: Administración de Empresas,
Educación, Historia y Matemáticas. En un segundo momento, dada la repercusión que
alcanzaronlas actividades realizadas en el marco del proyecto y respondiendo a una
demanda de los países latinoamericanos, se incorporaron 120 nuevas universidades en 8
áreas del conocimiento: Arquitectura, Derecho, Enfermería, Física, Geología, Ingeniería,
Medicina y Química. Estas 182 universidades, provenientes de 18 países de América Latina
(Argentina, Brasil, Bolivia, Colombia, Costa Rica, Cuba, Chile, Ecuador, El Salvador,
Guatemala, Honduras, México, Nicaragua, Panamá, Paraguay, Perú, Uruguay y
Venezuela)[3].
12
1.2 Experiencias en espacios comunes en México
Las acciones mencionadas en el Proyecto Tuning se plasman en el Proyecto Experiencias
en Espacios Comunes de Educación Superior ECOES, donde participan la Universidad
Nacional Autónoma de México UNAM, Instituto Politécnico Nacional IPN y la
Universidad Autónoma de México UAM, propiciando el intercambio y la movilidad
estudiantil. La colaboración se da también en la educación a distancia y en el enlace de las
bibliotecas digitales [4].
Si bien el compartir experiencias docentes entre las Universidades también deben de
crear estrategias que les permita aplicar el enfoque en competencias en la Educación
Superior en México por lo que se requiere integrar los estudios realizados a la fecha en un
modelo a seguir en los aspectos de: Diseño curricular, formación docente, desarrollo de
programas académicos, planeación didáctica, actividades de aprendizaje y evaluación de los
programas académicos y curriculares (véase figura 3).
Figura 3. Aspectos a atender en la Educación Superior en México
Fuente: Elaboración propia de los autores
1.2.1 Planeación didáctica en la Educación Superior
El intercambio de experiencias entre los docentes de distintas Universidades Públicas
Mexicanas aportaría en el proceso de enseñanza aprendizaje una oportunidad de enriquecer
la práctica docente y generar materiales que permitan aprendizajes basados en problemas y
proyectos, al igual que estudios de casos en contextos reales de excelente calidad, lo cual
propiciaría en los alumnos, el interés por las asignaturas de los programas académico y un
aprecio al esfuerzo docente vislumbrado en el poder hacer para incidir en la sociedad y
transformación de la misma (Véase figura 4).
13
Figura 4 Formas de aprendizaje en educación superior
Fuente: Elaboración propia de los autores
La planeación didáctica en la Educación Superior requiere en un primer momento
de un diagnóstico que nos permita ubicar los conocimientos, experiencias y prácticas que el
alumno ha generado en las asignaturas anteriores. En un segundo momento el docente debe
despertar el interés y motivación por los nuevos conocimientos, los cuales se contemplan
bajo el control del tiempo, los materiales, recursos a utilizar en las actividades de
aprendizaje a realizar para alcanzar las competencias establecidas al inicio. Las actividades
de aprendizaje requieren la transferencia de las técnicas de aprendizaje y de los
conocimiento disciplinares para llevarlas a cabo durante el desarrollo y ejecución en el aula
de los contenidos plasmados en los programas académicos. Otro aspecto a considerar es la
evaluación de las actividades de aprendizaje y de los objetivos y propósitos plasmados al
principio. Las actividades de aprendizaje requieren de los recursos de vanguardia
especializados en la educación a través de las Tecnologías de Información y Comunicación
TIC´s.
1.2.2 Actividades de aprendizaje
Para las actividades de aprendizaje se requiere del estudio de las estrategias y técnicas en la
enseñanza, aunado al conocimiento disciplinar de las asignaturas. Por lo que se recomienda
utilizar los mapas conceptuales, mapa mental, cuadros sinópticos, esquemas, gráficos,
diagramas; también durante las actividades de aprendizaje se sugieren técnicas de
dinámicas grupales como el Panel, Philips 6/6, Trabajos en pequeños grupos y debates.
En la planeación didáctica se destacan las actividades desarrolladas en la
motivación e interés respecto al tema de estudio y en el desarrollo del mismo (véase figura
5). La actividad inicial motivacional se considera como un diagnóstico a partir de los
conocimientos previos del alumno mediante los recursos de un video, el diálogo, texto o
14
una imagen. En este momento el clima de confianza en el aula propicia un medio de
investigación e interés por parte del alumno respecto del tema.
Para las actividadesen el desarrollo del tema se considera la búsqueda de los conocimientos
disciplinarios del tema de diversas fuentes, a partir de datos, investigaciones, solución de
problemas y estudio de casos.
Actividad de
desarrollo
•Motivación
•Diagnóstica
Actividad
inicial
• Trabajo en equipo.
• Estudio de casos
• Solución de problemas
• Investigaciones
• Lecturas
•Conclusiones
•Evaluación
Cierre
Figura 5. Actividades de inicio y desarrollo en la Planeación didáctica
Fuente. Elaboración propia de los autores
En el proceso de desarrollo el docente debe pensar en la organización de las
actividades a través de equipos de trabajo y de prácticas de procesos constructivistas para
enriquecer el proceso cognitivo de aprendizaje.
Posterior a las actividades de desarrollo las conclusiones y cierre donde el alumno
extrae y concreta lo aprendido en el cambio y transformación de los conocimientos previos
a los nuevos. El pensamiento analógico, crítico y reflexivo representa la funcionalidad del
aprendizaje del tema establecido [5].
1.3
Evaluación sumativa y formativa
La evaluación de los aprendizajes es un proceso complejo puesto que considera la
implicación de diversas variables presentes en el aula como lo es la relación entre el
docente-alumno, las evidencias del aprendizaje, la relación entre los alumnos, los recursos,
las estrategias de aprendizaje aplicadas y la planeación didáctica. Cuando el docente integra
las dimensiones mencionada debe de contemplar que la evaluación se puede dar en lo
aprendido del tema, de la asignatura y lo que trasciende en el alumno para continuar con el
aprendizaje en su práctica profesional. A continuación se presentan los dos tipos de
evaluación esenciales a considerar en el proceso de aprendizaje: la evaluación sumativa y la
formativa.
La evaluación sumativa debe de ser coherente con las actividades de aprendizaje
establecidas durante el desarrollo de la Planeación didáctica. La evaluación sumativa se
15
puede establecer mediante rúbricas, enseñanza asistida por el grupo, lista de cotejo o nota
técnica.
En la evaluación formativa el docente deberá crear una guía que permita al alumno
integrar sus conocimientos, habilidades y actitudes en la solución de problemas
disciplinares y aprendizaje basado en proyectos. El docente establecerá los tiempos de
revisión y de rúbricas que le permita al alumno conocer su progreso y retroalimentación. El
ambiente que se propicia en la evaluación formativa es de confianza y logros, permitiendo
al alumno el pensamiento creativo para la innovación.
1.4 Referencias Capítulo 1
[1] Secretaría de Educación Pública, (2009) Programas de estudio 2009. Primer grado.
Educación básica. Primaria, Segunda edición, 2009, Primera reimpresión, 2010, D. R. ©
México, DF pág. 31.
[2] Curso Básico de Formación Continua para Maestros en Servicio, Planeación didáctica
para el desarrollo de competencias en el aula 2010 fue elaborado en la Dirección General
de Formación Continua de Maestros en Servicio de la Subsecretaría de Educación Básica,
de la Secretaría de Educación Pública.
[3] Reflexiones y perspectivas de la Educación Superior en América Latina. Informe Final
– Proyecto Tuning – América Latina. 2004-2007.Tuning – América Latina:
http://tuning.unideusto.org/tuningal
[4] Rositas, J. y Torres, G. Diseño de planes educativos bajo un enfoque de competencias.
Ed. Trillas, México, 2011.
[5] García, A. y Gómez, E. Notas del Diplomado en Planeación y organización de
secuencias e intervención didácticas en torno a aprendizajes cognitivos, BUAP. México,
Puebla, 2011
16
Capítulo 2
Antecedentes y Conceptos Básicos de
la Ingeniería de Software.
Etelvina Archundia Sierra
María del Rocío Boone Rojas
Introducción
Los programas de estudio en computación cuentan, actualmente, con la asignatura de
Ingeniería de Software. Los docentes que imparten la asignatura están convencidos de que a
los alumnos se les debe motivar el interés por conocer y practicar las metodologías para el
desarrollo de sistemas de calidad en computación.
Para que el alumno se interese en el estudio de la Ingeniería de Software el docente
deberá realizar una planificación docente para que el alumno comprenda: Cuál es el objeto
de su estudio y por lo tanto, la necesidad de aprender su aplicación en el campo de
desarrollo de sistemas de cómputo de calidad.
17
Los aspectos que debe identificar el alumno son: el ingenio del sujeto capaz de
transformar mediante la Ingeniería de Software, sistemas de cómputo de calidad al servicio
de las personas y de los diversos campos de la sociedad.
En el presente capítulo se propone una serie de actividades de aprendizaje para que
el docente pueda desarrollar en su clase los siguientes aspectos:
o
o
o
o
Conceptos y términos de la Ingeniería de Software.
Antecedentes de la Ingeniería de Software.
El Concepto de Ingeniería de Software.
Factores de Calidad del Software.
2.1 Propuesta de Actividades de Motivación y Diagnóstico para el Estudio
de la Ingeniería de Software.
Actividades Propuestas.
Actividad 1
Objetivo.
Que el alumno identifique, a priori, algunas de las actividades y ventajas inherentes a la
Ingeniería de Software.
Especificaciones.
E1) Selecciona un producto de programación que hayas desarrollado en un curso
anterior.
Ejemplo de Resultados.
Programa para el curso de algoritmos y estructuras de datos. Profesor. M.C. Marco
Antonio Soriano Ulloa.
E2) Resuelve el siguiente cuestionario:
1.-Proporciona una lista de, al menos, tres especificaciones de requisitos establecidos
por el profesor.
Ejemplo de Resultados.
Requisito1.
18
Programa que encuentre los caminos de costo mínimo que hay entre cada par de nodos
de una digráfica pesada.
Requisito 2.
Considerar como datos de entrada:
n – número de nodos.
N – conjunto de nodos.
R – conjunto de arcos.
P – pesos asignados a cada arco.
Requisito 3.
Utilizar el algoritmo de Dijkstra.
2.- ¿Consideras que el producto que desarrollaste se apegó a los requisitos establecidos?
¿ Por qué?
Ejemplo de Resultados.
- Al principio no entendí el problema.
- Los resultados fueron incorrectos.
3.- ¿Cumpliste en tiempo y forma, con la fecha de entrega? Justifica tu respuesta.
Ejemplo de Resultados.
-Sí se entregó en la fecha establecida pero no era exactamente lo que pidió el profesor.
4.- ¿El tiempo establecido de desarrollo fue suficiente? Justifica tu respuesta.
Ejemplo de Resultados.
-El tiempo sí fue suficiente, pero faltó organizar actividades personales.
5.-Indica, por lo menos, dos aspectos del proceso de desarrollo de tu proyecto que se
podrían mejorar.
Ejemplo de Resultados. Realizar una mejor planeación de mis actividades.
-Interactuar con el profesor para aclarar los requisitos.
Recursos.
R1) Producto de Programación desarrollado previamente, de preferencia en un lenguaje
de alto nivel.
2.2 Planeación Didáctica de los Antecedentes y Conceptos Básicos de la
Ingeniería de Software.
19
Tiempo.
Se propone cubrir el tema en un intervalo de 4 hrs.
Contenido.
1.
2.
3.
4.
Conceptos y Términos de la Ingeniería de Software.
Antecedentes de la Ingeniería de Software.
El Concepto de Ingeniería de Software.
Factores de Calidad del Software.
Materiales.
Referencias Bibliográficas.
[1] Fairley
Ingenierìa de Software.
Prentice Hall.
IEEE Trans. on Software Engineering.
[2] Capítulo 1
Pressman Roger S.
Ingeniería de Software, Un Enfoque Práctico.
Mc Graw Hill.
[3] Capítulo 1
IanSommerville.
Ingeniería de Software
Addison Wesley.
Recursos Electrónicos.
[4] Gabriel Buades Rubio.
“Concepto de Calidad”
Ingeniería de Software III
Depto. De Ciencias Matemáticas e Informática.
Universidad de las Islas Balares
http://dmi.uib.es/~bbuades/calidad/sld016.htm
Consulta: Junio 2011
[5] Xavier Ferré Grau
“Principios Básicos de Usabilidad para Ingenieros Software”
20
Facultad de Informática
Universidad Politécnica de Madrid
http://is.ls.fi.upm.es/miembros/xavier/papers/usabilidad.pdf
Consulta: Junio 2011
[6] Moisés Rodríguez Monje
“Calidad de Procesos y Productos Software, ISO/IEC 25000”
Alarcos Quality Center
http://alarcos.inf-cr.uclm.es/per/fruiz/cur/santander/mrodriguez-iso25000-update.pdf
Consulta: Junio 2011
2.3 Desarrollo de las Actividades de Antecedentes y Conceptos Básicos de
la Ingeniería de Software.
2.3.1 Conceptos y Términos de la Ingeniería de Software.
Material de Referencia.
De Pressman [2] se incluye el siguiente material:
Ingeniería.
Profesión que posee conocimientos científicos, actividades y criterios (ingenio) para crear
dispositivos, métodos y sistemas para transformar los recursos y satisfacer mejor las
necesidades de una sociedad.
Software.
Conjunto de programas que se pueden ejecutar en una computadora, así como toda la
información, utilerías y recursos necesarios para su diseño, instalación, operación,
mantenimiento y refinamiento.
Ingeniería de
Software.
Disciplina que establece el uso de principios de ingeniería robustos, orientados a obtener
software económico que sea confiable y funcione de manera eficiente.
Perfil del
Ingeniero de
Software.
Debe ser capaz de encabezar o ser miembro de grupos multidisciplinarios de desarrollo de
de todo tipo de software y que en equipo logre producir software de alta calidad.
Diferencia entre
programador e
Ingeniero de
Software.
La Ingeniería de Software difiere de la programación tradicional en que se utilizan técnicas
de ingeniería para especificar, diseñar, codificar, validar y mantener los productos dentro
del tiempo y presupuesto establecidos para el proyecto. Además, la ingeniería se preocupa
por aspectos administrativos que quedan fuera del dominio normal de la programación.
El término programador se emplea para denominar a la persona preocupada y abocada a
las tareas y detalles de la codificación, empacado y modificación de los algoritmos y
estructuras de datos codificados en algún lenguaje de programación particular.
Los Ingenieros de Software están, además, capacitados para hacer frente a aspectos de
análisis, diseño, verificación, prueba de programas, documentación, mantenimiento y
administración del proyecto.
21
Actividades Propuestas.
Actividad 1
Objetivo.
Que el alumno identifique los términos y conceptos elementales de la Ingeniería de
software.
Especificación.
E1) Revisa las referencias [1] y [2], y realiza tu propia investigación sobre los conceptos y
términos de la ingeniería de software.
-Elabora un mapa conceptual que involucre los principales términos y conceptos de la
ingeniería de software.
Ejemplo tipo de Resultados.
(Ver mapa conceptual en Programa de curso de la asignatura de Ingeniería de Software,
Modelo MUM).
Recursos.
R1) Referencias [1] y [2]
R2) Conexión a Internet.
2.3.2 Antecedentes de la Ingeniería de Software.
Material de Referencia.
Recomendación: Revisar Refs. [1] y [2].
A continuación se incluye material de Pressman [2]:
22
La “Crisis del Software” se denomina una etapa en la que todos los programas
desarrollados, se corregían cuando había fallos o eran modificados debido a necesidades
cambiantes, y que requerían de grandes esfuerzos para mantenerlos, con un costo mayor, a
medida que la complejidad del software crecía.
En las pasadas décadas los ejecutivos y desarrolladores se hacían las siguientes
preguntas:
¿Por qué lleva tanto tiempo terminar los programas?
¿Por qué es tan elevado el costo?
¿Por qué no podemos detectar los errores antes de entregar el software a los clientes?
¿Por qué resulta tan difícil constatar el progreso del desarrollo del software?
Estas y otras preguntas manifiestan el carácter del software y la forma en que se
desarrolla, estos problemas hacen necesaria la adopción de técnicas de Ingeniería de
Software.
El software es ahora la clave del éxito de muchos de los sistemas basados en
computadora. El software marca la diferencia. Lo que diferencia una compañía de otra, es
la suficiencia, exactitud y oportunidad de la información proporcionada por el software.
23
Ejemplo de la importancia del software: Dos consultorios dentales; ambos cuentan con los
últimos modelos de computadoras personales destinadas a apoyar las tareas y actividades
relacionadas con el consultorio. Sólo que uno de ellos, cuenta con un dispositivo especial
conectado a la computadora y con un Software para obtener radiografías de piezas
dentales por computadora. En un par de minutos la muestra radiográfica está en pantalla y
el médico puede obtener diferentes vistas de la placa usando este software. Además, puede
establecer una conexión a través de internet o vía modem, para enviar el archivo de la
radiografía a otro colega experto, con el fin de consultar y apoyar el diagnostico, todo ello
en la misma cita. En la forma tradicional la placa radiográfica estaría lista en un par de días.
El desarrollo de software se ha convertido en una industria con crecimiento vertical
en los últimos años, hoy por hoy uno de los hombres más ricos del mundo es el dueño de
una casa de software, Microsoft.
Hace un par de décadas se sostenía la teoría de que los países que poseían los mejores
recursos naturales estaban destinados a ser los más ricos y poderosos del mundo, en México
por ejemplo, se manejó la idea de que el petróleo era la gran puerta de entrada al mundo
desarrollado. Indudablemente los recursos naturales tienen un papel importante en la
economía de los países, sin embargo, poco a poco se fue acuñando una nueva ideología que
se sintetiza en lo siguiente:
Aquél que posee la información y el conocimiento y hace mejor uso de él, es el que tiene el
poder.
Problemas del software.
• La planificación y estimación de costos frecuentemente son imprecisas.
• Falta de productividad en la comunidad de software
• La calidad del software, a veces, es inaceptable.
Estos problemas al final crean insatisfacción y falta de confianza por parte de los clientes.
Los problemas anteriores son sólo manifestación de otras dificultades:
• No tenemos tiempo de recoger datos sobre el proceso de desarrollo del software.
• Los proyectos de desarrollo de software se llevan a cabo con sólo una vaga
indicación de los requisitos del cliente.
• La calidad del software es normalmente cuestionable.
• El mantenimiento de software es muy costoso y no se le ha considerado un aspecto
importante.
Los problemas anteriores son corregibles, la clave es: Dar un enfoque de ingeniería al
desarrollo de software.
24
Actividades Propuestas.
Actividad 1
Objetivo. Que el alumno identifique el tipo de productos de software desarrollados a
partir de la segunda generación de computadoras, cuyo tamaño y complejidad resultó
imposible de manejar sin una metodología adecuada.
Especificación.
-Revisar el Cap.1 de las refs. [1] y [2].
-Proporcionar una lista de los tipos de productos de software que se desarrollaron a
partir de la segunda generación de computadoras.
Ejemplo de Resultados.
-Sistemas de tiempo compartido.
-Sistemas con multiprogramación.
-Sistemas multitarea.
Recursos.
R1) Referencias [1] y [2]
Actividad 2
Objetivo. Que el alumno identifique los problemas que surgen cuando los productos de
software se desarrollan sin el enfoque de la ingeniería de software.
Especificación.
-Revisar el Cap.1 de las refs. [1] y [2]. (Ver II Planeación, Materiales.)
-Proporcionar una lista de los problemas que surgieron durante el desarrollo de los
productos de programación durante la etapa llamada “crisis del software.”
Ejemplo de Resultados.
-El Producto se entregó fuera de tiempo.
-El producto no corresponde a los requisitos especificados por el cliente.
-Algunas de las opciones del producto NO funcionan o bien, fallan.
25
Recursos.
R1) Referencias [1] y[2]
2.3.3 El Concepto de Ingeniería de Software.
Material de Referencia.
Ref.[1].
En [1] se incluyen algunas definiciones de la Ingeniería de Software:
Definición 1
Ingeniería de Software es el estudio de los principios y metodologías para desarrollo y
mantenimiento de sistemas de software [Zelkovitz, 1978]
Definición 2
Ingeniería del Software es la aplicación práctica del conocimiento científico en el diseño y
construcción de programas de computadora, así como de la documentación asociada,
requerida para desarrollar, operar (funcionar) y mantenerlos. Se conoce también como
desarrollo de software o producción de software [Bohem, 1976]
'
Definición 3
Ingeniería del Software trata del establecimiento de principios y métodos de ingeniería, con
el fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales
[Bauer,1972].
Definición 4
La aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo,
operación (funcionamiento) y mantenimiento del software; es decir, la aplicación de
ingeniería al software. 2. El estudio de enfoques como en (1) [IEEE, 1993].
ZELKOVITZ, M. V., SHAW, A. C. y GANNON, J. D.: Principles of Software
Engineering and Design. Prentice-Hall, EnglewoodsClif, 1979.
BOEHM, B. W.: Software Engineering., IEEE Transactions on Computers, C-25, núm. 12,
pp. 1226-1241.
BAUER, F. L.: Software Engineering, Information Processing, 71, North Holland
Publishing Co., Amsterdarn, 1972
IEEE: Standards Collection: Software Engineering, IEEE Standard 610.12-1990, IEEE,
1993.
26
Actividades Propuestas.
Actividad 1
Objetivo:
Identificar los conceptos clave asociados a la Ingeniería de Software.
Especificación.
E1) Realizar una revisión y análisis grupal de las diferentes definiciones de ingeniería de
software presentadas previamente. En cada caso, señalar los conceptos clave que se resaltan
en cada una de ellas.
Recursos.
R1) Ref.[2].
2.3.4 Factores de Calidad del Software.
Material de Referencia.
-Concepto de Calidad.
[4], [2], [6], [7]
-Factores de Calidad Estructurales y Derivados. [4]
-Descripción de Factores.
[1], Cap. 18 y en [4] y [5].
Actividad 1
Objetivo.
Que el alumno identifique atributos de calidad en un producto de Programación.
Especificación.
E1) Selecciona un producto de programación que hayas desarrollado en un curso anterior.
E2) Identifica tres factores de calidad que consideres se le pueden atribuir a tu producto.
Justifica tu respuesta.
Ejemplo de Tipo de Resultados.
Es portable, porque se desarrolló en Java, el cual tiene una máquina virtual.
Recursos.
27
R1) Referencias [4] y [5].
R2) Un producto de programación desarrollado previamente, de preferencia en un lenguaje
de programación de alto nivel.
R3) Conexión a Internet.
Actividad 2
Objetivo.
Que el alumno identifique que es posible mejorar la calidad de sus productos de
programación.
Especificaciones.
E1) Desde el punto de vista del programador, indica al menos tres características de tu
producto de programación que consideres se podrían mejorar.
Ejemplo de Resultados.
-Utilizar estructuras de datos dinámicas para la implementación de los archivos indizados.
E2) Desde el punto de vista del usuario, indica al menos tres características de tu producto
de programación que consideres se podrían mejorar.
Ejemplo de Resultados.
-Mejorar la interfaz del usuario.
-Dar más opciones para generar otro tipo de reportes.
Recursos.
R1) Referencias [6] y [7].
R2) Un producto de programación desarrollado previamente, de preferencia en un lenguaje
de programación de alto nivel.
R3) Conexión a Internet.
Actividad 3
Objetivo.
Que el alumno conozca que existen herramientas para evaluar factores de calidad de
software y que pueden ser de diferentes tipos. (En un siguiente capítulo, “Métricas”, se
espera que sea capaz de experimentar con al menos una de ellas).
Especificaciones.
E1) Realiza una búsqueda por Internet y desarrolla una breve documentación sobre tres
herramientas para evaluar factores de calidad de un producto de software. Incluye al menos
los siguientes aspectos:
Nombre.
28
Empresa.
Propósito.
Puedes organizar tus resultados en una tabla.
Ejemplo de Tipo de Resultados.
Nombre. KEMIS“Kybele Environment Mesaurement Information System”
Empresa.KybeleConsulting.
Propósito. Facilitar la medición automatizada de la calidad de los productos software. Ej.
Factores relacionados con capacidad de un producto para ser probado, de soportar
actualizaciones.
Recursos.
R1) Conexión a internet.
R2) Referencias disponibles en [6].
2.4 Comentarios, Conclusiones y Actividades Complementarias sobre los
Antecedentes y Conceptos Básicos de la Ingeniería de Software.
Se propone realizar una actividad grupal de análisis y reflexión, relacionada con las
siguientes cuestiones.
-¿Cuál es el objetivo fundamental de la Ingeniería de software?
-¿Consideras que el desarrollo de tus productos de software que has desarrollado hasta la
fecha, ha sido metodológico y disciplinado?
-¿Tus productos de programación cumplen con algunos o la mayoría de los factores de
calidad que se han revisado?
2.5 Referencias Capítulo 2
[1] Fairley
Ingenierìa de Software.
Prentice Hall.
IEEE Trans. on Software Engineering.
[2] Capítulo 1
29
Pressman Roger S.
Ingeniería de Software, Un Enfoque Práctico.
Mc Graw Hill.
[3] Capítulo 1
IanSommerville.
Ingeniería de Software
Addison Wesley.
Recursos Electrónicos.
[4] Gabriel Buades Rubio.
“Concepto de Calidad”
Ingeniería de Software III
Depto. De Ciencias Matemáticas e Informática.
Universidad de las Islas Balares
http://dmi.uib.es/~bbuades/calidad/sld016.htm
Consulta: Junio 2011
[5] Xavier Ferré Grau
“Principios Básicos de Usabilidad para Ingenieros Software”
Facultad de Informática
Universidad Politécnica de Madrid
http://is.ls.fi.upm.es/miembros/xavier/papers/usabilidad.pdf
Consulta: Junio 2011
[6] Moisés Rodríguez Monje
“Calidad de Procesos y Productos Software, ISO/IEC 25000”
Alarcos Quality Center
http://alarcos.inf-cr.uclm.es/per/fruiz/cur/santander/mrodriguez-iso25000-update.pdf
Consulta: Junio 2011
[7] http://www.iso.org
30
Capítulo 3
Ciclo de Vida.
Alma Delia Ambrosio Vázquez
Ma. del Consuelo Molina García
Introducción
Un modelo de ciclo de vida define el estado de las fases a través de las cuales se lleva un
proyecto de desarrollo de software, este proceso es parte de la calidad del software que un
ingeniero de software debe aplicar y al cual debe dar seguimiento.
31
Uno de los objetivos de la asignatura de ingeniería de software, es conseguir que el
alumno conozca el concepto de calidad del software, que comprenda, conozca y valore la
importancia del uso de metodologías de la ingeniería de software, así como de que le
confiera un seguimiento durante todo el ciclo de vida del software.
Tomando en cuenta que la Ingeniería de Software es el resultado de llevar la
tradicional disciplina de las ingenierías al mundo de la construcción de sistemas de
software es necesario el estudio de los principios y metodologías para el desarrollo y
mantenimiento de sistemas software así como de las personas que se involucran en ello.
Por las razones expuestas, el objetivo del presente trabajo es realizar una intervención
didáctica, que planifique las tareas de aprendizaje en los temas involucrados.
En el presente capítulo se propone una serie de actividades de aprendizaje para que el
docente pueda desarrollar en su clase los siguientes aspectos:
o Paradigmas de Programación
o Las 4 P`s de la Ingeniería de software (Proceso, Producto, Proyecto y
Personas)
o Metodologías de la Ingeniería de software
o Ciclo de vida del software.
3.1 Propuesta de Actividades de Motivación y Diagnóstico para el Estudio
del Ciclo de vida del software .
Dentro de las actividades diagnósticas en esta materia, es trascendental que el
alumno conozca las conceptos básicos como paradigmas de programación, las 4 P’s de la
Ingeniería de Software, Ciclo de Vida, Modelo, Metodología, Calidad del Software,
Planeación y Administración de Proyectos, Factibilidad, Viabilidad, Prototipos, y la
Certificación de Procesos.
Actividades Propuestas.
Actividad 1
Objetivo.
Que el alumno identifique las ventajas de aplicar las metodologías de la ingeniería de
software.
32
Especificaciones.
E1) Que el alumno realice una investigación sobre el conjunto de métodos, técnicas y
herramientas relacionadas con las metodologías de desarrollo de software.
E2) Que el alumno realice una investigación sobre las diferencias en los paradigmas de
programación.
E3) Con base en un análisis crítico-objetivo el alumno basado en un andamiaje, resuma
las condiciones apropiadas para la aplicación de metodologías de la Ingeniería de
Software estructurada u orientada hacia objetos.
E4) Resuelva el siguiente cuestionario:
1. ¿Cuáles son las cuatro componentes P de la ingeniería de software?
2. ¿Qué es el proceso en cascada?
3. ¿Qué estándares existen para documentación?
4.-Establezca las diferencias entre aplicar, o no, una metodología de la Ingeniería de
Software en el desarrollo de software. Justifica tu respuesta.
Recursos.
R1) Consultar bibliografía.
3.2 Planeación Didáctica de Ciclo de vida en la Ingeniería de Software.
Tiempo.
Se propone cubrir el tema en un intervalo de 4 hrs.
Contenido.
•
•
•
Paradigmas de Programación
Las 4 P`s de la Ingeniería de software
Metodologías de la ingeniería de software
33
•
Ciclo de vida del software.
Materiales.
Referencias Bibliográficas.
[1] Capítulo 1
Braude
Ingeniería de Software Una perspectiva orientada a objetos
Alfaomega 2003
IEEE Trans. on Software Engineering.
[2] Capítulo 1
Pressman Roger S.
Ingeniería del Software, Un Enfoque Práctico.
Mc Graw Hill.
[3] Capítulo 1
Ian Sommerville.
Ingeniería de Software
Addison Wesley.
Recursos Electrónicos.
[4] Gabriel Buades Rubio.
“Concepto de Calidad”
Ingeniería de Software III
Depto. De Ciencias Matemáticas e Informática.
Universidad de las Islas Balares
http://dmi.uib.es/~bbuades/calidad/sld016.htm
Consulta: Junio 2011
[5] Xavier Ferré Grau
“Principios Básicos de Usabilidad para Ingenieros Software”
Facultad de Informática
Universidad Politécnica de Madrid
http://is.ls.fi.upm.es/miembros/xavier/papers/usabilidad.pdf
Consulta: Junio 2011
[6] Moisés Rodríguez Monje
“Calidad de Procesos y Productos Software, ISO/IEC 25000”
Alarcos Quality Center
34
http://alarcos.inf-cr.uclm.es/per/fruiz/cur/santander/mrodriguez-iso25000-update.pdf
Consulta: Junio 2011
3.3 Desarrollo de las Actividades de ciclo de vida del software
3.3.1 Conceptos y Términos de ciclo de vida, las P`s de la Ingeniería de
Software.
Material de Referencia.
De Braude [1] se incluye el siguiente material:
Ciclo de Vida
•
El ciclo de vida de desarrollo de sistemas informáticos puede dividirse en actividades
o fases que, en general, se ajustan al esquema mostrado en el gráfico. Este esquema
gráfico es el ciclo de vida típico, dado que existen gran cantidad de variantes que
dependen de la organización, del tipo de sistema que se realizará, de los gustos de los
administradores, de los tiempos, etc.
Las actividades típicas del ciclo de vida son:
1- Estudio de factibilidad.
2- Análisis (de requerimientos).
3- Diseño
4.1- Creación de prototipos
4.2- Implementación
5 - Validación y prueba
6 - Operación y mantenimiento
35
La Ingeniería de Software es el resultado de llevar la tradicional disciplina de las
ingenierías al mundo de la construcción de sistemas de software.
Es el estudio de los principios y metodologías para el desarrollo y mantenimiento de
sistemas software.
Los desafios de la Ingenieria de Software son:
La Ing. Sw es una tecnología estratificada
•
Enfoque de calidad
– La IS debe estar sustentada en un compromiso con la calidad (Gestión de
Calidad Total, Sigma Seis, etc.) que fomente una cultura de mejora continua
del proceso.
36
•
•
•
•
•
•
Procesos
– Define un marco de trabajo que debe establecerse para la entrega efectiva, la
gestión de proyectos, el contexto en el cual se aplican los métodos técnicos,
se generan los productos del trabajo, se establecen los fundamentos, se
asegura la calidad y el manejo adecuado de cambios
Métodos:
– Definen los “cómo” para construir el software desde el punto de vista
técnico.
Herramientas:
– Proporcionan un soporte automático o semi-automático para los métodos.
Herramientas CASE
Métodos:
– Planificación y estimación de proyectos.
– Análisis de requisitos.
– Diseño.
– Codificación.
– Pruebas.
– Mantenimiento.
Herramientas:
– CASE.
– CAD, ...
Procesos.
– PSP
– TSP
– CMMi…..
¿Qué es un proceso?
Define un marco de trabajo que forma la base del control de gestión de proyectos de
SW y establecen el contexto en que se aplican los métodos técnicos, se producen los
resultados del trabajo, se asegura la calidad, etc
•
•
Los métodos: Indican cómo construir técnicamente el SW. Las tareas que incluye
son:
– Análisis de requisitos.
– Diseño (estructuras de datos, arquitectura de programación y procedimientos
algorítmicos).
– Pruebas.
– Mantenimiento.
Procedimientos: Relacionan métodos y herramientas desde un punto de vista
formal. Entre otras cosas, se define la secuencia en que se aplican los métodos
37
Las Cuatro p`s de la Ingenieria de Software
Actividades del Ingeniero del SW
• Dependencias profundas entre los ejes:
– No se puede ser un buen diseñador sin saber de tecnologías
– No se puede diseñar el proceso sin tener en cuenta la Arquitectura
– El proceso tiene que ir apoyado por metodologías
– No se puede ser un buen director de proyecto sin saber del resto
– No se puede ser un buen arquitecto sin saber de tecnología
– No basta con saber de tecnología para ser un buen arquitecto
– ….
Trabajo en equipo de desarrollo de software de paradigma estructurado y orientado
a objetos.
Actividades Propuestas.
Actividad 1
Objetivo.
Que el alumno conozca los conceptos básicos relacionados con el ciclo de vida de la
Ingeniería de software.
Especificación.
E1) Revisar las referencias [1], [2] y [3] para realizar una investigación sobre los conceptos
y términos de ciclo de vida.
-Elaborar un mapa conceptual que represente las metodologías de la ingeniería de software.
38
Ejemplo tipo de Resultados.
(Ver mapa conceptual en Programa de curso de la asignatura de Ingeniería de Software).
Recursos.
R1) Referencias [1] y [2]
R2) Conexión a Internet.
Actividad 2
Objetivo.
Comprender los conceptos básicos de la Ingeniería de software
Especificación.
E1) Revisar las referencias [1], [2] y [3]
1. Se expone por parte del profesor los conceptos básicos de Ingeniería de Software
Proceso, Producto, Personas, Proyecto, Modelo y Metodología.
2. Se reproducirá el video de Apolo 13 a partir de la escena 8 donde inicia el problema
de bióxido de carbono y en tierra se dan instrucciones a un equipo que trabaje con el
material a disposición de la tripulación a fin de hacer algo para solucionar el
problema.
3. Los estudiantes se reúnen en equipos comentan el video examinado y cada equipo
se le entregan unas preguntas tales como:
¿Es importante el proceso para la solución de un problema?
¿La organización del equipo de trabajo ayuda a la solución?
¿Es importante trabajar con roles?
¿Qué estrategia siguieron en el video para solucionar el problema?
4. Un alumno de cada equipo, podrá ser elegido al azar para presentar y justificar ante
el grupo las respuestas
5. Por último, se entregará a cada alumno una prueba de verificación del aprendizaje
de los conceptos vistos y comentados en clase.
Ejemplo tipo de Resultados.
(Ver mapa conceptual en Programa de curso de la asignatura de Ingeniería de Software).
Recursos.
R1) Referencias [1] y [2]
39
R2)Video, Laptop, cañón, plumones, pizarrón, resumen de la clase y prueba de
verificación del aprendizaje
Distribución de tiempo
25 min. Inicio de la clase (Introducción al conocimiento)
Exposición por el profesor
35 min. Ver las escenas del video
10 min. Actividad de cada uno de los equipos genera respuestas.
20 min. Presentación de resultados por un alumno de cada equipo
10 min. Realizar la prueba de verificación de conceptos aprendidos
10 min. Conclusiones
Total 1 hr. 50 min.
3.4 Comentarios, Conclusiones y Actividades Complementarias del Ciclo
de Vida del Software.
En esta etapa el alumno tendrá claro el concepto y la importancia de generar
software de Calidad.El alumno conocerá la existencia de varios modelos de ciclo de vida a
aplicar de acuerdo a sus características durante el desarrollo de software. Asimismo hará
conciencia de la importancia de las P´s de la ingeniería de software.
Se propone realizar una actividad grupal de análisis y reflexión, relacionada con las
siguientes cuestiones.
- ¿Cuál es la diferencia entre aplicar o no una metodología de la Ingeniería de software?
- ¿Para un caso dado, es posible aplicar indistintamente paradigma estructurado u orientado
a objetos?
- ¿Cómo garantizarías la calidad de tu producto de software?
40
3.5 Referencias Capítulo 3
Referencias Bibliográficas.
[1] Fairley
Ingenierìa de Software.
Prentice Hall.
IEEE Trans. on Software Engineering.
[2] Capítulo 1
Pressman Roger S.
Ingeniería de Software, Un Enfoque Práctico.
Mc Graw Hill.
[3] Capítulo 1
IanSommerville.
Ingeniería de Software
Addison Wesley.
41
Capítulo 4
Los Modelos DRA y de Métodos Formales
Mario Anzures García
Maya Carrillo Ruiz
Introducción
Para resolver problemas reales de una empresa, un ingeniero del software o un equipo de
ingenieros deben de incorporar una estrategia que a menudo se llama modelo de proceso o
paradigma de ingeniería de software. Se selecciona un modelo de proceso para la ingeniería
del software de acuerdo a la naturaleza del proyecto y de la aplicación, los métodos y las
herramientas que se utilizan, así como los controles y entregas que se requieren. En este
capítulo se abordan el modelo de Desarrollo Rápido de Aplicaciones (DRA/RAD) y el
Modelo de Métodos Formales.
42
4.1 Planeación Didáctica del Modelo de Desarrollo Rápido de
Aplicaciones.
Tiempo.
Se propone cubrir el tema en un intervalo de 2 hrs.
Contenido.
•
•
Introducción a RAD.
Definiciones y elementos fundamentales de RAD.
Materiales.
R1) Consultar bibliografía.
[1] James Martin
Rapid application development
Macmillan Publishing Co., Inc. Indianapolis, IN, USA
1991
[2] Beynon-Davies P.1; Carne C.1; Mackay H.2; Tudhope D.
Rapid application development (RAD): an empirical review
European Journal of Information Systems, Volume 8, Number 3, 1 Palgrave
MacmillanSeptember 1999 , pp. 211-223(13)
[3] Carlo Ghezzi, Mehdi Jazayeri y Dino Mandrioli.
Fundamentals of Software Engineering. Prentice Hall
International, 1991.
[4] Pressman Roger S.
Ingeniería del Software, Un Enfoque Práctico.
Mc Graw Hill.
[5] Ian Sommerville.
Ingeniería de Software
Addison Wesley.
Recursos Electrónicos.
[5] Vídeo tutorial RDA en http://www.youtube.com/watch?v=gPgsKLtwJ68
43
Fig. 4.1 Tutorial RAD
4.2 Propuesta de Actividades del Modelo de Desarrollo Rápido de
Aplicaciones.
Actividades Propuestas.
Las acciones que se llevarán a cabo tienen como fin incentivar la utilización del modelo
DRA.
Actividad 1.
Objetivo.
Estudiar el enfoque DRA.
Especificaciones.
E1) Que el alumno entienda el modelo DRA
Ejemplo de Resultados.
En la formación del alumno es significativo, que éste estudie, comprenda y utilice
diversos modelos o metodologías relacionadas con el desarrollo de los diferentes
modelos de procesos existentes en la actualidad. Uno de estos es el Modelo de
Desarrollo Rápido de Aplicaciones (DRA) o RAD (Rapid Application Development),
que es un proceso de desarrollo de software, creado inicialmente por James Martin en
44
1980. El método comprende el desarrollo iterativo, la construcción de prototipos y el
uso de utilidades CASE, enfatizando un ciclo de desarrollo extremadamente corto
utilizando un enfoque
de construcción basado en componentes. Si se comprenden bien los requisitos y se
limita el ámbito del proyecto, el proceso DRA permite al equipo de desarrollo crear
un "sistema completamente funcional" dentro de periodos cortos de tiempo.
E2) Que el alumno realice una investigación y redacción de las etapas que comprende el
modelo DRA.
Ejemplo de Resultados.
Modelado de gestión: el flujo de información entre las funciones de gestión se
modela de forma que responda a las siguientes preguntas: ¿Qué información
conduce el proceso de gestión? ¿Qué información se genera? ¿Quién la genera?
¿A dónde va la información? ¿Quién la procesa?
Modelado de datos: el flujo de información definido como parte de la fase de
modelado de gestión se refina como un conjunto de objetos de datos necesarios
para apoyar la empresa. Se definen las características (llamadas atributos) de
cada uno de los objetos y las relaciones entre estos objetos.
Modelado de proceso: los objetos de datos definidos en la fase de modelado de
datos quedan transformados para lograr el flujo de información necesario que
implemente una función de gestión. Las descripciones del proceso se crean para
añadir, modificar, suprimir, o recuperar un objeto de datos. Es la comunicación
entre los objetos.
Generación de aplicaciones: El DRA asume la utilización de técnicas de cuarta
generación. En lugar de crear software con lenguajes de programación de tercera
generación, el proceso DRA trabaja para volver a utilizar componentes de
programas ya existentes (cuando es posible) a crear componentes reutilizables
(cuando sea necesario). En todos los casos se utilizan herramientas automáticas
para facilitar la construcción del software.
Pruebas de entrega: Como el proceso DRA enfatiza la reutilización, ya se han
comprobado muchos de los componentes de los programas. Esto reduce tiempo
de pruebas. Sin embargo, se deben probar todos los componentes nuevos y se
deben ejercitar todas las interfaces a fondo.
45
Fig. 4.2 Modelo DRA
E3) Que el alumno realice una investigación sobre las ventajas y desventajas del
modelo DRA.
Ejemplo de Resultados.
Ventajas de RAD
Comprar puede ahorrar dinero en comparación con construir.
Los entregables pueden ser fácilmente trasladados a otra plataforma.
El desarrollo se realiza a un nivel de abstracción mayor.
Visibilidad temprana.
Mayor flexibilidad.
Menor codificación manual.
Mayor involucramiento de los usuarios.
Posiblemente menos fallas.
Posiblemente menor costo.
Ciclos de desarrollo más pequeños.
Interfaz gráfica estándar.
Desventajas de RAD
Comprar puede ser más caro que construir.
46
Costo de herramientas integradas y equipo necesario.
Progreso más difícil de medir.
Menos eficiente.
Menor precisión científica.
Riesgo de revertirse a las prácticas sin control de antaño.
Más fallas.
Prototipos pueden no escalar.
Funciones reducidas (por "timeboxing").
Dependencia en componentes de terceros.
E3) Con base en un análisis crítico-objetivo el alumno debe resumir las condiciones
apropiadas para la aplicación de modelos DRA.
RAD se aplica cuando:
La aplicación funcionará de manera independiente.
Se pueden usar principalmente bibliotecas existentes.
Desempeño no crítico.
Distribución limitada, interna o vertical.
Alcance del proyecto limitado.
Confiabilidad no crítica.
El sistema puede dividirse en muchos módulos independientes.
El producto está dirigido a un mercado altamente especializado.
El proyecto cuenta con fuertes limitantes de tiempos parciales
La tecnología requerida tiene más de un año en el mercado.
E4) Resuelva el siguiente cuestionario:
1. ¿Qué es el Modelo de Desarrollo Rápido de Aplicaciones?
2. ¿Cuáles son las Fases del Modelo del Desarrollo Rápido de Aplicaciones?
3. ¿Mencione algunas de las características del Modelo de Desarrollo rápido de
Aplicaciones?
4. ¿Cuáles son las ventajas del modelo de Desarrollo Rápido de Aplicaciones?
5. ¿Cuáles son las desventajas del modelo de Desarrollo Rápido de Aplicaciones?
4.3 Planeación Didáctica del Modelo de Métodos Formales.
Tiempo.
Se propone cubrir el tema en un intervalo de 4 hrs.
47
Contenido.
•
•
•
Introducción
Modelo de Métodos Formales
Formalismos matemáticos usados en el Modelo de Métodos Formales
Materiales.
Referencias Bibliográficas.
[1] Zohar Manna y Richard Waldinger.
The Logical Basis for Computer Programming.
Vol 1: Deductive Reasoning.
[2] Helmut Ehrig y Bernd Mahr.
Fundamental of Algebraic Specification.
Equations and Initial Semantics.
Springer-Verlag
1985.
[3] Z. Manna y A. Pnueli.
The Temporal Logic of Reactiveand Concurrent Systems.
[4] L. Lamport y N. Lynch.
Distributed Computing: Models and Methods.
Handbook of Theoretical Computer Science.
Elsevier Publishers B.V. 1990.
Recursos Electrónicos.
[5] Formal Methods
http://www.afm.sbu.ac.uk/
4.4 Propuesta de Actividades del Modelo de Métodos Formales.
Actividades Propuestas.
Las acciones que se llevarán a cabo tienen como fin incentivar la utilización del modelo
de Métodos Formales.
48
Actividad 1.
Objetivo.
Estudiar el modelo de Métodos Formales.
Especificaciones.
E1) Que el alumno realice una investigación y redacción sobre el modelo de Métodos
Formales.
Ejemplo de Resultados.
Los métodos formales son un conjunto de tendencias de desarrollo de software en
donde la especificación, verificación y diseño de componentes se realiza mediante
notaciones, lenguajes, herramientas y técnicas basadas en teorías con sólido
fundamento matemático completamente funcional" dentro de periodos cortos de
tiempo.
El uso de notaciones y lenguajes formales permite plantear de manera clara los
requerimientos de un sistema, a través de generar especificaciones que definen el
comportamiento en términos del “qué debe hacer” y no del “cómo lo hace”. Gracias al
proceso correcto de especificación, propiedades derivadas de cada módulo, se pueden
verificar mediante técnicas de razonamiento asociadas a los modelos formales, tales
como, probadores de teoremas y verificadores de modelos. A partir de las
especificaciones, la implementación de un sistema puede ser generada de manera casi
automática. En este proceso, denominado diseño formal, es necesario garantizar que
cada nivel de abstracción generado, cumpla con las propiedades verificadas en las
abstracciones de más alto nivel.
En los procesos de especificación, los lenguajes de especificación formal más
conocidos y utilizados son Z y VDM, los cuales han sido recomendados como un
estándar oficial para la especificación en la construcción de sistemas de software.
E2) Que el alumno realice una investigación sobre en qué tipos de formalismo
matemáticos se basan los Modelos de Métodos Formales.
Ejemplo de Resultados.
Los métodos formales son un conjunto de tendencias de desarrollo de software en
donde la especificación, verificación y diseño de componentes se realiza mediante
notaciones, lenguajes, herramientas y técnicas basadas en teorías con sólido
fundamento matemático completamente funcional" dentro de periodos cortos de
tiempo.
49
El término formal queda caracterizado por la categoría de modelos matemáticos
utilizados. Ejemplos de formalismos son: lógica de primer orden, álgebras, redes de
Petri y lógica temporal.
Los formalismos basados en lógica de primer orden y teoría de conjuntos permiten
especificar el sistema mediante un concepto formal de estado y operaciones sobre
estados. Con este propósito, datos y relaciones/funciones se describen en detalle y sus
propiedades se expresan en lógica de primer orden. La semántica de los lenguajes está
basada en la teoría de conjuntos. Durante el diseño e implementación del sistema, los
elementos descritos matemáticamente pueden modificarse preservando las
características esenciales de la especificación inicial.
Los formalismos algebraicos proponen la descripción de estructuras de datos
estableciendo el nombre de los diferentes conjuntos de datos, funciones básicas y
propiedades. No hay concepto de estado modificable en el tiempo. Las propiedades se
escriben mediante fórmulas, generalmente, ecuaciones. Diferentes modelos semánticos
se han propuesto para caracterizarlas especificaciones algebraicas: modelos iniciales,
finales y laxos. Los modelos iniciales identifican términos cuya igualdad puede ser
probada desde los axiomas. Los modelos finales identifican términos diferentes cuya
desigualdad puede ser probada desde sus axiomas y los modelos laxos identifican todas
las álgebras cuyos elementos pueden denotarse con términos sin variables. Para
describir sistemas (de estructuras de datos) se propone una amplia gama de operadores
de composición y parametrización.
Los formalismos basados en redes de Petri establecen la noción de estado de un
sistema mediante lugares que pueden contener marcas. Un conjunto de transiciones
(con pre y post-condiciones) describe la evolución del sistema entendida como
consumo y producción de marcas en varios puntos de la red. Existe una extensa
literatura sobre las redes de Petri y sus caracterizaciones semánticas: semántica de
entrelazado y semántica basada en concurrencia real.
Los formalismos basados en lógica temporal se usan para describir sistemas
concurrentes y reactivos. Un aspecto común asociado a las diferentes lógicas
temporales es la noción de tiempo y estado. Una especificación escrita en lógica
temporal describe las secuencias admisibles de estados (incluyendo estados
concurrentes) para el sistema especificado.
E3) Con base en un análisis crítico-objetivo el alumno debe resumir las condiciones
apropiadas para utilizar cada formalismo matemático.
E4) Resuelva el siguiente cuestionario:
1. ¿Qué es el Modelo de Métodos Formales?
2. ¿Cuál es la diferencia del Método Formal basado en lógica de primer orden y aquel
basado en lógica temporal?
50
3. ¿Cuál es la diferencia del Método Formal basado en lógica de primer orden y aquel
basado en redes de Petri?
4. ¿Cuál es la diferencia del Método Formal basado en álgebras y aquel basado en
redes de Petri?
5. ¿Cuál es la diferencia del Método Formal basado en redes de Petri y aquel basado
en lógica temporal?.
Recursos.
R1) Consultar bibliografía.
4.5 Referencias Capítulo 4
[1] James Martin
Rapid application development
Macmillan Publishing Co., Inc. Indianapolis, IN, USA
1991
[2] Beynon-Davies P.1; Carne C.1; Mackay H.2; Tudhope D.
Rapid application development (RAD): an empirical review
European Journal of Information Systems, Volume 8, Number 3, 1 Palgrave
MacmillanSeptember 1999 , pp. 211-223(13)
[3] Carlo Ghezzi, Mehdi Jazayeri y Dino Mandrioli.
Fundamentals of Software Engineering. Prentice Hall
International, 1991.
[4] Pressman Roger S.
Ingeniería del Software, Un Enfoque Práctico.
Mc Graw Hill.
[5] Ian Sommerville.
Ingeniería de Software
Addison Wesley.
51
Capítulo 5
Herramientas de Ingeniería de Software
Asistida por Computadora
María Josefa Somodevilla García
María de la Concepción Pérez de Celis Herrero
María del Rocío Boone Rojas
Introducción
En términos generales, la Ingeniería de Software Asistida por Computadora (CASE)
identifica al software que se utiliza para asistir a las actividades del proceso del software,
tales como la Ingeniería de Requerimientos, el diseño, el desarrollo de programas y las
pruebas. De tal forma que las herramientas CASE incluyen, herramientas de diseño,
compiladores, herramientas para construcción de sistemas, etc.
52
La tecnología CASE proporciona ayuda al proceso del software al automatizar
algunas de sus actividades y al proporcionar información acerca del proceso desarrollado.
Esto permite algunas mejoras en la calidad y productividad del software.
En el presente capítulo se revisa el objetivo y el concepto de Herramientas de
Ingeniería de Software Asistida por Computadora. Para los componentes de CASE, se
incluye una taxonomía de herramientas CASE y ejemplos específicos. Como caso de
estudio se considera, el entorno de herramientas integradas para el diseño, administración y
desarrollo de bases de datos SQL, MySqlWorkbench.
5.1 Propuesta de Actividades de Motivación y Diagnóstica para el Estudio
de las Herramientas de Ingeniería de Software Asistida por
Computadora.
Actividades Propuestas.
Actividad 1
Objetivo.
Que el alumno identifique a priori algunas de las ventajas inherentes de utilizar
Herramientas de la Ingeniería de Software Asistida por Computadora.
Especificaciones.
E1) Desarrolla el diseño de una base de datos elemental, mediante el modelo ER y por
medio de las facilidades de diseño o de dibujo de una herramienta de edición básica.
Ejemplo. Considera la siguiente porción de una Base de Datos para la Administración
de una cadena de Talleres-Mecánicos. Los talleres se identifican mediante un Número
de Taller (NTall), tienen un “Supervisor” y se ubican en una “Ciudad”. Cada taller
puede tener varios Mecánicos, los cuales se identifican por una clave “NMec”, y se
registra su nombre y edad. Los mecánicos tienen varias “Especialidades”, tales como
(Afinación, Ajuste de Motor, Sistema Hidráulico, …) pero con diferentes “años” de
experiencia.
53
Ejemplo de Resultados.
Fig. 5.1 Diseño ER, Base de Datos Mecánicos
Mecánicos-Talleres.
E2) Resuelve el siguiente cuestionario:
1. ¿Consideras que la herramienta que utilizaste fue la más adecuada para apoyar el
proceso de diseño de tu base de datos?
2. ¿Por medio de esta herramienta y con respecto al diseño de tu base de datos, se
distinguen claramente las entidades, llaves, atributos y las relaciones de tu base de
datos?
3. ¿A partir del diseño ER de tu base de datos, podrías fácilmente traducirlo a un nivel
lógico, posiblemente a tablas relacionales?
Recursos.
R1) Base de Datos Experimental posiblemente desarrollada en un curso paralelo o
previo.
R2) Procesador de Texto o herramienta equivalente con facilidades de diseño.
54
Actividad 2
Objetivo.
Que el alumno identifique, a priori, algunas de las ventajas inherentes de utilizar
Herramientas de la Ingeniería de Software Asistida por Computadora. Así como en este
caso, el apoyo que pueden ofrecer en la formalización y documentación del proceso de
desarrollo de un proyecto.
Considera la siguiente porción del documento en [5], relacionado con la especificación
de Requisitos funcionales mediante la técnica de “casos de uso” y para un sistema de
gestión de un video club.
Requisitos relacionados con el Almacenamiento de Información.
RI–03
Objetivos asociados
Requisitos
asociados
Descripción
Datos específicos
Intervalo temporal
Estabilidad
Comentarios
Información sobre cuentas de socios
OBJ–02 Gestionar los socios
•
•
•
•
•
•
•
RF–01 Alta de socio
RF–02 Baja de socio
RF–05 Alquiler de cinta de vídeo
RF–08 Devolución de cintas de vídeo
RF–09 Ingreso a cuenta
RF–11 Consulta de un socio
RF–12 Consulta de socios con pagos pendientes
El sistema deberá almacenar la información correspondiente a las
cuentas de los socios del vídeo–club. En concreto:
• Saldo de la cuenta en cada momento
• Ingresos realizados en la cuenta, indicando fecha y cantidad
• Cargos realizados en la cuenta, indicando fecha, motivo y
cantidad
• Pagos pendientes, indicando motivo que podrá ser alquiler no
pagado o multa; en el caso de alquiler no pagado se debe
indicar también la película alquilada y la fecha del alquiler
sólo presente
Alta
Un socio puede hacer ingresos a cuenta, por ejemplo para enviar a
sus hijos por películas sin que éstos tengan que llevar dinero
55
Fig. 5.2 Diagrama de casos de uso del subsistema Gestión de socios
Especificaciones.
E1. Realiza la especificación anterior mediante las facilidades que te proporciona la
herramienta que utilizaste para la actividad anterior.
E2. Resuelve el siguiente cuestionario.
1. ¿Consideras que la herramienta que utilizaste fue la más adecuada para apoyar la
especificación de requisitos desarrollada mediante esta técnica?
2. ¿Por medio de tu herramienta, y con respecto a la especificación realizada, se podría
fácilmente dar seguimiento y durante el proceso de desarrollo del proyecto a los
requisitos establecidos?
3. ¿Por medio de esta especificación, podrías fácilmente, continuar con el proceso de
desarrollo del proyecto?
56
5.2 Planeación Didáctica de los Antecedentes y Conceptos Básicos de
Ingeniería de Software Asistida por Computadora.
Tiempo.
Se propone cubrir el tema en un intervalo de 4 hrs.
Contenido.
5.
6.
7.
8.
El Concepto CASE.
Componentes básicos de CASE.
Taxonomía de Herramientas CASE.
Caso de Estudio. Introducción a una Herramienta de Ingeniería de Software Asistida
por Computadora.
Materiales.
Referencias Bibliográficas.
[1] Capítulo 29
Pressman Roger S.
Ingeniería de Software, Un Enfoque Práctico.
McGraw Hill.
[2] Pags. 11,79-82, 225,280.
Ian Sommerville.
Ingeniería de Software
Addison Wesley.
Recursos Electrónicos.
[3]López Quesada Juan Antonio.
Herramientas CASE
http://dis.um.es/~lopezquesada/documentos/tema%2013.ppt
Alguna herramienta CASE.
Ejemplo.MySQLWorkbench
www.mysql.com/products/workbench/
57
5.3 Desarrollo de las Actividades de Antecedentes y Conceptos Básicos de
Ingeniería de Software Asistida por Computadora.
5.3.1 El Concepto CASE.
Material de Referencia.
De Pressman [2]:
El mejor taller de un artesano -sea mecánico, carpintero o ingeniero del software- tiene
tres características fundamentales: (1) una colección de herramientas útiles que le
ayudarán en todos los pasos de la construcción de un producto; (2) una disposición
organizada que permitirá hallar rápidamente las herramientas y utilizarlas con eficacia; y
(3) un artesano calificado que entienda la forma de utilizar las herramientas de manera
eficaz. Ahora es cuando los ingenieros del software reconocen que necesitan más
herramientas y más variadas, junto con un taller eficiente y organizado en el que puedan
ubicarlas. El taller de ingeniería del software se denomina un entorno de apoyo integrado
a proyectos y el conjunto de herramientas que llena ese taller se denomina ingeniería del
software asistida por computadora (CASE). CASE proporciona al ingeniero la posibilidad
de automatizar actividades manuales y de mejorar su visión general de la ingeniería. Al
igual que las herramientas de ingeniería y de diseño asistidos por computadora que
utilizan los ingenieros de otras disciplinas, las herramientas CASE ayudan a garantizar
que la calidad se diseñe antes de llegar a construir el producto.
En [3] se establece:
Objetivos de la tecnología CASE.
INCREMENTAR
Productividad del equipo.
Calidad del Software.
Reusabilidad del software.
REDUCIR
Costes de desarrollo y mantenimiento.
AUTOMATIZAR
Gestión del proyecto.
Desarrollo del software.
mantenimiento del software (Incluyendo la automatización y
estandarización de la documentación y de su mantenimiento)
AUTOMATIZACIÓN DEL DESARROLLO DE SW.:
Productividad del equipo ↑↑
Calidad del Software ↑↑
58
INCREMENTAR
Reusabilidad del software.
REDUCIR
Costos de desarrollo y mantenimiento.
AUTOMATIZAR/SIMPLIFICAR
Gestión del proyecto.
Desarrollo del sw. (permitir aplicación met. estructuradas;
prototipos; desarrollo “visual”)
Mantenimiento del software (Incluyendo la automatización y
estandarización de la documentación y de su mantenimiento)
Concepto CASE (Computed Aided Software Engineering)
Conjunto de herramientas y métodos asociados que proporcionan asistencia
automatizada en el proceso de desarrollo del software a lo largo de su ciclo de vida.
Gestión del proyecto. (planificación, estimación y control)
Desarrollo del software. (análisis, diseño, implementación, validación)
Mantenimiento del software.
Actividades Propuestas.
Actividad 1
Objetivo.
Que el alumno identifique el concepto de Ingeniería de Software Asistida por
Computadora.
Especificación.
E1) Revisa las referencias [1], [2] y realiza tu propia investigación sobre el concepto de
ingeniería de software asistida por computadora.
-Elabora un mapa conceptual que involucre los principales elementos que involucra el
concepto de ingeniería de software asistida por computadora.
Ejemplo tipo de Resultados.
(Ver mapa conceptual en Programa de curso de la asignatura de Ingeniería de Software,
Modelo MUM).
Recursos.
R1) Referencias [1] y [2]
59
R2) Conexión a Internet.
5.3.2Componentes básicos de CASE.
Material de Referencia.
Revisar Referencias [1] y [2].
De acuerdo a López-Quesada [3]:
Fig. 5.3 Componentes CASE
Interfaz gráfica.
Editor de textos y gráficos.
BD de soporte
(BD del proyecto, depósito o ‘repositorio’ CASE)
Mecanismos de control para:
acceso a componentes.
(datos, código, documentos, dispositivos)
Compatibilidad de las herramientas.
Consistencia de los productos.
Detección de olvidos.
Trazado de modificaciones.
Donde la BD de soporte:
60
Reúne las funciones de:
Catálogo central de archivos y BD’s.
Diccionario de datos y procesos.
Biblioteca de programas y documentación.
y es la base para:
La integración de herramientas.
El mantenimiento de la integridad del sistema.
La coordinación y compartición de información entre usuarios, con controles
de seguridad y privilegios de acceso.
El control de cambios y versiones.
La estandarización de la documentación.
La reutilización del software.
La gestión del proyecto (incluyendo auditorías).
La incorporación a otro sistema informático.
De una forma más específica en [1] se indica:
Aunque se pueden obtener beneficios individualmente de las herramientas CASE que
abarcan actividades de ingeniería del software por separado, la verdadera potencia de
CASE solamente se puede lograr mediante la integración. Entre los beneficios del CASE
integrado (I-CASE) se incluyen: (1) una transferencia regular de información (modelos,
programas, documentos, datos) entre una herramienta y otra, y entre un paso de ingeniería
y el siguiente; (2) una reducción del esfuerzo necesario para efectuar actividades globales
tales como la gestión de configuración de software, el control de calidad y la producción
de documentos; ( 3 ) un aumento del control del proyecto que se logra mediante una mejor
planificación, monitorización y comunicación; (4) una mejor coordinación entre los
miembros del personal que estén trabajando en grandes proyectos de software.
5.3.3Taxonomía de Herramientas CASE.
Material de Referencia.
De acuerdo a [1]
Existe un cierto número de riesgos que son inherentes siempre que se intenta efectuar una
categorización de las herramientas CASE. Existe una sutil implicación que consiste en que
para crear un entorno CASE efectivo se deberán implementar todas las categorías de
herramientas esto no es ni sencillo, ni cierto-. Cuando hay personas que creen que una
herramienta pertenece a una categoría, se puede crear cierta confusión (o contradicción)
al ubicar una herramienta específica dentro de otra categoría. Es posible que algunos
lectores piensen que se ha omitido una categoría completa -e1iminando por tanto un
conjunto de herramientas completo e incluirlo así en el entorno CASE global-. Además,
61
una categorización sencilla tiende a ser plana - esto es, no se muestra la interacción
jerárquica de las herramientas o las relaciones que existen entre ellas-. A pesar de estos
riesgos, es necesario crear una taxonomía de herramientas CASE, para comprender mejor
la amplitud de CASE y para apreciar mejor en donde se pueden aplicar estas herramientas
dentro del proceso del software. Las herramientas CASE se pueden clasificar por su
función, por su papel como instrumentos para administradores o personal técnico, por su
utilización en los distintos pasos del proceso de ingeniería del software, por la arquitectura
del entorno (hardware y software) que les presta su apoyo, o incluso por su origen o costo.
La clasificación de la taxonomía que se presenta a continuación utiliza como criterio
principal la función.
Herramientas de ingeniería de procesos de negocio.
Modelado de procesos y herramientas de gestión.
Modelado de procesos y herramientas de gestión.
Herramientas de análisis de riesgos.
Herramientas de gestión de proyectos.
Herramientas de seguimiento de requisitos.
Herramientas de métricas y de gestión.
Herramientas de documentación.
Herramientas de software de sistema.
Herramientas de control de calidad.
Herramientas de gestión de bases de datos del proyecto.
Herramientas de gestión de configuración de software.
Herramientas de análisis y diseño.
Herramientas PRO/SIM. (De construcción de prototipos y simulación).
Herramientas de desarrollo y diseño de interfaz.
Herramientas de construcción de prototipos.
Herramientas de programación.
Herramientas de desarrollo de Webs.
Herramientas de integración y pruebas.
Herramientas de análisis estático.
Herramientas de análisis dinámico.
Herramientas de gestión de pruebas.
Herramientas de pruebas cliente/servidor.
Herramientas de reingeniería.
En la taxonomía de [3] se incluyen ejemplos específicos dentro de algunas de sus
categorías:
Herramientas de análisis y diseño.
62
Permiten crear y verificar DFD’s, diagramas E/R, de clase, de estructura...
Herramientas de prototipado:
Diseñadores de pantallas
Generadores de menús
Generadores de informes
Lenguajes de especificación ejecutables
Ejemplos:
DESIGNER/2000 de ORACLE
EASY CASE de Evergreen
Rational ROSE
EXCELERATOR de Intersolv
OBJECT MAKER de Mark IV.
OMTool de GTE.
PARADIGM Plus de Platinum
SILVERRUN de CSA Research
SYSTEM Architect de PopkinSofware& Systems
Herramientas de acuerdo a su funcionalidad.
Herramientas de gestión de proyectos ayudan a la planificación y seguimiento del
proyecto
Planificación: agenda de desarrollo.
Estimación: costes, duración, esfuerzo.
Control: productividad, calidad.
Herramientas de análisis y diseño.
Herramientas de prototipado y simulación.
Herramientas de programación.
Editores dirigidos por la sintaxis (cabeceras de subrutinas, palabras clave,
indentación, nomenclatura de variables, ...)
Generadores de estructuras de programas.
Entornos integrados de desarrollo para soporte de un lenguaje (editor,
compilador, depurador).
Herramientas de integración y pruebas.
Analizadores estáticos.
Depuradores.
Generadores de datos.
Comparadores (e.g. de archivos).
Herramientas de soporte.
Herramientas de mantenimiento.
Ingeniería inversa.
63
Reingeniería.
En [2] se presenta un ejemplo ilustrativo de una posible clasificación de la tecnología
CASE como ayuda para el proceso del software.
Se puntualiza que la tecnología CASE proporciona ayuda automatizada a los
procesos del software. Las herramientas CASE ayudan a las actividades individuales del
proceso; los bancos de trabajo ayudan a un conjunto de actividades relacionadas; los
entornos ayudan a todas o a la mayoría de las actividades del proceso del software.
Fig. 5.4 Herramientas, Bancos de Trabajo y Entornos.
Actividad 1
Objetivo.
Que el alumno organice una versión propia de una taxonomía de herramientas CASE, como
resultado de la consulta de al menos tres referencias.
Especificaciones.
E1. Revisa la taxonomía de herramientas CASE en las referencias [1] [2] [3].
64
E2. Organiza en una tabla una taxonomía que resulte de la unión de los diferentes tipos de
herramientas CASE que se consideran en las taxonomías de las referencias [1] [2] y [3].
Ejemplo de resultados.
Tomar como referencia alguna de las taxonomías incluidas en [1] [2] y [3].
Actividad 2
Objetivo.
Que el alumno conozca que existen muy diversos tipos de herramientas CASE y que
pueden ser de diferentes tipos, propósitos y alcances.
Especificaciones.
E1) Realiza una búsqueda por Internet y toma como referencia la taxonomía de
herramientas CASE que se ha revisado en este capítulo. Desarrolla una breve
documentación sobre cinco herramientas de diferentes tipos. Incluye al menos la siguiente
información:
Nombre.
Empresa.
Propósito.
Puedes organizar tus resultados en una tabla.
Ejemplo de Tipo de Resultados.
Nombre
Herramienta
MySQLWorkbench.
Empresa
Oracle.
Propósito
Entorno integrado de herramientas para el
administración y desarrollo de bases de datos SQL.
diseño,
Recursos.
R1) Conexión a internet.
65
Actividad 3
Objetivo.
Que el alumno esté informado sobre las facilidades básicas de un entorno integrado / banco
de Trabajo CASE.
Especificaciones.
E1) Toma como referencia la investigación realizada en la actividad anterior, selecciona un
entorno integrado de herramientas CASE que sea de tu interés, realiza un breve reporte (3-5
cuartillas) sobre sus características generales y facilidades básicas.
Ejemplo de Tipo de Resultados.
(Complementar información de Caso de Estudio de la Sig. sección)
5.3.4Caso de Estudio. Introducción a una Herramienta de Ingeniería de
Software Asistida por Computadora.
Se propone revisar las facilidades básicas y a nivel de introducción de alguna herramienta
de Ingeniería de Software Asistida por Computadora. Ej. Para el diseño de Bases de Datos,
Para Especificación de Requisitos/ Casos de Uso, Generador de Reportes, entre otros.
Ejemplo. Introducción al entorno de herramientas MySQLWorkbench para el caso de
diseño de bases de Datos. Se propone revisar las características generales del producto,
Fig. 5.5. y a continuación ofrecer un panorama general de las facilidades básicas para el
diseño de base de datos de la herramienta, Fig. 5.6.
66
Fig. 5.5Workbench Central.
Fig. 5.6 Herramientas para diseño visual de bases de datos en MysqlWorkbench.
67
Actividad 1.
Objetivo. Que el alumno realice una experimentación básica con alguna herramienta
CASE, en este caso para el diseño de bases de datos mediante las herramientas de
Mysql Workbench.
Especificaciones.
E1. Considera la base de datos experimental cuyo diseño desarrollaste en la actividad 1
de la Sección 5.1.
E2. Desarrolla el diseño de tu base de datos experimental mediante las facilidades para
el diseño de bases de datos de Mysql Workbench.
5.4 Comentarios, Conclusiones y Actividades Complementarias sobre los
Antecedentes y Conceptos Básicos de Ingeniería de SoftwareAsistida por
Computadora.
-Se propone dar continuidad a las actividades de investigación y experimentación
realizadas previamente.
-Se propone continuar experimentando con la herramienta CASE que se ha abordado como
caso de estudio.
-Se propone realizar investigación y experimentación complementaria sobre otro tipo de
herramientas CASE más especializadas, tales como para la Admon. De Proyectos o
Ingeniería Web.
-Realizar una discusión grupal sobre las posibles ventajas del desarrollo de proyectos
individuales y/o grupales mediante el apoyo de la tecnología CASE.
5.5 Referencias, Capítulo 5
Referencias Bibliográficas.
[1] Capítulo 29 / 31
Pressman Roger S.
Ingeniería de Software, Un Enfoque Práctico.
McGraw Hill.
68
[2] Pags. 11,79-82, 225,280.
Ian Sommerville.
Ingeniería de Software
Addison Wesley.
Recursos Electrónicos.
[3]López-Quesada, Juan Antonio.
Herramientas CASE
http://dis.um.es/~lopezquesada/documentos/tema%2013.ppt
[4] MySQL Workbench
www.mysql.com/products/workbench/
[5] Domínguez D., R. García.
“Ejemplo de Casos de Uso, Gestión de un Video Club”.
http://www.dsic.upv.es/asignaturas/facultad/si/trabajos/032000.doc
69
Capítulo 6
Modelos Ágiles de Procesos.
Josefina Guerrero García
Juan Manuel González Calleros
Introducción
La ingeniería de software ha evolucionado en los últimos años y se ha adaptado al entorno
dinámico donde es usada y como tal sus métodos han evolucionado. Es ahí donde nacen los
métodos ágiles que promueven, entre otras cosas, la adaptación constante y efectiva a los
cambios que ocurren con las necesidades del cliente. Este capítulo introduce brevemente
los conceptos de los métodos ágiles como una invitación al alumno a descubrirlos a lo largo
del curso.
El docente tiene como objetivo motivar la importancia actual que tienen los
métodos ágiles y que favorecen la retención de los conceptos relevantes al tema. La
asignación de actividades dinámicas que ayuden a retener los conceptos aquí presentados es
el objetivo de esta unidad.
El alumno se tendrá que involucrar en las actividades grupales e individuales de tal
forma que vaya adquiriendo el conocimiento asociado a los métodos ágiles.
En el presente capítulo se propone una serie de actividades de aprendizaje para que
el docente pueda desarrollar en su clase los siguientes aspectos:
70
o
o
o
o
Modelos Ágiles de Proceso
Programación Extrema
Metodologías Cristal
Scrum
6.1 Propuesta de actividades de motivación y diagnóstica para el estudio
de modelos ágiles de proceso.
Actividades Propuestas.
Actividad 1. Identificación de limitantes de métodos actuales de ingeniería de
software
Objetivo. El alumno será capaz de identificar las limitantes de los métodos de desarrollo
de software tradicionales y proponer mejoras.
Especificaciones.
Plantear un caso de estudio simple, donde sean muy notorias las limitantes del uso de
un método tradicional. Dar oportunidad al alumno a la reflexión considerando el
conocimiento ya adquirido sobre procesos de desarrollo de software usando una lista de
fallas en el software para que puedan identificar las causas de las fallas.
Ver video de Ariane 5. Disponible en http://www.youtube.com/watch?v=gp_D8r-2hwk
El 4 de junio de 1996, el primer vuelo de la nueva Agencia Aeroespacial Europea lanzó
el cohete Ariane 5, mismo que falló poco después del lanzamiento, lo que resultó en una
pérdida estimada de mil quinientos millones de dólares.
El problema:
71
La altitud y trayectoria del cohete es medía por un equipo de referencia
inercial computarizado. Este transmitía los comandos a los motores para mantener la
altitud y la dirección.
a. El software falló y este sistema y el sistema de soporte se apagaron
b. Los comandos de diagnóstico fueron transmitidos a los motores lo cuales
fueron interpretados como datos reales e hicieron girar el cohete a una posición
extrema
Falla de software:
Un Fallo de software se produjo cuando se intentó hacer una conversión de un número de
64 bits de punto flotante, a un entero con signo de 16 bits, lo que hizo que se desbordara la
memoria.
a. No había manejador de excepciones asociado con la conversión de números. Por
seguridad, ésto apagó la computadora.
b. La aplicación de respaldo tenía el mismo error así que, también falló.
Se pudo evitar la catástrofe
El software que falló fue rehusado del sistema del Ariane 4. El cálculo computacional que
falló no fue usado en el Ariane 5. Se tomaron decisiones en su momento:
a. No quitar esta facilidad ya que podría producir errores no controlados
b. No poner a prueba las excepciones de desbordamiento de memoria ya que el
procesador estaba muy cargado. Por razones de fiabilidad, se pensaba
que era deseable tener un poco de capacidad del procesador de repuesto
c. En el Ariane 4 nunca se hubiera generado este error pues la velocidad nunca
sería tan rápida como la del Ariane 5.
La cadena de omisiones
Esta funcionalidad del Ariane 4 no era necesaria en el Ariane 5 por lo tanto nunca fue un
requerimiento.
Dado que no era requerimiento nunca se probó su funcionalidad ni correcta operación
durante las pruebas.
La simulación nunca llego a este escenario ya que no estaba en la lista de pruebas.
Lección aprendida
Todo software debe ser revisado y probar que funcione
No ejecutar software en sistemas críticos a menos que sea realmente necesario (por eso los
aviones no llevan computadoras para controlar el avión, sino puros controles y sensores)
Así como se prueba lo que el sistema debe hacer se debe probar lo escenarios donde el
sistema hace lo que no debe hacer
Tomar en cuenta todas las variantes de excepciones que pueden ocurrir y no recaer
en el uso del gestor por default de excepciones
En cálculos computacionales críticos, siempre tener clara la alternativa numérica a
asignar en caso de error al sistema
En la medida de la posibilidad hacer pruebas reales y no solo simulaciones
72
Mejorar el proceso de revisión incluyendo participantes externos y revisando todas
las suposiciones que se hacen en el código
El diseñador del Ariane 5 cometió un error elemental pero critico. Diseño un
sistema complejo donde la falla de un componente simple lo hizo fallar. Errores muy
graves pese a que el software estaba dirigido por método formal, rígido.
Ahora el alumno debe identificar en los siguientes casos las causas posibles del error de
software.
Ejemplo de Resultados.
1. En febrero de 2008, problemas de software en el sistema automático de
clasificación de equipajes en un aeropuerto importante, impidieron la partida de
miles de pasajeros al no poder documentar su equipaje para sus respectivos
vuelos Se informó que la falla se produjo durante una actualización de software,
a pesar de la pre-prueba del mismo. El sistema continuó teniendo problemas en
los meses siguientes. Pruebas no exhaustivas.
2. Informes de prensa en diciembre de 2007 indicaban que seguían ocurriendo
problemas importantes de software en un nuevo sistema de nóminas ERP para
un sistema escolar urbano. Se pensaba que en varias ocasiones, más de un tercio
de los empleados, había recibido cheques de pago incorrectos, desde que el
nuevo sistema se puso en marcha en enero, lo que dio lugar a pagos en exceso
por 53 millones de dólares, además de otros pagos erróneos. El sindicato de
trabajadores presentó una demanda contra el sistema escolar, se espera que el
costo del sistema ERP aumente en un 40%, y la parte que no pertenece a la
nómina del sistema de ERP se retrasó. Según los informes, pruebas
inadecuadas han contribuido a los problemas.
3. En noviembre de 2007 un gobierno regional interpuso una demanda
multimillonaria en contra de un proveedor de servicios de software, afirmando
que èste "minimizó la calidad del software " de un gran sistema de información
sobre justicia penal y que por lo tanto, el sistema no cumplía los requisitos. El
vendedor también demandó a su subcontratista en el proyecto. Fallo de
comunicación, ausencia de interacción con el cliente ya que seguramente al
ser subcontratado no trabajaba directamente con los actores involucrados.
4. Según informes periodísticos, en abril de 2007, un problema de software
contribuyó a un incendio de vagones de ferrocarril, en un importante sistema de
metro. Se comunicó que el software no funcionó como era de esperarse para
detectar y prevenir el exceso de consumo de energía en los equipos de un vagón
de pasajeros nuevo, ocasionando un sobrecalentamiento y fuego en dicho vagón,
73
la consecuente evacuación y el cierre de parte del sistema. Falta de pruebas,
liberación temprana del sistema.
E1) Identificar problemas a partir de la lista arriba descrita
Recursos.
R1) Caso de estudio de experiencia de desarrollo de software fallida. Material
descriptivo de métodos tradicionales de ingeniería de software. Lista de errores de
software.
6.2 Planeación Didáctica de modelos agiles de proceso.
Tiempo.
Se propone cubrir el tema en un intervalo de 5 hrs.
• 2 h. para la introducción a los métodos ágiles (sección x.2.3)
• 2 h. para la descripción de los diferentes procesos (sección x.2.4)
• 1h. para consolidar el conocimiento adquirido (sección x.2.5)
Contenido.
9. Modelo Ágiles de proceso
10. Programación Extrema
11. Cristal
12. Scrum
13. Melé
Materiales.
Texto en este capítulo.
Metodos-Agiles.PDF
nerur.pdf
carlos-reynoso-metodos-agiles-academia.ppt
Referencias Bibliográficas.
[1] SridharNerur, RadhaKantaMahapatra, George Mangalaraj
Challenges of migrating to agile methodologies
Communications of the ACM - Adaptive complex enterprises
Volume 48 Issue 5, May 2005
74
[2] Desarrollo de Software mediante Metodologías Ágiles.
http://www.snip.gob.ni/Xdc/Agile/Agile.htm
[3] Capitulo1
Ken Schwaber, Mike Beedle
Agile Software Development with Scrum
Prentice Hall
[4] Carlos Reynoso
Métodos Ágiles en desarrollo de software
UNIVERSIDAD DE BUENOS AIRES
http://carlosreynoso.com.ar/archivos/arquitectura/Metodos-Agiles.PDF
[7] GrigoriMelnik
Microsoft p&p summit, 2007
Empirical Evidence Of Agile Methods
http://www.slideshare.net/melnik/empirical-evidence-of-agile-methods-190997
6.3 Desarrollo de las Actividades de Introducción a los métodos ágiles de
la Ingeniería de Software.
6.3.1 Introducción a los modelos ágiles.
Material de Referencia.
Síntesis y extracción de [4]:
“Los modelos de los métodos clásicos difieren bastante en su conformación y en su
naturaleza, pero exaltan casi siempre las virtudes del planeamiento y poseen un espíritu
normativo. Comienzan con la licitación y el análisis completo de los requerimientos del
usuario. Después de un largo período de intensa interacción con usuarios y clientes, los
ingenieros establecen un conjunto definitivo y exhaustivo de rasgos, requerimientos
funcionales y no funcionales. Esta información se documenta en forma de especificaciones
para la segunda etapa, el diseño, en el que los arquitectos, trabajando junto a otros expertos
en temas puntuales (como ser estructuras y bases de datos), generan la arquitectura del
sistema. Luego los programadores implementan ese diseño bien documentado y finalmente,
el sistema completo se prueba y se despacha. ”
75
Castigando sobre todo al modelo en cascada se ha publicado:
“Gran parte de los procedimientos actuales de adquisición de software reposan en el
supuesto de que se puede especificar de antemano un sistema satisfactorio, obtener
requisitos para su construcción, construirlo e instalarlo. Pienso que este supuesto es
fundamentalmente equivocado y que muchos de los problemas de adquisición se
originan en esta falacia.”
Descrédito de los procesos en cascada
(1988) Department of Defense Standard 2167A), titled "Defense Systems
Software Development → MIL STD 498 "establish uniform requirements
for software development and documentation." (1994)
Crisis de confianza en los procesos regidos por metodologías prescriptivas con
análisis completo de requerimientos y planificación detallada
CMM, CMMI, Spice, Bootstrap, TickIt, ISO 9000
CMM no es una metodología ni un modelo en cascada, pero “coincide con su
espíritu”
Legislación negativa sobre conformidad con estándares de calidad
Ante esa evidencia los expertos, en masa, aconsejaron el abandono de los métodos
en cascada y las normativas fuertes. Trabajaron en sus propias alternativas dinámicas,
iterativas, evolutivas y en suma, ágiles. Reforzado por el entorno donde se trabaja Nerur [1]
expone:
“Software development methodologies are constantly evolving due to changing
technologies and new demands from users. Today’s dynamic business
76
environment has given rise to emergent organizations that continuously adapt their
structures, strategies, and policies to suit the new environment1. Such organizations
need information systems that constantly evolve to meet their changing
requirements—but the traditional, plan-driven software development methodologies
lack the flexibility to dynamically adjust the development process.”
A comienzos del siglo XXI ante el descrédito de los métodos tradicionales se daban
las condiciones para los 17 proponentes de métodos ágiles se juntaran en marzo de 2001 en
Salt Lake City para discutir los nuevos métodos. Lo que surgió de su reunión fue el
Manifiesto Ágil de Desarrollo de Software. De donde surgen ideas como:
De hecho, muchos de nosotros deseamos restaurar credibilidad a la palabra
metodología. Queremos recuperar un equilibrio. Promovemos el modelado, pero
no con el fin de archivar algún diagrama en un polvoriento repositorio corporativo.
Promovemos la documentación, pero no cientos de páginas en tomos nunca
mantenidos y rara vez usados. Planificamos, pero reconocemos los límites de la
planificación en un entorno turbulento.
•
•
•
•
1
Los individuos y la interacción por encima de los procesos y
herramientas.La gente es el principal factor de éxito de un proyecto
software. No se necesitan desarrolladores brillantes, sino
desarrolladores que se adapten bien al trabajo en equipo. Así mismo,
las herramientas (compiladores, depuradores, control de versiones,
etc.) son importantes para mejorar el rendimiento del equipo, pero el
disponer de más recursos que los estrictamente necesarios también
puede afectar negativamente.
El software que funciona por encima de la documentación
abarcadora. Aunque se parte de la base de que el software sin
documentación es un desastre, la regla a seguir es “no producir
documentos a menos que sean necesarios de forma inmediata para
tomar un decisión importante”. Estos documentos deben ser cortos y
centrarse en lo fundamental.
La colaboración con el cliente por encima de la negociación
contractual. Se propone que exista una interacción constante entre el
cliente y el equipo de desarrollo. Esta colaboración entre ambos será
la que marque la marcha del proyecto y asegure su éxito.
La respuesta al cambio por encima del seguimiento de un plan. La
habilidad de responder a los cambios que puedan surgir a los largo
del proyecto (cambios en los requisitos, en la tecnología, en el
equipo, etc.) determina también el éxito o fracaso del mismo. Por lo
tanto, la planificación no debe ser estricta puesto que hay muchas
variables en juego, debe ser flexible para poder adaptarse a los
cambios que puedan surgir.
Truex, D.P., Baskerville, R. and Klein, H. Growing systems in emergent organizations. Commun. ACM 42, 8 (Aug. 1999), 117–123.
77
Aunque hay valor en los elementos a la derecha, valorizamos más los de la
izquierda.
Los principios que rigen a la comunidad de métodos ágiles:
1. Nuestra prioridad más alta es satisfacer al cliente a través de la entrega
temprana y continua de software valioso.
2. Los requerimientos cambiantes son bienvenidos, incluso cuando llegan
tarde en el desarrollo. Los procesos ágiles se pliegan al cambio en procura
de una ventaja competitiva para el cliente.
3. Entregar con frecuencia software que funcione, desde un par de semanas
hasta un par de meses, con preferencia por las escalas de tiempo más breves.
4. La gente de negocios y los desarrolladores deben trabajar juntos
cotidianamente a través de todo el proyecto.
5. Construir proyectos en torno de individuos motivados. Darles la
oportunidad y el respaldo que necesitan y procurarles confianza para que
realicen la tarea.
6. La forma más eficiente y efectiva de comunicar información de ida y vuelta
dentro de un equipo de desarrollo es mediante la conversación cara a cara.
7. El software que funciona es la medida primaria de progreso.
8. Los procesos ágiles promueven el desarrollo sostenido. Los patrocinadores,
desarrolladores y usuarios deben mantener un ritmo constante
indefinidamente.
9. La atención continua a la excelencia técnica enaltece la agilidad.
10. La simplicidad (el arte de maximizar la cantidad de trabajo que no se hace)
es esencial.
11. Las mejores arquitecturas, requerimientos y diseños emergen de equipos
que se auto organizan.
12. A intervalos regulares, el equipo reflexiona sobre la forma de ser más
efectivo, y ajusta su conducta en consecuencia.
Nerur [1] realza las diferencias entre métodos ágiles y tradicionales en el siguiente gráfico.
78
Los modelos ágiles se pueden describir como aquellos modelos que son lo
suficientemente buenos, donde cumplen con las siguientes características: satisfacen un
propósito, son inteligentes, son lo suficientemente precisos, son lo suficientemente
detallados, aportan valor positivo y son lo más simple posible. Para poder tener más clara
las ideas un modelo ágil es más eficiente que los modelos tradicionales, un prototipo de
papel podría ser un modelo ágil, un dibujo de pizarra podría ser un modelo ágil, un
diagrama de Visio puede ser un modelo ágil o un modelo de datos físicos podría ser un
modelo ágil. El tipo de modelo, o herramienta con la que se creó en realidad no importa, lo
importante es que el modelo sólo sea sólo lo suficientemente bueno para obtener su
máximo provecho.
El desarrollo ágil de software es un marco de trabajo conceptual de la ingeniería de
software que promueve iteraciones en el desarrollo a lo largo de todo el ciclo de vida del
proyecto. Existen muchos métodos de desarrollo ágil; la mayoría minimiza riesgos
desarrollando software en lapsos cortos de tiempo. El software desarrollado en una unidad
de tiempo es llamado una iteración, la cual debe durar de una a cuatro semanas. Cada
iteración del ciclo de vida incluye: planificación, análisis de requerimientos, diseño,
codificación, revisión y documentación. Una iteración no debe agregar demasiada
funcionalidad para justificar el lanzamiento del producto al mercado, pero la meta es tener
un demo (sin errores) al final de cada iteración. Al final de cada iteración el equipo vuelve a
evaluar las prioridades del proyecto. La mayoría de los equipos ágiles están localizados en
una simple oficina abierta, a veces llamadas "plataformas de lanzamiento". La oficina debe
incluir revisores, escritores de documentación y ayuda, diseñadores de iteración y
directores de proyecto. Los métodos ágiles también enfatizan que el software funcional es
la primera medida del progreso.
79
Actividades Propuestas.
Actividad 1. Requerimientos para cambiar de un paradigma clásico a uno ágil
Objetivo.
Que el alumno proponga los cambios organizacionales necesarios para adoptar un proceso
de desarrollo ágil.
Especificación.
E1) Llena la siguiente tabla en equipos de 4 indicando los cambios necesarios para adoptar
un proceso iterativo.
Cambio organizacional y en la administración
Cambio en la gente
Cambio en los procesos
Cambio en la tecnología (técnicas y herramientas)
Ejemplo tipo de Resultados.
Cambio organizacional y en la administración
•
•
•
•
•
Cultura organizacional
Estilo de administración
Forma organizacional
Manejo del conocimiento de desarrollo de software
Sistemas de recompensas
Cambio en la gente
• Trabajo efectivo en equipo
• Alto nivel de competencias
• Relaciones con clientes – compromiso, conocimiento, proximidad, confianza, respeto
Cambio en los procesos
• Cambio de un proceso centralizado a uno guiado por características, centrado en la persona
80
• Guiado por elementos como ser: corto, iterativo, evaluativo con énfasis en la adaptabilidad
• Manejo de proyectos grandes y escalables
• Selección del proceso ágil adecuado a la empresa
Cambio en la tecnología (técnicas y herramientas)
Revisar que herramientas y tecnología sean apropiadas
Desarrollo de nuevas habilidades -
Recursos.
R1) Referencia [1]
R2) Material de esta sección
6.4 Desarrollo de las actividades de métodos ágiles de la ingeniería de
software.
6.4.1 PROGRAMACIÓN EXTREMA [extreme programming( XP)]
Kent Beck [5] sentó las bases de los patrones de diseño y XP en 1999. XP es la primera
metodología ágil y la que le dio conciencia al movimiento actual de metodologías ágiles, se
centra en potenciar las relaciones interpersonales como clave para el éxito en desarrollo de
software, promoviendo el trabajo en equipo, preocupándose por el aprendizaje de los
desarrolladores, y propiciando un buen clima de trabajo. XP se basa en retroalimentación
continua entre el cliente y el equipo de desarrollo, comunicación fluida entre todos los
participantes, simplicidad en las soluciones implementadas y coraje para enfrentar los
cambios [6]. XP se define como especialmente adecuada para proyectos con requisitos
imprecisos y muy cambiantes, y donde existe un alto riesgo técnico.
Los principios y prácticas son de sentido común pero llevadas al extremo, de ahí
proviene su nombre.
Las características esenciales de XP se pueden organizar en: historias de usuario, roles,
proceso y prácticas.
A. Las Historias de Usuario [Tarjetas de historia (StoryCards)]
Son la técnica utilizada para especificar los requisitos del software. Se trata de tarjetas de
papel en las cuales el cliente describe brevemente las características que el sistema debe
poseer, sean requisitos funcionales o no funcionales. Las tarjetas se usan para estimar
prioridades, alcance y tiempo de realización; en caso de discrepancia, gana la estimación
más optimista. El tratamiento de las historias de usuario es muy dinámico y flexible. Cada
historia de usuario es lo suficientemente comprensible y delimitada para que los
programadores puedan implementarla en unas semanas. Un ejemplo de ficha presenta los
siguientes contenidos: fecha, tipo de actividad (nueva, corrección, mejora), prueba
funcional, número de historia, prioridad técnica y del cliente, referencia a otra historia
previa, riesgo, estimación técnica, descripción, notas y una lista de seguimiento con la
81
fecha, estado, cosas por terminar y comentarios. A efectos de planificación, las historias
pueden ser de una a tres semanas de tiempo de programación (para no superar el tamaño de
una iteración). Las historias de usuario son descompuestas en tareas de programación
(taskcard) y asignadas a los programadores para ser implementadas durante una iteración.
B. Roles XP
Los roles de acuerdo con la propuesta original de Beck son:
- Programador. El programador escribe las pruebas unitarias y produce el código del
sistema.
- Cliente. Escribe las historias de usuario y las pruebas funcionales para validar su
implementación. Además, asigna la prioridad a las historias de usuario y decide cuáles se
implementan en cada iteración centrándose en aportar mayor valor al negocio.
- Encargado de pruebas (Tester). Ayuda al cliente a escribir las pruebas funcionales.
Ejecuta las pruebas regularmente, difunde los resultados en el equipo y es responsable de
las herramientas de soporte para pruebas.
- Encargado de seguimiento (Tracker). Proporciona realimentación al equipo. Verifica el
grado de acierto entre las estimaciones realizadas y el tiempo real dedicado, para mejorar
futuras estimaciones. Realiza el seguimiento del progreso de cada iteración.
- Entrenador (Coach). Es responsable del proceso global. Debe proveer guías al equipo de
forma que se apliquen las prácticas XP y se siga el proceso correctamente.
- Consultor. Es un miembro externo del equipo con un conocimiento específico en algún
tema necesario para el proyecto, en el que puedan surgir problemas.
- Gestor (Big boss). Es el vínculo entre clientes y programadores, ayuda a que el equipo
trabaje efectivamente creando las condiciones adecuadas. Su labor esencial es de
coordinación.
C. Proceso XP
Un proyecto XP tiene éxito cuando el cliente selecciona el valor de negocio a implementar
basado en la habilidad del equipo para medir la funcionalidad que puede entregar a través
del tiempo. El ciclo de desarrollo consiste en los siguientes pasos:
1. El cliente define el valor de negocio a implementar.
2. El programador estima el esfuerzo necesario para su implementación.
3. El cliente selecciona qué construir, de acuerdo con sus prioridades y las restricciones
de tiempo.
4. El programador construye ese valor de negocio.
5. Vuelve al paso 1.
En todas las iteraciones de este ciclo tanto el cliente como el programador aprenden. No
se debe presionar al programador a realizar más trabajo que el estimado, ya que se perderá
calidad en el software o no se cumplirán los plazos. De la misma forma el cliente tiene la
obligación de manejar el ámbito de entrega del producto, para asegurarse que el sistema
tenga el mayor valor de negocio posible con cada iteración.
82
El ciclo de vida ideal de XP consiste de seis fases: Exploración, Planificación de la Entrega
(Release), Iteraciones, Producción, Mantenimiento y Muerte del Proyecto.
Figura 1 Ciclo de vida de XP, fuente [8]
D. Prácticas XP
La principal suposición que se realiza en XP es la posibilidad de disminuir la mítica curva
exponencial del costo del cambio a lo largo del proyecto, lo suficiente para que el diseño
evolutivo funcione. Esto se consigue gracias a las tecnologías disponibles para ayudar en el
desarrollo de software y a la aplicación disciplinada de las siguientes prácticas.
• Juego de Planeamiento. Busca determinar rápidamente el alcance de la versión
siguiente, combinando prioridades de negocio definidas por el cliente con las
estimaciones técnicas de los programadores. Éstos estiman el esfuerzo necesario para
implementar las historias del cliente y éste decide sobre el alcance y la agenda de las
entregas. Las historias se escriben en pequeñas fichas, que algunas veces se tiran.
Cuando esto sucede, lo único restante que se parece a un requerimiento es una multitud
de pruebas automatizadas, las pruebas de aceptación.
• Entregas pequeñas y frecuentes. Se “produccioniza” un pequeño sistema
rápidamente, al menos uno cada dos o tres meses. Pueden liberarse nuevas versiones
diariamente (como es práctica en Microsoft); se agregan pocos rasgos cada vez.
• Metáforas del sistema. El sistema de define a través de una metáfora o un conjunto de
metáforas, una “historia compartida” por clientes, managers y programadores que
orienta todo el sistema describiendo como funciona. Una metáfora puede interpretarse
como una arquitectura simplificada.
• Diseño simple. El énfasis se deposita en diseñar la solución más simple susceptible de
implementarse en el momento. Se eliminan complejidades innecesarias y código extra,
y se define la menor cantidad de clases posible. No debe duplicarse el código.
• Prueba continua. El desarrollo está orientado por las pruebas. Los clientes ayudan a
escribir las pruebas funcionales antes de que se escriba el código. El propósito del
código real no es cumplir un requerimiento, sino pasar las pruebas. Las pruebas y el
código son escritas por el mismo programador, pero la prueba debería realizarse sin
intervención humana, y es a todo o nada. Hay dos clases de prueba: 1) la prueba
unitaria, que verifica una sola clase, o un pequeño conjunto de clases y2) la prueba de
aceptación que verifica todo el sistema, o una gran parte.
83
•
•
•
•
•
•
•
•
•
Refactorízación continua. Se refactoriza el sistema eliminando duplicación,
mejorando la comunicación y agregando flexibilidad sin cambiar la funcionalidad La
práctica también se conoce como Mejora Continua de Código o Refactorízación
implacable.
Programación en pares. Todo el código está escrito por pares de programadores. Dos
personas escriben código en una computadora, turnándose en el uso del ratón y el
teclado. El que no está escribiendo, piensa desde un punto de vista más estratégico y
realiza lo que podría llamarse revisión de código en tiempo real. Los roles pueden
cambiarse varias veces al día.
Propiedad colectiva del código. Cualquiera puede cambiar cualquier parte del código
en cualquier momento, siempre que escriba antes la prueba correspondiente.
Integración continua. Cada pieza se integra a la base de código apenas está lista,
varias veces al día. Debe correrse la prueba antes y después de la integración. Hay una
máquina (solamente) dedicada a este propósito.
Ritmo sostenible, trabajando un máximo de 8 horas por día. Antes se llamaba a esta
práctica Semana de 40 horas. Dado que el desarrollo de software se considera un
ejercicio creativo, se estima que hay que estar fresco y descansado para hacerlo
eficientemente; con ello se motiva a los participantes, se evita la rotación del personal y
se mejora la calidad del producto.
Todo el equipo en el mismo lugar. El cliente debe estar presente y disponible a tiempo
completo para el equipo. También se llama El Cliente en el Sitio. Como esto parecía no
cumplirse, se especificó que el representante del cliente debe ser preferentemente un
analista.
Estándares de codificación. Se deben seguir reglas de codificación y comunicarse a
través del código. Algunos practicantes se ponen de acuerdo en estilos de notación,
indentación y nomenclatura, así como en un valor apreciado en la práctica, el llamado
“código revelador de intenciones”.
Espacio abierto. Es preferible una sala grande con pequeños cubículos o, mejor
todavía, sin divisiones. Los pares de programadores deben estar en el centro. En la
periferia se ubican las máquinas privadas.
Reglas justas. El equipo tiene sus propias reglas a seguir, pero se pueden cambiar en
cualquier momento. En XP se piensa que no existe un proceso que sirva para todos los
proyectos; lo que se hace habitualmente es adaptar un conjunto de prácticas simples a
las características de cada proyecto.
El mayor beneficio de las prácticas se consigue con su aplicación conjunta y equilibrada
puesto que se apoyan unas en otras. Esto se ilustra en la Figura 2, donde una línea entre dos
prácticas significa que las dos prácticas se refuerzan entre sí. La mayoría de las prácticas
propuestas por XP no son novedosas sino que en alguna forma ya habían sido propuestas en
ingeniería del software e incluso demostrado su valor en la práctica. El mérito de XP es
integrarlas de una forma efectiva y complementarlas con otras ideas desde la perspectiva
del negocio, los valores humanos y el trabajo en equipo.
84
Figura 2 Las prácticas se refuerzan entre sí.
6.4.2 Metodologías Crystal [Crystal Methodologies (CM)]
Las metodologías Crystal fueron creadas por el “antropólogo de proyectos” Alistair
Cockburn en 1998.Se trata de un conjunto de metodologías para el desarrollo de software
caracterizadas por estar centradas en las personas que componen el equipo (de ellas
depende el éxito del proyecto) y la reducción al máximo del número de artefactos
producidos. La familia Crystal dispone un código de color para marcar la complejidad de
una metodología: cuanto más oscuro un color, más “pesado” es el método. Cuanto más
crítico es un sistema, más rigor se requiere. El código cromático se aplica a una forma
tabular elaborada por Cockburn que se usa en muchos MAs para situar el rango de
complejidad al cual se aplica una metodología. En la figura se muestra una evaluación de
las pérdidas que puede ocasionar la falla de un sistema y el método requerido según este
criterio. Los parámetros son Comodidad (C), Dinero Discrecional (D), Dinero Esencial (E)
y Vidas (L). En otras palabras, la caída de un sistema que ocasione incomodidades indica
que su nivel de criticalidad es C, mientras que si causa pérdidas de vidas su nivel es L. Los
números del cuadro indican el número de personas afectadas a un proyecto, ±20%.
Los métodos se llaman Crystal evocando las facetas de una gema: cada faceta es
otra versión del proceso, y todas se sitúan en torno a un núcleo idéntico. Hay cuatro
variantes de metodologías: Crystal Clear (“Claro como el cristal”) para equipos de 8 o
menos integrantes; Amarillo, para 8 a 20; Naranja, para 20 a 50; Rojo, para 50 a 100. Se
promete seguir con Marrón, Azul y Violeta.
85
Figura 3 Familia de CrystalMethods [Crystalmethodologies.org]
La más exhaustivamente documentada es Crystal Clear (CC), puede ser usado en
proyectos pequeños de categoría D6, aunque con alguna extensión se aplica también
aniveles E8 a D10. El otro método elaborado en profundidad es el Naranja, apto para
proyectos de duración estimada en 2 años, los otros dos aún se están desarrollando. Como
casi todos los otros métodos, CC consiste en valores, técnicas y procesos.
A. Valores de cristal clear
Los siete valores o propiedades de CC [9] son:
1. Entrega frecuente. Consiste en entregar, con frecuencia, software a los clientes con
frecuencia, no solamente en compilar el código. La frecuencia dependerá del proyecto, pero
puede ser diaria, semanal, mensual o lo que fuere. La entrega puede hacerse sin despliegue,
si es que se consigue algún usuario cortés o curioso que suministre realimentación.
2. Comunicación osmótica. Todos juntos en el mismo cuarto. Una variante especial es
disponer en la sala de un diseñador senior; eso se llama Experto al Alcance de la Oreja.
Una reunión separada para que los concurrentes se concentren mejor es descrita como El
Cono del Silencio.
3. Mejora reflexiva. Tomarse un pequeño tiempo (unas pocas horas cada algunas semanas
o una vez al mes) para pensar bien qué se está haciendo, cotejar notas, reflexionar, discutir.
4. Seguridad personal. Hablar cuando algo molesta: decirle amigablemente al manager
que la agenda no es realista, o a un colega que su código necesita mejorarse, o que sería
conveniente que se bañase con mayor frecuencia. Esto es importante porque el equipo
puede descubrir y reparar sus debilidades. No es provechoso encubrir los desacuerdos con
gentileza y conciliación. Técnicamente, estas cuestiones se han caracterizado como una
importante variable de confianza y han sido estudiadas con seriedad en la literatura.
5. Foco. Saber lo que se está haciendo y tener la tranquilidad y el tiempo para hacerlo. Lo
primero debe venir de la comunicación sobre dirección y prioridades, típicamente con el
Patrocinador Ejecutivo. Lo segundo, de un ambiente en que la gente no se vea compelida a
hacer otras cosas incompatibles.
86
6. Fácil acceso a usuarios expertos. No hay un dogma de vida o muerte sobre esto, como
sí lo hay en XP. Un encuentro semanal o semi-semanal con llamadas telefónicas
adicionales parece ser una buena pauta. Otra variante es que los programadores se entrenen
para ser usuarios durante un tiempo. El equipo de desarrollo, de todas maneras, incluye un
Experto en Negocios.
7. Ambiente técnico con prueba automatizada, management de configuración e
integración frecuente. Microsoft estableció la idea de los builds(se refiere tanto al proceso de
conversión de archivos de código fuente en los artefactos de software independiente(s)que se pueden
ejecutar en una computadora, o el resultado de hacerlo)
cotidianamente, y no es una mala
práctica. Muchos equipos ágiles compilan e integran varias veces al día.
B. Técnicas
En cuanto a las técnicas, se favorecen:
1. Entrevistas de proyectos. Se suele entrevistar a más de un responsable para tener
visiones más ricas. La idea es averiguar cuáles son las prioridades, obtener una lista de
rasgos deseados, saber cuáles son los requerimientos más críticos y cuáles los más
negociables. Si se trata de una actualización o corrección, saber cuáles son las cosas que se
hicieron bien y merecen preservarse y los errores que no se quieren repetir.
2. Talleres de reflexión. El equipo debe detenerse treinta minutos o una hora para
reflexionar sobre sus convenciones de trabajo, discutir inconvenientes y mejoras y planear
para el período siguiente.
3. Planeamiento Blitz. Una técnica puede ser el Juego de Planeamiento de XP. En este
juego, se ponen tarjetas indexadas en una mesa, con una historia de usuario o función
visible en cada una. El grupo finge que no hay dependencias entre tarjetas, y las alinea en
secuencias de desarrollo preferidas. Los programadores escriben en cada tarjeta el tiempo
estimado para desarrollar cada función. El patrocinador o embajador del usuario escribe la
secuencia de prioridades, teniendo en cuenta los tiempos referidos y el valor de negocio de
cada función. Las tarjetas se agrupan en períodos de tres semanas llamados iteraciones que
se agrupan en entregas (releases), usualmente no más largas de tres meses. Pueden usarse
tarjetas CRC. Cockburn propone otras variantes del juego, las diferencias entre la versión
de Cockburn y el juego de XP son varias: en XP las tarjetas tienen historias, en CC listas de
tareas; el juego de XP asume que no hay dependencias, el de CC que sí las hay; en XP hay
iteraciones de duración fija, en CC no se presupone nada sobre la longitud de la iteración.
4. Estimación Delphi con estimaciones de pericia. La técnica se llama así por analogía
con el oráculo de Delfos. En el proceso Delphi se reúnen los expertos responsables y
proceden como en un remate para proponer el tamaño del sistema, su tiempo de ejecución,
la fecha de las entregas según dependencias técnicas y de negocios y para equilibrar las
entregas en paquetes de igual tamaño.
5. Encuentros diarios de pie. La palabra clave es “brevedad”, cinco a diez minutos como
máximo. No se trata de discutir problemas, sino de identificarlos. Los problemas sólo se
discuten en otros encuentros posteriores, con la gente que tiene que ver en ellos.
87
6. Miniatura de procesos. La “Hora Extrema” fue inventada por Peter Merel para
introducir a la gente en XP en 60 minutos (http://c2.com/cgi/wiki?ExtremeHour) y
proporciona lineamientos canónicos que pueden usarse para articular esta práctica. Una
forma de presentar Crystal Clear puede consumir entre 90 minutos y un día. La idea es que
la gente pueda “degustar” la nueva metodología.
7. Gráficos de quemado. Su nombre viene de los gráficos de quemado de calorías de los
regímenes dietéticos; se usan también en Scrum. Se trata de una técnica de graficación para
descubrir demoras y problemas tempranamente en el proceso, evitando que se descubra
demasiado tarde aún que todavía no se sabe cuánto falta. Para ello se hace una estimación
del tiempo faltante para programar lo que resta al ritmo actual, lo cual sirve para tener
dominio de proyectos en los que las prioridades cambian bruscamente y con frecuencia.
8. Programación lado a lado. Mucha gente siente que la programación en pares de XP
involucra una presión excesiva; la versión de Crystal Clear establece proximidad, pero cada
quien se aboca a su trabajo asignado, prestando un ojo a lo que hace su compañero, quien
tiene su propia máquina.
C. Procesos
El proceso de Crystal Clear se basa en una exploración refinada de los inconvenientes de
los modelos clásicos. Dice Cockburn que la mayoría de los modelos de proceso propuestos
entre 1970 y 2000 se describían como secuencias de pasos. Aún cuando se recomendaran
iteraciones e incrementos (que no hacían más que agregar confusión a la interpretación) los
modelos parecían dictar un proceso en cascada, por más que los autores aseguraran que no
era así. El problema con estos procesos es que realmente están describiendo un workflow
requerido, un grafo de dependencia: el equipo no puede entregar un sistema hasta que está
integrado y corre. No puede integrar y verificar hasta que el código no está escrito y
corriendo. Y no puede diseñar y escribir el código hasta que se le dice cuáles son los
requerimientos. Un grafo de dependencia se interpreta necesariamente en ese sentido,
aunque no haya sido la intención original. En lugar de esta interpretación lineal, Crystal
Clear enfatiza el proceso como un conjunto de ciclos anidados. En la mayoría de los
proyectos se perciben siete ciclos: (1) el proyecto, (2) el ciclo de entrega de una unidad, (3)
la iteración (nótese que CCrequiere múltiples entregas por proyecto pero no muchas
iteraciones por entrega), (4)la semana laboral, (5) el período de integración, de 30 minutos
a tres días, (6) el día de trabajo, (7) el episodio de desarrollo de una sección de código, de
pocos minutos apocas horas.
Los métodos Crystal no prescriben las prácticas de desarrollo, las herramientas o los
productos que pueden usarse, pudiendo combinarse con otros métodos como Scrum, XP y
Microsoft Solutions Framework.
88
Figura 4 Ciclos anidados de Crystal Clear
D. Roles
Hay ocho roles nominados en cristal clear:
1. Patrocinador. Produce la Declaración de Misión con Prioridades de
Compromiso(Tradeoff). Consigue los recursos y define la totalidad del proyecto.
2. Usuario Experto. Junto con el Experto en Negocios produce la Lista de ActoresObjetivos y el Archivo de Casos de Uso y Requerimientos. Debe familiarizarse con el uso
del sistema, sugerir atajos de teclado, modos de operación, información a visualizar
simultáneamente, navegación, etcétera.
3. Diseñador Principal. Produce la Descripción Arquitectónica. Se supone que debe ser al
menos un profesional de Nivel 3. (En métodos ágiles se definen tres niveles de experiencia:
Nivel 1 es capaz de “seguir los procedimientos”; Nivel 2 es capaz de “apartarse de los
procedimientos específicos” y encontrar otros distintos; Nivel 3 es capaz de manejar con
fluidez, mezclar e inventar procedimientos). El Diseñador Principal tiene roles de
coordinador, arquitecto, mentor y programador más experto.
4. Diseñador-Programador. Produce, junto con el Diseñador Principal, los Borradores de
Pantallas, el Modelo Común de Dominio, las Notas y Diagramas de Diseño, el Código
Fuente, el Código de Migración, las Pruebas y el Sistema Empaquetado. Cockburn no
distingue entre diseñadores y programadores. Un programa en CC es “diseño y programa”;
sus programadores son diseñadores-programadores. En CC un diseñador que no programe
no tiene cabida.
5. Experto en Negocios. Junto con el Usuario Experto produce la Lista de ActoresObjetivos y el Archivo de Casos de Uso y Requerimientos. Debe conocer las reglas y
políticas del negocio.
6. Coordinador. Con la ayuda del equipo, produce el Mapa de Proyecto, el Plan de
Entrega, el Estado del Proyecto, la Lista de Riesgos, el Plan y Estado de Iteración y la
Agenda de Visualización.
7. Verificador. Produce el Reporte de Bugs. Puede ser un programador en tiempo parcial, o
un equipo de varias personas.
8. Escritor. Produce el Manual de Usuario.
6.4.3 SCRUM
Scrum define un proceso empírico, iterativo e incremental de desarrollo que intenta obtener
ventajas respecto a los procesos definidos (cascada, espiral, prototipos, etc.) mediante la
aceptación de la naturaleza caótica del desarrollo de software, y la utilización de prácticas
tendientes a manejar lo impredecible y el riesgo a niveles aceptables. El mismo surge en
1986, de un artículo de la Harvard Business Review titulado “The New New Product
89
Development Game” de Hirotaka Takeuchi e Ikujiro Nonaka, que introducía las mejores
prácticas más utilizadas en 10 compañías japonesas altamente innovadoras. A partir de ahí
y tomando referencias al juego de rugby, Ken Scwaber y Jeff Sutherland formalizan el
proceso conocido como Scrum en el año 1995.
La intención de Scrum es la de maximizar la realimentación sobre el desarrollo pudiendo
corregir problemas y mitigar riesgos de forma temprana. Su uso se está extendiendo cada
vez más dentro de la comunidad de Metodologías Ágiles, siendo combinado con otras –
como XP – para completar sus carencias. Cabe mencionar que Scrum no propone el uso de
ninguna práctica de desarrollo en particular; sin embargo, es habitual emplearlo como un
framework ágil de administración de proyectos que puede ser combinado con cualquiera de
las metodologías mencionadas.
A. Roles
Scrum define seis roles:
1. El Scrum Master. Interactúa con el cliente y el equipo. Es responsable de asegurarse
que el proyecto se lleve a cabo de acuerdo con las prácticas, valores y reglas de Scrum y
que progrese según lo previsto. Coordina los encuentros diarios, formula lastres preguntas
canónicas y se encarga de eliminar eventuales obstáculos. Debe ser miembro del equipo y
trabajar a la par de sus integrantes.
2. Propietario del Proyecto. Es el responsable oficial del proyecto, gestión, control y
visibilidad de la lista de acumulación o lista de retraso del producto (productbacklog). Es
elegido por el Scrum Master, el cliente y los ejecutivos a cargo. Toma las decisiones finales
de las tareas asignadas al registro y convierte sus elementos en rasgos a desarrollar.
3. Equipo de Scrum. Tiene autoridad para reorganizarse y definir las acciones necesarias o
sugerir la remoción de impedimentos.
4. Cliente. Participa en las tareas relacionadas con los ítems del registro.
5. Management. Está a cargo de las decisiones fundamentales y participa en la definición
de los objetivos y requerimientos. Por ejemplo, selecciona al Dueño del Producto, evalúa el
progreso y reduce el registro de acumulación junto con el Scrum Master.
6. Usuario.
La dimensión del equipo total de Scrum no debería ser superior a diez ingenieros. El
número ideal es siete, más o menos dos, una cifra canónica en ciencia cognitiva. Si hay
más, lo más recomendable es formar varios equipos.
B. Ciclo de Vida
El ciclo de vida de Scrum es el siguiente:
1. Pre-Juego: Planeamiento. El propósito es establecer la visión, definir expectativas y
asegurarse el financiamiento. Las actividades son la escritura de la visión, el presupuesto, el
registro de acumulación o retraso (backlog) del producto inicial y los ítems estimados, así
como la arquitectura de alto nivel, el diseño exploratorio y los prototipos. El registro de
acumulación es de alto nivel de abstracción.
2. Pre-Juego: Montaje (Staging). El propósito es identificar más requerimientos y
priorizar las tareas para la primera iteración. Las actividades son planificación, diseño
exploratorio y prototipos.
90
3. Juego o Desarrollo. El propósito es implementar un sistema listo para entrega en una
serie de iteraciones de treinta días llamadas “corridas” (sprints). Las actividades son un
encuentro de planeamiento de corridas en cada iteración, la definición del registro de
acumulación de corridas y los estimados, y encuentros diarios de Scrum.
4. Pos-Juego: Liberación. El propósito es el despliegue operacional. Las actividades,
documentación, entrenamiento, mercadeo y venta.
Figura 5 Ciclo de Scrum, basado en [10]
Usualmente los registros de acumulación se llevan en planillas de cálculo comunes, antes
que en una herramienta sofisticada de gestión de proyectos. Los elementos del registro
pueden ser prestaciones del software, funciones, corrección de bugs, mejoras requeridas y
actualizaciones de tecnología. Hay un registro total del producto y otro específico para cada
corrida de 30 días. En la jerga de Scrum se llaman “paquetes” a los objetos o componentes
que necesitan cambiarse en la siguiente iteración.
Figura 6 Ciclo de Carrera (Sprint) de Scrum, basado en [http://www.Controlchaos.com]
91
La lista de Acumulación del Producto contiene todos los rasgos, tecnología, mejoras y lista
de bugs que, a medida que se desenvuelven, constituyen las futuras entregas del producto.
Los rasgos más urgentes merecerán mayor detalle, los que pueden esperar se tratarán de
manera más sumaria. La lista se origina a partir de una variedad de fuentes. El grupo de
mercadeo genera los rasgos y la función; la gente de ventas genera elementos que harán que
el producto sea más competitivo; los de ingeniería aportarán paquetes que lo harán más
robusto; el cliente ingresará debilidades o problemas que deberán resolverse. El propietario
de la administración y el control del backlog en productos comerciales bien puede ser el
product manager; para desarrollos in-house podría ser el project manager, o alguien
designado por él. Se recomienda que una sola persona defina la prioridad de una tarea; si
alguien tiene otra opinión, deberá convencer al responsable. Se estima que priorizar
adecuadamente una lista de producto puede resultar difícil al principio del desarrollo, pero
deviene más fácil con el correr del tiempo.
Al fin de cada iteración de treinta días hay una demostración a cargo del Scrum Master. Las
presentaciones en PowerPoint están prohibidas. Todos tienen que ser puntuales; si alguien
llega tarde, se le cobra una multa que se destinará a obras de caridad. Es permitido usar
artefactos de los métodos a los que Scrum acompañe, por ejemplo Listas de Riesgos si se
utiliza UP o los Planes de Proyecto sugeridos en la disciplina de Gestión de Proyectos de
Microsoft Solutions Framework. No es legal, en cambio, el uso de instrumentos tales como
diagramas PERT, porque éstos parten del supuesto de que las tareas de un proyecto se
pueden identificar y ordenar; en Scrum el supuesto dominante es que el desarrollo es semicaótico, cambiante y tiene demasiado ruido como para que se le aplique un proceso
definido. Algunos textos sobre Scrum establecen una arquitectura global en la fase de prejuego; otros dicen que no hay una arquitectura global en Scrum, sino que la arquitectura y
el diseño emanan de múltiples corridas [SB02]. No hay una ingeniería del software
prescrita para Scrum; cada quien puede escoger entonces las prácticas de automatización,
inspección de código, prueba unitaria, análisis o programación en pares que le resulten
adecuadas. Es habitual que Scrum se complemente con XP; en estos casos, Scrum
suministra un marco de management basado en patrones organizacionales, mientras XP
constituye la práctica de programación, usualmente orientada a objetos y con fuerte uso de
patrones de diseño. Uno de los nombres que se utiliza para esta alianza es XP@Scrum.
Actividades para el Estudio de Modelos Ágiles de Procesos.
Actividad 1
Objetivo. Que el alumno aprecie las convergencias y divergencias en la definición de
los modelos ágiles resumiendo sus características claves, los nombres de los promotores
iniciales y sus fechas de aparición.
Especificación.
-Revisar el capitulo.
92
-Hacer una tabla mencionando los acrónimos, el tipo de modelo, las características
claves, los nombres de los promotores iniciales y sus fechas de aparición de los
modelos vistos.
Ejemplo de Resultados.
Metodología
Acrónimo
Creación
Programación
extrema
XP
Beck, 1999
Crystal Methods
CM
Cockburn, 1998
Scrum
Scrum
Sutherland Schwaber, 1995
Tipo de modelo
“Disciplina en
prácticas de
ingeniería”
“Familia de
metodologías”
“Proceso”
(framework de
management)
Característica
Método ágil radical
Método ágil con
énfasis en modelo
de ciclos
Complemento de
otros métodos,
ágiles o no
Actividad 2
Objetivo. Que el alumno comprenda las cualidades y características de los modelos
ágiles.
Especificación.
-Revisar y analizar el capitulo.
-Hacer un resumen de los valores, prácticas y principios de los modelos ágiles.
Ejemplo de Resultados.
Los Valores de AM
•
•
•
•
•
Comunicación.
Valentía.
Retroalimentación.
Humildad.
Simplicidad.
Principios centrales de AM
•
•
•
•
•
•
•
•
•
•
Asumir simplicidad.
Bienvenido el cambio.
Permitir el siguiente esfuerzo es el objetivo secundario.
Cambio incremental.
Maximizar la inversión de las partes interesadas en el proyecto.
Modelar con un propósito.
Múltiples modelos.
Trabajo de calidad.
Rápida retroalimentación.
El software es el objetivo primario.
Prácticas centrales de AM
•
•
•
•
Participación activa de todos aquellos que soportan el proyecto.
Aplicar los artefactos correctos.
Propiedad colectiva.
Considerar la puesta a prueba del sistema.
93
•
•
•
•
•
•
•
•
•
Crear varios modelos en paralelo.
Crear contenidos simples.
Representar los modelos de manera simple.
Presentar los modelos públicamente.
Iterar a otros artefactos.
Modelar en pequeños incrementos.
Modelar con otros.
Demuéstrelo con código.
Use las herramientas más simples.
Referencias Bibliográficas.
[1] Sridhar Nerur, Radha Kanta Mahapatra, George Mangalaraj,
Challenges of migrating
to agile methodologies. Communications of the ACM - Adaptive complex enterprises
Volume 48 Issue 5, May 2005
[5] Kent Beck. Extreme Programming Explained: Embrace Change. Reading, Addison
Wesley, 1999.
[6] Letelier P., Penadés C., Metodologías ágiles para el desarrollo de
Software:eXtremeProgramming (XP), Universidad Politécnica de Valencia
Disponible en: http://www.willydev.net/descargas/masyxp.pdf
[8] Carlos Reynoso – Método heterodoxos en Desarrollo de Software (Survey de Métodos
Ágiles)
[9] Alistair Cockburn. “Crystal Clear. A human-powered methodology for small teams,
including The Seven Properties of Effective Software Projects”.Borrador. Humans and
Technology, versión del 27 de febrero de 2002.
[10]Pekka Abrahamsson. “Agile Software development methods: A minitutorial”. VTT
Technical
Research
Centre
of
Finland,http://www.vtt.fi/virtual/agile/seminar2002/Abrahamsson_agile_methods_minituto
rial.pdf, 2002.
6.5 Comentarios, conclusiones y actividades complementarias sobre los
antecedentes y conceptos básicos de la ingeniería de software.
Se propone realizar una actividad grupal de análisis y reflexión para cerrar el estudio de
métodos ágiles.
Debido a la novedad de las metodologías ágiles, muy pocos datos empíricos están
disponibles en relación con cada método. El desafío más grande para el líder del proyecto,
por lo tanto, es la selección de un método apropiado dentro de la cantidad de métodos
ágiles disponibles en la actualidad. Esto es muy parecido a la situación que enfrentaron los
primeros desarrolladores al adoptar la tecnología de objetos. Aunque todos los métodos
ágiles, en cierta medida, se ajustan a los principios descritos en el manifiesto ágil, no todos
se gobiernen en el mismo sentido. Existen diferencias significativas en términos de tamaño
94
del equipo, la propiedad del código, la duración de cada ciclo iterativo, el énfasis
de actividades de flujo al frente y de flujo inverso, y los mecanismos
para una rápida retroalimentación y adaptación al cambio.
Melnik [7] hace un estudio empírico para identificar el uso de métodos ágiles en la práctica.
Algunos de sus resultados son los siguientes:
1. Estado de uso en la práctica
a. Zona amplia libre de mediciones
• Pocos experimentos
• Incluso menos resultados publicados
• Foco mínimo en recolección de datos
• Datos existentes generalmente incompletos
• Consultores de muy alto nivel solo transmiten anécdotas
b. Experimentos existentes
• Muy triviales o
• Defectos experimentales
i) Gran cantidad de variables que no pueden ser controladas
ii) Pequeñas muestras
iii) Sujetos ajenos a la profesión
iv) Conducido en un lapso breve de tiempo
2. La adopción de esta metodología ha sido lenta en la industria (41%)
3. Poco conocida (54 % no sabe de ella) y de los que la conocen y aún no la adoptan
(29%) muy pocos se encuentran en la posibilidad (7%) de adoptarla.
95
4. El tamaño es importante. Cuando nos referimos al volumen de personas que
trabajan en una compañía. Mientras mayor sea el número mayor el nivel de
conocimiento de los métodos ágiles.
5. Los proyecto que usan métodos ágiles han logrado un nivel de madurez mayor que
solo proyectos piloto
96
6. Los beneficios tangibles que se reportan, 90% incremento de productividad, 85%
reducción de defectos de software, 83% aceleración de tiempo para poner en el
mercado el producto, 66% reducción de costo.
7. Un caso de estudio que muestra el éxito en el área aeroespacial con la empresa
Boeing. El
97
8. Técnicas que son más usadas, planeación iterativa (65%), pruebas de unidades de
desarrollo (60%), discusión diaria (55%), planeación de entregables (54%),
integración continua (50%).
9. Las metodologías más usadas
10. Han logrado pasar el abismo los métodos ágiles y no quedar en ser algo para
visionarios, al parecer ha pasado esa barrera.
98
11. Veamos ahora que industrias han adoptado los métodos ágiles
12. La satisfacción en el trabajo es mayor en un esquema ágil
99
Actividad 1. Reflexión sobre uso de métodos ágiles
Objetivo. El alumno reflexionará sobre la eficacia de los métodos ágiles.
Especificaciones.
Responder al cuestionario y hacer un debate en clase.
Ejemplo de Resultados.
1. ¿Los métodos ágiles son buenos por las prácticas que promueven o por qué sus
promotores simplemente son muy buenos desarrolladores?
Para lograr resultados se requiere disciplina, y mucha practica, es por eso que un
método ágil sólo será exitoso si se adopta de forma correcta.
Un proceso ágil va a funcionar con personas competentes y por encima del
promedio [1].
2. ¿Qué consecuencias negativas puede haber en la empresa respecto al nivel de
los profesionales que se requieren para el uso de métodos ágiles?
Dificultad para conseguir personal, ya que será muy complicado encontrar
equipos de desarrolladores que funcionen en el médelo ágil. Afectar autoestima
de tu personal al ser un esquema de selección de personal muy elitista lo cual
afectará la moral de los desarrolladores no-áiles.
3. ¿Cómo se va afectada la toma de decisiones?
Los desarrolladores de software y el cliente toman la mayoría de las decisiones.
Esto crea un ambiente plural de toma de decisiones con diferente historial,
actitud, metas, y disposición cognitiva. La toma de decisiones es más
100
4.
5.
6.
7.
complicada comparada con un enfoque tradicional donde el administrador del
proyecto toma la mayoría de las decisiones.
¿Cuál es el nivel de dificultad al adoptar esta cultura de toma de decisiones?
Una organización que adopta un modelo ágil debe considerar que se requiere de
un esfuerzo enorme en tiempo y paciencia para lograr instaurar la cultura de
confianza y respeto necesarios para que un esquema de toma de decisiones ágil
funcione.
¿Cómo debe ser el cliente de un desarrollo ágil?
El éxito de un desarrollo ágil depende de encontrar clientes que van a participar,
de manera activa, en el proceso de desarrollo. Más aún, los clientes deben ser:
colaboradores, representativos, poseer autoridad en la toma de decisiones,
comprometidos, y poseer conocimiento. Un perfil complicado para encontrar,
sobre todo en sistemas complejos.
¿Enumerar algunas ventajas del uso de métodos ágiles?
Algunas fortalezas de este modelo son:
• Los modelos ágiles enfatizan las comunicaciones cara a cara en vez de la
documentación.
• Los modelos ágiles son una manera efectiva de trabajar en conjunto para
alcanzarlas necesidades de las partes interesadas en el proyecto.
• Se puede decir que el modelo ágil, es una metodología muy práctica a la
hora de tener que diseñar modelados y documentación, ya que proporciona
documentación, e información sobre cómo poder realizarlos de una manera
ágil, logrando entregar modelos y documentos que realmente sean de
importancia para el usuario y eliminando los datos que sean innecesarios.
• El resultado final es un software de alta calidad en el menor tiempo posible y
un cliente satisfecho.
¿Enumerar algunas limitantes de los métodos ágiles?
Algunas debilidades de este modelo son:
• Combinado con la preferencia por las comunicaciones frente a frente,
generalmente los métodos ágiles son criticados y tratados como
"indisciplinados" por la falta de documentación técnica.
• Es un complemento a los métodos existentes, no es una metodología
completa.
• Los modelos ágiles no son un proceso de desarrollo de software completo,
donde no incluye las actividades de programación, las actividades de prueba,
no cubre la gestión de proyectos, la implementación del sistema, las
operaciones del sistema, el soporte del sistema u otros elementos
relacionados con la realización de proyectos que no sean la documentación y
el modelado.
• Hay una falta de énfasis en el diseño y en la documentación necesarios.
101
• Sólo los programadores experimentados pueden tomar las decisiones
necesarias durante el proceso de desarrollo.
• El problema con los modelos ágiles adaptables es que requieren un equipo
eficaz de desarrollo tanto a nivel individual como de equipo.
8. ¿Qué problemas se puede enfrentar una organización para adoptar un enfoque
ágil desde el punto de vista tecnológico?
Las herramientas de soporte juegan un papel crítico en el éxito de la
implementación de un software basado en la metodología ágil. Las
organizaciones que busquen adoptar metodologías ágiles deben invertir
en herramientas que apoyen y faciliten el rápido desarrollo iterativo, gestión de
versiones / configuración, refactorización, y otras técnicas ágiles. Por supuesto,
las herramientas por sí solas no pueden hacer que el desarrollo de software con
éxito. En una organización la tecnología existente puede afectar los esfuerzos
para emigrar hacia las metodologías ágiles. Para las empresas que confían
únicamente en tecnologías de mainframe puede resultar difícil la emigración
hacia los métodos ágiles en comparación con los que utilizan en el
desarrollo Orientado a Objetos.
9. ¿Cuál de las siguientes aseveraciones es verdadera?
a) equipos contentos equipos productivos –Mito
b) equipos contentos baja rotación de personal – Hecho que impacta la
economía de la empresa ya que la rotación de personal tiene un costo de
70% a200% en el salario anual de los empleados.
10. ¿Cuál de las siguientes aseveraciones es verdadera?
Es posible diagramar a priori y en detalle la totalidad del ciclo de vida y sus
artefactos- Falso
El seguimiento de un plan garantiza la excelencia de un proceso de desarrolloFalso
El diseño previo implica corrección arquitectónica y/o mejora las cualidades nofuncionales- Falso
El diseño previo incide sobre la calidad del código- Falso
La semántica de los lenguajes de diseño mapea punto a punto sobre la semántica
de los frameworks de programación- Falso
El diseño y el plan documentan el desarrollo real y/o facilitan su mantenimiento
o transferencia - Falso
Recursos.
R1) Quiz. Material descriptivo de métodos ágiles de ingeniería de software.
R2) Referencia [7]
R3) Internet
102
6.6 Referencias Capítulo 6.
Referencias Bibliográficas.
[1] SridharNerur, RadhaKantaMahapatra, George Mangalaraj
Challenges of migrating to agile methodologies
Communications of the ACM - Adaptive complex enterprises
Volume 48 Issue 5, May 2005
[2] Desarrollo de Software mediante Metodologías Ágiles.
http://www.snip.gob.ni/Xdc/Agile/Agile.htm
[3] Capitulo1
Ken Schwaber, Mike Beedle
Agile Software Development with Scrum
Prentice Hall
[4] Carlos Reynoso
Métodos Ágiles en desarrollo de software
UNIVERSIDAD DE BUENOS AIRES
http://carlosreynoso.com.ar/archivos/arquitectura/Metodos-Agiles.PDF
[5] Kent Beck.
Extreme Programming Explained: Embrace Change. Reading,
Addison Wesley, 1999.
[6] Letelier P., Penadés C.,
Metodologías ágiles para el desarrollo de Software: eXtremeProgramming (XP),
Universidad Politécnica de Valencia
Disponible en: http://www.willydev.net/descargas/masyxp.pdf
[7] GrigoriMelnik
Microsoft p&p summit, 2007
Empirical Evidence Of Agile Methods
http://www.slideshare.net/melnik/empirical-evidence-of-agile-methods-190997
[8] Carlos Reynoso
Método heterodoxos en Desarrollo de Software (Survey de Métodos Ágiles)
[9] Alistair Cockburn.
“Crystal Clear. A human-powered methodology for small teams, including The Seven
Properties of Effective Software Projects”.Borrador.
Humans and Technology, versión del 27 de febrero de 2002.
[10] PekkaAbrahamsson.
“Agile Software development methods: A minitutorial”.
VTT Technical Research Centre of Finland,
http://www.vtt.fi/virtual/agile/seminar2002/Abrahamsson_agile_methods_minitutorial.pdf
2002.
103
Autores de la presente Publicación:
M.C. Alma Delia Ambrosio Vázquez.
[email protected]
C.Dr. Mario Anzures García.
[email protected]
Dra. Etelvina Archundia Sierra.
[email protected]
M.C. María del Rocío Boone Rojas
[email protected]
Dra. Maya Carrillo Ruiz.
[email protected]
Dr. Juan Manuel González Calleros
[email protected]
Dra. Josefina Guerrero García
[email protected]
M.C. María del Consuelo Molina García.
[email protected]
Dra. María de la Concepción Pérez de Celis Herrero.
[email protected]
Dra. María Josefa Somodevilla García.
[email protected]
Con la colaboración como autor de:
M.E. María del Carmen Cerón Garnica.
[email protected]
Otoño 2011
104
Colofón
Tópicos Selectos para la Enseñanza de la Ingeniería de Software:
Introducción a la Ingeniería de Software.
Libro publicado electrónicamente, 3.03 MB, almacenado en un CD en formato PDF.
Se terminó de reproducir el 19 de Agosto de 2011,
en el laboratorio de Bases de Datos de la Facultad de Ciencias de la Computación,
ubicado en la 14 Sur y la Avenida San Claudio, Ciudad Universitaria, Puebla, Pue. Mex.
Teléfono 01-222-229 55 00 Ext. 7208.
Responsable de la publicación, M.C. María del Rocío Boone Rojas.
Tiraje 50 ejemplares.
No. De Páginas 105
105
Descargar