Table of Contents

Tarkvara elutsükkel ja tüüpilised elutsükli mudelid

Tarkvara elutsükkel määratleb kogu protsessi, mille käigus tarkvara luuakse, arendatakse, juurutatakse, hooldatakse ja lõpuks kasutusest kõrvaldatakse. Kaasaegse inseneritöö kontekstis – eriti keeruliste süsteemide puhul, nagu autonoomsed platvormid, manussüsteemid või ettevõttelahendused – on kvaliteedi, töökindluse ja hooldatavuse tagamiseks oluline elutsükli mõistmine. Elutsükkel toimib teekaardina, mis juhib projektimeeskondi läbi arenduse ja juhtimise etappide. Iga etapp määratleb konkreetsed tulemused, verstapostid ja tagasisideahelad, tagades, et tarkvara areneb kontrollitud, jälgitaval ja prognoositaval viisil 1).

Definitsioon

“Tarkvara elutsükkel viitab struktureeritud protsesside ja tegevuste jadale, mis on vajalik tarkvarasüsteemi arendamiseks, hooldamiseks ja kasutusest kõrvaldamiseks.” — 2) Teisisõnu kirjeldab elutsükkel seda, kuidas tarkvaratoode läheb ideest üle vananemiseni – hõlmab kõiki projekteerimis-, haldus- ja hooldusetappe. Elutsükkel tagab:

Reguleeritud valdkondades, nagu lennundus, autotööstus ja meditsiiniseadmed, on määratletud elutsükli järgimine ka sertifitseerimise ja vastavuse seaduslik nõue (nt ISO/IEC 12207, DO-178C, ISO 26262).

Tüüpilised tarkvara elutsükli mudelid

Erinevad tööstusharud ja projektid võtavad kasutusele konkreetsed elutsükli mudelid, mis põhinevad nende eesmärkidel, riskitaluvusel ja meeskonna struktuuril. Selles peatükis kirjeldatakse kõige laialdasemalt kasutatavaid mudeleid.

Kose mudel

Waterfall Model on üks varasemaid ja enim tunnustatud tarkvara elutsükli mudeleid. See järgib lineaarset etappide jada, kus iga faas peab olema lõpetatud enne järgmise algust 3).

 The Waterfall Model
Figure 1: Kose mudel

Eelised:

Piirangud:

V-mudel (kontrolli ja kinnitamise mudel)

Kose lähenemisviisi edasiarendusena rõhutab V-mudel igas arendusetapis testimist ja valideerimist. Igal “alla” sammul (arendusel) on vastav “üles” samm (testimine/valideerimine).

 V-Model Lifecycle
Figure 2: V-mudeli elutsükkel

Eelised:

Piirangud:

Iteratiivne ja inkrementaalne mudel

Selle asemel, et kogu süsteem ühes järjestuses lõpule viia, arendab iteratiivne mudel toodet mitme tsükli või sammuga. Iga iteratsioon pakub tööversiooni, mida saab üle vaadata ja täpsustada. Eelised:

Piirangud:

Agiilsed metoodikad

Agiilne arendus (nt Scrum, Kanban, Extreme Programming) rõhutab koostööd, kohanemisvõimet ja klientide tagasisidet. See asendab jäigad protsessid iteratiivsete tsüklitega, mida tuntakse sprintidena.

 Agile Lifecycle
Figure 3: Agile elutsükkel

Põhiprintsiibid 4):

Eelised:

Väljakutsed:

Spiraalmudel

Boehmi poolt kasutusele võetud 5) ühendab spiraalmudel iteratiivse arengu riskianalüüsiga. Iga spiraali silmus esindab protsessi ühte faasi, mille keskmes on riskide hindamine.

 Spiral Lifecycle
Figure 4: Spiraalne elutsükkel

Eelised:

Piirangud:

DevOps ja pidev elutsükkel

Kaasaegsed süsteemid võtavad üha enam kasutusele DevOpsi – integreerides arenduse, testimise, juurutamise ja toimingud pidevasse tsüklisse. See mudel kasutab automatiseerimist, CI/CD torujuhtmeid ja pilvepõhist elementi

  DevOps Lifecycle
