By Rekha Kodali and Venkata Guru Kandarpi (Guru)
Software and the infrastructure it runs on are responsible for 5% of global green gas emissions. Green coding practices can help in reducing this significantly. The challenge is these practices are to be followed by 34+ million developers and to be applied on >1 Trillion existing Lines of Code for us to see the benefit. These practices are not uniform and are specific to each type of software making it further difficult for large scale awareness and adoption.
Though there are solutions that help developers in software engineering, following are some of the drawbacks of existing solutions:
- Partial Focus: Most of the solutions focus on the frontend or hosting of a project to gauge on the sustainability of a project/website. There has not been much focus on backend programming or entire software development life cycle.
- Awareness: Developers are expected to learn/understand the ever-evolving guidelines and implement those in the projects. There is a huge learning curve.
- Non-Motivating: Developers get motivated when they can see the outcome/impact. Most of them give a feeling of one more new standard to follow or new tool to learn rather than showing impact by implementing the practices.
In this blog we will discuss how the above-mentioned problems could be solved by democratizing Green Software Engineering.
Democratization in Sustainable Software Engineering will help in bringing in sustainability aspects across SDLC while making the software that is developed sustainable.
Following aspects can be considered across the SDLC to bring in democratization:
- Social: Employee, Support – Learning faster, Communities, Employee Productivity Improvement – Reuse, Recommendations, Automation, gamification
- Economical: Reducing Cost by Shift Left, Automation, reducing effort and wastage
- Environmental: Energy, Resource Efficiency
- Technical: Usability, Maintainability, Evolvability
Below are the Guiding Principles that help in democratization across the SDLC:
- Recommend – Recommend what is best for the situation
- Reuse – Reuse optimized code as much as possible
- Reduce – Reduce rework by involving at early stages of the SDLC (Shift Left)
- Measure: Measure the Green Software Maturity Index throughout the project lifecycle.
- Gamification: By bringing in gamification we can ensure enthusiastic participation from the programmers.
What follows are some of the measures we can take to improve sustainability across the SDLC:
Figure 1: Green SDLC
Phases in Software Engineering and the Guiding Principles
What follows is a view of how the guiding principles can be applied across the SDLC:
|Reduce rework etc – Have Governance, use Green Metrics||Green CoE helps in understanding the needs of the developers and helping them learn with an element of gamification.||Sustainability Best Practices, Guidelines, SOPs, Metrics, KPIS, learning across the SDLC|
|Green Design||Reduce Rework effort and time due to wrong decisions taken early in the SDLC||Reuse existing artifacts and best practices||Right Architectural Patterns and Guidelines and Sizing guidelines|
|Green Coding||Reduce effort by suggesting code snippets
Reduce maintenance effort later on by suggesting right test cases to add
Use Automation where possible to reduce effort
| Suggest good code snippets from tested libraries using plugins
Plugins can be used to correct the code smells before checking in of the code.
|Recommend right code snippets, right test cases|
|Green Testing / Validation||Reduce effort in testing by suggesting code components which need to be tested after a change in code||Reuse test cases etc.||Recommend code components which need to be tested after a change in code|
|Green DevOps/Operations||Reduce effort in operations by refactoring code. Suggesting changes||KEDB etc.||Reduce effort in operations by refactoring code|
By following the above principles we can ensure the democratization of sustainability engineering and also that the software created is sustainable.
What follows are some of the impact areas and how Green SDLC can make an impact in the relevant areas.
Figure 2: Green SDLC – The impact
- Social: Ensures the software is socially responsible by being more trustworthy, inclusive and accessible by suggesting the right architecture patterns / test cases to be added.
- Economical: Making correct architecture decisions early in the SDLC cycle results in optimum carbon emission, consumption of resources and performance. By adding test cases early on we can save significant energy and cost. A change later in the SDLC is very costly. Recommending early on in the lifecycle results in optimum carbon emission and energy consumption.
- Environmental: Focused on energy efficiency of software by optimizing energy consumption across the SDLC, we can save energy consumption by 30 to 40%. Predicting energy utilization helps in choosing the right pattern and reducing the application’s carbon footprint it helps in saving carbon footprint and resource optimization. It is built on Responsible AI principles reducing bias.
- Technical: By helping the users become aware and connecting them to experts and by applying best practices and learnings and automation where possible we help improve productivity of the developer/ tester and make the software sustainable. It helps in smoother maintenance and operations. The code is much mode readable and maintainable.
By focusing on SDLC for the creation of green software we can bring a reduction of carbon emissions and ensure optimum consumption of resources.
Rekha Kodali is a Principal Director in Accenture. With more than 23 years of experience in Microsoft Technologies, her focus areas include Azure, Enterprise Architecture, Sustainability, Composable Architectures, Presales and Innovation. She has been instrumental in creating differentiated solutions and service offerings. Her certifications include TOGAF, IASA certified Foundation Architect and Azure Solutions Architect Expert and several other MS certifications. She has published multiple research papers and published 2 books on Azure.
Venkata Guru Kandarpi (Guru) has around 25 years in the global technology services industry and specializes in technology consulting, presales, delivery and P&L management of Microsoft application services. He is currently working as Lead Solution Architect at Accenture. He has a Bachelor of Technology degree in Electronics and Communication Engineering from Jawaharlal Nehru Technological University and an MBA from IIM-Ahmedabad.