Spelling suggestions: "subject:"core reuse""
1 |
A component-based layered abstraction model for software portability across autonomous mobile robotsSmith, Robert January 2005 (has links)
Today's autonomous robots come in a variety of shapes and sizes from all terrain vehicles clambering over rubble, to robots the size of coffee cups zipping about a laboratory. The diversity of these robots is extraordinary; but so is the diversity of the software created to control them even when the basic tasks many robots undertake are practically the same (such as obstacle detection, tracking, or path planning). It would be beneficial if some reuse of these coded sub-tasks could be achieved. However, most of the present day robot software is monolithic, very specialised and not at all modular, which hinders the reuse and sharing of code between robot platforms. One difficulty is that the hardware details of a robot are usually tightly woven into the high-level controllers. When these details are not decoupled and explicitly encapsulated, the entire code set must be revised if the robot platform changes. An even bigger challenge is that a robot is a context-aware device. Hence, the possible interpretations of the state of the robot and its environment vary along with its context. For example, as the robots differ in size and shape, the meaning of concepts such as direction, speed, and distance can change { objects that are considered far from one robot, might seem near to a much larger robot. When designing reusable robot software, these variable interpretations of the environment must be considered. Similarly, so must variations in context dependent robot instructions { for example, `move fast' has different abstractions; a `virtual robot' layer to manage the robot's platform abstractions; and high-level abstraction components that are used to describe the state of the robot and its environment. The prototype is able to support binary code portability and dynamic code extensibility across a range of different robots (demonstrated on eight diverse robot platform configurations). These outcomes significantly ease the burden on robot software developers when deploying a new robot (or even reconfiguring old robots) since high-level binary controllers can be executed unchanged on different robots. Furthermore, since the control code is completely decoupled from the platform information, these concerns can be managed separately, thereby providing a flexible means for managing different configurations of robots. These systems and techniques all improve the robot software design, development, and deployment process. Different meanings depending on the robot's size, environmental context and task being undertaken. What is needed is a unifying cross-platform software engineering approach for robots that will encourage the development of code that is portable, modular and robust. Toward this end, this research presents a complete abstraction model and implementation prototype that contain a suite of techniques to form and manage the robot hardware, platform, and environment abstractions. The system includes the interfaces and software components required for hardware device and operating system abstractions; a `virtual robot' layer to manage the robot's platform abstractions; and high-level abstraction components that are used to describe the state of the robot and its environment. The prototype is able to support binary code portability and dynamic code extensibility across a range of different robots (demonstrated on eight diverse robot platform configurations). These outcomes significantly ease the burden on robot software developers when deploying a new robot (or even reconfiguring old robots) since high-level binary controllers can be executed unchanged on different robots. Furthermore, since the control code is completely decoupled from the platform information, these concerns can be managed separately, thereby providing a flexible means for managing different configurations of robots. These systems and techniques all improve the robot software design, development, and deployment process.
|
2 |
rave: A Framework for Code and Memory Randomization of Linux ContainersBlackburn, Christopher Nogueira 23 July 2021 (has links)
Memory corruption continues to plague modern software systems, as it has for decades. With
the emergence of code-reuse attacks which take advantage of these vulnerabilities like Return-
Oriented Programming (ROP) or non-control data attacks like Data-Oriented programming
(DOP), defenses against these are growing thin. These attacks, and more advanced variations
of them, are becoming more difficult to detect and to mitigate. In this arms race, it
is critical to not only develop mitigation techniques, but also ways we can effectively deploy
those techniques. In this work, we present rave - a framework which takes common design
features of defenses against memory corruption and code-reuse and puts them in a real-world
setting. Rave consists of two components: librave, the library responsible for static binary
analysis and instrumentation, and CRIU-rave, an extended version of the battle-tested process
migration tool available for Linux. In our prototype of this framework, we have shown
that these tools can be used to rewrite live applications, like NGINX, with enough randomization
to disrupt memory corruption attacks.
This work is supported in part by ONR under grant N00014-18-1-2022 and NAVSEA/NEEC/NSWC
Dahlgren under grant N00174-20-1-0009. / Master of Science / Memory corruption attacks continue to be a concrete threat against modern computer systems.
Malicious actors can take advantage of related vulnerabilities to carry out more
advance, hard-to-detect attacks which give them control of the target or leak critical information.
Many works have been developed to defend against these sophisticated attacks and
their triggers (memory corruption), but many struggle to be adopted into the real-world for
reasons such as instability or difficulty in deployment. In this work, we introduce rave, a
framework which seeks to address issues of stability and deployment by designing a way for
defenders to coordinate and apply mitigation techniques in a real-world setting.
|
3 |
Modelagem e prototipação de um repositório extensível para componentes de software / Model and prototype of an extensible repository for components of softwareSchiroky, Alex Marracci January 2002 (has links)
Várias ferramentas de desenvolvimento utilizam mecanismos para centralizar/gerenciar código compartilhado entre diferentes desenvolvedores ou equipes de desenvolvimento. Estes repositórios geralmente deixam muito a desejar em relação aos serviços que oferecem, não só aos desenvolvedores, mas também aos usuários de sistemas já desenvolvidos, que desejam ter atualizações e correções constantes em seus aplicativos. Surge então a necessidade de disponibilizar esses recursos em um ambiente de trabalho realmente cooperado. Este trabalho propõe a modelagem de um repositório de componentes de software, formado por uma área de armazenamento centralizada comum aos desenvolvedores, e com capacidade de gerenciar componentes e agregar serviços extras, administrando seu ciclo de vida de modo integrado. Para tal, várias tecnologias baseadas em Java foram integradas, tais como as seguintes API's: Enterprise Java Beans (EJB), Java Naming and Directory Interface (JNDI), Remote Method Invocation (RMI), Java Messaging Service (JMS), Java Transaction (JTA), Java Transaction Service (JTS) e Java Database Connection (JDBC).Para que o modelo aqui proposto possua um nível de funcionalidade adequado, são fornecidos vários serviços pelo repositório, atendendo assim às expectativas tanto de desenvolvedores, como dos usuários finais. Dentre outros, são providos os seguintes serviços: Serviço de Descrição, Serviço de Histórico, Serviço de Controle de Versões, Serviço de Teste OO, Serviço de Padrões de Projeto e Serviço de Invalidação de Componentes. / Software development tools commonly use mechanisms for storing/managing code shared among different developers or development teams. These repositories generally are very poor in relation to the services they provide to developers and also to the users of already developed systems which need to make constant updates and corrections on their applications. There is a need to supply supporting services to software integration through a really cooperated development environment. This work considers the modeling of a software component repository comprising a common storage area to be accessed by developers, possessing capacity to manage components and to add extra services, and managing the development life cycle in an integrated mode. To accomplish this model, some technologies based on Java have been integrated, namely: Enterprise Java Beans (EJB), Java Naming and Directory Interface (JNDI), Remote Method Invocation (RMI), Java Messaging Service (JMS), Java Transaction (JTA), Java Transaction Service (JTS) and Java Database Connection (JDBC). For the model considered here to have an adjusted level of functionality, some repository services are supplied so assuring the expectations of developers and final users. Among the services provided, the following must be mentioned: Description Service, History Service, Version Control Service, OO Test Service, Design Patterns Service and Components Invalidation Service.
|
4 |
Using Feature Models For Reusability In Agile MethodsJedyk, Marcin 01 June 2011 (has links) (PDF)
The approach proposed in this thesis contributes to implementing source code reuse and re-engineering techniques for agile software development. This work includes an introduction to feature models and some of the Feature Oriented Software Development (FOSD) practices to achieve a lightweight way of retrieving source code. A Feature model created during the course of following FOSD practices serves as an additional layer of documentation which represents the problem space for the developed application. This thesis proposes linking source code with such a feature model for the purpose of identifying and retrieving code. This mechanism helps with accessing the code segment corresponding to a feature with minimal effort, thus suits agile development methods.
At the moment, there is a gap between feature oriented approaches and agile methods. This thesis tries to close this gap between high-level approaches for software modelling (feature modelling) and agile methods for software development.
|
5 |
Modelagem e prototipação de um repositório extensível para componentes de software / Model and prototype of an extensible repository for components of softwareSchiroky, Alex Marracci January 2002 (has links)
Várias ferramentas de desenvolvimento utilizam mecanismos para centralizar/gerenciar código compartilhado entre diferentes desenvolvedores ou equipes de desenvolvimento. Estes repositórios geralmente deixam muito a desejar em relação aos serviços que oferecem, não só aos desenvolvedores, mas também aos usuários de sistemas já desenvolvidos, que desejam ter atualizações e correções constantes em seus aplicativos. Surge então a necessidade de disponibilizar esses recursos em um ambiente de trabalho realmente cooperado. Este trabalho propõe a modelagem de um repositório de componentes de software, formado por uma área de armazenamento centralizada comum aos desenvolvedores, e com capacidade de gerenciar componentes e agregar serviços extras, administrando seu ciclo de vida de modo integrado. Para tal, várias tecnologias baseadas em Java foram integradas, tais como as seguintes API's: Enterprise Java Beans (EJB), Java Naming and Directory Interface (JNDI), Remote Method Invocation (RMI), Java Messaging Service (JMS), Java Transaction (JTA), Java Transaction Service (JTS) e Java Database Connection (JDBC).Para que o modelo aqui proposto possua um nível de funcionalidade adequado, são fornecidos vários serviços pelo repositório, atendendo assim às expectativas tanto de desenvolvedores, como dos usuários finais. Dentre outros, são providos os seguintes serviços: Serviço de Descrição, Serviço de Histórico, Serviço de Controle de Versões, Serviço de Teste OO, Serviço de Padrões de Projeto e Serviço de Invalidação de Componentes. / Software development tools commonly use mechanisms for storing/managing code shared among different developers or development teams. These repositories generally are very poor in relation to the services they provide to developers and also to the users of already developed systems which need to make constant updates and corrections on their applications. There is a need to supply supporting services to software integration through a really cooperated development environment. This work considers the modeling of a software component repository comprising a common storage area to be accessed by developers, possessing capacity to manage components and to add extra services, and managing the development life cycle in an integrated mode. To accomplish this model, some technologies based on Java have been integrated, namely: Enterprise Java Beans (EJB), Java Naming and Directory Interface (JNDI), Remote Method Invocation (RMI), Java Messaging Service (JMS), Java Transaction (JTA), Java Transaction Service (JTS) and Java Database Connection (JDBC). For the model considered here to have an adjusted level of functionality, some repository services are supplied so assuring the expectations of developers and final users. Among the services provided, the following must be mentioned: Description Service, History Service, Version Control Service, OO Test Service, Design Patterns Service and Components Invalidation Service.
|
6 |
Modelagem e prototipação de um repositório extensível para componentes de software / Model and prototype of an extensible repository for components of softwareSchiroky, Alex Marracci January 2002 (has links)
Várias ferramentas de desenvolvimento utilizam mecanismos para centralizar/gerenciar código compartilhado entre diferentes desenvolvedores ou equipes de desenvolvimento. Estes repositórios geralmente deixam muito a desejar em relação aos serviços que oferecem, não só aos desenvolvedores, mas também aos usuários de sistemas já desenvolvidos, que desejam ter atualizações e correções constantes em seus aplicativos. Surge então a necessidade de disponibilizar esses recursos em um ambiente de trabalho realmente cooperado. Este trabalho propõe a modelagem de um repositório de componentes de software, formado por uma área de armazenamento centralizada comum aos desenvolvedores, e com capacidade de gerenciar componentes e agregar serviços extras, administrando seu ciclo de vida de modo integrado. Para tal, várias tecnologias baseadas em Java foram integradas, tais como as seguintes API's: Enterprise Java Beans (EJB), Java Naming and Directory Interface (JNDI), Remote Method Invocation (RMI), Java Messaging Service (JMS), Java Transaction (JTA), Java Transaction Service (JTS) e Java Database Connection (JDBC).Para que o modelo aqui proposto possua um nível de funcionalidade adequado, são fornecidos vários serviços pelo repositório, atendendo assim às expectativas tanto de desenvolvedores, como dos usuários finais. Dentre outros, são providos os seguintes serviços: Serviço de Descrição, Serviço de Histórico, Serviço de Controle de Versões, Serviço de Teste OO, Serviço de Padrões de Projeto e Serviço de Invalidação de Componentes. / Software development tools commonly use mechanisms for storing/managing code shared among different developers or development teams. These repositories generally are very poor in relation to the services they provide to developers and also to the users of already developed systems which need to make constant updates and corrections on their applications. There is a need to supply supporting services to software integration through a really cooperated development environment. This work considers the modeling of a software component repository comprising a common storage area to be accessed by developers, possessing capacity to manage components and to add extra services, and managing the development life cycle in an integrated mode. To accomplish this model, some technologies based on Java have been integrated, namely: Enterprise Java Beans (EJB), Java Naming and Directory Interface (JNDI), Remote Method Invocation (RMI), Java Messaging Service (JMS), Java Transaction (JTA), Java Transaction Service (JTS) and Java Database Connection (JDBC). For the model considered here to have an adjusted level of functionality, some repository services are supplied so assuring the expectations of developers and final users. Among the services provided, the following must be mentioned: Description Service, History Service, Version Control Service, OO Test Service, Design Patterns Service and Components Invalidation Service.
|
7 |
Code duplication and reuse in Jupyter notebooksKoenzen, Andreas Peter 21 September 2020 (has links)
Reusing code can expedite software creation, analysis and exploration of data. Expediency can be particularly valuable for users of computational notebooks, where duplication allows them to quickly test hypotheses and iterate over data, without creating code from scratch. In this thesis, I’ll explore the topic of code duplication and the behaviour of code reuse for Jupyter notebooks; quantifying and describing snippets of code and explore potential barriers for reuse. As part of this thesis I conducted two studies into Jupyter notebooks use. In my first study, I mined GitHub repositories, quantifying and describing code duplicates contained within repositories that contained at least one Jupyter notebook. For my second study, I conducted an observational user study using a contextual inquiry, where my participants solved specific tasks using notebooks, while I observed and took notes. The work in this thesis can be categorized as exploratory, since both my studies were aimed at generating hypotheses for which further studies can build upon. My contributions with this thesis is two-fold: a thorough description of code duplicates contained within GitHub repositories and an exploration of the behaviour behind code reuse in Jupyter notebooks. It is my desire that others can build upon this work to provide new tools, addressing some of the issues outlined in this thesis. / Graduate
|
8 |
Boa Views: Enabling Modularization and Sharing of Boa QueriesHung, Che Shian 09 August 2019 (has links)
No description available.
|
9 |
A qualitative study: how Solution Snippets are presented in Stack Overflow and how those Solution Snippets need to be adapted for reuseWeeraddana, Nimmi Rashinika 22 March 2022 (has links)
Researchers use datasets of Question-Solution pairs to train machine learning models, such as source code generation models. A Question-Solution pair contains two parts: a programming question and its corresponding Solution Snippet. A Solution Snippet is a source code that solves a programming question. These datasets of Question-Solution pairs can be extracted from a number of different platforms. In this research, I study how Question-Solution pairs are extracted from Stack Overflow (SO). There are two limitations of datasets of Question-Solution pairs extracted from SO: (1) according to the authors of these datasets, some Question-Solution pairs contain Solution Snippets that do not solve the question correctly, and (2) these datasets do not contain the information on how Solution Snippets need to be reused, and such information would enhance the reusability of Solution Snippets. These limitations of datasets of pairs could adversely affect the quality of the code being generated by machine learning models. In this research, I conducted a qualitative study to categorize various presentations of Solution Snippets in SO’s answers as well as how Solution Snippets can be adapted for reuse. By doing so, I identified eight categories of how Solution Snippets are presented in SO’s answers and five categories of how Solution Snippets could be adapted. Based on these results, I concluded several potential reasons why it is not easy to create datasets of Question-Solution pairs. The first categorization informs that finding the correct location of the Solution Snippet is challenging when there are several code blocks within the answer to the question. Subsequently, the researcher must identify which code within that code block is the Solution Snippet. The second categorization informs that most Solution Snippets appear challenging to be adapted for reuse, and how Solution Snippets are potentially adapted is not explicitly stated in them. These insights shed light on creating better quality datasets from questions and answers posted on Stack Overflow. / Graduate
|
10 |
WiFu Transport: A User-level Protocol FrameworkBuck, Randall Jay 06 April 2012 (has links) (PDF)
It is well known that the transport layer protocol TCP has low throughput and is unfair in wireless mesh networks. Transport layer solutions for mesh networks have been primarily validated using simulations with simplified assumptions about the wireless network. The WiFu Transport framework complements simulator results by allowing developers to easily create and experiment with transport layer protocols on live networks. We provide a user-space solution that is flexible and promotes code reuse while maintaining high performance and scalability. To validate WiFu Transport we use it to build WiFu TCP, a decomposed Tahoe solution that preserves TCP semantics. Furthermore, we share other WiFu developers' experiences building several TCP variants as well as a hybrid protocol to demonstrate flexibility and code reuse. We demonstrate that WiFu Transport performs as well as the Linux kernel on 10 and 100 Mbps Ethernet connections and over a one-hop wireless connection. We also show that our WiFu TCP implementation is fair and that the framework also scales to support multiple threads.
|
Page generated in 0.0555 seconds