30,437 research outputs found
A formal model of service-orientated design structure
Service-oriented computing (SOC) is a promising paradigm for developing enterprise software systems. The initial concepts of service-orientation have been described in the research and industry literature and software tools for assisting in the development of service-oriented (SO) applications are becoming more widely used. Nonetheless, a precise description of what constitutes a SO system is yet to be formally defined, and the design principles of SOC are not well understood. Therefore, this paper proposes a formal mathematical model covering design artefacts in service-oriented systems and their structural and behavioural properties. This model promotes a better understanding of SO concepts, and in particular, enables the definition of structural software metrics in an unambiguous, formal manner. Finally, although the proposed model is generic, it can be customised to support particular technologies as shown in this paper where the model was tailored for BPEL4WS implementation
Exploring Maintainability Assurance Research for Service- and Microservice-Based Systems: Directions and Differences
To ensure sustainable software maintenance and evolution, a diverse set of activities and concepts like metrics, change impact analysis, or antipattern detection can be used. Special maintainability assurance techniques have been proposed for service- and microservice-based systems, but it is difficult to get a comprehensive overview of this publication landscape. We therefore conducted a systematic literature review (SLR) to collect and categorize maintainability assurance approaches for service-oriented architecture (SOA) and microservices. Our search strategy led to the selection of 223 primary studies from 2007 to 2018 which we categorized with a threefold taxonomy: a) architectural (SOA, microservices, both), b) methodical (method or contribution of the study), and c) thematic (maintainability assurance subfield). We discuss the distribution among these categories and present different research directions as well as exemplary studies per thematic category. The primary finding of our SLR is that, while very few approaches have been suggested for microservices so far (24 of 223, ?11%), we identified several thematic categories where existing SOA techniques could be adapted for the maintainability assurance of microservices
Programming language complexity analysis and its impact on Checkmarx activities
Dissertação de mestrado integrado em Informatics EngineeringTools for Programming Languages processing, like Static Analysers (for instance, a Static
Application Security Testing (SAST) tool, one of Checkmarx’s main products), must be
adapted to cope with a given input when the source programming language changes.
Complexity of the programming language is one of the key factors that deeply impact the
time of giving support to it.
This Master’s Project aims at proposing an approach for assessing language complexity,
measuring, at a first stage, the complexity of its underlying context-free grammar (CFG).
From the analysis of concrete case studies, factors have been identified that make the
support process more time-consuming, in particular in the stages of language recognition
and in the transformation to an abstract syntax tree (AST). In this sense, at a second stage, a
set of language features is analysed in order to take into account the referred factors that
also impact on the language processing.
The main objective of the Master’s work here reported is to help development teams to
improve the estimation of time and effort needed to adapt the SAST Tool in order to cope
with a new programming language.
In this dissertation a tool is proposed, that allows for the evaluation of the complexity of a
language based on a set of metrics to classify the complexity of its grammar, along with a set
of language properties. The tool compares the new language complexity so far determined
with previously supported languages, to predict the effort to process the new language.Ferramentas para processamento de Linguagens de Programação, como os Analisadores
Estáticos (por exemplo, uma ferramenta de Testes Estáticos para Análise da Segurança de
Aplicações, um dos principais produtos da Checkmarx), devem ser adaptadas para lidar
com uma dada entrada quando a linguagem de programação de origem muda.
A complexidade da linguagem de programação é um dos fatores-chave que influencia
profundamente o tempo de suporte à mesma.
Este projeto de Mestrado visa propor uma abordagem para avaliar a complexidade de uma
linguagem de programação, medindo, numa primeira fase, a complexidade da gramática
independente de contexto (GIC) subjacente.
A partir da análise de casos concretos, foram identificados fatores (relacionados como
facilidades específicas oferecidas pela linguagem) que tornam o processo de suporte mais
demorado, em particular nas fases de reconhecimento da linguagem e na transformação para
uma árvore de sintaxe abstrata (AST). Neste sentido, numa segunda fase, foi identificado
um conjunto de características linguísticas de modo a ter em conta os referidos fatores que
também têm impacto no processamento da linguagem.
O principal objetivo do trabalho de mestrado aqui relatado é auxiliar as equipas de
desenvolvimento a melhorar a estimativa do tempo e esforço necessários para adaptar a
ferramenta SAST de modo a lidar com uma nova linguagem de programação.
Como resultado deste projeto, tal como se descreve na dissertação, é proposta uma
ferramenta, que permite a avaliação da complexidade de uma linguagem com base num
conjunto de métricas para classificar a complexidade da sua gramática, e em um conjunto
de propriedades linguísticas. A ferramenta compara a complexidade da nova linguagem,
avaliada por aplicação do processo referido, com as linguagens anteriormente suportadas,
para prever o esforço para processar a nova linguagem
Recommended from our members
Enterprise application reuse: Semantic discovery of business grid services
Web services have emerged as a prominent paradigm for the development of distributed software systems as they provide the potential for software to be modularized in a way that functionality can be described, discovered and deployed in a platform independent manner over a network (e.g., intranets, extranets and the Internet). This paper examines an extension of this paradigm to encompass ‘Grid Services’, which enables software capabilities to be recast with an operational focus and support a heterogeneous mix of business software and data, termed a Business Grid - "the grid of semantic services". The current industrial representation of services is predominantly syntactic however, lacking the fundamental semantic underpinnings required to fulfill the goals of any semantically-oriented Grid. Consequently, the use of semantic technology in support of business software heterogeneity is investigated as a likely tool to support a diverse and distributed software inventory and user. Service discovery architecture is therefore developed that is (a) distributed in form, (2) supports distributed service knowledge and (3) automatically extends service knowledge (as greater descriptive precision is inferred from the operating application system). This discovery engine is used to execute several real-word scenarios in order to develop and test a framework for engineering such grid service knowledge. The examples presented comprise software components taken from a group of Investment Banking systems. Resulting from the research is a framework for engineering servic
Early aspects: aspect-oriented requirements engineering and architecture design
This paper reports on the third Early Aspects: Aspect-Oriented Requirements Engineering and Architecture Design Workshop, which has been held in Lancaster, UK, on March 21, 2004. The workshop included a presentation session and working sessions in which the particular topics on early aspects were discussed. The primary goal of the workshop was to focus on challenges to defining methodical software development processes for aspects from early on in the software life cycle and explore the potential of proposed methods and techniques to scale up to industrial applications
Assessing architectural evolution: A case study
This is the post-print version of the Article. The official published can be accessed from the link below - Copyright @ 2011 SpringerThis paper proposes to use a historical perspective on generic laws, principles,
and guidelines, like Lehman’s software evolution laws and Martin’s design principles, in order to achieve a multi-faceted process and structural assessment of a system’s architectural evolution. We present a simple structural model with associated historical metrics and
visualizations that could form part of an architect’s dashboard. We perform such an assessment for the Eclipse SDK, as a case study of a large, complex, and long-lived system for which sustained effective architectural evolution is paramount. The twofold aim of checking generic principles on a well-know system is, on the one hand,
to see whether there are certain lessons that could be learned for best practice of architectural evolution, and on the other hand to get more insights about the applicability of such principles. We find that while the Eclipse SDK does follow several of the laws and principles, there are some deviations, and we discuss areas of architectural improvement and limitations of the assessment approach
Comparing service orientation and object orientation : a case study on structural benefits and maintainability
Service Orientation (SO) is a dominating technique evolving around the use of Object Orientation (OO). The conceptual comparison of both the approaches have been broadly explained in the literature, but the generalizable comparison of the maintainability of two paradigms is still a topic under research. This thesis tries to provide a generalized comparison of the maintainability using two functionally equivalent Online BookStore systems developed with Service Orientation and Object Orientation. This thesis presents a brief explanation of the software metrics used for the comparison. The quantitative comparison revealed that the Service-Oriented version of the system has a lower coupling and higher cohesion between software modules compared to an Object-Oriented approach. Through survey results, it was found that Service Orientation has a better degree of modifiability, encapsulation and abstraction while Object-Orientation provides a reduced degree of testing and system complexity comparatively. Also in expert interviews, participants believe that systems based on service orientation possess a better degree of stability, analyzability and modifiability whereas Object-Oriented System tends to provide a lower degree of structural complexity. Furthermore, experimental results suggest that a Service-Based System has a better degree of extensibility and changeability compared to Object-Oriented System
The C Object System: Using C as a High-Level Object-Oriented Language
The C Object System (Cos) is a small C library which implements high-level
concepts available in Clos, Objc and other object-oriented programming
languages: uniform object model (class, meta-class and property-metaclass),
generic functions, multi-methods, delegation, properties, exceptions, contracts
and closures. Cos relies on the programmable capabilities of the C programming
language to extend its syntax and to implement the aforementioned concepts as
first-class objects. Cos aims at satisfying several general principles like
simplicity, extensibility, reusability, efficiency and portability which are
rarely met in a single programming language. Its design is tuned to provide
efficient and portable implementation of message multi-dispatch and message
multi-forwarding which are the heart of code extensibility and reusability.
With COS features in hand, software should become as flexible and extensible as
with scripting languages and as efficient and portable as expected with C
programming. Likewise, Cos concepts should significantly simplify adaptive and
aspect-oriented programming as well as distributed and service-oriented
computingComment: 18
- …