0% found this document useful (0 votes)
48 views16 pages

Green Software: A Sustainable Guide

Uploaded by

amjadimran004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views16 pages

Green Software: A Sustainable Guide

Uploaded by

amjadimran004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Green

software
guide
Developed in partnership with
the University of Leicester
Introduction

Greenhouse gas emissions from software are increasing


at rapid pace, with the ICT industry set to reach a
14% share of global emissions by 2040, a sharp
increase from the previous 5% in 2022. Software
use is widespread and has significantly transformed
almost every aspect of life and work. Software is the
set of instructions, data and programs that enable
technology to function. Many ICT applications require
large, complex software and although software doesn’t
consume energy directly, it directs and influences the
operation of hardware, thereby impacting hardware’s
energy consumption and environmental impacts.
Inefficient software can have a major impact on energy
consumption so consideration of sustainable software
is vital to achieving more efficient hardware.
Increasing access to hardware (e.g. smartphones, tablets and laptops)
provides greater access to the internet thereby reducing the digital divide
and digital poverty. This increasing access enhances society’s reliance and
a demand for IT which is driving the creation of further applications that are
larger and more complex, such as ChatGPT. This increased use of hardware is
coupled with increased software use, highlighting software to be an important
issue for sustainability.

Green software is considered efficient software which meets the needs of


the present without negatively impacting future society. The concept of green
software places paramount importance on integrating energy-efficient and
waste-reduction patterns, due diligence practices and methodologies across
the entire software delivery cycle. Green software offers substantial potential
to curtail carbon emissions and alleviate the financial burdens tied to outdated,
ineffective legacy technologies and workflows.

2
Green software purchasing

Sustainable procurement involves • Determine whether your supplier has green


credentials in software and where they are along
procuring goods and services to fulfil the maturity curve.
objectives whilst reducing negative
• Determine whether your supplier has sustainability
environmental and social impacts. standards and policies for software design and
Sustainable purchasing of software development, software energy efficiency, software
includes development, deployment, carbon intensity and accessibility features.

and management. When procuring


software, it is important to consider
the following:

3
Software design and
development

It’s important to ensure that software is designed to optimise energy


consumption. The impact of software design on overall energy consumption
is significant, as evidenced by an increasing number of real-world examples.

Harvard Case Study

The design and development of software can be energy intensive. For example, researchers at Harvard
trained an AI model to classify flowers using a small, publicly available dataset. The AI model achieved an
accuracy of 96.17 percent in classifying different species with only 964 joules of energy. But to achieve
higher accuracy the system consumed significantly higher energy—to gain a 1.74 percent increase in
accuracy. The energy consumption increased significantly to 2,815 joules and a further increase in accuracy
demanded increased energy consumption.

4
Development of green software spans the entire lifecycle of software development, operation and disposal (reuse).
Green software design and development requires a mindset shift that integrates sustainability by recognising its
environmental impacts across its lifecycle. Considering where to include green software in your delivery lifecycle
can be challenging. We’ve developed the infographic below as a basic guide to green software in the delivery
life cycle.

Carbon and energy Energy use testing


observability
• Testing for unexpected
• Cloud carbon monitors increases per iteration
• CarbonOps • Change-aware
automated testing

4
5
Retrospective Testing
Deployment
Responsible
development
• Document and share
learnings
3 • Software efficiency
• Well-architected review
Development • Data efficiency
6 • Green continuous
Review development
• Sustainability dept
2 • Code review
(including efficiency)
Design
Requirements 1

Do I really need this? Green design


• Sustainability non- • Green principles
functional needs • Green architecture
• Non-functional balance • Sustainable architecture
and priority patterns
• Observability - use of • Sustainability in key
features, prioritisation decision design
based on obvservation
• Green infrastructure
achitecture
• Green application
architecture

