2015-10-27

The Concept of Software Recycling

The concept of Software Recycling promotes component based software design and component cataloging to enable and simplify software reuse and retrofitting.

In 2015, Puri introduced the concept of Software Recycling as a part of Sustainable Software Engineering:
“Software Recycling includes software reuse taken to a new level, wherein the components that are outdated or written in older generation languages (of current era) are retrofitted with newer components. Such reuse that [...] directly impacts the power consumption, resource usage, efficiency of software, effectiveness of process, utilization of development manpower and leads to a green ecosystem or environment is termed as Software Recycle.”1:24–5
However, the basic idea has already been mentioned by Mahmoud and Ahmad2:67 and goes further back to Shenoy and Eeratta3 who mentioned the reuse of software artifacts to reduce carbon dioxide emissions due to saved development efforts.

An integral part of the concept of Software Recycling is a central component catalog that allows developers to search for already existing components and its accompanying binaries, source code, and documentation to reuse those components in other software projects. This central catalog may be accessible by the public or exclusively by a single software developing organization.

A central component catalog has two advantages for organizations:
  1. it reduces development and maintenance efforts and thus environmental impacts, if thoroughly tested, documented, and maintainable components can be picked from the catalog to be reused, and
  2. it promotes knowledge sharing through the entire organization, especially if an organization consists of several development teams located in different subsidiaries.

Discussion

As with many management efforts there is no guarantee that the advantages of Software Recycling or a central component catalog will take effect. It depends on how well the organization masters to establish the concept in peoples minds and their daily business practice.

Regarding the Life Cycle of Software Products4:297, 5:67–70, Puri argues that there is no need for a disposal stage for software artifacts, because those will be reused or recycled in other software projects. He argues also that Software Recycling will require almost no disposal stage at all.

From my point of view this is a misunderstanding of the Disposal stage of the Life Cycle of Software Products4:297, 5:67–70, which is oriented towards life cycles of Life Cycle Assessment6. Hence, disposal is a part of the end of life treatment of a product or service. It does not matter whether the product or service is software or something else. Actually, even today software products have still some material parts that have to be disposed or recycled, e.g., printed manuals, printed technical documentation, data media, etc. Furthermore, for Life Cycle Assessment, it makes no difference whether one analyzes only a software component or whether one analyzes a whole software product comprising several components. Regarding the material parts, one may argue that those can be recycled. Therefore, recycling is considered in the Disposal stage5:69. However, lossless recycling is usually not possible and therefore some kind of disposal has to be taken into account. For example, in the case of paper or cardboard, the number of reuse cycles is limited, because the fibers are getting shorter and shorter with each cycle, resulting in pulp that cannot be used anymore for new paper or cardboard, meaning that the pulp has to be disposed in the end7.

Software Recycling Guideline

After I gave Puri's work some thought, I thought about, what it may mean for an organization to exercise Software Recycling. My thoughts resulted in the following short guideline:

  • Design your software for reuse.
  • Modularize your software in components that can be used, integrated, aggregated, or orchestrated independently from each other.
  • Document the API of your components to facilitate reuse.
  • Provide reusable test cases for your components that can be used to test your components in their target application or system.
  • Provide the most simple example that shows how your component can be integrated in a target application or system.
  • Enlist your component, consisting of its binaries, source code, documentation, test cases, integration examples and its version history in a central component catalog (links to the respective repositories should suffice as long as the component is under active maintenance).
  • When your component reaches its end of life stage and is removed from your source code repository/build system, put also its artifacts (binaries, source code, documentation, test cases, integration examples) alongside with basic build instructions into your central component catalog. This simplifies reuse of source code fragments and avoids re-engineering its behavior from compiled code.



  1. Puri, S.K.: The Concept of Software Recycle. Retrofitting Older Generation (Used) Components with Newer Components. CSI Communications, volume 39, issue 5, pp. 24–25 (2015). http://www.csi-india.org/communications/CSI%20Aug.%2015%20Combine.pdf
  2. Mahmoud, S.S., Ahmad, I.: A Green Model for Sustainable Software Engineering. IJSEIA, volume 7, issue 4, pp. 55–74 (2013). http://www.sersc.org/journals/IJSEIA/vol7_no4_2013/5.pdf
  3. Shenoy, S.S., Eeratta, R.: Green software development model. An approach towards sustainable software development. In: Negi, A. (ed.): Annual IEEE India Conference (INDICON), 2011. 16 - 18 Dec. 2011, BITS Pilani, Hyderabad Campus, Hyderabad, India ; proceedings, pp. 1–6. IEEE, Piscataway, NJ (2011). doi:10.1109/INDCON.2011.6139638
  4. Naumann, S., Dick, M., Kern, E., Johann, T.: The GREENSOFT Model: A Reference Model for Green and Sustainable Software and its Engineering. SUSCOM, volume 1, issue 4, pp. 294–304 (2011). doi:10.1016/j.suscom.2011.06.004
  5. Kern, E., Naumann, S., Dick, M.: Processes for Green and Sustainable Software Engineering. In: Calero, C., Piattini, M. (eds.): Green in Software Engineering, pp. 61–81. Springer International Publishing (2015). doi:10.1007/978-3-319-08581-4_3
  6. ISO 14040:2006: Environmental management -- Life cycle assessment -- Principles and framework. ICS 13.020.60; 13.020.10, International Organization for Standardization, 2010-07-17
  7. U.S. Environmental Protection Agency: Paper Making and Recycling. http://www.epa.gov/wastes/conserve/materials/paper/basics/papermaking.htm, 2015-09-05; moved to http://archive.epa.gov/wastes/conserve/materials/paper/web/html/papermaking.html, 2015-10-27