Reference number : GC-2017-Q1-02109, amendment number : , agreement type : G, recipient legal name : Rubin, Julia (The University of British Columbia), recipient country : CA, recipient province : nan, recipient city : British Columbia|Colombie-Britannique, recipient postal code : nan, program name english : Discovery Grants Program - Individual, program name french : Programme de subventions à la découverte - individuelles, program purpose english : Our dependence on software continues to grow every day. Software systems themselves become increasingly larger and more complex. At the same time, software development cycles shrink and customers expect new products to be delivered to the market faster than ever. 
 In such a reality, software construction becomes a compositional activity, where developers integrate code from in-house and third-party libraries, snippets of code &ldquo;borrowed&rdquo; from earlier projects, and code found online. Such borrowed code can comprise up to 90% of a typical software system. 
 Integrating independently-developed code fragments in a predictable manner is a challenging task: developers often have a limited understanding of what each individual piece of software does, let alone how their composition behaves. The inability to reason about software functionalities and their interplay complicates software development processes, prolongs the time to market, and reduces the quality of the produced software. In fact, there are several well-known disasters caused by software reuse, composition, and integration problems, including the Ariane 5 rocket explosion, the KCG trading system failure, and the massive radiation overdoses inflicted by Therac-25 therapy machines. 
 Motivated by these challenges, the research program proposed here aims at building foundations for efficient and reliable development of compositional software . The main distinction of this program from existing work is that it does not focus on approaches for specifying reusable software components or subsystems with well-defined interfaces. Instead, it leverages recent advances in the fields of formal methods and program analysis to develop paradigms for understanding and composing existing, already available software fragments . 
 Specifically, this program explores the development of: 
 1) A formal model for representing software in terms of its conceptual features &ndash; logical units of meaning to developers. The model is populated by extracting information about features, specifications of features (prerequisites and guarantees), and feature dependencies, from existing code artifacts. 
 2) Analysis techniques for reasoning about complex compositional software properties. These techniques aim at, for example, identifying unexpected side effects caused by reusing features outside of their original context and inconsistencies caused by independent evolution of related features. 
 3) Concepts for integrating the compositional model and analysis techniques into existing development tools and practices, including version control system workflows (e.g., that of Git). 
 The outcomes of this work are expected not only to advance the state of science but also to reduce time to market and increase the quality of our software, making a significant contribution to the software industry, and to the Canadian and global economy., program purpose french : Our dependence on software continues to grow every day. Software systems themselves become increasingly larger and more complex. At the same time, software development cycles shrink and customers expect new products to be delivered to the market faster than ever. 
 In such a reality, software construction becomes a compositional activity, where developers integrate code from in-house and third-party libraries, snippets of code &ldquo;borrowed&rdquo; from earlier projects, and code found online. Such borrowed code can comprise up to 90% of a typical software system. 
 Integrating independently-developed code fragments in a predictable manner is a challenging task: developers often have a limited understanding of what each individual piece of software does, let alone how their composition behaves. The inability to reason about software functionalities and their interplay complicates software development processes, prolongs the time to market, and reduces the quality of the produced software. In fact, there are several well-known disasters caused by software reuse, composition, and integration problems, including the Ariane 5 rocket explosion, the KCG trading system failure, and the massive radiation overdoses inflicted by Therac-25 therapy machines. 
 Motivated by these challenges, the research program proposed here aims at building foundations for efficient and reliable development of compositional software . The main distinction of this program from existing work is that it does not focus on approaches for specifying reusable software components or subsystems with well-defined interfaces. Instead, it leverages recent advances in the fields of formal methods and program analysis to develop paradigms for understanding and composing existing, already available software fragments . 
 Specifically, this program explores the development of: 
 1) A formal model for representing software in terms of its conceptual features &ndash; logical units of meaning to developers. The model is populated by extracting information about features, specifications of features (prerequisites and guarantees), and feature dependencies, from existing code artifacts. 
 2) Analysis techniques for reasoning about complex compositional software properties. These techniques aim at, for example, identifying unexpected side effects caused by reusing features outside of their original context and inconsistencies caused by independent evolution of related features. 
 3) Concepts for integrating the compositional model and analysis techniques into existing development tools and practices, including version control system workflows (e.g., that of Git). 
 The outcomes of this work are expected not only to advance the state of science but also to reduce time to market and increase the quality of our software, making a significant contribution to the software industry, and to the Canadian and global economy., agreement title english : Software of Things: Composition and Integration, agreement title french : Software of Things: Composition and Integration, agreement number : RGPIN, agreement value : 115000.0, agreement start date : 2017-05-10, agreement end date : nan, description english : nan, description french : nan, expected results english : nan, expected results french : nan, additional information english : Grant or Award spanning more than one fiscal year. (2017-2018 to 2022-2023), additional information french : Subvention ou bourse octroyée s'appliquant à plus d'un exercice financier. (2017-2018 à 2022-2023), owner organization : nserc-crsng, owner organization title : Natural Sciences and Engineering Research Council of Canada | Conseil de recherches en sciences naturelles et en génie du Canada