5
Architecture the sustainability of a deployment model will vary
depending on the specific needs and requirements of
the software, the energy consumptions of the hardware
Architecture pattern refers to the options and the lifecycle of the software.
structure and organisation of the
The environmental impacts of deployment models
software systems. Selecting the vary. On-premises deployment, for example, requires
appropriate architectural pattern the purchasing and maintenance of physical hardware
and deployment model for which increases demand for raw materials and
has a negative environmental impact. Alternatively,
software has a significant impact cloud deployment measures are typically viewed as
on the sustainability of software more sustainable due to scalability, however, can be
in terms of structure and how energy intensive, increasing costs and environmental
resources are used. Architecture impacts. It is important to make decisions relating
to sustainability in the context of each software and
deployment involves installing external influencing factors.
architectural patterns into a
Features such as the maintainability of software are
physical environment. The impact a key factor in sustainable software development
of changes to architectural patterns and deployment. Software which is easy to maintain
can include: has better energy performance, removing the need
to re-engineer the whole software. Re-engineering
• Resource efficiency software requires significant resources, so maintainable
• Scalability deployment positively impacts resource efficiency
relating to energy consumption, time, and user
• Performance optimisation experience. Software architecture can also enable a
• Modularity and maintenance more effective user feedback system, improving the
end user’s experience and software development.
• Longevity and lifecycle management For example, bugs can be easily fixed, and new
• Energy efficiency features seamlessly added.

• Carbon intensity Microservices and cloud-native architecture are two


architectural patterns leading to improved sustainability
• Cloud and virtualisation of software. Microservices can decompose software
• Data management decommissioning into small independent services. Cloud-native
architecture can react to events, rather than polling for
• Legacy transformation data. Reusable application programming interface (API)
Deployment models such as architecture impact and administrator limits can help achieve the goal of
the sustainability of software by influencing resource more sustainable software. Reusable APIs can help to
use, scalability, energy consumption, and efficiency. reduce and regulate code that needs to be written to
Identifying and recognising one deployment achieve a desired functionality. This restriction can save
model as the most sustainable is problematic; energy. Limits can also prevent unnecessary processes
or services from being run which waste energy.
6
Top Tips • Consider data usage during the design process
by managing the lifecycle of stored data
• Use tools and resources which support
e.g., compressing and aggregating data,
developers to measure energy. CGI’s
minimising data exchange and adopting efficient
DataTwin360 determines real-time energy
cache policy.
measurements from Cloud systems within their
applications to provide a view of efficiency and • Remove and refactor unused features to improve
emissions. energy efficiency, and make software easier to
maintain.
• Monitor real-time power consumption during
development through techniques such as • Limit the computational accuracy of the
dynamic code analysis. This will identify SQL application to the desired level, considering what
query injection, long input strings, negative and is appropriate for operational requirements.
large positive numbers and unexpected input
• Remove loops which do not achieve the
data to determine gaps.
intended purpose.

7
Software optimisation

As a result of the industry’s limitless


software capabilities, many of our
codes today are inefficient, oversized
and bloated with unused features.
Software code optimisation is a key step in achieving
energy efficiency, high-performance and sustainable
goals. Software code written by the application
developers goes through the process of compiling.
A compiler converts the code of high-level
programming into a computer-readable low-level
programming language, and the process allocates
memory which uses run-time resource-efficient coding
can help to reduce the run-time cycles by optimising
code usage. The environmental impact of running
inefficient code, although not always obvious, amplifies
the carbon footprint of the company developing
inefficient code.

Benefits of code optimisation Scalability – Optimised code is easily scalable.


During software development, as it goes from the
Resource Management – Optimised code makes
conceptual stage to the deployment stage, there must
effective use of the resources it has been presented
be instances where the code needs to accommodate
with. Code requires memory to store and run. An
new operations. With new operations, the code utilises
industry standard sustainable practice of green coding
more resources, hence more energy is consumed.
is “reusability”. A written code is only sustainable if it
An optimised code which uses modular techniques
can be reused in as many scenarios as possible.
or compartmentalisation can accommodate
Energy consumption – Optimised code consumes scalability issues.
less energy. The code that has been deployed in a
During this phase sustainable code is crucial.
cloud infrastructure consumes a set amount of energy
Developing software code that uses less energy can
it needs to run, and if the deployed code has energy
lead to significant emissions reductions, mainly when
efficient algorithms (such as minimal loops, appropriate
deployed at scale.
data structures, energy-efficient libraries), the code
consumes less energy.

