11,711 research outputs found
REENGINEERING DEPRECATED COMPONENT FRAMEWORKS: A CASE STUDY OF THE MICROSOFT FOUNDATION CLASSES
In today’s application engineering, the implementation of frameworks and related technology boosts development quality and reduces related effort. Framework functionality embodies expert knowledge and is driven towards reuse. While stable from a conceptual point of view, technological changes require constant adaptation and reengineering. This article presents overall framework engineering principles and practices (FEPP) and shows their concrete application using the example of the Microsoft Foundation Classes. Abstracting from the case study, the focus of this work is upon introducing particular methods for how to cut down on the complexity of maintenance projects by considering the FEPP during framework development
Ariadne: Analysis for Machine Learning Program
Machine learning has transformed domains like vision and translation, and is
now increasingly used in science, where the correctness of such code is vital.
Python is popular for machine learning, in part because of its wealth of
machine learning libraries, and is felt to make development faster; however,
this dynamic language has less support for error detection at code creation
time than tools like Eclipse. This is especially problematic for machine
learning: given its statistical nature, code with subtle errors may run and
produce results that look plausible but are meaningless. This can vitiate
scientific results. We report on Ariadne: applying a static framework, WALA, to
machine learning code that uses TensorFlow. We have created static analysis for
Python, a type system for tracking tensors---Tensorflow's core data
structures---and a data flow analysis to track their usage. We report on how it
was built and present some early results
The Scalability-Efficiency/Maintainability-Portability Trade-off in Simulation Software Engineering: Examples and a Preliminary Systematic Literature Review
Large-scale simulations play a central role in science and the industry.
Several challenges occur when building simulation software, because simulations
require complex software developed in a dynamic construction process. That is
why simulation software engineering (SSE) is emerging lately as a research
focus. The dichotomous trade-off between scalability and efficiency (SE) on the
one hand and maintainability and portability (MP) on the other hand is one of
the core challenges. We report on the SE/MP trade-off in the context of an
ongoing systematic literature review (SLR). After characterizing the issue of
the SE/MP trade-off using two examples from our own research, we (1) review the
33 identified articles that assess the trade-off, (2) summarize the proposed
solutions for the trade-off, and (3) discuss the findings for SSE and future
work. Overall, we see evidence for the SE/MP trade-off and first solution
approaches. However, a strong empirical foundation has yet to be established;
general quantitative metrics and methods supporting software developers in
addressing the trade-off have to be developed. We foresee considerable future
work in SSE across scientific communities.Comment: 9 pages, 2 figures. Accepted for presentation at the Fourth
International Workshop on Software Engineering for High Performance Computing
in Computational Science and Engineering (SEHPCCSE 2016
The New Grid
The New Grid seeks to provide mobile users with an additional method for off-grid communication, or communication without connection to Internet infrastructure. The motivation for this project was to find another alternative to Internet-dependent communication. Current Internet infrastructure is antiquated; it is expensive to maintain and expand, it has numerous vulnerabilities and high-impact points of failure, and can be rendered unusable for lengthy periods of time by natural disasters or other catastrophes. This current grid will eventually need to be replaced by a more modern, scalable, and adaptive infrastructure. The results of the projects research showed that implementing a library to allow for the creation of mobile peer-to-peer mesh networks could serve as a starting point for a transition from current Internet infrastructure to a more scalable, adaptive, and reliable Internet- independent network grid.
Development of The New Grid largely followed the Rational Unified Process, in which the development process is split into four phases: requirements gathering, system design, implementation, and testing. Most of fall quarter was spent outlining functional requirements for the system, designing possible methods of implementation, and researching similar solutions that seek to transition mass mobile communication to a newer, more modern network grid. The New Grid differs from similar solutions because it has been implemented as a modular library. Current systems that allow for off-grid mobile connection exist as independent applications with a defined context and predetermined usability scope.
We, the design team, found that implementing the system in the form of a modular library has multiple benefits. Primarily, this implementation would allow The New Grid to be deployed as widely as possible. Developers can both write applications around our library as well as include specific modules into existing applications without impacting other modules or introducing additional overhead into a system. Another benefit of deploying the system as a modular library is adaptability. The current, initial stable build of The New Grid uses Bluetooth Low Energy as its backbone for facilitating communication within large networks of mobile devices; however, this library could use any existing or future communication protocol to facilitate connection as long as a hook is written to allow The New Grid to interface with that protocol. Thus, The New Grid is not limited by which connection protocols currently exist, a property that other similar systems do not possess.
The New Grid can be used in any application that requires connection between users. The most common applications would likely be messaging, file sharing, or social networking. While developers may find a variety of uses for The New Grid, its primary purpose is to facilitate reliable connection and secure data transfer in an environment with a large user base. Achieving this goal was proven feasible through research and testing the library with a small cluster of Android devices communicating solely with Bluetooth Low Energy. Expanding this group of a few phones to a larger mesh network of hundreds of devices was shown to be feasible through testing the librarys algorithms and protocols on a large network of virtual devices. As long as developers seek to create applications that allow users to communicate independent of Internet infrastructure, The New Grid will allow smartphone users to communicate off-grid and hopefully spur a switch from infrastructure-dependent mobile communication to user-centric, adaptive, and flexible connection
Hot Swapping Protocol Implementations in the OPNET Modeler Development Environment
This research effort demonstrates hot swapping protocol implementations in OPNET via the building of a dependency injection testing framework. The thesis demonstrates the externalization (compiling as stand-alone code) of OPNET process models, and their inclusion into custom DLL\u27s (Dynamically Linked Libraries). A framework then utilizes these process model DLL\u27s, to specify, or “inject,” process implementations post-compile time into an OPNET simulation. Two separate applications demonstrate this mechanism. The first application is a toolkit that allows for the testing of multiple routing related protocols in various combinations without code re-compilation or scenario re-generation. The toolkit produced similar results as the same simulation generated manually with OPNET. The second application demonstrates the viability of a unit testing mechanism for the externalized process models. The unit testing mechanism was demonstrated by integrating with CxxTest and executing xUnit style test suits
Full Stack Application Generation for Insurance Sales based on Product Models
The insurance market is segregated in various lines-of-business such as Life, Health, Property &
Casualty, among others. This segregation allows product engineers to focus on the rules and details of a
speci c insurance area. However, having di erent conceptual models leads to an additional complexity
when a generic presentation layer application has to be continuously adapted to work with these distinct
models.
With the objective to streamline these continuous adaptations in an existent presentation layer, this
work investigates and proposes the usage of code generators to allow a complete application generation,
able to communicate with the given insurance product model. Therefore, this work compares and
combines di erent code generation tools to accomplish the desired application generation.
During this project, it is chosen an existing framework to create several software layers and respective
components such as necessary classes to represent the Domain Model ; database mappings; Service layer;
REST Application Program Interface (API); and a rich javascript-based presentation layer.
As a conclusion, this project demonstrates that the proposed tool can generate the application already
adapted and able to communicate with the provided conceptual model. Proving that this autonomous
process is faster than the current manual development processes to adapt a presentation layer to an
Insurance product model.O mercado segurador encontra-se dividido em várias linhas-de-negócio (e.g. Vida, Saúde, Propriedade)
que têm naturalmente, diferentes modelos conceptuais para a representação dos seus produtos. Esta
panóplia de modelos leva a uma dificuldade acrescida quando o software de camada de apresentação
tem que ser constantemente adaptado aos novos modelos bem como ás alterações efetuadas aos modelos
existentes.
Com o intuito de suprimir esta constante adaptação a novos modelos, este trabalho visa a exploração
e implementação de geradores de código de forma a permitir gerar toda uma aplicação que servirá de
camada de apresentação ao utilizador para um dado modelo.
Assim, este trabalho expõe e compara várias ferramentas de geração de código actualmente disponíveis,
de forma a que seja escolhida a mais eficaz para responder aos objectivos estabelecidos. É então selecionada a ferramenta mais promissora e capaz de gerar vários componentes de software, gerando o seu
modelo de domínio, mapeamento com as respectivas tabelas de base de dados, uma camada de lógica de
negócio, serviços REST bem como uma camada de apresentação.
Como conclusão, este trabalho apresenta uma solução que é capaz de se basear num modelo proveniente
do sistema de modelação de produto e assim gerar completamente a aplicação de camada de apresentação
desejada para esse mesmo modelo. Permitindo assim, um processo mais rápido e eficaz quando comparado
com os processos manuais de desenvolvimento e de adaptação de código-fonte existentes
Testing Graphical User Interfaces with Property-Based Testing
Before a software product is released, it has to be verified that the product works as it should.
Graphical User Interfaces (GUI) need to be tested like any other software products.
The purpose of testing GUIs is to detect defects but also unexpected behaviour of a GUI.
In 2000 John Hughes and Koen Claessen introduced a new software testing technique: \textit{Property-Based Testing}
(PBT). In this testing technique the functionality of the system under the test is defined as properties.
Properties are like rules
for the features under test. A property defines a relation between input and output that should always
hold for all inputs. A property is tested by generating a large number of inputs for which the property is tested.
The goal of this thesis is to explore if PBT is applicable to UI testing. We formulate properties that describe the rules
that a GUI should follow, then apply PBT and investigate whether defects could be exposed this way. We also explore whether
PBT solves any of the challenges of UI testing, in particular whether test coverage can be increased by using PBT.
As its results, this thesis shows that PBT can be applied in GUI testing and that there are defect classes that
might not be detectable by traditional testing methods, but can be found using PBT
- …