2 Ohjelmistotuotanto (2.2 & 2.3 embed)

Suositteko arkkitehtuurivalinnoissa resurssitehokkainta vaihtoehtoa kun se on tilannekohtaisesti mahdollista?
Kuinka paljon pohditte suunnitteluvaiheessa arkkitehtuurin relevanssia ohjelmiston elinkaaren ajan ja miten arkkitehtuuri vastaa haluttua lopputulosta. Esimerkkejä vaihtoehdoista: modulaarinen arkkitehtuuri, palvelimeton pilviarkkitehtuuri.
Mitä seuraavista dataan liittyvistä kysymyksistä otatte huomioon ohjelmistotuotantoprosessissanne?
Tiedonsiirrossa kuluva energia on laskennan kannalta helpointa ajatella lineaariseksi suhteessa datan määrään.

Ohjelmistotuotanto

Mitä seuraavista toimista toteutatte suunnitteluvaiheessa?

Mikäli tuotteenne ei sisällä videoita tai animaatiota, vastatkaa vaihtoehto ”Aina”.

Keskitymme yksinkertaiseen ja selkään informaatioarkkitehtuuriin
Vältämme videosisällön käyttöä
Vältämme animaatioiden käyttöä
Minimoimme graafisten elementtien määrää ja niiden tiedostokokoa
Suunnittelemme mahdollisimman vähän energiaa kuluttavia väripaletteja
Suosimme fonttipaletin maltillista käyttöä, WOFF2-formaattin energiaa kuluttavia väripaletteja
Teettekö suunnitelmia käytönaikaisten mittausten tai seurannan toteuttamiselle?

Teettekö joitain seuraavista toimenpiteistä käyttökokemuksen helpottamiseksi?

Helppokäyttöisissä ohjelmistoissa käyttäjä joutuu käyttämään vähemmän ohjelman suoritusaikaa ja resursseja toimenpiteiden tekemiseen.

Yleisten käyttäjäpolkujen (userflow) optimointi mahdollisimman lyhyeksi
Sivustokartan tiiviyden optimointi
Säästeliäs graafisen suunnittelun ja brändäyksen käyttö
Käyttöliittymän järkeistäminen ja käyttäjäroolien mukainen helppokäyttöisyys
Sivun interaktiiviseksi latautumisajan minimointi (time to interactive)
Käytämme yleisesti tunnettuja ikoneita ja värejä käyttötarkoituksen mukaisesti

Millä tavalla otatte huomioon resurssien käytön seuraavissa valinnoissa?

Ohjelmointikielen valinta
Eri ohjelmointikielien kääntäjät tai tulkit, sekä niiden ajoympäristöjen vaatimat resurssit vaihtelevat. Tehokkuusero voi joissain tapauksissa olla jopa satakertainen. Eri ohjelmointikielet sopivat erilaisiin tarkoituksiin, joten on tärkeää valita oikea kieli tarkoituksen mukaan.
Kehitysympäristön (IDE) valinta
Kevyet kehitysympäristöt kuluttavat vähemmän resursseja, jolloin ne toimivat myös vanhemmilla laitteilla, pidentäen laitteiden elinkaaria. Lisäksi ne kuluttavat vähemmän energiaa, joka pienentää niiden vaikutusta ilmastoon.
Tietokantamoottorin (DBMS) valinta
Eri tietokantamoottorien resurssien käyttö vaihtelee ja eri käyttötarkoituksiin eri tietokantamoottorit ovat resurssitehokkaimpia.

Otetaanko käytettyjen valmiiden kirjastojen valinnassa huomioon resurssien käyttö?
Valmiiden kirjastojen käytössä on hyvä ottaa huomioon käyttötarkoituksen mukainen optimointi. Jokainen ladattu kirjasto vaatii laiteresursseja, joten kirjastoja kannattaa ladata vain, jos niitä käytetään tehokkaasti. Jos kirjastosta käytetään vain yksittäistä osaa, on yleensä tehokkaampaa ohjelmoida sama osa itse.

Onko ohjelmistokehityksessä käytettyjen graafisten elementtien, kuten kuvien ja videoiden, koko ja formaatti optimoitu tarkoituksenmukaiseksi?
Välimuisteja käyttämällä voi vähentää turhaa tiedonsiirtoa ja käsittelyä. Resurssien säästön lisäksi tämä parantaa käyttökokemusta.

Käytetäänkö ohjelmistokehityksessä hyväksi palvelimen ja asiakasympäristön välimuisteja mahdollisimman tehokkaasti?
Välimuisteja käyttämällä voi vähentää turhaa tiedonsiirtoa ja käsittelyä. Resurssien säästön lisäksi tämä parantaa käyttökokemusta.

Käytetäänkö ohjelmistokehityksessä seuraavia, resursseja säästäviä keinoja soveltuvissa kohdin?

Toteutatteko ohjelmistokehityksessä seuraavia dataan liittyviä toimia?