8
Five principles of code optimisation

Write code that is more efficient

Consume electricity with low-carbon intensity

Reduce the amount of data transfers between


the networks and servers

Maximise energy efficiency of hardware

Measurement and optimisation

9
Software management

Green software usage, management,


and support are crucial aspects of
maintaining a healthy and productive
software ecosystem. The development
and operation of software involves
several supporting systems,
which have an impact on energy
consumption. Supporting
systems include:

Continuous delivery pipelines

Automated testing

Idle compute

Each of these systems may significantly contribute


Network transfer to overall sustainability depending on the type, data
policy, and design of your software—for example,
long-term data retention on large datasets, network
Storage transfer for streaming and energy consumption
during idle compute.

Monitoring

Logging

Backups

Failover/redundant resources

10
Sustainable software management: Sustainable software support:

Dependency management: Regularly update Community engagement: Foster a vibrant user


dependencies to ensure the software stays secure and community around the software through outreach,
compatible with the latest technologies. Automated collaboration, and user feedback mechanisms.
dependency management tools can help streamline Engaged communities can provide valuable support,
this process. contributions, and advocacy.

Continuous integration/continuous deployment Issue tracking and resolution: Maintain an issue


(CI/CD): Implement CI/CD pipelines to automate tracking system (e.g., GitHub issues) to manage bug
software build, testing, and deployment processes. reports, feature requests, and other user feedback.
This reduces manual effort, improves software quality, Prioritise issues based on severity and impact and
and accelerates release cycles. provide timely resolutions.

Monitoring and performance optimisation: User feedback and iterative development:


Monitor software performance and resource utilisation Solicit and incorporate user feedback into the software
to identify bottlenecks and areas for optimisation. development process. Regularly release updates and
Proactively address issues to ensure efficient operation new features based on user needs, priorities and
and user satisfaction. energy consumption.

Security: Implement robust security practices to Long-term maintenance: Plan for long-term
protect against vulnerabilities and cyber threats. This maintenance and support of the software, including
includes regular security audits, patch management, versioning, backward-compatibility, and end-of-life
and adherence to security best practices. policies. Consider establishing a maintenance team
that is trained in carbon accounting or engaging with
Scalability: Design software with scalability in mind
third-party support providers if needed.
to accommodate growth in user base and data
volume. Architectural decisions such as microservices, Knowledge sharing: Document lessons learned,
containerisation, and cloud-native technologies can best practices, and troubleshooting guides to facilitate
facilitate scalability. knowledge sharing among support staff and the user
community. This can help improve support efficiency
and empower users to resolve issues independently.

By prioritising sustainability in software usage,


management, and support, organisations can
maximise the longevity, resilience, and value of their
software assets while minimising associated risks
and costs.

11
Principle Guidelines

1 Measurement Choose the relevant metrics for your software.

To identify the impact of Establish a baseline and quantify the current sustainability of your
software on the environment, software.
you must baseline the level of
Follow the Plan, Do, Check, Adjust method.
sustainability of your software
before integrating sustainable Identify improvement opportunities. Use the baseline to identify
software principles. optimisation opportunities.

For example, by measuring Implement principles and strategies.


energy consumed, carbon
Monitor progress - review your progress against your baseline and
emitted, and e-waste
identify opportunities for further improvement or re-address areas
generated through for example
that might not be performing as well as expected.
incompatible software,
we can identify areas that Adjust your implementations through data-driven decisions.
require improvement. Without
Report on progress to identify overall trends and success.
measurement, identifying
areas for improvement will
be challenging.

12
Principle Guidelines

2 Efficient use of hardware Analyse software requirements, to identify the most sustainable
options. For example, identify trade-offs between using on-premise
Rationale:
hardware until the end of its service life in comparison to creating
Inefficient use of hardware is
e-waste via opting for cloud hosting for your software.
unsustainable as it produces a
significant amount of hardware Avoid the development of software only compatible with new
garbage, and e-waste. Efficient hardware to avoid the creation of e-waste and increasing demand
use of hardware is more cost on natural resources for new hardware.
effective and sustainable than
Ensure hardware and server capacities are maximised before
purchasing new hardware.
purchasing new hardware.

