SEJun 6, 2021Code
Discovery of Layered Software Architecture from Source Code Using Ego NetworksSanjay Thakare, Arvind W Kiwelekar
Software architecture refers to the high-level abstraction of a system including the configuration of the involved elements and the interactions and relationships that exist between them. Source codes can be easily built by referring to the software architectures. However, the reverse process i.e. derivation of the software architecture from the source code is a challenging task. Further, such an architecture consists of multiple layers, and distributing the existing elements into these layers should be done accurately and efficiently. In this paper, a novel approach is presented for the recovery of layered architectures from Java-based software systems using the concept of ego networks. Ego networks have traditionally been used for social network analysis, but in this paper, they are modified in a particular way and tuned to suit the mentioned task. Specifically, a dependency network is extracted from the source code to create an ego network. The ego network is processed to create and optimize ego layers in a particular structure. These ego layers when integrated and optimized together give the final layered architecture. The proposed approach is evaluated in two ways: on static versions of three open-source software, and a continuously evolving software system. The distribution of nodes amongst the proposed layers and the committed violations are observed on both class level and package level. The proposed method is seen to outperform the existing standard approaches over multiple performance metrics. We also carry out the analysis of variation in the results concerning the change in the node selection strategy and the frequency. The empirical observations show promising signs for recovering software architecture layers from source codes using this technique and also extending it further to other languages and software.
SEJun 6, 2021
Redefining measures of Layered ArchitectureSanjay Thakare, Arvind W Kiwelekar
Layered architecture represents the software structure in the form of layers. Every element in the software is assigned to one of the layers such that the relationship amongst the elements is maintained. A set of design principles rules the process of construction of the layered architecture. Various statistical measures have been defined to check whether the layered architecture of a given software is following these design principles or not. In this paper, we redefine the measures of layered architecture based on the relationship between the software components. The measures check for the violations committed regarding the back calls, skip calls, and cyclic structures. Further, we also introduce a new measure to verify the logical separation amongst the layers. The system's current architecture is extracted from the source code and represented using a three-tier layered structure, which is the defacto standard architecture of Java applications. The redefined measures are applied to determine the conformance of layering principles in the system. We evaluate five different software systems for their architecture consistency. The results obtained on our redefined measures are compared to those obtained by applying the standard set of measures. A quantitative analysis of the proposed measures is performed, and we conclude that they can determine the consideration of layering principles followed during the development of a software system.
SIMay 24, 2021
i-Pulse: A NLP based novel approach for employee engagement in logistics organizationRachit Garg, Arvind W Kiwelekar, Laxman D Netak et al.
Although most logistics and freight forwarding organizations, in one way or another, claim to have core values. The engagement of employees is a vast structure that affects almost every part of the company's core environmental values. There is little theoretical knowledge about the relationship between firms and the engagement of employees. Based on research literature, this paper aims to provide a novel approach for insight around employee engagement in a logistics organization by implementing deep natural language processing concepts. The artificial intelligence-enabled solution named Intelligent Pulse (I-Pulse) can evaluate hundreds and thousands of pulse survey comments and provides the actionable insights and gist of employee feedback. I-Pulse allows the stakeholders to think in new ways in their organization, helping them to have a powerful influence on employee engagement, retention, and efficiency. This study is of corresponding interest to researchers and practitioners.
SEJan 23, 2021
A Software Architecture Teacher's DilemmasArvind W Kiwelekar
An instructor teaching a course on Software Architecture needs to be more reflective to engage students productively in the learning activities. In this reflective essay, the author identifies a few decisive moments referred to as instructional dilemmas at which a teacher reflects upon choices and their consequences so that meaningful learning happens. These situations are referred to as dilemmas because they offer two options to instructors. Some of these dilemmas arise from the inherent nature of Software Architecture as a discipline, while the source of others is the background knowledge of learners. The paper suggests a set of principles and small-teaching methods to make teaching and learning more effective in such situations.
SEJan 23, 2021
Recovery and Analysis of Architecture Descriptions using Centrality MeasuresSanjay Thakare, Arvind W Kiwelekar
The necessity of an explicit architecture description has been continuously emphasized to communicate the system functionality and for system maintenance activities. This paper presents an approach to extract architecture descriptions using the {\em centrality measures} from the theory of Social Network Analysis. The architecture recovery approach presented in this paper works in two phases. The first phase aims to calculate centrality measures for each program element in the system. The second phase assumes that the system has been designed around the layered architecture style and assigns layers to each program element. Two techniques to assign program elements are presented. The first technique of layer assignment uses a set of pre-defined rules, while the second technique learns the rules of assignment from a pre-labelled data set. The paper presents the evaluation of both approaches.
CLDec 6, 2020
A Two-Systems Perspective for Computational ThinkingArvind W Kiwelekar, Swanand Navandar, Dharmendra K. Yadav
Computational Thinking (CT) has emerged as one of the vital thinking skills in recent times, especially for Science, Technology, Engineering and Management (STEM) graduates. Educators are in search of underlying cognitive models against which CT can be analyzed and evaluated. This paper suggests adopting Kahneman's two-systems model as a framework to understand the computational thought process. Kahneman's two-systems model postulates that human thinking happens at two levels, i.e. fast and slow thinking. This paper illustrates through examples that CT activities can be represented and analyzed using Kahneman's two-systems model. The potential benefits of adopting Kahneman's two-systems perspective are that it helps us to fix the biases that cause errors in our reasoning. Further, it also provides a set of heuristics to speed up reasoning activities.
SEOct 17, 2019
Role of Ontology Training to Software Engineering StudentsArvind W Kiwelekar
Students of software engineering struggle to develop a systems perspective because most of the software engineering methodologies focus on developing a particular aspect of a system. Lack of unified coverage to the topic of systems modelling is identified as the root cause behind this problem. The paper explains the role of ontology in building systems perspective. A case for the necessity of ontology training as a means to overcome this problem is presented. The course content for a typical course on ontology is also described in the paper.
SEJan 8, 2016
On Which Skills do Indian Universities Evaluate Software Engineering Students?Hansaraj S. Wankhede, Sanil S. Gandhi, Arvind W Kiwelekar
Universities conduct examinations to evaluate acquired skills and knowledge gained by students. An assessment of skills and knowledge levels evaluated during Software Engineering examinations is presented in this paper. The question items asked during examinations are analyzed from three dimensions that are cognitive levels, knowledge levels and knowledge areas. The Revised Bloom's Taxonomy is used to classify question items along the dimensions of cognitive levels and knowledge levels. Question items are also classified in various knowledge areas specified in ACM/IEEE's Computer Science Curricula. The analysis presented in this paper will be useful for software engineering educators to devise corrective interventions and employers of fresh graduates to design pre-induction training programs.