5 research outputs found

    On Patterns of Multi-domain Interaction for Scientific Software Development focused on Separation of Concerns

    Get PDF
    This year’s ICCS conference theme promotes the use of computational science as a means to foster multidisciplinarity and synergies with other fields. Our thesis is that this trend towards multidisciplinarity should be accompanied by the use of best practices issued from the software engineering community in order to avoid obtaining overly complex and tangled code, difficult to validate, to maintain and to port. In this paper we argue for the need of applying separation of concerns principles when the development involves scientists from various application fields. We overview several strategies that may be used to achieve this separation, focusing mainly on two approaches drawn from our previous experiences with multidisciplinary projects, addressing two distinct patterns of multi-domain interaction that may occur in scientific software development

    Uma arquitetura de software baseada em padrões de projeto para o desenvolvimento de aplicações concorrentes confiaveis

    Get PDF
    Orientador : Cecilia Mary Fischer RubiraTese (doutorado) - Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: Sistemas computacionais complexos estão sujeitos a diferentes tipos de falhas, e a maneira mais adequada de lidar com tais falhas é aceitar que qualquer sistema pode apresenta-lás e empregar técnicas apropriadas para tolerá-Ias durante a execução do sistema. Desta forma, a abordagem mais apropriada para a construção de sistemas complexos confiáveis consiste na utilização de técnicas de tolerância a falhas que nos permitem definir regiões de confinamento e recuperação de erros. No entanto, técnicas de tolerância a falhas são geralmente utilizadas na fase de implementação do ciclo de desenvolvimento do sistema. Desta forma, não é freqüentemente fácil empregá-las, desde que projetistas necessitam levar em conta muitos detalhes de implementação. Neste contexto, este trabalho faz duas contribuições relevantes. A primeira contribuição é a utilização prática de técnicas recentes de estruturação de sistemas na definição de uma arquitetura de software genérica para introduzir atomicidade, redundância de software, tratamento de exceções e recuperação de erros coordenada no desenvolvimento de sistemas orientados a objetos confiáveis durante o ciclo de desenvolvimento do sistema, iniciando-se na fase de projeto arquitetural passando pelo projeto detalhado e terminando na fase de implementaçãojcodificação do sistema. A segunda contribuição é a definição de um conjunto coeso de padrões de projetos que refinam os elementos arquiteturais da arquitetura de software proposta e provêem uma clara e transparente separação de interesses entre a funcionalidade da aplicação e a funcionalidade relacionada à provisão da confiabilidade do sistemaAbstract: Complex computer systems are prone to errors of many kinds, and the most reasonable way of dealing with them is to accept that any complex system has faults and to employ appropriate features for tolerating them during run time. We claim that the most beneficial way of achieving fault tolerance in complex systems is to use system structuring which has fault tolerance measures associated with it. ln this case, structuring units serve as natural areas of error containment and error recovery. However, these techniques are mainly developed for employment at the implementation phase of the system development. Hence, it is not often easy to apply them correctly, as the designers have to take into account many implementation details. ln this context, this work makes two main contributions. The first contribution is the practical employment of recent system structuring techniques in the definition of a generic software architecture for introducing atomicity, exception handling, and coordinated error recovery into dependable object-oriented systems at the earlier phases of system development. That is, from architectural design, through detailed design to coding. The second contribution is the definition of a set of design patterns which refine the architectural elements of the proposed software architecture and provide a clear and transparent separation of concerns between the application functionality, and the functionality related to providing system dependabilityDoutoradoDoutor em Ciência da Computaçã

    Designing Round-Trip Systems by Change Propagation and Model Partitioning

    Get PDF
    Software development processes incorporate a variety of different artifacts (e.g., source code, models, and documentation). For multiple reasons the data that is contained in these artifacts does expose some degree of redundancy. Ensuring global consistency across artifacts during all stages in the development of software systems is required, because inconsistent artifacts can yield to failures. Ensuring consistency can be either achieved by reducing the amount of redundancy or by synchronizing the information that is shared across multiple artifacts. The discipline of software engineering that addresses these problems is called Round-Trip Engineering (RTE). In this thesis we present a conceptual framework for the design RTE systems. This framework delivers precise definitions for essential terms in the context of RTE and a process that can be used to address new RTE applications. The main idea of the framework is to partition models into parts that require synchronization - skeletons - and parts that do not - clothings. Once such a partitioning is obtained, the relations between the elements of the skeletons determine whether a deterministic RTE system can be built. If not, manual decisions may be required by developers. Based on this conceptual framework, two concrete approaches to RTE are presented. The first one - Backpropagation-based RTE - employs change translation, traceability and synchronization fitness functions to allow for synchronization of artifacts that are connected by non-injective transformations. The second approach - Role-based Tool Integration - provides means to avoid redundancy. To do so, a novel tool design method that relies on role modeling is presented. Tool integration is then performed by the creation of role bindings between role models. In addition to the two concrete approaches to RTE, which form the main contributions of the thesis, we investigate the creation of bridges between technical spaces. We consider these bridges as an essential prerequisite for performing logical synchronization between artifacts. Also, the feasibility of semantic web technologies is a subject of the thesis, because the specification of synchronization rules was identified as a blocking factor during our problem analysis. The thesis is complemented by an evaluation of all presented RTE approaches in different scenarios. Based on this evaluation, the strengths and weaknesses of the approaches are identified. Also, the practical feasibility of our approaches is confirmed w.r.t. the presented RTE applications

    Using software abstraction to develop an agent based system.

    Get PDF
    The main contribution of the thesis is to present a systematic process to develop an agent-based system that assists a system developer to construct the required system, through a series of modelling activities, employing several levels of abstraction to show the milestones and produce intermediate deliverables. Current practice emphasises "downstream activities" such as implementation at the expense of "upstream activities" such as "modelling". The research has found that the development process for an agent system consists of three phases: agent system development, agent environment development and agent system deployment. The first and second phases represent an intertwined spiral model. All three phases themselves consist of three stages. Each phase employs different development techniques and each stage uses appropriate models and tools such as problem domain model, agent use cases, scenarios, agent system architecture, plan model and individual agent model.The proposed agent development method is applied to two case studies: a Filtering Agent System and Diabetic Consultation System. Both systems have been implemented and tested. Three distinct ways were used to evaluate the proposed method. First, comparing with the criteria of a methodology. Second, comparing it with the current agent-oriented methodologies. Third, informal observations from a potential user community.In conclusion, the research has demonstrated an effective synthesising process to build a set of agent concepts, development life-cycle and modelling to show a systematic process for developing agent systems. Moreover, by employing a whole host of software abstraction tools and techniques in the process, two benefits accrue: the introduction of more 'up stream' activities as well as placing modelling at the heart of the process. Illustratively, we could say that the modelling presented here does for agent systems what data flow diagram and data entity diagram have done for structured methodologies, i.e. raise the level of abstraction employed
    corecore