Figure 5: DevOpsi elutsükkel

Eelised:

Väljakutsed:

Võrdlev ülevaade

Mudel Põhifookus Eelised Sobib kõige paremini
Juga Järjestikune struktuur Lihtne, etteaimatav Väikesed või reguleeritud projektid
V-mudel Kontrollimine ja kinnitamine Jälgitav, sertifitseeritav Ohutuskriitilised süsteemid
Iteratiivne/inkrementaalne Progressiivne täiustamine Paindlik, varajane testimine Komplekssed arenevad süsteemid
Agiilne Koostöö ja tagasiside Kiire kohandamine, kasutajakeskne Tarkvara käivitamine, dünaamilised projektid
Spiraal Riskipõhine arendus Riskikontroll, skaleeritavus Suured teadus- ja arendusprojektid
DevOps Pidev integreerimine Automatiseerimine, kiire kohaletoimetamine Pilv, AI või autonoomsed platvormid

Konfiguratsiooni kontseptsioonid ja väljakutsed

Tarkvaratehnikas tähendab konfiguratsioonihaldus (CM) süstemaatilist protsessi, mille käigus tuvastatakse, korraldatakse, kontrollitakse ja jälgitakse kõiki tarkvarasüsteemis kogu selle elutsükli jooksul tehtud muudatusi. See tagab, et:

Vastavalt standardile ISO/IEC/IEEE 828:2012 on CM määratletud järgmiselt: “Dipliin, mis rakendab tehnilisi ja administratiivseid juhiseid ja järelevalvet konfiguratsiooniüksuse funktsionaalsete ja füüsiliste omaduste tuvastamiseks ja dokumenteerimiseks, nende omaduste muudatuste kontrollimiseks ning muudatuste töötlemise ja rakendamise oleku registreerimiseks ja sellest teatamiseks.”

Teisisõnu hoiab konfiguratsioonihaldus tarkvara arenemise ajal stabiilsena. Konfiguratsioonihaldus on olemas:

 The Role of Configuration Management
Figure 6: Konfiguratsioonihalduse roll (Kohandatud: 6) 7))

Põhimõisted konfiguratsioonihalduses

CM-i mõistmiseks tuleb määratleda mitu põhimõistet.

Konfiguratsioonielement (CI) Konfiguratsioonielement on süsteemi mis tahes komponent, mis on konfiguratsioonikontrolli all. Näited:

Iga CI on kordumatult identifitseeritud, versioonistatud ja aja jooksul jälgitav 8).

Algtase Lähtejoon on ühe või mitme konfiguratsiooniüksuse ametlikult kinnitatud versioon, mis toimib võrdluspunktina. Pärast kindlaksmääramist peavad kõik lähtetaseme muudatused järgima määratletud muudatuste juhtimisprotsessi. Alusjoonte tüübid:

Baasjooned loovad stabiilsuse kontrollpunkte elutsüklis 9).

Versioonikontroll Versioonikontrollisüsteemid (VCS), nagu Git, Mercurial või Subversion, jälgivad ja haldavad lähtekoodi ja muude failide muudatusi. Need võimaldavad:

Versioonikontroll moodustab konfiguratsioonihalduse tehnilise selgroo.

Muudatuste juhtimine Muudatuste juhtimine määrab, kuidas muudatusi pakutakse, hinnatakse, kinnitatakse ja rakendatakse. Tüüpilised sammud:

Selline struktureeritud lähenemine tagab vastutuse ja kvaliteedikontrolli 10).

Konfiguratsioonikontroll Konfiguratsiooniaudit kontrollib, et konfiguratsioonielemendid ja dokumentatsioon:

Kaks levinud tüüpi:

Auditid säilitavad terviklikkuse ja vastavuse, eriti kaitse- ja kosmoseprojektide puhul 11).

Väljakutsed konfiguratsioonihalduses

Kuigi CM toob kaasa struktuuri ja korra, seisab see silmitsi paljude praktiliste väljakutsetega, eriti hajutatud ja keerulistes süsteemides.

