Reuse, Reduce, Recycle (Code): Leveraging Sustainable Software
By Jacob Mathison
The potential and quality of reusable software components (RSCs) could impact how we view web sustainability and "green" digital products. However, RSCs are one of the least visible aspects of a software or tech company's innovation cycle and often stay at the bottom of the business barrel. The term "reusable component" is too technical for those not involved in technology and innovation efforts and too vague for programmers (understandably) looking to get their work done with minimal effort. Copying and pasting a few lines of code can have an impact on sustainable development because it, intentionally or not, follows its main line of questioning: Is it efficient? Is it easily comprehensible? Is it modular? Is it cost-effective?
Understandably, companies are interested in how the first three questions impact the fourth and final one. But, paradoxically, most aren't willing to reverse the order in which the impact on the bottom line is measured. If more information and awareness were spread about reusability in software, it would become evident that, as a first definition, "[s]oftware reuse relies on preplanning to reuse a software component that meets the needs of the organizations involved in software development in new contexts." Planification, involvement and strategic design go far beyond component-based web design (components: think of any and all elements that are visible to users when visiting a website or application).
The rise of modularity in design, no-code platforms and off-the-shelf solutions with popular tech stacks such as Vue.js and Laravel is not just a software-related phenomenon, but a response to increasing consumer demands for product variety in a very short span of time while still guaranteeing product longevity and relevance. In fact, when applied to general design principles, "[m]odularity in design can be, therefore, defined as choosing the design boundaries of a product and of its components (…) so that the design features and tasks are interdependent within and independent across modules."
In technology specifically, design boundaries are often determined by having dedicated teams for front-end, back-end, product development and UX/UI, among other areas. These boundaries could take on many variants; mostly, software companies choose pod-like structures wherein functional elements are developed with the objective of ensuring interactivity, both with the end user and between the design elements themselves. Many well-known code libraries and style libraries, such as Vuetify or Bootstrap, aim at keeping design principles (such as readability and accessibility) intact.
Measuring software sustainability can often mean cost/benefit tracking, as well as Reuse Economic models. At the most basic level, sustainability can be measured by how many new lines of code have been written (taking not only human effort, time and professional capacity but also compromising load times, rendering and bandwidth usage). Even as far back as 1992, this concept was far from new: in relation to however many new lines of code were written for a project, there are concrete metrics for tracking net reuse benefit versus the net cost to reuse. Today, automation models have been suggested for measuring the maintenance-evolution development cycle for sustainable development in software, including using model-based approaches, algorithmic predictions or machine learning. But implementing new solutions can be costly for small to medium-sized businesses.
In response to this issue, researchers Maggo and Gupta talk about this less visible aspect of sustainable software: "there exists an additional cost required for the development of reusable software components from scratch that can be used to build and strengthen their software reservoirs." To avoid this additional cost, the key is the process evaluation of five factors that can be implemented without aggregated resources.
Complexity: This measures the intricacy of a software system's architecture, design and implementation. The aim here is to minimize complexity by creating modular, reusable and well-organized code, which makes it easier for developers to understand, maintain and build upon the existing system.
The Rolling Stone Culture Council is an invitation-only community for Influencers, Innovators and Creatives. Do I qualify?
Cost: Long-term financial viability means customizing without the need to re-design a website or application completely (also related to changeability). An initial investment in software design should be enough to provide mid-term returns, either in a B2C or C2C structure.
Stability: Stability emphasizes using reliable, tested components and following best practices regarding hosting and debugging to ensure the system remains stable, secure and resilient if the application or web needs to scale up or down.
Changeability: Reusable software components and sustainable software design must respond to change and propose fast changes according to new requirements. By designing software with modularity and flexibility in mind, sustainability promotes code that can be updated or reconfigured without disrupting its core functionality.
Timeliness: This is the capacity to deliver software products within a reasonable time frame. It means evaluating efficient development practices, like reusing code and streamlining workflows, to accelerate the development process and enable companies to have a higher responsiveness to market trends or consumer needs.
Researchers at the University of Huddersfield say one of the keys is in design-software team integration. Integration is to "design them to accommodate future changes to a greater extent without significant change to the basic structure of the system with minimal cost." These researchers have shown how "the knowledge of the architectural design decisions of a software-intensive system is easily lost, which leads to increased maintenance and evolution costs, and design erosion (…)."
In other words, they suggest that developers should use design systems that withstand minimal alterations at low cost while remaining functional. This requires adhering to established in-company and international regulations for design principles, such as the separation of concerns and conceptual integrity. That is why software reference architectures (i.e., Bootstrap) that have successful implementations can serve as examples of what sustainable software architectures can do within specific software system families or business domains. If implemented correctly, technical knowledge, when combined with solid design principles, is reusable: but can it stand the test of technological time?
Complexity: Do I qualify? Cost: Stability: Changeability: Timeliness: