I have more
than twenty years of experience in research in different topics of
software engineering, and hence have gained a broad vision about
the state-of-the-art and the overall research directions. My key focus has
been primarily on software design, and in particular software architecture
design. Below I explain in more detail my research activities in my career
together with my aimed research vision and directions. The topics and the relation
among these topics are shown in Figure 1.
Figure
1.
Some of the important research topics in my career
In my early years of research within the software engineering group (TRESE)
at the University of Twente in The Netherlands I have focused on different
aspects of object-oriented software engineering including
object-oriented programming, object-oriented design, object-oriented design
patterns, object-oriented frameworks and method engineering. We were one of
the first groups in the world who applied object-oriented frameworks,
object-oriented design patterns and domain-driven design.
In my research activities related to object-oriented software engineering I
have also focused on the obstacles and the need for better
programming language and design abstractions. In this context, I
have collaborated on the design and realization of the so-called
composition filters approach, which aimed to solve the
modularity problems in object-oriented
programming, and which is one of the primary approaches for aspect-oriented
software development.
Aspect-oriented software development is an important
software development paradigm to enhance the software modularity and
likewise the overall quality of software systems. I have both practical and
in-depth theoretical knowledge on aspect-oriented software development
including aspect-oriented programming, aspect-oriented design,
aspect-oriented architecture, and aspect-oriented requirements. Based on my
background on both aspect-oriented software development and software
architecture design I did research on identifying and modeling
crosscutting concerns (aspects) at the software architecture design level.
I developed an approach for identifying aspects and modeling aspects at the
architecture design level.
An important focus in my career has always been software
architecture design in which I did research on different topics
including, software architecture modeling, software architecture design
methods software architecture analysis, model-driven software architecture
and middleware architectures. I have defined a novel approach on software
architecture design, called synthesis-based architecture design
approach that integrates domain-driven approaches and the synthesis
concepts that we know from mature engineering disciplines. We have
successfully applied this method in architecting many software systems in
different large software companies such as Embedded Systems Institute,
Philips Research, Philips Semiconductors, Thales, Siemens, Aselsan, TAI,
Cybersoft, Milsoft, and Havelsan. I have also focused on designing,
modeling and analyzing software architecture for quality concerns
including adaptability, reliability, and
safety.
I did research on architecting publish subscribe systems
including High Level Architecture (HLA) and Data
Distribution Service for Real-Time Systems (DDS) which are of
primary importance for data centric applications such as in the defense
industry. In this context we have defined an approach for depicting,
analyzing and selecting feasible architecture deployment alternatives. In
our research so far we have primarily focused on deriving feasible
alternatives with respect to performance quality factor but we aim to focus
also on multi-objective optimization including other quality factors such as
fault-tolerance and safety to be used in the context of mission critical and
safety-critical systems.
In the context of cloud computing I have focused on
designing feasible design alternatives for Software as a Service (SaaS)
architectures. We are now doing research on trade-off
analysis and optimization of cloud systems with respect to multiple
quality factors.
The increasing size and complexity of software systems has resulted in the
broadened scope of the products. In practice this has led to the notion of
software product line engineering (SPLE) which aims to
develop the products of a product portfolio using a systematic software
reuse approach. In fact, concepts from industrial engineering are applied to
support the industrialization and mass customization of software. I have
worked on the topics of product line architectures,
domain engineering, variability
management for large scale systems, system product
line engineering, multiple product line engineering,
and software verification and validation of SPLE. I have
also collaborated in unique large scale national projects on SPLE with
Philips, Havelsan and Aselsan.
Global Software Development (GSD), is a
software development approach that can be considered as the coordinated
activity of software development that is not localized and central but
geographically distributed. Together with the Turkish software industry I
have worked on challenging research problems in the context of GSD.
Much useful work has been published in the literature of GSD approaching social
aspects and intercultural communication. Complementary to this, we have focused on the
technical aspects of GSD and considered the architectural design and evaluation of GSD
systems. We have defined the required related architectural viewpoints and
domain specific languages, and defined the analysis
approaches. Initiated by industrial concerns, an important issue is the integration with software reuse
that has led to the notion of global software product line
engineering. From a business and strategic perspective we have
defined a roadmap and vision report that can be used to introduce and
support GSD in Turkey.
In my research the notion of software modeling was always
an important recurring issue. Historically, models have had a long tradition
in software engineering and have been widely used in software projects. The
primary reason for modeling is usually defined as a means for communication,
analysis or guiding the production process. With the recent development in
model-driven software development, models are considered to
be executable which can be interpreted by model compilers and hence provide
support for automatic transformations and analysis of the system. In my
research on model-driven software development I have focused on
software language engineering, domain
specific languages, model
transformations, model-driven architecture,
model-based UI design, and model-driven high
performance computing. I explored model-driven software development
for defining executable architecture views and for
model-driven software product line engineering. I also wish to
focus on automated product generation, automated consistency analysis and
model-based testing using architectural descriptions.
One of my recent research is also model-driven high performance
computing in which we defined a model-driven approach for
analyzing the mapping of parallel algorithms to parallel computing platforms.
The majority of the work in this domain seems to focus on algorithmic
issues. The papers that we published in this domain are pioneering in the
sense that these aim to tackle high performance computing from a
system engineering design perspective and likewise fill an
important gap. One of the important lessons that we can derive from the
research and practice in system development is that an overall system
engineering approach is needed that aligns and integrates software, hardware
and the organizational concerns to build systems that meet the overall
functional and non-functional requirements. Likewise in my future research I
aim to focus on system engineering in which my key concern
will be again the (system) architecture design, modeling and analysis.
Important topics in system engineering are system engineering design
and analysis, systems-of-systems, software ecosystems, and
crowd computing. These topics are not only important from an
industrial perspective but also relate to challenging research questions
that demand new language abstractions, techniques and methods.
I consider software verification and validation as an
important topic in software engineering. With my research on software design
and analysis we have necessarily entered in this domain to support
quantitative analysis of both the code and the architecture. We have already
some papers in this domain but in the near future I aim to tackle important
aspects in software testing, run-time verification, model-checking, static
analysis and model-based testing. In particular we will do this by using
executable architecture description languages.
To support the evidence for the proposed research outcome I have applied empirical
software engineering approaches. In particular we have carried out
systematic mapping study, systematic literature review and case study
research. Further we plan to apply action research to selected projects.
I did many research projects in different industrial
domains including enterprise systems, embedded systems, mission critical
systems, safety critical systems and business critical systems.
In this context my research was very often based on the
industry-as-laboratory approach, which aims to identify relevant
research problems and solutions through close interaction with the industry.
I believe that this approach is fundamental for realizing frontier research
that is relevant for the society.
I have published in all of the above discussed domains.
Many publications will follow. Please check
my publication list for this.
To be continued... :)
|