Keerukus ja ulatus Kaasaegsed süsteemid võivad sisaldada miljoneid koodiridu, sadu sõltuvusi ja mitut konfiguratsiooni erinevate platvormide jaoks. Kõigi nende variatsioonide käsitsi haldamine on võimatu. Näide: Autonoomne sõiduk võib sisaldada erinevaid konfiguratsioone:

Lahendus: automatiseeritud konfiguratsioonihaldus metaandmetel põhinevate tööriistadega (nt Ansible, Puppet, Kubernetes Helm).

Mitu arendusvoogu Suurte projektide puhul töötavad meeskonnad samaaegselt mitme haru või versiooniga (nt arendus, testimine, väljalaskmine). See suurendab riski:

Lahendus:

Riistvara ja tarkvara vastastikused sõltuvused Manus- või küberfüüsilistes süsteemides sõltuvad konfiguratsioonid riistvaravariantidest (protsessorid, andurid, mälu). Tarkvarajärkude ja riistvara spetsifikatsioonide vahelise vastavuse säilitamine on keeruline. Leevendus:

Sagedased uuendused ja pidev kohaletoimetamine DevOpsi ajastul võidakse tarkvara tuhandetes seadmetes mitu korda päevas värskendada. Iga värskendus peab säilitama järjepidevuse ja tagasipööramise võimaluse. Väljakutse:

Lahendus:

Andmete ja konfiguratsiooni triivimine Konfiguratsiooni triiv ilmneb siis, kui süsteemi tegelik olek erineb dokumenteeritud konfiguratsioonist – see on tavaline dünaamilistes pilvepõhistes süsteemides. Põhjused:

Ennetamine:

Regulatiivsed ja vastavusnõuded Sellistes valdkondades nagu lennundus, meditsiin ja autotööstus on konfiguratsioonihaldus vastavusnõue selliste standardite kohaselt nagu ISO/IEC/IEEE 12207, ISO 26262 või IEC 61508 Väljakutse:

Lahendus:

Inim- ja organisatsioonilised tegurid CM-i kõige keerulisem aspekt on sageli kultuuriline, mitte tehniline. Tuntud bürokraatia tõttu võivad meeskonnad olla vastu dokumentidele või ametlikule muudatuste kontrollile. Selle tulemusena:

Lahendus:

Konfiguratsioonihalduse peamised sammud ja tööriistad

Konfiguratsioonihaldus (CM) ei ole üksik tegevus, vaid tsükliline protsess, mis on integreeritud kogu tarkvara elutsüklisse. Standard ISO/IEC/IEEE 828:2012 määratleb neli peamist tegevust:

Kaasaegses praktikas lisatakse pidevaks täiustamiseks ja vastavuse tagamiseks ka viies samm – konfiguratsiooni kontrollimine ja ülevaatus.

 The Configuration Management Cycle
Figure 7: Konfiguratsioonihalduse tsükkel (kohandatud 13) 14))

Konfiguratsiooni identifitseerimine CM-i esimene samm määratleb, mida tuleb hallata. See hõlmab:

Näidishierarhia:

 Example hierarchy
Figure 8: Hierarhia näidis

Tööriistad ja tehnikad:

Eesmärk: koostage iga hallatud artefakti ja selle sõltuvuste selge loend.

 Change Control Workflow
Figure 9: Change Control Workflow

Tööriistad ja tehnikad:

Eesmärk: Tagada, et iga muudatus vaadatakse enne rakendamist üle, põhjendatakse ja registreeritakse korralikult.

Konfiguratsiooni oleku arvestus (CSA) CSA annab ülevaate kogu projekti konfiguratsioonide hetkeseisust. See salvestab, millised CI-de versioonid on olemas, kus neid hoitakse ja millised muudatused on toimunud. Tüüpilised väljundid hõlmavad järgmist:

 Configuration Status Flow
Figure 10: Konfiguratsiooni oleku voog

Tööriistad ja tehnikad:

