We present a novel and general technique for automated test generation that combines tight bounds with incremental SAT solving. The proposed technique uses incremental SAT to build test suites ...targeting a specific testing criterion, amongst various black-box and white-box criteria. As our experimental results show, the combination of tight bounds with incremental SAT, and the testing criterion driven approach implemented in our prototype tool FAJITA, enable us to effectively generate test suites for container classes with rich contracts, more efficiently than other state-of-the-art tools.
We propose complementing tabular notations used in requirements specifications, such as those used in the SCR method, with a formalism for describing specific, useful, subclasses of computations, ...i.e., particular combinations of the atomic transitions specified within tables. This provides the specifier with the ability of driving the execution of transitions specified by tables, without the onerous burden of having to introduce modifications into the tabular expressions; thus, it avoids the problem of modifying the object of analysis, which would make the analysis indirect and potentially confusing. This is useful for a number of activities, such as defining test harnesses for tables, and concentrating the analyses on particular, interesting, subsets of computations. Unlike previous approaches, ours allows for the description of a wider class of combinations of the transitions defined by tables, by means of a rich operational language. This language is an extension of the Alloy language, called DynAlloy, whose notation is inspired by that of dynamic logic.
The use of DynAlloy enables us to provide an extra mechanism for the analysis of tabular specifications, based on SAT solving. We will illustrate this and the features of our approach via an example based on a known tabular specification of a simple autopilot system.
We report on our experience in teaching introductory courses on programming based on formal specification and program calculation, in two different Computer Science programmes. We favour the use of ...logic as a tool, the notion of program as a formal entity, as well as some issues associated with efficiency. We also review and use in practical cases some program transformation strategies, such as generalisation, tupling and modularisation. We describe our approach, its advantages and drawbacks. Furthermore, we present some preliminary results from an ongoing qualitative research which intends to characterise, describe and understand the students' experiences when taking these courses.
Introducción: El contexto actual demanda incorporar el manejo de situaciones de catástrofes en la formación médica. Se presenta una experiencia original en la enseñanza de emergencias y desastres, en ...la carrera de medicina, con uso de metodologías didácticas activas. Sujetos y métodos: El plan didáctico del curso se diseñó incorporando el uso de metodologías de trabajo colaborativo (desarrollo de casos, team based learning, juego de roles), uso de tecnologías de información y comunicación, visitas sobre el terreno y simulaciones. Para cada actividad docente, se elaboró material y pautas de evaluación correspondientes. El curso se evaluó con las calificaciones de los estudiantes, su grado de satisfacción y sus comentarios. Adicionalmente, se realizó un análisis de fortalezas y debilidades por parte del equipo docente, planteándose un plan de mejoras. Resultados: Las calificaciones del curso (escala de 1 a 7; n = 58) fueron altas (media: 6,1; rango: 5,7-6,5). Se observó un alto grado de satisfacción con las estrategias docentes utilizadas (valoraciones del 85-95%). Según el parecer de los estudiantes, se lograron los objetivos de aprendizaje en un 88% (trabajo en equipo) y 93% (conceptualización y aplicación). Conclusión: El uso de metodologías activas motiva y favorece el aprendizaje, lo que se traduce en altas calificaciones y grado de satisfacción de los estudiantes, así como una buena percepción de utilidad respecto de su futuro desarrollo profesional.