5 research outputs found
Ambidexterity in large-scale software engineering
Software is pervading our environment with products that become smarter and
smarter every day. In order to follow this trend, software companies deliver
continuously new features, in order to anticipate their competitors and to gain market
share. For this reason, they need to adopt processes and organization solutions that
allow them to deliver continuously.
A key challenge for software organizations is to balance the resources in order to
deliver enough new features in the short-term but also to support the delivery of new
features in the long-term. In one word, companies need to be ambidextrous. In this
thesis we investigate what ambidexterity is, what are the factors that hinder large
software companies to be ambidextrous, and we provide initial solutions for the
mitigation of such challenges.
The research process consists of an empirical investigation based on the Grounded
Theory approach, in which we conducted several case studies based on continuous
interaction with 7 large software organizations developing embedded software. The
results in this thesis are grounded in a large number of data collected, and corroborated
by a combination of exploratory and confirmatory, as well as qualitative and
quantitative data collection.
The contributions of this thesis include a comprehensive understanding of the factors
influencing ambidexterity, the current challenges and a proposed solution, CAFFEA. In
particular, we found that three main challenges where hampering the achievement of
ambidexterity for large software companies. The first one is the conflict between Agile
Software Development and software reuse. The second one is the complexity of
balancing short-term and long-term goals among a large number of stakeholders with
different views and expertize. The third challenge is the risky tendency, in practice, of
developing systems that does not sustain long-term delivery of new features: this is
caused by the unbalanced focus on short-term deliveries rather than on the system
architecture quality. This phenomenon is referred to as Architectural Technical Debt,
which is a financial theoretical framework that relates the implementation of suboptimal
architectural solutions to taking a debt. Even though such sub-optimal
solutions might bring benefits in the short-term, a debt might have an interest
associated with it, which consists of a negative impact on the ability of the software
company to deliver new features in the long-term. If the interest becomes too costly,
then the software company suffers delays and development crises. It is therefore
important to avoid accumulation, in the system, of Architectural Technical Debt with a
high interest associated with it.
The solution proposed in this thesis is a comprehensive framework, CAFFEA, which
includes the management of Architectural Technical Debt as a spanning activity (i.e., a
practice shared by stakeholders belonging to different groups inside the organization).
We have recognized and evaluated the strategic information required to manage
Architectural Technical Debt. Then, we have developed an organizational framework,
including roles, teams and practices, which are needed by the involved stakeholders.
This solutions have been empirically developed and evaluated, and companies report
initial benefits of applying the results in practice
Industrialising Software Development in Systems Integration
Compared to other disciplines, software engineering as of today is still dependent on craftsmanship of highly-skilled workers. However, with constantly increasing complexity and efforts, existing software engineering approaches appear more and more inefficient. A paradigm shift towards industrial production methods seems inevitable.
Recent advances in academia and practice have lead to the availability of industrial key principles in software development as well. Specialization is represented in software product lines, standardization and systematic reuse are available with component-based development, and automation has become accessible through model-driven engineering. While each of the above is well researched in theory, only few cases of successful implementation in the industry are known. This becomes even more evident in specialized areas of software engineering such as systems integration.
Todayâs IT systems need to quickly adapt to new business requirements due to mergers and acquisitions and cooperations between enterprises. This certainly leads to integration efforts, i.e. joining different subsystems into a cohesive whole in order to provide new functionality. In such an environment. the application of industrial methods for software development seems even more important. Unfortunately, software development in this field is a highly complex and heterogeneous undertaking, as IT environments differ from customer to customer. In such settings, existing industrialization concepts would never break even due to one-time projects and thus insufficient economies of scale and scope. This present thesis, therefore, describes a novel approach for a more efficient implementation of prior key principles while considering the characteristics of software development for systems integration.
After identifying the characteristics of the field and their affects on currently-known industrialization concepts, an organizational model for industrialized systems integration has thus been developed. It takes software product lines and adapts them in a way feasible for a systems integrator active in several business domains. The result is a three-tiered model consolidating recurring activities and reducing the efforts for individual product lines. For the implementation of component-based development, the present thesis assesses current component approaches and applies an integration metamodel to the most suitable one. This ensures a common understanding of systems integration across different product lines and thus alleviates component reuse, even across product line boundaries. The approach is furthermore aligned with the organizational model to depict in which way component-based development may be applied in industrialized systems integration. Automating software development in systems integration with model-driven engineering was found to be insufficient in its current state. The reason herefore lies in insufficient tool chains and a lack of modelling standards. As an alternative, an XML-based configuration of products within a software product line has been developed. It models a product line and its products with the help of a domain-specific language and utilizes stylesheet transformations to generate compliable artefacts.
The approach has been tested for its feasibility within an exemplarily implementation following a real-world scenario. As not all aspects of industrialized systems integration could be simulated in a laboratory environment, the concept was furthermore validated during several expert interviews with industry representatives. Here, it was also possible to assess cultural and economic aspects.
The thesis concludes with a detailed summary of the contributions to the field and suggests further areas of research in the context of industrialized systems integration