31 research outputs found
definitions, concepts, approaches, requirements, characteristics and evaluation models
FAPESP (processes 2012/24487-3 and 2012/04549-4) and Brazil-Europe Erasmus Mundus project (process BM13DM0002) partially funded this researchAmong research opportunities in software engineering for cloud computing model, interoperability stands out. We found that the dynamic nature of cloud technologies and the battle for market domination make cloud applications locked-id, i.e, proprietary, non-portable and non-interoperable. In general context of cloud computing, interoperability goes beyond communication between systems like in other fields, it goes in direction of more dynamic, heterogeneous, complex and composed applications that take advantage of best features from different providers and services simultaneously. Interoperability in cloud constitutes a great challenge that must be overcome for that, in the future, software be more dynamic and improved.publishersversionpublishe
Test case quality: an empirical study on belief and evidence
Software testing is a mandatory activity in any serious software development
process, as bugs are a reality in software development. This raises the
question of quality: good tests are effective in finding bugs, but until a test
case actually finds a bug, its effectiveness remains unknown. Therefore,
determining what constitutes a good or bad test is necessary. This is not a
simple task, and there are a number of studies that identify different
characteristics of a good test case. A previous study evaluated 29 hypotheses
regarding what constitutes a good test case, but the findings are based on
developers' beliefs, which are subjective and biased. In this paper we
investigate eight of these hypotheses, through an extensive empirical study
based on open software repositories. Despite our best efforts, we were unable
to find evidence that supports these beliefs. This indicates that, although
these hypotheses represent good software engineering advice, they do not
necessarily mean that they are enough to provide the desired outcome of good
testing code.Comment: 12 pages, 1 figure, 3 table
Extensão da ferramenta MVCASE com serviços remotos de armazenamento e busca de artefatos de software.
Software reuse aims to increase productivity and to decrease time-to-market, through work
optimization and avoiding effort duplication. In this context, two areas arise: Software Components
and Computer-Aided Software Engineering (CASE). The Component-Based Development
approach aims to offer ways to build more reusable software. The use of CASE seeks to reduce
effort, by delegating part of the tasks to be performed by the computer, and to improve quality,
by helping the Software Engineer to perform some tasks. Combining the ideas of software components
and CASE, this dissertation presents an extension of MVCASE tool, an academic tool
developed in UFSCar - Federal University of São Carlos, with remote services for storage and search
for software artifacts, aiming to improve productivity and to reduce time and costs in software
development.Universidade Federal de Sao CarlosA reutilização de software busca promover aumento na produtividade e redução de prazo de
entrega de produtos de software, através da otimização do trabalho, evitando-se a duplicação desnecessária
de esforço. Nesse contexto, duas áreas se destacam: componentes de software e engenharia
de software assistida por computador (CASE). A abordagem de desenvolvimento baseado
em componentes busca oferecer maneiras para se construir software mais reutilizável . O uso de
CASE busca reduzir o esforço, delegando parte do trabalho para ser realizado pelo computador, e
aumentar a qualidade, auxiliando o Engenheiro de Software nas tarefas de desenvolvimento. Combinando
as idéias de componentes de software e CASE, esta dissertação apresenta uma extensão
da ferramenta MVCASE, uma ferramenta acadêmica desenvolvida na UFSCar - Universidade Federal
de São Carlos, com serviços remotos de armazenamento e busca de artefatos de software,
buscando melhorar a produtividade e reduzir tempo e custos no desenvolvimento de software
An investigation on the impact of MDE on software reuse
Abstract-Software reuse and model-driven engineering (MDE) are two distinct approaches that attempt to improve quality and productivity in software projects. Much is said about how MDE can increase software reuse by reducing the amount of hand-written code, but few studies consider the fact that in MDE other artifacts -models, tools, transformations and code generators -come into play and need to be considered. How much more reuse can we achieve with MDE? How reusable are these MDE-specific assets? Motivated by these questions, this paper presents the observations made in three exploratory studies. In each study, the same software was developed with and without MDE, and a comparison based on reuse metrics was made. The results indicate that MDE can increase and/or improve software reuse in different ways, but with some associated costs, such as increased software complexity and decreased maintainability. In the context of our observations, complex technical domains have more to gain from the automation achieved with MDE, while business domains seem to be more suitable for simpler featurebased configuration. We conclude the paper pointing out more studies that could be performed to gain additional knowledge regarding MDE and reuse
Distributed Component-Based Software Development: An Incremental Approach
In spite of recent and constant researches in the Component-Based Development (CBD) area, there is still lack of patterns, approaches and methodologies that effectively support the development “for reuse ” as much as “with reuse”. Considering the accelerated growth of the Internet over the last decade, where distribution has become an essential non-functional requirement of most applications, the problem becomes bigger. This paper proposes an Incremental Approach that integrates the concepts of Component-Based Software Engineering (CBSE), frameworks, patterns, and distribution. This approach is divided into two stages: the development “for reuse”, and the development “with reuse”. A CASE tool is the main mechanism to apply this process model, supporting inclusively, the code generation of components and applications. An experimental study evaluates the viability of the use of an approach for the distributed component-based software development and the impact of applying it to a software development project
MVCASE Tool – Working with Design Patterns
Working with design patterns can be considerably improved when using tools that help in pattern creation and application. However, there are several issues involved. For instance, a tool must offer mechanisms to help the Software Engineer to find the right patterns to a particular solution, or to identify and recognize patterns after they were applied. This paper presents the main requirements for these tools, and presents an extension of MVCASE tool to help Software Engineers to create and reuse design patterns in a high abstraction level during the software development process. The tool uses a distributed repository to store the patterns, and uses a code generator to automate most of the implementation process. 1
The Draco Approach Revisited: Model-Driven Software Reuse
Abstract. Many software reuse approaches were proposed, most of them based on domain analysis, first investigated in 1980 by Neighbors and the Draco approach. He also investigated many concepts that are being currently revisited in model-driven development (MDD). Although conceptually valid, Draco had some problems, mainly in terms of practical applicability. This paper shows how these can now be solved using current state-of-the-art and practice MDD technologies, toward a model-driven software reuse approach. 1
Orbitally Shaken Single-Use Bioreactors
In cloud computing, lock-in refers to the difficulty of porting an application from one platform to another. An example of such difficulty can be witnessed when porting an application from Platform-as-a-Service Google App Engine to Microsoft Azure. Differences in their implementations are substantial, yielding non-portable applications. Standardization could address this problem, but existing initiatives are still to be accepted. This paper addresses lock-in by proposing a model-driven engineering design approach that decouples platform specific code from the application logic. The resulting platform-independent models, as well as corresponding model transformations, can be reused to generate distinct platform-specific implementations, hence reducing the programming effort spent coding repetitive tasks. Such transformations can be made available for reuse on a repository for cloud providers. We have implemented transformations to handle persistence for Google App Engine and Azure, and discuss how model-driven engineering can reconcile the differences between features of the persistence models of GAE and Azure.FAPESP (processes 2012/24487-3 and 2012/04549-4)Coordination of Superior Level Staff Improvement - CAPESBrazil-Europe Erasmus Mundus project (process BM13DM0002