PROGRAMA DE ESTUDIO Fundamentos de ingeniería de software Programa Educativo: Licenciatura en Informática Administrativa Área de Formación : Sustantiva Profesional Horas teóricas: 2 Horas prácticas: 2 Total de Horas: 4 Total de créditos: 6 Clave: F1012 Tipo : Asignatura Carácter de la Obligatoria asignatura Programa elaborado por: Homero Alpuín Jiménez, Oscar Alberto Chávez Bosquez, Carlos Arturo Custodio Izquierdo, José Hernández Torruco Fecha de elaboración: 28/05/2010 Fecha de última actualización: 16/06/2010 Seriación explícita Asignatura antecedente Ninguna Si Asignatura Subsecuente Laboratorio de diseño de software Seriación implícita Si F1012 Fundamentos de ingeniería de software 1/10
Conocimientos previos: Se sugiere que tengan conocimientos de programación orientada a objetos, preferentemente en el desarrollo de aplicaciones. Es conveniente haber utilizado entornos de desarrollos integrados (IDE), ya que se aplicarán herramientas CASE que optimicen el proceso de desarrollo de software. Presentación El recurso invertido en el desarrollo de un software, se aplica principalmente en actividades de mantenimiento del mismo. Tomando como ejemplo al recurso del tiempo, se estima que el 40% se gasta en pruebas, un 35% en el diseño, un 20% en la implementación y un 5% en el análisis. Considerando que los errores típicos de la implementación (60% 70%) de un producto se deben a errores de especificación o de análisis, esto incrementa el costo del software al doble de lo estimado y aumente el tiempo de desarrollo. Por lo anterior, es importante que en el desarrollo de un software se utilicen los principios establecidos en ingeniería para obtener un software económico, confiable y eficiente. La ingeniería de software, ha venido evolucionando, haciendo que se utilicen mejores prácticas para el desarrollo de software. Uno de los paradigmas que integran las mejores prácticas es el paradigma orientado a objetos, el cual permite la utilización de la notación UML (Unified Modeling Language), una de las más usadas en la actualidad. Esto favorece el uso de herramientas CASE (Computer Aided Software Engineering), que apoyan al desarrollo de software en sus diversas fases. El propósito de la materia de fundamentos de la ingeniería de software es que el alumno conozca estas técnicas. Esta asignatura apoyará a las subsecuentes de laboratorio de diseño de software y laboratorio de construcción de ingeniería de software, en las cuales se consideran la aplicación de los elementos que integran a las diversas fases en el proceso de desarrollo de software. Esta asignatura corresponde a la formación sustantiva profesional. Se recomienda que se curse a partir del quinto ciclo de la carrera. F1012 Fundamentos de ingeniería de software 2/10
Objetivo General Aplicar los principios fundamentales y las mejores prácticas de la ingeniería de software en el desarrollo de software con calidad. Competencias que se desarrollaran en esta asignatura Identificar los principios y técnicas de la ingeniería de software en casos de estudio. Elegir los elementos de las disciplinas y las fases del proceso de desarrollo de software más adecuados para la solución de un problema. Aplicar las herramientas CASE que apoyen al proceso de desarrollo de software. Para el desarrollo de estas competencias se requieren las habilidades de análisis, y síntesis en la toma de decisiones, así como también actitudes creativas y participativas en el trabajo de equipo. Se necesitan valores de discreción, confidencialidad, respeto y honestidad. Competencias del perfil de egreso que apoya esta asignatura LIA: Identificar los conceptos principales de la ingeniería de software, los tipos de ciclos de desarrollo de software y los modelos de procesos de desarrollo, que existen en la actualidad que apoyen a la integración de aplicaciones para las organizaciones. Escenario de aprendizaje Aula, laboratorio de cómputo, sala audiovisual, trabajo de campo y biblioteca. F1012 Fundamentos de ingeniería de software 3/10
Perfil sugerido del docente El perfil ideal del docente de la asignatura de Fundamentos de ingeniería de software es un profesional egresado de Licenciatura en Informática, Sistemas Computacionales o áreas afines. Un perfil alternativo sería un profesional a nivel licenciatura con conocimientos y experiencia en el proceso de desarrollo de proyectos de software. Son actitudes necesarias en el docente de esta asignatura: Que promueva el aprendizaje participativo basado en proyectos y problemas. Que tenga facilidad de palabra para un buen desempeño en el desarrollo de sus actividades académicas y profesionales. Que respete las opiniones de los estudiantes. F1012 Fundamentos de ingeniería de software 4/10
Contenido Temático Unidad No. I Introducción a la ingeniería de software Objetivo particular Identificar los elementos básicos de la ingeniería de software y de los sistemas de información. Hrs. Estimadas 16 Temas Resultados del aprendizaje Sugerencias didácticas Estrategias y criterios de evaluación Glosario de términos de Presentación con los Estrategia: Portafolio de los principales conceptos principales conceptos de evidencias que contenga de este tema. la unidad todos los productos de la Mapas conceptuales que Debate donde se unidad. asocien los diversos discutan los conceptos Criterios de Evaluación: conceptos de este tema. esenciales Aplicación de la rúbrica Ensayos colaborativos Supervisión de Trabajos para la evaluación 1.1 El software 1.2 Factores de Calidad del Software. 1.3 Principales Problemas en el desarrollo de software 1.4 Qué es la ingeniería de software 1.5 El proceso de ingeniería de software, una visión general. 1.6 Concepto de sistema 1.7 Sistema de Información 1.8 Clasificación de los sistemas de información. 1.9 Elementos y estructura de un Sistema de información sobre los temas de la unidad Solución de problemas de estudio Solución de ejercicios propuestos. en equipo. problemas de estudio. ejercicios resueltos considerando los aspectos participativos, interactivos y cognitivos de cada alumno (se anexa ejemplo de rúbrica). F1012 Fundamentos de ingeniería de software 5/10
Unidad No. Objetivo particular II El ciclo de desarrollo de software Describir las fases de un proceso de desarrollo software y las disciplinas que las integran. Hrs. Estimadas 24 Temas 2.1 Análisis de requisitos 2.1.1 Técnicas de recolección de información. 2.1.2 Requisitos y análisis de los requisitos. 2.1.3 Documentos de especificación de requisitos 2.1.4 Análisis Estructurado 2.1.5 Aplicación de casos de uso 2.1.6 Prototipado 2.2 Diseño de Software 2.2.1 Proceso de diseño de software 2.2.2 Diseño Estructurado 2.2.3 Diseño orientado a objetos. 2.3.Pruebas de Software 2.3.1 Objetivos de la prueba. 2.3.2 Elementos de una prueba de software 2.3.3 Pruebas estructurales 2.3.4 Pruebas Funcionales Resultados del aprendizaje Glosario de términos de los principales conceptos vistos en este tema Mapas conceptuales que asocien a los diversos conceptos de este tema Ensayos sobre temas de interés asociados a esta unidad Presentación con diapositivas de un tema de interés de la unidad Solución de problemas de estudio Solución de ejercicios propuestos Sugerencias didácticas diapositivas que contengan los principales conceptos vistos en este tema Debate donde se discutan los conceptos esenciales Trabajo de equipo supervisado por el profesor problemas de estudio ejercicios resueltos Estrategias y criterios de evaluación Estrategia: Portafolio de evidencias que contenga todos los productos de la unidad Criterios de Evaluación: Aplicación de la rúbrica para la evaluación considerando los aspectos participativos, interactivos y cognitivos de cada alumno (se anexa ejemplo de rúbrica) F1012 Fundamentos de ingeniería de software 6/10
2.3.5 Pruebas de interfaces 2.3.6 Estrategias de pruebas. Unidad No. Objetivo particular III Modelos de procesos de software Comparar los diversos modelos de procesos de desarrollo que apoyan al proceso de desarrollo. Hrs. Estimadas 24 Temas Resultados del aprendizaje Sugerencias didácticas Estrategias y criterios de evaluación Glosario de términos de Estrategia: Portafolio de los principales conceptos diapositivas que evidencias que contenga de la unidad. contengan los principales todos los productos de la Mapas conceptuales que conceptos del tema unidad. asocien a los diversos Debate donde se Criterios de Evaluación: conceptos de este tema. discutan los conceptos Aplicación de la rúbrica Ensayos sobre los temas esenciales para la evaluación de los de interés asociados a Supervisión de trabajo en productos considerando esta unidad. equipo los aspectos 3.1 Principales estándares de modelos de procesos de desarrollo de software 3.1.1 CMMI 3.1.2 IEEE/ISO/IEC 12207 3.2.3.- ISO 9000 3.2 Modelos de ciclos de vida 3.2.1 Elementos de un modelo de ciclo de vida. 3.2.2 Modelo de cascada. 3.2.3 Modelo de prototipado. 3.2.4 Ciclos de vida Presentación con diapositivas de un tema de interés de la unidad. Desglose un proceso de desarrollo usando una herramienta CASE. Exposición de temas a través de diapositivas. Solución de problemas problemas de estudio Solución de ejercicios propuestos Conferencia acerca del cuidado, confidencialidad y seguridad de la información participativos, interactivos y cognitivos de cada alumno (se anexa ejemplo de rúbrica).. Entrega en tiempo y forma. F1012 Fundamentos de ingeniería de software 7/10
evolutivos 3.2.5 Ciclos de vida orientados a objetos. de estudio. Solución de ejercicios propuestos. Bibliografía básica Bush, M. & Dunaway, D. (2005). CMMI assessments, motivating positive change (SEI Series in Software Engineering). USA: Addison Wesley Chrissis, M., Konrad M. & Shrum S (2007).CMMI: guidelines for process integration and product improvement (SEI series in software engineering).usa: Addison Wesley Costa, D., Teniente E. (2003). Especificación de sistemas software en UML. Madrid: UPC. Debrauwer L. y Van der Heyde F. (2009). UML 2 Iniciación, ejemplos y ejercicios corregidos. Madrid: ENI Fowler, M. & Scott, K. (2000). UML gota a gota. Madrid: Addison Wesley Jacobson I., Booch G. & Rumbaugh J. (2006). El proceso unificado de desarrollo de software. Madrid: Addison Wesley O'Connor R., Baddoo N. & Cuadrado J. (2009): Proceedings de la 16th European Conference Eurospi 2009 en Alcala España: Software Process Improvement. Germany: Springer-Verlag. Pressman, Roger S. (2006), Ingeniería del Software: un Enfoque Práctico, México: McGraw Hill. Sommerville, Ian (2005), Ingeniería del software, México: Prentice Hall Bibliografía complementaria Kroll, P., Kruchten, P. & Booch P. (2003). The Rational Unified Process Made Easy: A Practitioner's Guide to the RUP. USA: Addison Wesley. Weitzenfeld A. (2005). Ingeniería de software orientada a objetos con UML, Java e Internet. México: Cengage F1012 Fundamentos de ingeniería de software 8/10
Learning Editores. Scott, K. (2001). The Unified Process Explained. USA: Addison Wesley Nota: Las referencias mencionadas en este programa que tienen más de 5 años, no cuentan con una nueva edición. Son clásicos que consideran los inicios de los aspectos relacionados con el UML y el proceso unificado, que tienen ejemplos didácticos muy adecuados para la aplicación de estos temas. F1012 Fundamentos de ingeniería de software 9/10
F1012 Fundamentos de ingeniería de software 10/10