Universidad Católica San Pablo Facultad de Ingeniería y Computación Programa Profesional de Ciencia de la Computación SILABO CS392. Tópicos en Ingeniería de Software (Electivo) 2013-2 1. DATOS GENERALES 1.1 CARRERA PROFESIONAL : Ciencia de la Computación 1.2 ASIGNATURA : CS392. Tópicos en Ingeniería de Software 1.3 SEMESTRE ACADÉMICO : 8vo Semestre. 1.4 PREREQUISITO(S) : CS390. Ingeniería de Software II. (6 to Sem), CS391. Calidad de Software. (7 mo Sem) 1.5 CARÁCTER : Electivo 1.6 HORAS : 1 HT; 2 HP; 2 HL; 1.7 CRÉDITOS : 3 2. DOCENTE Prof. Percy Nicanor Cornejo Salazar Ingeniero de Sistemas, Universidad Católica Santa María, Arequipa, Perú (1998) 3. FUNDAMENTACIÓN DEL CURSO Este curso es útil en la formación profesional para que el alumno tenga contacto con tópicos especializados en el área de Ingeniería de Software. 4. SUMILLA 1. SE/Confiabilidad del Software.2. SE/Métodos Formales.3. SE/Computación Basada en Componentes. 5. Los alumnos deben conocer los modelos de confiabilidad de software y la aplicación de los métodos de análisis probabilísticas para un sistema de software. Los alumnos deben identificar y aplicar la redundancia y tolerancia a fallas para un sistema de software. El alumno aplicará las diferentes técnicas de verificación formal a software con baja complejidad. Los alumnos utilizarán un lenguaje de especificación formal para especificar un sistema de software y demostrará los beneficios de una perspectiva de calidad. Familiarizar a los alumnos con los principios reconocidos para la construcción de componentes de software de alta calidad. Aplicar métodos orientados a componentes para el diseño de un software. 1
6. CONTRIBUCIÓN A LA FORMACIÓN PROFESIONAL Y FORMACIÓN GENERAL Esta disciplina contribuye al logro de los siguientes resultados de la carrera: b) Analizar problemas e identificar y definir los requerimientos computacionales apropiados para su solución. [Nivel Bloom: 4] c) Diseñar, implementar y evaluar un sistema, proceso, componente o programa computacional para alcanzar las necesidades deseadas. [Nivel Bloom: 4] d) Trabajar efectivamente en equipos para cumplir con un objetivo común. [Nivel Bloom: 4] e) Entender correctamente las implicancias profesionales, éticas, legales, de seguridad y sociales de la profesión. [Nivel Bloom: 4] g) Analizar el impacto local y global de la computación sobre los individuos, organizaciones y sociedad. [Nivel Bloom: 3] h) Incorporarse a un proceso de aprendizaje profesional continuo. [Nivel Bloom: 4] i) Utilizar técnicas y herramientas actuales necesarias para la práctica de la computación. [Nivel Bloom: 3] k) Aplicar los principios de desarrollo y diseño en la construcción de sistemas de software de complejidad variable. [Nivel Bloom: 5] l) Desarrollar principios investigación en el área de computación con niveles de competividad internacional. [Nivel Bloom: 3] 7. S UNIDAD 1: SE/Confiabilidad del Software.(11 horas) Nivel Bloom: 4 Demostrar la habilidad para aplicar múltiples métodos para desarrollar estimadores de confiabilidad para un sistema de software. Identificar y aplicar redundancia y tolerancia a fallas para una aplicación de tamaño medio. Explicar los problemas que existen para lograr altos niveles de confiabilidad. Modelos de confiabilidad de software. Redundancia y tolerancia a fallas. Clasificación de defectos. Métodos de análisis probabilísticos. Identificar métodos que lleven hacia la realización de una arquitectura de software que logre un nivel de confiabilidad específico. 2
UNIDAD 2: SE/Métodos Formales.(12 horas) Nivel Bloom: 2 Aplicar técnicas de verificación formal a segmentos de software con baja complejidad. Discutir el rol de las técnicas de verificación formal en el contexto de la validación de software y comparar los beneficios con los de model checking. Explicar los beneficios potenciales y los defectos de usar lenguajes de especificación formal. Crear y evaluar pre y post-aserciones para una variedad de situaciones desde lo simple hasta lo complejo. Conceptos de métodos formales. Lenguajes de especificación formal. Model checking. Especificaciones ejecutables y no ejecutables. Pre-aserciones y post-aserciones. Verificación formal. Tools en el soporte a métodos formales. Usar un lenguaje de especificación formal común, formular la especificación de un sistema de software y demostrar los beneficios desde una perspectiva de calidad. 3
UNIDAD 3: SE/Computación Basada en Componentes.(19 horas) Nivel Bloom: 4 Explicar y aplicar principios reconocidos para la construcción de componentes de software de alta calidad. Discutir y seleccionar una arquitectura, para un sistema basado en componentes, disponible para un escenario dado. Identificar el tipo de manejo de eventos implementado en una o mas APIs dadas. Explicar el rol de los objetos en sistemas middleware y la relación con componentes. Aplicar métodos orientados a componentes para el diseño de un rango de software incluyendo aquellos requeridos para transacciones concurrentes, servicios de comunicación confiables, servicios incluyendo interacción de bases de datos para consulta remota y administración de bases de datos, comunicación segura y acceso. Fundamentos. a) La definición y naturaleza de los componentes. b) Componentes e interfaces. c) Interfaces como contratos. d) Los beneficios de los componentes. e) Técnicas básicas f) Diseño de componentes y ensamblaje. g) Relaciones con el modelo cliente-servidor y con patrones. h) Uso de objetos y servicios del ciclo de vida del objeto. i) Uso de objetos brokers. j) Marshalling. Aplicaciones (incluyendo el uso de componentes para móviles). Patrones como son utilizados en análisis y diseño. Contexto de uso incluyendo arquitecturas empresariales. Arquitectura de sistemas basados en componentes. Diseño orientado a componentes. Entornos de aplicación. Manejo de eventos: detección, notificación y respuesta. Middleware. a) El paradigma orientado a objetos dentro del middleware. b) Agente de petición de objeto (Object request brokers). c) Monitores del procesamiento de transacciones. d) Sistemas de flujo de información (workflow). e) Estado del arte de las herramientas. 8. EVALUACIONES Evaluación Permanente 1 : 20 % Examen Parcial : 30 % Evaluación Permanente 2 : 20 % Examen Final : 30 % Referencias [Baugh, Jr., 1992] Baugh, Jr., J. W. (1992). Formal specification of engineering analysis programs. In Houstis, E. N., Rice, J. R., and Vichnevetsky, R., editors, Expert Systems for Numerical Computing. North-Holland. [Dean and Hinchey, 1996] Dean and Hinchey (1996). Formal methods and modeling in context. In Dean, C. N. and Hinchey, M. G., editors, Teaching and Learning Formal Methods. Academic Press. [Lau, 2003] Lau, K.-K. (2003). Component-based software development and logic programming. In ICLP, pages 103 108. Springer Verlag. 4
[Leavens and Sitaraman, 2000] Leavens, G. T. and Sitaraman, M., editors (2000). Systems. Cambridge University Press, New York, NY. Foundations of Component-Based [Neufelder, 1993] Neufelder, D. (1993). Ensuring Software Reliability. Marcel Dekker Incorporated. [Peled et al., 2001] Peled, D. A., Gries, D., and Schneider, F. B., editors (2001). Software reliability methods. Springer- Verlag New York, Inc., Secaucus, NJ, USA. 5