Skip to main content

Towards an Evidence-Based Understanding of Emergence of Architecture through Continuous Refactoring in Agile Software Development – A Summary

The popularity of Agile Software Development approach gave rise to many questions related to the architecture of the system developed. According to architecture-centric developers, failure in resolving architecture related problems could lead to software architecture erosion and thus failure of the software projects. The objective of this research was to determine the possibility of extracting a satisfactory architecture from refactoring the developed software and the role of the contextual factor in it, as it could help avoid architecture erosion while following Agile Software Development approach reducing cost and incorporate changes into the software. The objective of this paper was to collect empirical evidence supporting it. Surveys and semi-structured interviews via email were conducted with selected candidates of varying experiences and skill sets, while the collected data was analyzed using Grounded Theory. One of the observations made in agile approaches was the fact that the developers while trying to incorporate the Agile manifesto into their work started to pay little attention to the architecture related process considering an optional task. Scrum followers claimed to support architectural practices via oral communication. According to Scrum, the software’s architecture can be refactored and repackaged into components. Crystal Clear model considers software architecture development and domain models a compulsory part of it. In general, agile methods emphasize on the process of software architecture’s emergence from small and continuous refactoring of the developed software whereas the architecture-centric developers believe in developing the architecture during the early levels of software development lifecycle. According to the results obtained 68% of the test group claimed that there did exist a possibility of software architecture emergence from refactoring the developed software among which only 59% of the total test group claimed the contextual factors being the reason for it. A total of 20 contextual factors were not only identified but also classified into 4 categories i.e. project, team, organization, and practices. In the ‘project’ category, the probability of software architecture’s emergence from refactoring is found to be greater if the size of the project is small while consisting of several features with overall low algorithmic complexity, having a system design based on contemporary design principles and technology, and a development team having a required set of architecture knowledge and also the knowledge about the type of architecture significant requirements and their criticality. When looking into the category ‘team’ the task was successful if the team size was smaller consisting of experienced people with a required set of skills and having the urge to learn new technologies and to adopt with them. When talked about the category ‘practices’, continuous integration and good design principles of a system lead to the emergence of software architecture from small refactoring of the software. Good management support, communicational skills, organizational structure, organizational governance, and maturity also resulted in the emergence of software architecture from small and continuous refactoring. Although the findings of this research paper should be taken into consideration for devising a suitable strategy to deal with architectural aspects, there does exist a threat to the validity of this empirical research in terms of the right set of selected candidates for this research, and the applicability and usefulness of this research. This paper also emphasized on the fact that there should be more empirical research conducted on the aspects related to the contextual factors identified in this research.

Comments

Popular posts from this blog

Software Architecture Views and Structures

Description of Views: In the year 1995 Kruchten presented his 4+1 architectural view model consisting of the following five types of views: Logical Development Process Physical Scenario Later with further development and research in the domain of architectural view following new views were developed to represent their respective structures: Views Sub-View of Description Logical None Highlights the functionalities provided by the system to the end-users. Unified Modeling Language (UML) diagrams such as the Class diagram, Domain diagram, Use Case diagram, State diagrams and Activity diagrams can be used to represent the logical view of the architecture. Development None It is also known as an implementation view. It is mainly concerned with the software project management. It represents the system with the programmer’s perspective. Process None It deals with the representation of...

Overview of MISRA C++ (2008)

Introduction Software to Control Autonomous Car MISRA C ++ is a software development standard for C and C++ programming language that aims to facilitate code portability and reliability in the context of embedded systems, specifically those systems programming in ANSI C. Its mission is:  “   To provide assistance to the automotive industry in the application and creation within vehicle systems of safe and reliable software ” MISRA - A Brief History In 1998 MISRA targeted only the automotive industry but later released it focus on generic rules for developing safety-critical applications such as: anti-lock braking system  (ABS), and auto-pilot software system etc. No major changes have been made to the MISRA C++ standard after the version released in the year 2008. Every autonomous vehicle developed can only be allowed for commercial or industrial use if each of its hardware and software component adheres to the required standards. ...

How traceability of non-functional requirements is managed throughout the software development process?

1. Requirements Traceability: Requirements traceability is the process of describing and keeping track of a set of requirements throughout the system’s lifecycle. The process assists in managing changing requirements of a particular software product. Requirements traceability of is two types, forward traceability where a particular requirement involved during the design and implementation phases of the software system, and backward requirement traceability where a particular requirement is being traced back to its source. 2. Proposed Solutions for the Traceability of Non - Functional Requirements : The author J. Merilinna [8], proposed a framework supported by a tool to trace the non-functional requirements in both forward and backward direction. The proposed method is based on the context of DSM (Domain Specific Modeling).  The NFR+1 framework involved are used for the elicitation, definition and redefinition of the system’s non-functional requirements. The...