23 research outputs found
Scaling the Management of Extreme Programming Projects
XP is a code-oriented, light-weight software engineering methodology, suited
merely for small-sized teams who develop software that relies on vague or
rapidly changing requirements. Being very code-oriented, the discipline of
systems engineering knows it as approach of incremental system change. In this
contribution, we discuss the enhanced version of a concept on how to extend XP
on large scale projects with hundreds of software engineers and programmers,
respectively. Previous versions were already presented in [1] and [12]. The
basic idea is to apply the "hierarchical approach", a management principle of
reorganizing companies, as well as well-known moderation principles to XP
project organization. We show similarities between software engineering methods
and company reorganization processes and discuss how the elements of the
hierarchical approach can improve XP. We provide guidelines on how to scale up
XP to very large projects e.g. those common in telecommunication industry and
IT technology consultancy firms by using moderation techniques.Comment: 7 pages, 4 figure
From Monolith to Microservices: A Classification of Refactoring Approaches
While the recently emerged Microservices architectural style is widely
discussed in literature, it is difficult to find clear guidance on the process
of refactoring legacy applications. The importance of the topic is underpinned
by high costs and effort of a refactoring process which has several other
implications, e.g. overall processes (DevOps) and team structure. Software
architects facing this challenge are in need of selecting an appropriate
strategy and refactoring technique. One of the most discussed aspects in this
context is finding the right service granularity to fully leverage the
advantages of a Microservices architecture. This study first discusses the
notion of architectural refactoring and subsequently compares 10 existing
refactoring approaches recently proposed in academic literature. The approaches
are classified by the underlying decomposition technique and visually presented
in the form of a decision guide for quick reference. The review yielded a
variety of strategies to break down a monolithic application into independent
services. With one exception, most approaches are only applicable under certain
conditions. Further concerns are the significant amount of input data some
approaches require as well as limited or prototypical tool support.Comment: 13 pages, 4 tables, 2 figures, Software Engineering Aspects of
Continuous Development and New Paradigms of Software Production and
Deployment, First International Workshop, DEVOPS 2018, Chateau de
Villebrumier, France, March 5-6, 2018, Revised Selected Paper
CentiJ: An RMI Code Generator
The CentiJ system synthesizes Java source code that funnels invocations through an RMI (Remote Method Invocation) based transport layer for distributed computation. The technique generates bridge pattern code (i.e., interfaces and proxies) that automate the creation of virtual proxies for message forwarding. We examine the tradeoffs between bridge implementations based on manual static delegation, automatic static delegation, and dynamic proxy classes. Advantages of the CentiJ technique include improved performance, type safety, transparency, predictability, flexibility and reliability. We then look at various methods for solving the disambiguation problem that arises when delegates have conflicting method signatures. Disambiguation can be automatic, semi-automatic or manual. CentiJ can automatically create a class that alters the interface to the bridge (using the adapter pattern)