1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Entornos de Desarrollo de Software Carrera: Ingeniería Informática Ingeniería en Sistemas Computacionales Ingeniería en Tecnologías de la Información y Comunicaciones Clave de la asignatura: ISF-1301 (Créditos) SATCA1 3 - 2 – 5 2.- PRESENTACIÓN Caracterización de la asignatura. Ésta materia forma parte del módulo de especialidad de ingeniería de software. Se recomienda que sea la primera del módulo. Tiene un enfoque hacia los aspectos que son críticos en un ambiente de desarrollo de software, para lograr productos de calidad. En ella se tocan aspectos relacionados con el capital humano inmerso en la producción de software y los procesos que ayudan a crear software que dé soluciones a necesidades reales. Esta asignatura aporta al perfil del Ingeniero en Informática la capacidad para: 1 Desarrollar e implementar software para el control y la toma de decisiones basado en estándares. Concebir, desarrollar y mantener sistemas, servicios y aplicaciones informáticas empleando los métodos de la ingeniería del software como instrumento para el aseguramiento de su calidad. Utilizar tecnologías y herramientas actuales y emergentes acordes a las necesidades del entorno. Conocer de las materias básicas y tecnologías, que capaciten para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las que les doten de una gran versatilidad para adaptarse a nuevas situaciones. Resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática. Identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales. Sistema de asignación y transferencia de créditos académicos Comprender y aplicar los principios y prácticas de las organizaciones, de forma que puedan ejercer como enlace entre las comunidades técnica y de gestión de una organización y participar activamente en la formación de los usuarios. Identificar los diferentes entornos de desarrollo de software y su importancia a lo largo del proceso de desarrollo. Intención didáctica. El enfoque de la asignatura por su carácter práctico, requiere de un proceso de permanente participación activa del estudiante, por esta razón es indispensable la figura de un facilitador que apoye y guie con los conocimientos técnicos que se requieren, para alcanzar los objetivos de la materia. La evaluación debe ser continua y permanente por lo que se debe considerar el desempeño en cada una de las actividades de aprendizaje, haciendo especial énfasis en la participación en clase y en la lectura y el análisis de textos. Es importante relacionarla con otras asignaturas, siendo de utilidad para la integración de conocimientos. El facilitador de la materia deberá ser conocedor de la disciplina que está bajo su responsabilidad, haber participado en proyectos de desarrollo, y sobre todo, guiar los estudiantes en el logro de procesos ordenados y disciplinados de creación de software. El estudio de esta materia se divide en 4 unidades donde el estudiante podrá conocer y participar en prácticas de desarrollo que conduzcan a la producción ordenada y cierta de software de calidad. En la primera unidad se acerca al estudiante a los aspectos básicos que deben considerarse acerca del personal que se involucra en el proceso de desarrollo de software y la organización indispensable de los grupos y equipos de trabajo inherentes al proceso. Puntos como comunicación efectiva y habilidades y competencias del personal desarrollador en los diferentes entornos de desarrollo deben hacerse conscientes en el estudiante. La segunda unidad tiene un enfoque hacia el entorno individual del desarrollador al participar en el proceso de producción de software. Se enfatiza también la importancia de conocerse como desarrollador en lo personal, para lograr mejoras constantes y aplicar estándares en las prácticas personales que den soporte al trabajo de equipo y al logro de resultados exitosos a nivel organizacional. En la unidad 3 se trata el desarrollo de software desde un enfoque grupal y se remarca la importancia de aplicar el desarrollo de software en equipo, para incrementar las probabilidades de producción de software de calidad bajo esquemas que apoyen en general al funcionamiento y éxito de las organizaciones productoras de software. La unidad 4 tiene una visión macro del desarrollo de software a nivel organizacional. En ella se tratan puntos como la madurez que deben alcanzar los procesos de desarrollo, para generar ambientes de certidumbre y éxito en los procesos. 3.- COMPETENCIAS A DESARROLLAR Competencias específicas Aplica los elementos y conceptos integrados en los procesos de desarrollo de software basados en prácticas y estándares convenientes y adecuados para los diferentes entornos de desarrollo de software. Competencias genéricas Competencias instrumentales Capacidad de análisis y síntesis Capacidad de organizar y planificar Conocimientos básicos de la carrera Comunicación oral y escrita en su propia lengua Conocimiento de una segunda lengua Habilidades de gestión de información(habilidad para buscar y analizar información proveniente de fuentes diversas Solución de problemas Toma de decisiones. Competencias interpersonales Capacidad para trabajar en equipo. Capacidad crítica y autocrítica. Habilidades interpersonales Habilidad para trabajar en un ambiente laboral Compromiso ético. Competencias sistémicas Habilidades de investigación. Capacidad de aplicar los conocimientos en la práctica. Liderazgo. Capacidad de generar nuevas ideas (creatividad). Iniciativa y espíritu emprendedor. Búsqueda de logro. 4.- HISTORIA DEL PROGRAMA Lugar y fecha de elaboración o revisión Instituto Tecnológico de Morelia, Morelia Michoacán, del 9 al 13 de enero del 2012. Observaciones (cambios y justificación) M.A. Laura Nelly Alvarado Diseño Curricular de Zamora Módulos de Especialidad de M.C. José Alfredo Jiménez las carreras del Depto. de Murillo Sistemas y Computación Ing. Ignacio Aguilar Magaña M.C. Juan Carlos Olivares Rojas Lic. Jorge Sánchez Vega M.I. Adrián Núñez Vieyra Participantes 5.- OBJETIVO(S) GENERAL(ES) DEL CURSO (competencia específica a desarrollar en el curso) Aplicar los elementos y conceptos integrados en los procesos de desarrollo de software basados en prácticas y estándares convenientes y adecuados para los diferentes entornos de desarrollo de software. 6.- COMPETENCIAS PREVIAS Conocimiento y aplicación de los principios, metodologías y ciclos de vida de la ingeniería de software. Aplicar un lenguaje orientado a objetos para la solución de problemas. Identificar los tipos de organización así como sus estructuras y funciones correspondientes. Observar su entorno e identificar oportunidades de desarrollo de proyectos generando ideas innovadoras de la aplicación de la investigación en su área profesional. Capacidad para comprender la importancia de la negociación, los hábitos de trabajo efectivos, el liderazgo y las habilidades de comunicación en todos los entornos de desarrollo de software. Utilizar en forma adecuada el lenguaje técnico-científico de su disciplina. Elaborar documentos académicos. Hacer presentaciones orales. 7.- TEMARIO Unidad Temas 1 Aspectos básicos del personal desarrollador y grupos de trabajo Subtemas 1.1 Comunicación, toma de decisiones y estilos de trabajo. 1.2 Factores Cognoscitivos y sociales 1.3 Habilidades y competencias personales y en equipo. 1.4 Organización de equipos desarrolladores. 1.5 Entornos de desarrollo (personal, equipo y organización) 2 Entorno de desarrollo personal 3 Entorno de desarrollo en equipo 3.1 Introducción y antecedentes de TSP 3.2 Principios y objetivos de TSP 3.3 Ciclo de vida TSP 3.4 Relación PSP-TSP 3.5 Ventajas y Desventajas de PSP-TSP 3.6 Entornos ágiles de desarrollo 4 Entorno de desarrollo organizacional 2.1.1 Introducción y antecedentes CMM (Capability Maturity Model) 2.1.2 Procesos y Niveles de CMM 2.1.3 CMM vs, CMMI 2.1.4 Introducción y antecedentes MOPROSOFT 2.1.5 Principios y categorías procesos de MOPROSOFT 2.1.6 Procesos y niveles MOPROSOFT Introducción y antecedentes de PSP Principios y objetivos de PSP Niveles de PSP Ciclo de Vida de PSP Mejora del proceso de desarrollo con PSP de de de de 8.- SUGERENCIAS DIDÁCTICAS (desarrollo de competencias genéricas) Propiciar actividades de búsqueda, selección y análisis de información en distintas fuentes. Propiciar el uso de las nuevas tecnologías en el desarrollo de la asignatura. Fomentar actividades grupales que propicien la comunicación, el intercambio argumentado de ideas, la reflexión, la integración y la colaboración de y entre los estudiantes. Propiciar, en el estudiante, el desarrollo de actividades intelectuales de inducción-deducción y análisis-síntesis, la cuales lo encaminan hacia la investigación, la aplicación de conocimientos y la solución de problemas. Desarrollar actividades de aprendizaje que propicien la aplicación los conceptos, modelos y metodologías que se van aprendiendo en el desarrollo de la asignatura. Propiciar el uso adecuado de conceptos y de terminología científicotecnológica. Llevar a cabo actividades prácticas que promuevan el desarrollo de habilidades para la experimentación, tales como: observación, identificación manejo y control de de variables y datos relevantes, planteamiento de hipótesis, de trabajo en equipo. Observar y analizar fenómenos y problemáticas propias del campo ocupacional. Relacionar los contenidos de esta asignatura con las demás del plan de estudios para desarrollar una visión interdisciplinaria en el estudiante. En coordinación con los estudiantes elaborar instructivos, demostraciones, manuales o cualquier material didáctico que auxilie la impartición de la asignatura. 9.- SUGERENCIAS DE EVALUACIÓN La evaluación debe ser continua y permanente por lo que se debe considerar el desempeño en cada una de las actividades de aprendizaje, haciendo especial énfasis en: Participación activa y crítica en clase. Ejercicios realizados en clase. Información obtenida durante las búsquedas encomendadas. Lectura y análisis de textos. Autoevaluación, Coevaluación y evaluación de las actividades. Reportes que serán entregados en tiempo y forma, cumpliendo las reglas gramaticales del idioma. Exposiciones por parte del estudiante. Resultados obtenidos en los exámenes de conocimientos que se apliquen. 10.- UNIDADES DE APRENDIZAJE Unidad 1: Aspectos básicos del personal desarrollador y grupos de trabajo Competencia desarrollar específica a Actividades de Aprendizaje Identifica los aspectos fundamentales, tanto grupales como individuales de las personas involucradas en el proceso de desarrollo de software, como parte de la organización. Realizar una síntesis de los aspectos importantes de comunicación, toma de decisiones y estilos de trabajo del personal desarrollador de software. Investigar y discutir la importancia de los factores Cognoscitivos y sociales involucrados en el desempeño del desarrollador. Investigar en diferentes fuentes de información la habilidades y competencias personales y en equipo deseables en el personal de las organizaciones desarrolladoras de software. Realizar un reporte de videos tratando la temática de la unidad. Investigar diferentes formas de organización de equipos desarrolladores. Escribir un ensayo sobre los diferentes entornos de desarrollo (personal, equipo y organización) y cómo se ven afectados entre sí. Unidad 2: Entorno de desarrollo personal Competencia específica a desarrollar Actividades de Aprendizaje Identifica, analiza y utiliza prácticas de desarrollo de software personal. Investigar y discutir en grupos los antecedentes y surgimiento de PSP Consultar en al menos 2 fuentes de información y sintetizar los principios y objetivos de PSP Hacer una tabla de los niveles que establece PSP Discutir sobre las especificaciones de cada nivel de PSP Destacar las fases del ciclo de vida que propone PSP Reflexionar y hacer un escrito sobre la ayuda que puede brindar PSP en los procesos de desarrollo de software. Debatir en grupos sobre las ventajas y desventajas de aplicar PSP Participar en 2 actividades utilizando PSP Unidad 3: Entorno de desarrollo en equipo. Competencia específica a desarrollar Actividades de Aprendizaje Identifica, analiza y utiliza prácticas de desarrollo de software en equipo. Investigar y discutir en grupos los antecedentes y surgimiento de TSP Consultar en al menos 2 fuentes de información y sintetizar los principios y objetivos de TSP Destacar las fases del ciclo de vida que propone TSP Reflexionar y hacer un escrito sobre la ayuda que puede brindar TSP en los procesos de desarrollo de software Debatir en grupos sobre las ventajas y desventajas de aplicar TSP Participar en 2 actividades utilizando TSP Discutir en equipos y luego de forma grupal la relación entre PSP-TSP Redactar por equipos las conclusiones de la actividad anterior Investigar el tema Desarrollo ágil y hacer una síntesis de los puntos fundamentales de esta filosofía. Unidad 4: Entorno de desarrollo organizacional. Competencia específica a desarrollar Actividades de Aprendizaje Identifica, analiza y utiliza prácticas de desarrollo de software en el contexto de la organización y el negocio. Leer y resumir material escrito y en video sobre el surgimiento de CMM (Capability Maturity Model) Hacer un reporte de investigación de los Procesos y Niveles de CMM Investigar las características y surgimiento de CMMI Establecer la relación existente entre CMM y CMMI Investigar sobre organizaciones desarrolladoras de software certificadas en CMM y CMMI. Investigar y entregar reporte sobre los antecedentes de MOPROSOFT Investigar y discutir los principios y categorías de procesos de MOPROSOFT En equipos discutir y plasmar de forma escrita los procesos y niveles de MOPROSOFT Discutir la importancia de MOPROSOFT en la actualidad Reflexionar sobre la relación entre PSPTSP-CMM Investigar sobre organizaciones desarrolladoras de software certificadas en MOPROSOFT. Visitar al menos una empresa certificada en sus procesos de desarrollo de software. 11.- FUENTES DE INFORMACIÓN 1. Pressman, Roger S. Ingeniería del Software. Ed. McGraw-Hill. 2010. 2. Sommerville, Ian. Ingeniería del Software. Ed. Pearson. 2005. 3. Calero Coral, Moraga Ma. Angeles, Piattini Mario G..Calidad del producto y del proceso. Editorial Ra-Ma. 2010. 4. Club BPM. El libro del BPM 2010. Editorial Club BPM. 2010. 5. Watts S. Humphrey. PSP: A Self-Improvement Process for Software Engineers. Editorial Pearson. 2005. 6. Tuya Javier, Ramos Román Isabel, Dolado Cosín Javier. Técnicas Cuantitativas para la Gestión en la Ingeniería de Software. Editorial Netbiblo. 2007. 7. Mall Rajib. Fundamentals of Software Engineering. Editorial PHI. 2009 8. Watts S. Humphrey. TSP: Coaching Development Teams. Editorial AddisonWesley. 2006 9. Watts S. Humphrey. TSP--leading a development team. Editorial AddisonWesley. 2006 10. Evans Isabel. Achieving software quality through teamwork. Editorial Artech House , inc. 2004 11. Mochi Alemán Prudencio Óscar. La industria del software en México y en el contexto internacional y latinoamericano. Editorial Crim. 2006 12. Oktaba Hanna. Software Process Improvement for Small and Medium Enterprises: Techniques and Case Studies. Editorial Igi Global. 2008 13. Garcia Suzanne, Turner Richard. CMMI survival guide: just enough process improvement. Editorial Addison-Wesley. 2006 12.- PRÁCTICAS PROPUESTAS Aplicar prácticas de PSP en actividades de desarrollo de software. Aplicar prácticas de TSP en actividades de desarrollo de software. Aplicar prácticas de CMM en actividades de desarrollo de software. Aplicar prácticas de CMMI en actividades de una organización hipotética. Caracterizar prácticas de desarrollo dentro de los niveles de CMM.