41 research outputs found

    Concurrent system design: Applied mathematics & modeling in software engineering education

    Get PDF
    A hallmark of engineering design is the use of models to explore the consequences of design decisions. Sometimes these models are physical prototypes or informal drawings, but the sine qua non of contemporary practice is the use of formal, mathematical models of system structure and behavior. Whether circuit models in electrical engineering, heat-transfer models in mechanical engineering, or queuing theory models in industrial engineering, mathematics makes it possible to perform rigorous analysis that is the cornerstone of modern engineering. Until recently, such modeling was impractical for software systems. Informal models abounded, such as those created in UML1, but rigorous models from which one could derive significant properties were either so rudimentary or so tedious to use that it was difficult to justify the incremental benefit in other than the most critical of systems. In part this is a reflection of the relative immaturity of software engineering, but it also reflects a key distinction between software and traditional engineering: whereas the latter builds on numerical computation and continuous functions, software is more appropriately modeled using logic, set theory, and other aspects of discrete mathematics. Most of the models stress relationships between software components, and numerical computation is the exception rather than the norm. Recent advances in both theory and application have made it possible to model significant aspects of software behavior precisely, and to use tools to help analyze the resulting properties2,3,4. In this paper, we focus on a course developed by James Vallino and since taught and modified by Michael Lutz, to present formal modeling to our software engineering students at RIT. Our overall goals were three-fold: To acquaint our students with modern modeling tools, to connect the courses they take in discrete mathematics to real applications, and to persuade them that mathematics has much to offer to the engineering of quality software

    Practical verification strategy for refinement conditions in UML models

    Get PDF
    This paper presents an automatic and simple method for creating refinement condition for UML models. Conditions are fully written in OCL, making it unnecessary the application of mathematical languages which are in general hardly accepted to software engineers. Besides, considering that the state space where OCL conditions are evaluated might be too large (or even infinite), the strategy of micromodels is applied in order to reduce the search space. The overall contribution is to propitiate the performing of verification activities during the model-driven development process.1st International Workshop on Advanced Software Engineering: Expanding the Frontiers of Software Technology - Session 2: Software ModelingRed de Universidades con Carreras en Informática (RedUNCI

    Mathematics for the exploration of requirements

    No full text
    The exploration of requirements is as complex as it is important in ensuring a successful software production and software life cycle. Increasingly, tool-support is available for aiding such explorations. We use a toy example and a case study of modelling and analysing some requirements of the global assembly cache of .NET to illustrate the opportunities and challenges that mathematically founded exploration of requirements brings to the computer science and software engineering curricula

    Practical verification strategy for refinement conditions in UML models

    Get PDF
    This paper presents an automatic and simple method for creating refinement condition for UML models. Conditions are fully written in OCL, making it unnecessary the application of mathematical languages which are in general hardly accepted to software engineers. Besides, considering that the state space where OCL conditions are evaluated might be too large (or even infinite), the strategy of micromodels is applied in order to reduce the search space. The overall contribution is to propitiate the performing of verification activities during the model-driven development process.1st International Workshop on Advanced Software Engineering: Expanding the Frontiers of Software Technology - Session 2: Software ModelingRed de Universidades con Carreras en Informática (RedUNCI

    A Lightweight Approach for the Semantic Validation of Model Refinements

    Get PDF
    Model Driven Engineering proposes the use of models at different levels of abstraction. Step by step validation of model refinements is necessary to guarantee the correctness of the final product with respect to its initial models. But, given that accurate validation activities require the application of formal modeling languages with a complex syntax and semantics and need to use complex formal analysis tools, they are rarely used in practice. In this article we describe a lightweight validation approach that does not require the use of third-party (formal) languages. The approach makes use of the standard OCL as the only visible formalism, so that refinements can be checked by using tools that are fully understood by the MDE community. Additionally, for the efficient evaluation of the refinement conditions a hybrid strategy that combines model checking, testing and theorem proving is implemented. Correctness and complexity of the proposal are empirically validated by means of the development of case studies and a comparison with the Alloy analyzer.Laboratorio de Investigación y Formación en Informática Avanzad

    A Lightweight Approach for the Semantic Validation of Model Refinements

    Get PDF
    Model Driven Engineering proposes the use of models at different levels of abstraction. Step by step validation of model refinements is necessary to guarantee the correctness of the final product with respect to its initial models. But, given that accurate validation activities require the application of formal modeling languages with a complex syntax and semantics and need to use complex formal analysis tools, they are rarely used in practice. In this article we describe a lightweight validation approach that does not require the use of third-party (formal) languages. The approach makes use of the standard OCL as the only visible formalism, so that refinements can be checked by using tools that are fully understood by the MDE community. Additionally, for the efficient evaluation of the refinement conditions a hybrid strategy that combines model checking, testing and theorem proving is implemented. Correctness and complexity of the proposal are empirically validated by means of the development of case studies and a comparison with the Alloy analyzer.Laboratorio de Investigación y Formación en Informática Avanzad

    Utilizando contratos de reuso con alloy

    Get PDF
    El desarrollo de sistemas de software confiables exige la utilización de herramientas que posibiliten razonar rigurosamente acerca de su corrección y consistencia. Este tipo de análisis revela su importancia crítica cuando los sistemas evolucionan en el tiempo, sufriendo modificaciones que pueden alterar seriamente su eficacia o aún volverlos totalmente inútiles. El establecimiento del Proceso Unificado y el lenguaje UML como un estándar representan un avance, aunque insuficiente para alcanzar dichos objetivos. Más aún, el problema de la evolución ha recibido poco o ningún tratamiento en dicho contexto. En este trabajo se presenta una alternativa para avanzar en esa dirección, a través de la utilización de contratos de reuso[4] -expresados en UML- para describir evoluciones y su traducción a un lenguaje formal de primer orden, llamado Alloy[2], que provee herramientas para verificar algunas propiedades fundamentales de estos contratos. La traducción propuesta es sencilla, eficiente, modular, y provee bases ciertas para un proceso de evolución incremental de los diseños.Eje: Ingeniería de softwareRed de Universidades con Carreras en Informática (RedUNCI

    Practical verification strategy for refinement conditions in UML models

    Get PDF
    This paper presents an automatic and simple method for creating refinement condition for UML models. Conditions are fully written in OCL, making it unnecessary the application of mathematical languages which are in general hardly accepted to software engineers. Besides, considering that the state space where OCL conditions are evaluated might be too large (or even infinite), the strategy of micromodels is applied in order to reduce the search space. The overall contribution is to propitiate the performing of verification activities during the model-driven development process.1st International Workshop on Advanced Software Engineering: Expanding the Frontiers of Software Technology - Session 2: Software ModelingRed de Universidades con Carreras en Informática (RedUNCI

    Hacia la composición paralela de programas en DynAlloy

    Get PDF
    En este artículo estudiamos una extensión del lenguaje DynAlloy con un operador de composición paralela de acciones. DynAlloy es una extensión al lenguaje de especificaciones Alloy, con soporte para la definición de acciones (expresables originalmente con funciones el Alloy), acciones compuestas y aserciones de corrección parcial. El objetivo principal de DynAlloy es incorporar a Alloy soporte para la validación de propiedades de safety de ejecuciones de sistemas. En su versión original, DynAlloy soporta composición de acciones mediante composición secuencial, elección no determinista, iteración no acotada, etc., pero no incluye un operador de composición paralela. La composición paralela es un operador de importancia en el ámbito de los sistemas reactivos y concurrentes, por lo cual analizamos aquí las dificultades asociadas a la extensión de DynAlloy con un operador para composición paralela.II Workshop de Ingeniería de Software y Bases de Datos (WISBD)Red de Universidades con Carreras en Informática (RedUNCI
    corecore