Tietomallien toteutuksessa huomioidaan tiedon poisto.
Jos datan poistoa ei ole suunniteltu ohjelmistoihin, ne voivat alkaa täyttyä turhasta datasta. Tämä vaatii lisäresursseja niiden varastointiin ja lisää datanhallita ja -etsintäoperaatioiden resurssien kulutusta.
Tiedolle, joka tarvitsee säilyttää, mutta ei käyttää, käytetään kylmävarastointia.
Kylmävarastoinnissa tieto ei ole aktiivisesti saatavilla, joten se ei myöskään vaadi ohjelmiston resursseja.
Ohjelmiston osien välinen sisäinen tiedonsiirto minimoidaan.
Ohjelmiston eri osat siirtävät tietoa keskenään. Vaikka tietomäärät voivat yksittäisessä siirrossa olla pieniä, niin ne kertautuvat käytön aikana.
Muut kuin graafiset tiedostot pakataan.
Tiedon pakkaaminen, etenkin paljon käytetyissä sovelluksissa, on pääosin kannattavaa. Varastoitu, harvoin käytetty tieto, kannattaa pakata aina.
Kerättävän analytiikkatiedon määrä minimoidaan ainoastaan välttämättömään tietoon.
Analytiikkaa kerätään usein paljon, ”varmuuden vuoksi” ja tietoa ei koskaan käytetä. Ohjelmistokehityksessä ja liiketoiminnassa kannattaa suunnitella tarvittavan analytiikkatiedon määrä tarkoin myös tietosuojan vuoksi.
Front endin kehittämisessä käytetään ohjelmiston kannalta keveintä ja sopivinta front end kääntäjää.
Front end kääntäjät eroavat keveydeltään ja ominaisuuksiltaan toisistaan ja osa sopii eri tarkoituksiin. Resurssiensäästön ja tarvittavien ominaisuuksien puolesta eri kääntäjät sopivat erilaisille sovelluksille.
Front endissä käytetään javascriptia maltillisesti.
Asioita on usein mahdollista toteuttaa monella tavalla. Jos on mahdollista käyttää JavScriptin sijaan kevyempää html/css-toteutusta, se on pääosin kevyempää.

Käytetäänkö ohjelmistoissa tiettyjä ohjelmistoteknisiä optimointikeinoja?
Ohjelmiston kuormitusta laiteresursseille ja sen virrankulutusta voidaan vähentää monin keinoin. Jotkin keinot ovat yleisluontoisia ja toiset hyvinkin spesifejä.
Optimoidaanko ohjelmistokehityksessä tietokantahakujen tekemistä?
Tietokantahaut vaativat sekä tietoliikennettä, että tietokantamoottorin resursseja, näiden käyttöä voi välttää muutamilla optimointitekniikoilla.

Toteutatteko seuraavia toimia ohjelmiston testausvaiheessa?

Testausta suunnitellessa otetaan huomioon, että ohjelmisto toimii riittävän hyvin myös vanhemmalla päätelaitteella
Laitteen minimivaatimusten pitäminen vaatimattomana lisää käyttäjien mahdollisuuksia pidentää laitteidensa elinkaaria.
Testauksessa otetaan huomioon energiankäyttö joko palvelimessa, päätelaitteessa tai molemmissa
Energiankäyttö on ICT-alan merkittävin ilmastovaikutus. Tämä on mahdollista ottaa huomioon testauksen aikana mittaamalla sitä käyttötapauksissa.
Pienemmissä versiopäivityksissä testaus on optimoitu siten, että ajetaan vain päivityksen kannalta relevantit testit
Kun ohjelmistosta päivitetään vain jokin osio, kaikkia testejä ei välttämättä tarvitse ajaa. Tämä pätee etenkin modulaarisissa ohjelmistoissa.
Testaus pysäytetään, jos ilmenee virhetilanne
Virhetilanteen ilmaantuessa ei todennäköisesti kannata jatkaa testaamista, vaan korjata ensin tullut virhe ja jatkaa siitä, mihin jäätiin (fail fast).
Pienten muutosten esitestaus tehdään ohjelmoijan työasemalla testiympäristön sijaan
Yksittäisten algoritmien, metodien tai tietorakenteiden testaamiseen ei välttämättä kannata käyttää usein raskasta testiympäristöä, jos se voidaan esitestata kehittäjän työasemalla.

Miten ohjelmistotuotteenne ylläpitoon valitun konesalin sähkö on tuotettu?
Tämä kysymys koskee sitä konesalia tai pilvipalveluympäristöä, jossa omien ohjelmistotuotteidenne tuotanto-, testaus- ja ylläpitoynpäristöt sijaitsevat.
Hyödynnetäänkö valitsemassanne datakeskuksessa siellä syntyvää hukkalämpöä?
Minkälaisessa ympäristössä palvelua ylläpidetään?
Pätee vain, jos ohjelmistolla on arkkitehtuuri, johon liittyy palvelin.

Mitä seuraavista toimista toteutatte käyttö- ja ylläpitovaiheessa?

Evästeiden käytön minimointi ja niiden koon optimointi.
Käyttö- tai vierailudatan keräämisen minimointi
Vain tarpeellisen logi-tiedon kerääminen
Kevyiden CSS-tiedostojen käyttö verkkosivuilla
Resurssien lataaminen vasta niiden tullessa näkyviin (lazy loading)
Usein käytetyn laskentadatan kirjoittaminen välimuistiin (cache)
Videoiden automaattisen toiston välttäminen
Palvelun laittaminen nollavirtatilaan, jos siihen ei tule kutsuja tietyn ajanjakson aikana ja käynnistäminen vain kutsusta.

Käyttäjiä opastetaan käyttämään sovellusta oikein sen käyttötarkoitus huomioon ottaen.
Monia tarkoitus-spesifien ohjelmien käyttö muihin tarkoituksiin on mahdollista, joskin usein tehotonta. Tällöin saatetaan joutua tekemään paljonkin ylimääräistä käyttöä, joka syö resursseja.

Sallitteko vastausten anonyymin käytön tilastointi- ja tutkimustarkoituksiin?
Yrityksen henkilöstömäärä?