The concept of software reusability has been around since the 60’s, however with the increase in pressure that organizations face with respect to
Reducing cost of software development
Reducing time to develop software
The concept of reuse has started gaining traction with researchers and practioners once again. The growth of the open-source community and its contributions has also provided a lot of impetus to the adoption of the concept of reusability.
Needless to say, the term reusable implies different advantages. Most of which are discussed in detail by various industry experts and fall into some common buckets
The challenge for organizations though is to create a framework by which the actual benefits of reusability can be institutionalized and practiced.
Our research-based approach towards software reuse led us to only one objective – Reduce Cognitive Distance. Cognitive distance is defined as the amount of intellectual effort required to understand a particular concept or artifact.
Our approach to reusability revolves around four main aspects.
The most important, abstraction is a process by which information of a software is shared so as to enable its use faster without having to bother about other intricate aspects. Our approach ensures ease of use and increased applicability of the software component in different scenarios. We achieve this by providing detail specifications of variable and fixed components.
Our approach of selecting the right artifact takes into consideration aspects like ease of location, ease of understanding and ability to compare. We achieve this through standardization at a document and process level. The selection process if further aided by various possible uses cases where the artifact might have been used and can be used as perceived by its creator.
Specialization is a process by which a software professional can modify the artifact to suit a specific need. Our approach towards designing reusable components or software ensures that all modifications for use are controlled by the variable component of artifact only and the software developer does not have to spend any time on modifications of the hidden layers.
We enable easy integration of a reusable artifact into a software system effectively, by ensuring that the user clearly understands those properties of the artifact that interact with other artifacts or the main system. To ensure ease of integration we provide the right details to the user without exposing unnecessary internal details that might cause unwanted delays in use.
Provide reusability across the entire spectrum of software development. Right from design to testing
Abstraction applied at a process level to ensure that every reusable component is standardized
Internal reward and recognition system incentivizes the creation and use of reusable components.
Extensive use of design patterns to reduce system complexity.