Eesmärk: tagada läbipaistvus ja jälgitavus, et projektijuhid ja audiitorid saaksid igal ajahetkel rekonstrueerida mis tahes tooteversiooni täpse konfiguratsiooni.

Konfiguratsioonikontroll Konfiguratsiooniaudit tagab, et toode vastab algtasemele ja et kõik muudatused on õigesti rakendatud ja dokumenteeritud. See kontrollib:

On kahte tüüpi:

  1. Funktsionaalse konfiguratsiooni audit (FCA): kinnitab, et süsteem töötab ettenähtud viisil.
  2. Füüsilise konfiguratsiooni audit (PCA): kinnitab, et füüsiline teostus vastab projekteerimisdokumentatsioonile.

Tööriistad ja tehnikad:

Eesmärk: tagada terviklikkus, järjepidevus ja vastavus kogu konfiguratsiooni algtaseme ulatuses.

Konfiguratsiooni ülevaatus ja kinnitamine See valikuline samm sulgeb CM-i ahela. See hindab, kas CM protsessid on tõhusad ja projekti eesmärkidega kooskõlas. Tegevused hõlmavad järgmist:

Tööriistad:

Eesmärk: Toetada pidevat täiustamist ja protsesside optimeerimist.

Konfiguratsioonihalduse peamised tööriistad

Kaasaegne CM toetub suurel määral automatiseerimis- ja integreerimistööriistadele, et hallata keerukust ja jõustada distsipliini meeskondade vahel. Neid tööriistu saab liigitada funktsioonide järgi.

Versioonikontrollisüsteemid (VCS)

Tööriist Kirjeldus Kasutusnäide
Git hajutatud versioonikontrollisüsteem; toetab hargnemist ja ühinemist. Kasutatakse peaaegu kõigi kaasaegsete tarkvaraprojektide jaoks.
Subversion (SVN) Tsentraliseeritud versioonikontroll koos rangete muudatuspoliitikatega. Eelistatud reguleeritud keskkondades (lennundus, kaitse).
Mercurial Sarnaselt Gitile, optimeeritud skaleeritavuse ja kasutusmugavuse jaoks. Kasutatakse uurimistöös või suurtes hoidlates.

Ehitamise ja pideva integreerimise tööriistad

Tööriist Eesmärk Kasutusnäide
Jenkins / GitLab CI Automatiseerige muudatuste koostamine, testimine ja juurutamine. Päästiku ehitamine toimub pärast kinnistamis- või liitmistaotlusi.
Maven / Gradle / CMake Hallake projekti sõltuvusi ja koostage protsesse. Tagada reprodutseeritav konstruktsioon.
Docker / Podman Konteinerite keskkonnad järjepidevuse tagamiseks. Testimiseks ja juurutamiseks pakkerakendused sõltuvustega.

Taristu- ja keskkonnajuhtimine

Tööriist Funktsioon Rakendus
Ansible / Nukk / Peakokk Automatiseerige seadistamine ja varustamine. Hoidke serverikeskkonnad sünkroonituna.
Terraform Infrastructure as Code (IaC) pilveplatvormide jaoks. Pilveressursside haldamine versioonikontrolliga.
Kubernetes Helm Haldab konteineripõhiseid juurutusi. Juhib konfiguratsioone mikroteenuste arhitektuurides.

Artefaktide ja väljalaskehaldus

Tööriist Eesmärk Kasutusnäide
JFrog Artifactory / Nexuse hoidla Kompileeritud binaarfailide, teekide ja Dockeri kujutiste salvestamine ja versioon. Säilitage väljaannete reprodutseeritavus.
Spinnaker / Argo CD Hallake pidevat juurutamist tootmiskeskkondadesse. Rakendage automaatset levitamist ja tagasipööramist.

Konfiguratsiooni jälgimine ja dokumentatsioon

Tööriist Eesmärk Kasutusjuhtum
ServiceNow CMDB Jälgib konfiguratsiooniüksusi, sõltuvusi ja juhtumeid. Ettevõtte mastaabis CM.
Atlassia ühinemiskoht Hoiab dokumentatsiooni ja töötleb dokumente. Koostöö ja muudatuste dokumentatsioon.
Polarion / IBM UKSED Seob nõuded konfiguratsiooniüksuste ja testitulemustega. Jälgitavus reguleeritud keskkondades.

