What Software Architecture Styles Are Popular?

What Software Architecture Styles Are Popular?

What Software Architecture Styles are Popular? Alexey A. Mitsyuk Nikolay Jamgaryan Faculty of Computer Science, Faculty of Computer Science, HSE University HSE University Moscow, Russia Moscow, Russia [email protected] [email protected] Abstract—One can meet the software architecture style’s decisions that are specific to a particular system within that notion in the software engineering literature. This notion is context, and (3) elicit beneficial qualities in each resulting considered important in books on software architecture and system.” These definitions are general and relatively abstract university sources. However, many software developers are not so optimistic about it. It is not clear, whether this notion is just as well as most other definitions from software engineering an academic concept, or is actually used in the software industry. books and papers. Usually, no clues on how these styles can In this paper, we measured industrial software developers’ be identified and implemented in a concrete software source attitudes towards the concept of software architecture style. We code are given. also investigated the popularity of eleven concrete architecture This work summarizes our team’s first results to understand styles. We applied two methods. A developers survey was applied better the concept of software architecture style and make it to estimate developers’ overall attitude and define what the more tangible. community thinks about the automatic recognition of software To do so, we first tried to find out the developers’ attitude architecture styles. Automatic crawlers were applied to mine the towards the concept of software architectural style. Are real open-source code from the GitHub platform. These crawlers non-academic developers familiar with this concept in general identified style smells in repositories using the features we proposed for the architecture styles. and with different particular styles? Do they consider this con- We found that the notion of software architecture style is not cept useful in their everyday professional activities? Secondly, just a concept of academics in universities. Many software devel- we tried to identify empirical features of software architecture opers apply this concept in their work. We formulated features styles, which can be used in practice to recognize the usage for the eleven concrete software architecture styles and developed of software architecture styles in Java and Python programs. crawlers based on these features. The results of repository mining using the features showed which styles are popular among For our research, certain architecture styles were chosen. developers of open-source projects from commercial companies Then, we chose a small sample of software repositories, which and non-commercial communities. Automatic mining results were were investigated to get empirical features of the architecture additionally validated by the Github developers survey. styles in source code. Afterward, the crawlers were written and Index Terms—software architecture style, software design, code applied to parse the bigger sample of open source repositories smells, software repository mining, survey on GitHub1 service. Besides, we conducted two developers’ surveys. The first I. INTRODUCTION survey aimed to find out the developers’ attitude towards the Software architecture [1] is a discipline within software concept of software architecture styles. We held the survey to engineering dealing with software systems’ structural and understand better whether this topic is worth researching. The behavioral design. Software architects and designers define second survey aimed to validate the results of the crawlers’ how the system is organized, its components, how these parsing. components communicate, etc. Software engineering literature The aim of our research project—to identify empirical (see, for example, foundational works by Shaw and Garlan [2], features of architecture styles—is new to software engineering, Taylor et al. [3], Richards and Neal [4]) applies a notion of while the applied methods are well known. Surveys and software architecture style or pattern. Shaw and Garlan [2] repository mining were applied in many other research projects define it as follows: “An architectural style defines: a family on code smells detection and design patterns identification (see of systems in terms of a pattern of structural organization; a Section VI). The methods we used had shown themselves as vocabulary of components and connectors, with constraints on feasible in exploratory research projects. how they can be combined.” Taylor et al. [3] proposed another Due to the first survey results, developers have positive definition: “An architectural style is a named collection of attitude towards architecture styles. Many of them apply this architectural design decisions that (1) are applicable in a concept in their projects, and even more of them think it is given development context, (2) constrain architectural design beneficial to be acquainted with the concept. In data provided This work is an output of a research project implemented as part of the by the automatic crawlers we found, how much each of the Basic Research Program at the National Research University Higher School of Economics (HSE University). 1GitGHub web-page: https://github.com/ chosen architecture styles is used in practice. We validated the knew the name of the style and how he or she thought it is results of crawlers mining using the second survey. possible to identify that certain style in code. These questions aimed to find out what community of II. RESEARCH QUESTIONS AND PAPER STRUCTURE developers thinks and knows about architecture styles usage In this paper, we consider the three following research and architecture styles identification. questions. B. What Styles did We Select? RQ1: What is the community attitude towards the concept of software architecture style? Software architecture is taught We have selected the following eleven software architecture in universities. Technical experts and master coaches promote styles for this research: advanced styles. However, what does a typical software engi- • Model-View-Controller (MVC) architecture; neer think about this concept? We try to answer this question • Main and sub-programs; in Section III using a developers’ survey. • Machine-learning-based software; RQ2: How can we detect a software architecture style • Event-driven software architecture; in code? Results of the RQ1 survey encouraged us to try • Reflection-using software; to construct a procedure for detecting software architecture • Data-centric software architecture; styles in an actual source code. To do so, we first needed • Expert system; to select features related to particular styles using which we • Cloud-service-based software; can automatically detect them. Section IV answers the second • Software with containerization; research question and presents style features and automated • Aspect-oriented software architecture; scripts which help us to detect styles in code. • Reactive-based software architecture. RQ3: What software architecture styles are popular in These particular styles were chosen based on software archi- open-source projects? Finally, it is of interest to investigate tecture pattern and style catalogs from foundational literature the source code of existing software to decide what styles are of the field [3]–[7]. Usually, software architecture books are popular. Fortunately, much open-source software is available large and contain profound discussions on each of the styles for researchers in the modern world. Thus, we can mine open- considered important by book authors. The list of software source repositories and apply our architecture style detection architecture styles is a massive one. We had to limit this list tool to them. This procedure is presented and discussed in somehow for it to be treatable within a single research project’s Section V. borders. To select the particular set of styles, we consulted Section VI describes some works related to our research with literature of the field [3]–[7] as well as Wikipedia.org project, while Section VII concludes this paper and proposes information4. Some of these styles (for example, MVC and the ideas for further work. Event-driven architectures) are popular and frequently used among software developers. Others (for example, aspect-based III. SOFTWARE ARCHITECTURAL STYLES (RQ1) software and expert systems) are not famous in modern soft- Our first questions were as follows. Whether the concept ware engineering. Besides, we selected styles for which we can of software architecture style is familiar to developers? Is define features based on which the style smells can be detected this concept considered applicable? What particular styles in source code. Thus, we consider it worth investigating this are familiar to developers and are worth considering in the particular set of styles. However, we do not state that this is following steps of our research? an exhaustive set. A. Architecture Styles Survey C. Survey Data To answer these questions, we provided a developers’ survey The survey was held from September till December 2020. described in this section. As it has been mentioned, Google Forms were used for the For our research, we have created a survey2 using Google survey. The survey form was spread in different developer Forms3. This survey consisted of 3 categories of questions. communities connected with various areas of development: Demographical

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    11 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us