35 research outputs found
Multi-method Modeling Framework for Support of Integrated Water Resources Management
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
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.
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
Recommended from our members
Combining Static and Dynamic Analysis for Bug Detection and Program Understanding
This work proposes new combinations of static and dynamic analysis for bug detection and program understanding. There are 3 related but largely independent directions: a) In the area of dynamic invariant inference, we improve the consistency of dynamically discovered invariants by taking into account second-order constraints that encode knowledge aboutinvariants; the second-order constraints are either supplied by the programmer or vetted by the programmer (among candidate constraints suggested automatically); b) In the area of testing dataflow (esp. map-reduce) programs, our tool, SEDGE, achieves higher testing coverage by leveraging existinginput data and generalizing them using a symbolic reasoning engine (a powerful SMT solver); c) In the area of bug detection, we identify and present the concept of residual investigation: a dynamic analysis that serves as theruntime agent of a static analysis. Residual investigation identifies with higher certainty whether an error reported by the static analysis is likely true
Programming tools for intelligent systems
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
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