Näide – integreeritud CM-i töövoog:

 An integrated  CM Workflow
Figure 11: Integreeritud CM-i töövoog (kohandatud GitLabi, Atlassiani ja IEEE 828 integratsiooniraamistikest)

Tööriistaahela integreerimine autonoomsete süsteemide jaoks Autonoomsetes platvormides (nt mehitamata õhusõidukid, sõidukid) on CM-tööriistad sageli integreeritud:

See hübriidlähenemine tagab järjepideva tarkvara kõigis sõlmedes – alates pilveteenustest kuni manustatud kontrolleriteni 16).

Levinud lõksud ja õppetunnid

Isegi täiskasvanud organisatsioonid seisavad sageli silmitsi elutsükli ja konfiguratsioonihalduse väljakutsetega:

Lõks Mõju Leevendus
Kehv versioonikontrolli distsipliin Jälgitavuse kaotus Jõustage hargnemisstrateegia ja hankige taotluste ülevaatusi.
Mittetäielikud konfiguratsiooniauditid Avastamata vastuolud Auditi töövoogude ja vastavuskontrolli automatiseerimine.
Käsitsi juurutamise protsessid Keskkonna triiv Kasutage koodina CI/CD-d ja infrastruktuuri.
Siled dokumentatsioon Nähtavuse puudumine Tsentraliseerige kirjed CMDB või ALM platvormide abil.
Kultuurilise omaksvõtmise puudumine Vastupidavus protsessidistsipliinile Pakkuge koolitust, stiimuleid ja juhtimistuge.

Organisatsioonid, kellel õnnestub CM tavasid juurutada, ei pea neid bürokraatiaks, vaid usaldusväärsuse ja usalduse võimaldajaks.

1)
Sommerville, I. (2016). Tarkvaratehnoloogia (10. väljaanne). Pearson
2)
Pressman, R. S., & Maxim, B. R. (2020). Software Engineering: A Practitioner’s Approach (9th ed.). McGraw-Hill
3)
Royce, W. W. (1970). Managing the development of large software systems. Proceedings of IEEE WESCON
4)
Agile Alliance. (2001). Manifesto for Agile Software Development. https://agilemanifesto.org
5)
Boehm, B. W. (1988). Tarkvaraarenduse ja täiustamise spiraalmudel. Computer, 21(5), 61–72.
6)
Pressman, R. S., & Maxim, B. R. (2020). Tarkvaratehnoloogia: praktiku lähenemine (9. väljaanne). McGraw-Hill
7)
IEEE. (2012). ISO/IEC/IEEE Software Engineering ja IEEE Systemering.828ing: IEEE. Standardite Liit.
8)
Sommerville, I. (2016). Software Engineering (10. väljaanne). Pearson
9)
Pressman, R. S., & Maxim, B. R. (2020). Software Engineering: A Practitioner’s Approach (9. väljaanne). McGraw-Hill.
10) , 13)
IEEE. (2012). ISO/IEC/IEEE 828: Configuration Management in Systems and Software Engineering. IEEE Standards Association
11)
NASA. (2021). Configuration Management Procedural Requirements (NPR 7120.5E). National Aeronautics and Space Administration
12)
Wang, L., Xu, X. ja Nee, A. Y. C. (2022). Digital twin-enabled integration in production. CIRP Annals, 71(1), 105–128.
14)
NASA. (2021). Configuration Management Procedural Requirements (NPR 7120). National.on5auticsE). Administratsioon
15)
Wang, L., Xu, X., & Nee, A. Y. C. (2022). Digital twin-enabled integration in production. CIRP Annals, 71(1), 105–128.
16)
Raj, A. ja Saxena, P. (2022). Tarkvaraarhitektuurid autonoomse sõiduki arendamiseks: Trends and challenges. IEEE Access, 10, 54321–54345