Consolidate multiple servers and storages to reduce hardware


accumulation and e-waste.

Utilise server virtualisation which allows multiple operating systems


to run on one server.

3 Storage optimisation Replication of data occurs in many systems where the same
data is stored in different storages for different usages. Smarter,
As a result of data retention
more sustainable software should be coded to exploit parallel,
policies, 95% of an
multiprocessor architectures to develop efficient use of hardware
organisation’s data remains
resources.
unused in data landfill.
Significant data landfill is Reduce unwanted redundancy of data in data lakes and data landfill
complex to maintain and to free up storage for future applications.
increases economic capital
Utilise memory leak detection tools, memory leaks require more
required for new hardware.
storage space than required.
Additionally, the process of
purchasing new and unrequired Identify storage optimisation in software through code review tools.
hardware is unsustainable due
Use compression technologies to reduce the size of required data.
to the environmental impacts of
hardware on natural resources. Introduce stringent data retention policies and only archive
essential data.

13
Principle Guidelines

4 Carbon aware engineering Avoid feature creep – prevent the excessive use of unnecessary
features within an application which extends the length of code
Building applications that are
and simultaneously increases the monetary and carbon cost of
carbon aware consistently
software.
begins with software engineers
engaging in carbon aware Be mindful of the size and quality of images, video and audio used,
consistently and mindful these can be compressed through a compression tool.
programming.
Build software that requires fewer lines of code to achieve desired
functionality.

5 Energy efficient consistently Choose hardware that is energy efficient.

Building energy efficient Optimise database queries.


software is a fundamental
Avoid unnecessary iterations that increase demand on energy
principle of designing and
resources.
building sustainable software.
Energy efficient software Design efficient user interfaces. This can include being mindful of
saves organisations money, audio, video and graphic size and quality, that requires increased
contributes to the achievement energy. These can be compressed through a compression tool.
of net zero targets and can Lazy loading should also be utilised to avoid loading of resources
improve user experience. until required.

Implement power management features such as sleep mode to


reduce energy consumption when software is idle.

Implement preloading and caching, this will decrease the frequency


of data being accessed from a disc.

14
Principle Guidelines

6 Carbon efficiency Algorithms must be energy efficient.

Carbon efficient software Use renewable energy sources to power hardware, both
results in a reduced on-premises and cloud.
consumption of energy,
Optimise code, for example by avoiding unnecessary loops and
compute power and wider
lines of code to achieve user needs.
materials. Carbon efficient
software achieves maximum Use sleep modes to reduce energy consumption.
performance per unit of
Take advantage of scalability if hosted on the cloud to avoid
carbon emitted.
unnecessary resource use.

Use containerisation technologies to isolate applications and


services.

7 User carbon awareness Demand shaping – users should strategically schedule and optimise
software use to align with periods whereby the energy demand and
Carbon aware applications are
therefore energy mix are more likely to be more renewable energy.
aware of the environmental
Updates and tasks should be completed during off-peak energy
footprint of the software.
times.
This awareness is necessary
for both the software itself and Energy-efficient modes – users should use ‘eco-modes’ or energy
the user to encourage efforts to efficient modes that run on lower functionality such as reduced
reduce environmental impact. brightness to minimise the energy required and carbon emitted
This awareness is critical for from powering the software.
the user, as the carbon impact
Energy monitoring and carbon transparency – provide the user with
of software use is invisible to
real-time data regarding energy use and carbon emissions from
the user, therefore there is a
software use to bridge the gap between action and consequence.
disconnect between action
and consequence, that Sustainability based alerts – these will make users carbon aware
if visible, would encourage and encourage active energy saving.
behaviour change.

15
About CGI
Insights you can act on
Founded in 1976, CGI is among the largest IT and
business consulting services firms in the world.
We are insights-driven and outcomes-based
to help accelerate returns on your investments.
Across hundreds of locations worldwide, we
provide comprehensive, scalable and sustainable
IT and business consulting services that are
informed globally and delivered locally.
[Link]/uk
© 2025 CGI IT UK Ltd.

You might also like