Cali Primer Parcial Febrero 24 de 2011 Desarrollo formal de software Cali El examen es absolutamente individual. No se permite ninguna interacción con sus compañeros, por mı́nima que sea. Cualquier infracción a este requisito será penalizado con la máxima sanción prevista en el reglamento. Puede consultar textos y notas de clase, pero no puede usar computador. La claridad es fundamental. Respuestas que no lo sean no tendrán puntos, independientemente de que sean o no correctas. Soluciones que no sigan estrictamente la metodologı́a del curso, tampoco tendrán valor. Tiempo disponible para el examen: dos horas Nombre: Pregunta 1 2 3 4 5 6 7 8 9 Total Puntos 7 12 16 8 7 10 20 10 10 100 Cal. Modelamiento formal de Sistemas en eventB Hay un terminal de buses con personas que entran y salen. Dentro del terminal hay distintas ventanillas de atención. Cada ventanilla vende tiquetes para una compañı́a de buses. Algunas personas compran tiquetes en alguna ventanilla. Hay adicionalmente un espacio en el terminal con salas de espera. Para cada compañı́a de buses hay una sala de espera. Solamente las personas que han comprado un tiquete pueden entrar al espacio de salas de espera. Cualquier persona puede salir de la sala de espera y volver a entrar, si quiere hacerlo. En la parte de afuera de cada sala de espera hay un sitio en el que se parquea un bus de la compañı́a de esa sala. Se observa que cuando hay un bus parqueado las personas pueden entrar en él, siempre y cuando tengan un tiquete y el tiqueta sea de la compañı́a del bus en el que entran. Cada compañı́a tiene buses de cierto tamaño. Todos los buses de una compañı́a son del mismo tamaño. No puede haber en el bus más personas que el cupo del bus. Se observa que los buses entran vacı́os y salen con personas. Se desea observar las personas en el terminal, las que hayan comprado un tiquete, las que estén en cada sala de espera y las que se hayan montado en el bus si éste todavı́a no ha salido. Un bus no sale si todavı́a hay personas con tiquetes para ese bus y el bus tiene cupo disponible. Nunca sale vacı́o. Si un bus sale y habı́a personas con tiquete que no pudieron viajar, esas personas tienen prelación para el siguiente bus. Usted debe diseñar un modelo para este sistema. Su diseño debe separar la especificación en dos máquinas, una abstracción y un refinamiento. Es muy importante que su abstracción sea simple y solamente incluya aspectos fundamentales. El refinamiento debe completar un diseño que satisfaga todos los requerimientos. La abstracción debe incluir un evento “entrar a sala de espera”. Abstracción Página 1 de 2 Desarrollo formal de software Primer Parcial 1 (7 Puntos) Escriba cuidadosamente los requerimientos de la abstracción. 2 (12 Puntos) Especifique el contexto. Explique sus conjuntos, constantes y axiomas 3 (16 Puntos) Escriba las variables y explique su significado. Escriba el invariante y justifı́quelo 4 (8 Puntos) Escriba completamente los eventos (no olvide la inicialización). 5 (7 Puntos) Escriba las obligaciones de prueba de consistencia del evento “comprar tiquete”. Justifique que se cumplen Refinamiento 6 (10 Puntos) Escriba cuidadosamente los requerimientos del refinamiento. Especifique el contexto nuevo (si lo hay). Explique el significado de cada componente y de sus propiedades (axiomas) 7 (20 Puntos) Escriba las variables nuevas (si las hay) y explique su significado. Escriba el invariante de encadenamiento y justifı́quelo 8 (10 Puntos) Escriba completamente los eventos. Incluya la inicialización. 9 (10 Puntos) Escriba las obligaciones de prueba de consistencia (o sea, la prueba de invariante de encadenamiento) del evento refinado “entrar a sala de espera”. Justifique que estas se cumplen Página 2 de 2