Guidelines for Sustainable Software
Salmikuukka, Vilma (2024)
Salmikuukka, Vilma
2024
Tietotekniikan DI-ohjelma - Master's Programme in Information Technology
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2024-02-28
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202401301921
https://urn.fi/URN:NBN:fi:tuni-202401301921
Tiivistelmä
Software applications contribute to greenhouse gas emissions indirectly through energy consumption, hardware production, and disposal of electronic waste. This work explores different factors that impact the environmental sustainability of software applications and investigates how these factors can be optimized during the software development process. The guidelines presented in this work include several strategies and actionable practices that can be incorporated throughout the software lifecycle.
To reduce the environmental impact associated with hardware, it is important to optimize the software for efficient utilization of hardware devices. The results of this work underscore the importance of developing software that leverages containerization techniques and cloud computing paradigms, ensuring optimal resource utilization across diverse computing environments.
This work also explores how software applications consume energy and investigates strategies to optimize energy usage from different perspectives. The findings emphasize the importance of minimizing data transfer and reducing the computational load within the software. By limiting the frequency and volume of data exchanges and reducing unnecessary processing, significant reductions in energy consumption can be achieved.
Various higher-level aspects of software development process are also covered in this work, ranging from project management and DevOps to user experience and interface design. Several optimization strategies are introduced in each area. The text also investigates how energy consumption is affected by different software implementation elements, such as architecture, programming languages, frameworks, data structures, and algorithms. Furthermore, the work provides a more focused examination of web development, offering detailed insights into front-end, back-end, and mobile development.
This work also highlights that the nature of the software influences the specific areas where optimizations can be applied, and which practices are realistic to implement. Therefore, the strategies and practices for sustainability need to be tailored to each application's unique characteristics and requirements. Verkkosovellukset vaikuttavat kasvihuonepäästöihin epäsuorasti energiankulutuksen, laitteiston tuotannon ja elektroniikkajätteen hävittämisen kautta. Tässä työssä tutkitaan erilaisia tekijöitä, jotka vaikuttavat sovellusten ympäristöystävällisyyteen ja selvitetään, miten näitä tekijöitä voidaan optimoida ohjelmistokehitysprosessin aikana. Työssä esitetyt suositukset sisältävät useita strategioita ja käytäntöjä, jotka voidaan ottaa käyttöön koko ohjelmistokehitysprosessin ajan.
Laitteistoon liittyvien ympäristövaikutusten vähentämiseksi on tärkeää optimoida ohjelmisto hyödyntämään laitteita mahdollisimman tehokkaasti. Työn tuloksissa korostetaan kontti- ja pilviteknologioiden hyödyntämistä, mikä auttaa varmistamaan optimaalisen resurssien käytön useissa laskentaympäristöissä.
Lisäksi työssä tutkitaan, miten sovellukset kuluttavat energiaa, ja selvitetään strategioita energian käytön optimoimiseksi eri näkökulmista. Työn tuloksissa painotetaan tiedonsiirron minimoimisen ja laskennallisen kuorman vähentämisen tärkeyttä. Rajoittamalla tiedonsiirron tiheyttä ja määrää sekä vähentämällä tarpeetonta prosessointia voidaan saavuttaa merkittäviä vähennyksiä energiankulutuksessa.
Työssä käsitellään myös ohjelmistokehitysprosessin korkeamman tason näkökohtia, kuten projektinhallintaa, DevOpsia, sekä käyttökokemus- ja käyttöliittymäsuunnittelua. Useita optimointistrategioita esitellään jokaisella osa-alueella. Tekstissä tutkitaan myös, miten erilaiset ohjelmistojen toteutuselementit, kuten arkkitehtuuri, ohjelmointikielet, kirjastot, tietorakenteet ja algoritmit vaikuttavat energiankulutukseen. Lisäksi työssä tarkastellaan tarkemmin verkkokehitystä ja käydään läpi yksityiskohtaisia näkemyksiä käyttöliittymä-, taustapalvelu- ja mobiilikehityksestä.
Työssä korostetaan myös, että ohjelmiston luonne vaikuttaa siihen, millä aihealueilla optimointeja voidaan soveltaa ja mitkä käytännöt ovat realistisia toteuttaa. Tästä syystä kestävyyden strategiat ja käytännöt on räätälöitävä kunkin sovelluksen ainutlaatuisten ominaisuuksien ja vaatimusten mukaan.
To reduce the environmental impact associated with hardware, it is important to optimize the software for efficient utilization of hardware devices. The results of this work underscore the importance of developing software that leverages containerization techniques and cloud computing paradigms, ensuring optimal resource utilization across diverse computing environments.
This work also explores how software applications consume energy and investigates strategies to optimize energy usage from different perspectives. The findings emphasize the importance of minimizing data transfer and reducing the computational load within the software. By limiting the frequency and volume of data exchanges and reducing unnecessary processing, significant reductions in energy consumption can be achieved.
Various higher-level aspects of software development process are also covered in this work, ranging from project management and DevOps to user experience and interface design. Several optimization strategies are introduced in each area. The text also investigates how energy consumption is affected by different software implementation elements, such as architecture, programming languages, frameworks, data structures, and algorithms. Furthermore, the work provides a more focused examination of web development, offering detailed insights into front-end, back-end, and mobile development.
This work also highlights that the nature of the software influences the specific areas where optimizations can be applied, and which practices are realistic to implement. Therefore, the strategies and practices for sustainability need to be tailored to each application's unique characteristics and requirements.
Laitteistoon liittyvien ympäristövaikutusten vähentämiseksi on tärkeää optimoida ohjelmisto hyödyntämään laitteita mahdollisimman tehokkaasti. Työn tuloksissa korostetaan kontti- ja pilviteknologioiden hyödyntämistä, mikä auttaa varmistamaan optimaalisen resurssien käytön useissa laskentaympäristöissä.
Lisäksi työssä tutkitaan, miten sovellukset kuluttavat energiaa, ja selvitetään strategioita energian käytön optimoimiseksi eri näkökulmista. Työn tuloksissa painotetaan tiedonsiirron minimoimisen ja laskennallisen kuorman vähentämisen tärkeyttä. Rajoittamalla tiedonsiirron tiheyttä ja määrää sekä vähentämällä tarpeetonta prosessointia voidaan saavuttaa merkittäviä vähennyksiä energiankulutuksessa.
Työssä käsitellään myös ohjelmistokehitysprosessin korkeamman tason näkökohtia, kuten projektinhallintaa, DevOpsia, sekä käyttökokemus- ja käyttöliittymäsuunnittelua. Useita optimointistrategioita esitellään jokaisella osa-alueella. Tekstissä tutkitaan myös, miten erilaiset ohjelmistojen toteutuselementit, kuten arkkitehtuuri, ohjelmointikielet, kirjastot, tietorakenteet ja algoritmit vaikuttavat energiankulutukseen. Lisäksi työssä tarkastellaan tarkemmin verkkokehitystä ja käydään läpi yksityiskohtaisia näkemyksiä käyttöliittymä-, taustapalvelu- ja mobiilikehityksestä.
Työssä korostetaan myös, että ohjelmiston luonne vaikuttaa siihen, millä aihealueilla optimointeja voidaan soveltaa ja mitkä käytännöt ovat realistisia toteuttaa. Tästä syystä kestävyyden strategiat ja käytännöt on räätälöitävä kunkin sovelluksen ainutlaatuisten ominaisuuksien ja vaatimusten mukaan.