35 research outputs found

    Social software development: Insights and solutions

    Get PDF

    Multi-method Modeling Framework for Support of Integrated Water Resources Management

    Get PDF
    The existing definition of integrated water resources management (IWRM) promotes a holistic approach to water resources management practice. The IWRM deals with planning, design and operation of complex systems in order to control the quantity, quality, temporal and spatial distribution of water with the main objective of meeting human and ecological needs and providing protection from water disasters. One of the main challenges of IWRM is development of tools for operational implementation of the concept and dynamic coupling of physical and socio-economic components of water resources systems. This research examines the role of simulation in IWRM practices, analyses the advantages and limitations of existing modeling methods, and, as a result, suggests a new generic multi-method modeling framework that has the main goal to capture all structural complexities and interactions within water resources systems. Since traditional modeling methods solely do not provide sufficient support, this framework uses multi-method simulation approach to examine the co-dependence between natural resources and socio-economic environment. Designed framework consists of (i) a spatial database, (ii) a process-based model for representing the physical environment and changing conditions, and (iii) an agent-based model for representing spatially explicit socio-economic environment. The main idea behind multi-agent models is to build virtual complex systems composed of autonomous entities, which operate on local knowledge, possess limited abilities, affect and are affected by local environment, and thus enact the desired global system behavior. Based on the architecture of the generic multi-method modeling framework, an operational model is developed for the Upper Thames River basin, Southwestern Ontario, Canada. Six different experiments combine three climate and two socio-economic scenarios to analyze spatial dynamics of a complex physical-social-economic system. Obtained results present strong dependence between changes in hydrologic regime, in this case surface runoff and groundwater recharge rates, and regional socio-economic activities

    On Run-Time Configuration Engineering

    Get PDF
    De nos jours, les utilisateurs changent le comportement de leur logiciel et l’adaptent Ă  diffĂ©rentes situations et contexts, sans avoir besoin d’aucune modifications du code source ou recompilation du logiciel. En effet, les utilisateurs utilisent le mĂ©canisme de configuration qui offre un ensemble d’options modifiables par les utilisateurs. D’aprĂšs plusieurs Ă©tudes, des mauvaises valeurs des options de configuration causent des erreurs difficiles Ă  dĂ©boguer. Plusieurs compagnies importantes, comme Facebook, Google et Amazon ont rencontrĂ© des pannes et erreurs sĂ©rieuses Ă  cause de la configuration et qui sont considĂ©rĂ©es parmi les plus pires pannes dans ces compagnies. En plus, plusieurs Ă©tudes ont trouvĂ© que le mĂ©canisme de configuration augmente la complexitĂ© des logiciels et les rend plus difficile Ă  utiliser. Ces problĂšmes ont un sĂ©rieux impact sur plusieurs facteurs de qualitĂ©, comme la sĂ©curitĂ©, l’exactitude, la disponibilitĂ©, la comprĂ©hensibilitĂ©, la maintenabilitĂ©, et la performance des logiciels. Plusieurs Ă©tudes ont Ă©tĂ© Ă©laborĂ©es dans des aspects spĂ©cifiques dans l’ingĂ©nierie des configurations, dont la majoritĂ© se concentrent sur le dĂ©bogage des dĂ©faillances de configuration et les tests de la configuration des logiciels, tandis que peu de recherches traitent les autres aspects de l’ingĂ©nierie des configurations de logiciel, comme la crĂ©ation et la maintenance des options de configuration. Par contre, nous pensons que la configuration des logiciels n’a pas seulement un impact sur l’exactitude d’un logiciel, mais peut avoir un impact sur d’autres mĂ©triques de qualitĂ© comme la comprĂ©hensibilitĂ© et la maintenabilitĂ©. Dans cette thĂšse, nous faisons d’abord un pas en arriĂšre pour mieux comprendre les activitĂ©s principales liĂ©es du processus de l’ingĂ©nierie des configurations, avant d’évaluer l’impact d’un catalogue de bonnes pratiques sur l’exactitude et la performance du processus de la configuration des logiciels. Pour ces raisons, nous avons conduit un ensemble d’études empiriques qualitatives et quantitatives sur des grands projets libres. On a conduit une Ă©tude qualitative en premier lieu, dans laquelle nous avons essayĂ© de comprendre le processus de l’ingĂ©nierie de configuration, les enjeux et problĂšmes que les dĂ©veloppeurs rencontrent durant ce processus, et qu’est ce que les dĂ©veloppeurs et chercheurs proposent pour aider les dĂ©veloppeurs Ă  amĂ©liorer la qualitĂ© de l’ingĂ©nierie de la configuration logiciel. En rĂ©alisant 14 entrevues semi structurĂ©es, un sondage et une revue systĂ©matique de littĂ©rature, nous avons dĂ©fini un processus de l’ingĂ©nierie de configuration invoquant 9 activitĂ©s, un ensemble de 22 challenges rencontrĂ©s en pratique et 24 recommandations des experts.----------ABSTRACT: Modern software applications allow users to change the behavior of a software application and adapt it to different situations and contexts, without requiring any source code modifications or recompilations. To this end, applications leverage a wide range of mechanisms of software configuration that provide a set of options that can be changed by users. According to several studies, incorrect values of software configuration options cause severe errors that are hard-to-debug. Major companies such as Facebook, Google, and Amazon faced serious outages and failures due to configuration, which are considered as some of the worst outages in these companies. In addition, several studies found that the mechanism of software configuration increases the complexity of a software system and makes it hard to use. Such problems have a serious impact on different quality factors, such as security, correctness, availability, comprehensibility, maintainability, and performance of software systems. Several studies have been conducted on specific aspects of configuration engineering, with most of them focusing on debugging configuration failures and testing software configurations, while only few research efforts focused on other aspects of configuration engineering, such as the creation and maintenance of configuration options. However, we think that software configuration can not only have a negative impact on the correctness of a software system, but also on other quality metrics, such as its comprehensibility and maintainability. In this thesis, we first take a step back to better understand the main activities involved in the process of run-time configuration engineering, before evaluating the impact of a catalog of best practices on the correctness and performance of the configuration engineering process. For these purposes, we conducted several qualitative and quantitative empirical studies on large repositories and open source projects. We first conducted a qualitative study, in which we tried to understand the configuration engineering process, the challenges and problems developers face during this process, and what practitioners and researchers recommend to help developers to improve their software configuration engineering quality. By conducting 14 semi-structured interviews, a large survey, and a systematic literature review, we identified a process of configuration engineering involving 9 activities, a set of 22 challenges faced in practice, and a set of 24 recommendations by experts

    Identifying reusable knowledge in developer instant messaging communication.

    Get PDF
    Context and background: Software engineering is a complex and knowledge-intensive activity. Required knowledge (e.g., about technologies, frameworks, and design decisions) changes fast and the knowledge needs of those who design, code, test and maintain software constantly evolve. On the other hand, software developers use a wide range of processes, practices and tools where developers explicitly and implicitly “produce” and capture different types of knowledge. Problem: Software developers use instant messaging tools (e.g., Slack, Microsoft Teams and Gitter) to discuss development-related problems, share experiences and to collaborate in projects. This communication takes place in chat rooms that accumulate potentially relevant knowledge to be reused by other developers. Therefore, in this research we analyze whether there is reusable knowledge in developer instant messaging communication by exploring (a) which instant messaging platforms can be a source of reusable knowledge, and (b) software engineering themes that represent the main discussions of developers in instant messaging communication. We also analyze how this reusable knowledge can be identified with the use of topic modeling (a natural language processing technique to discover abstract topics in text) by (c) surveying the literature on how topic modeling has been applied in software engineering research, and (d) evaluating how topic models perform with developer instant messages. Method: First, we conducted a Field Study through an exploratory case study and a reflexive thematic analysis to check whether there is reusable knowledge in developer instant messaging communication, and if so, what this knowledge (main themes discussed) is. Then, we conducted a Sample Study to explore how reusable knowledge in developer instant messaging communication can we identified. In this study, we applied a literature survey and software repository mining (i.e. short text topic modeling). Findings and contributions: We (a) developed a comparison framework for instant messaging tools, (b) identified a map of the main themes discussed in chat rooms of an instant messaging tool (Gitter, a platform used by software developers), (c) provided a comprehensive literature review that offers insights and references on the use of topic modeling in software engineering, and (d) provided an evaluation of the performance of topic models applied to developer instant messages based on topic coherence metrics and human judgment for topic quality

    Programming tools for intelligent systems

    Full text link
    Les outils de programmation sont des programmes informatiques qui aident les humains Ă  programmer des ordinateurs. Les outils sont de toutes formes et tailles, par exemple les Ă©diteurs, les compilateurs, les dĂ©bogueurs et les profileurs. Chacun de ces outils facilite une tĂąche principale dans le flux de travail de programmation qui consomme des ressources cognitives lorsqu’il est effectuĂ© manuellement. Dans cette thĂšse, nous explorons plusieurs outils qui facilitent le processus de construction de systĂšmes intelligents et qui rĂ©duisent l’effort cognitif requis pour concevoir, dĂ©velopper, tester et dĂ©ployer des systĂšmes logiciels intelligents. Tout d’abord, nous introduisons un environnement de dĂ©veloppement intĂ©grĂ© (EDI) pour la programmation d’applications Robot Operating System (ROS), appelĂ© Hatchery (Chapter 2). DeuxiĂšmement, nous dĂ©crivons Kotlin∇, un systĂšme de langage et de type pour la programmation diffĂ©renciable, un paradigme Ă©mergent dans l’apprentissage automatique (Chapter 3). TroisiĂšmement, nous proposons un nouvel algorithme pour tester automatiquement les programmes diffĂ©renciables, en nous inspirant des techniques de tests contradictoires et mĂ©tamorphiques (Chapter 4), et dĂ©montrons son efficacitĂ© empirique dans le cadre de la rĂ©gression. QuatriĂšmement, nous explorons une infrastructure de conteneurs basĂ©e sur Docker, qui permet un dĂ©ploiement reproductible des applications ROS sur la plateforme Duckietown (Chapter 5). Enfin, nous rĂ©flĂ©chissons Ă  l’état actuel des outils de programmation pour ces applications et spĂ©culons Ă  quoi pourrait ressembler la programmation de systĂšmes intelligents Ă  l’avenir (Chapter 6).Programming tools are computer programs which help humans program computers. Tools come in all shapes and forms, from editors and compilers to debuggers and profilers. Each of these tools facilitates a core task in the programming workflow which consumes cognitive resources when performed manually. In this thesis, we explore several tools that facilitate the process of building intelligent systems, and which reduce the cognitive effort required to design, develop, test and deploy intelligent software systems. First, we introduce an integrated development environment (IDE) for programming Robot Operating System (ROS) applications, called Hatchery (Chapter 2). Second, we describe Kotlin∇, a language and type system for differentiable programming, an emerging paradigm in machine learning (Chapter 3). Third, we propose a new algorithm for automatically testing differentiable programs, drawing inspiration from techniques in adversarial and metamorphic testing (Chapter 4), and demonstrate its empirical efficiency in the regression setting. Fourth, we explore a container infrastructure based on Docker, which enables reproducible deployment of ROS applications on the Duckietown platform (Chapter 5). Finally, we reflect on the current state of programming tools for these applications and speculate what intelligent systems programming might look like in the future (Chapter 6)

    Inferring latent user attributes in streams on multimodal social data using spark

    Get PDF
    The principal goal of this work can be expressed in two simple words Apache Spark; basically this framework help a developer to deal with big data. Our scope is to understand how Spark operates and use it to deal with Big Data using APIs offered for implement different classifier
    corecore