Tarkvara arendamine

Tarkvara arendamise etapid
- Vajaduse kirjeldamine ja nende analüüs
- Programmitoote disain
- Arendamine
- Kontrollimine
- Toote väljaandmine ja juurutamine
- Toote hooldus
Tarkvara elutsükli mudelid
- Waterfall (kaskaadmudel)
- Iteratiivne, spiraalne ja inkrementaalne mudel
- Spiraalsed ja inkrementaalsed mudelid
- Agile
Kontrollimine/testimine
- Valge kast on lähenemine, mis võimaldab testijatel kontrollida rakenduse sisemist tööd – selle koodi, infrastruktuuri ja suhtlemist välistesüsteemidega. “Valge kasti” testimist kasutatakse sageli rakenduste staatilises turvatestimises (SAST, Static Application Security Testing) – lähenemises, mis automaatselt kontrollib lähtekoodi ja annab teavet vigade ja võimalike haavatavuste kohta.
- Must kast on termin, mida kasutatakse süsteemi tähistamiseks, mille sisemine struktuur ja töömehhanismid on väga keerulised, teadmata või antud ülesande kontekstis ebaolulised.
- Hall kast on tarkvara testimise meetod, mis võimaldab testida tarkvara toodet või rakendust osalise teadlikkuse korral rakenduse sisemisest struktuurist.
Testimise vigade tüübid
- Loogilised
- Süntaktilised
- Semantilised
Peamised programmeerimismudelid
- Imperatiivne programmeerimine on paradigma, mis põhineb tegevuste (juhiste/käskude) algoritmi koostamisel, mis muudavad programmi olekut (informatsiooni/andmeid/mälu). Esimeseid programmeerimiskeeli, mis põhinesid sellisel lähenemisel, olid masinkoodid ja assemblerid.
- Deklaratiivne programmeerimine on programmeerimise paradigma, kus määratletakse probleemilahenduse spetsifikatsioon: kirjeldatakse, mis probleem on ja oodatav tulemus, kuid ilma tulemuse saavutamise viisi kirjeldamata.
- Struktuurne programmeerimine muudab programmi teksti arusaadavamaks – lahenduse algoritm on selgelt nähtav lähtekoodist. Mooduli põhimõtte kohaselt jagatakse programm eraldi tähenduslikeks osadeks (mooduliteks). Moodul on funktsionaalselt lõpetatud osa programmist. Näiteks on ruutjuure arvutamine moodul, mis leiab ridade elementide summa.
- Funktsionaalne programmeerimine tähendab, et määratleme mitte vajalike käskude järjestuse, vaid kirjeldame omavahelist suhtlemist nende ja alamprogrammide vahel. Kõik kood on andmetega töötamise reeglid. Te lihtsalt määratlete vajalikud reeglid, ja kood teab, kuidas neid rakendada. Käsklusi saab koguda alamprogrammidesse, kuid nende järjestus ei oma tähtsust. Pole vahet, millises järjekorras te alamprogrammid kirjutate – need on lihtsalt reeglid, ja reeglid rakendatakse siis, kui on vajalik, mitte siis, kui neist räägitakse.
- Loogiline programmeerimine on programmeerimise paradigma, samuti diskreetse matemaatika haru, mis uurib selle paradigma meetodeid ja võimalusi, mis põhinevad uute faktide järeldamisel olemasolevatest faktidest vastavalt antud loogilistele reeglitele. Loogiline programmeerimine tekkis funktsionaalse programmeerimise lihtsustamisena matemaatikutele ja lingvistidele, kes lahendavad sümboolse töötlemise ülesandeid.
- Objektorienteeritud programmeerimine (OOP) olemus seisneb programmi esitamisel objektidena, mis mingil moel omavahel suhtlevad. Objekt on mingi klassi eksemplar. Klass on šabloon, kus on kirjeldatud kõik tulevase objekti omadused ja meetodid. Kui klassi õhupalli omadus on värv, siis klass ise ei oma värvi tähendust. Kuid selle klassi eksemplarid, mida muide saab luua lõputult, saavad olema värvitud mistahes värvides.
- Komponentide orienteeritud programmeerimine on programmeerimise paradigma, mis on suunatud peamiselt kaubanduslike ärisüsteemide usaldusväärsuse tõstmisele. Komponentide orienteeritud programmeerimise (edaspidi KOP) olemus seisneb võimaluses kontrollida kavandatavate ja teostatavate moodulite koostööd informatsiooni struktuuride kooskõla osas. Idee on suhteliselt uus. Osaliselt on KOP-i ideed rakendatud sellistes keeltes nagu Java, Ada, C#, otsene rakendus KOP-i ideedest on programmeerimiskeeled Modula-2, Oberon, Oberon-2 ning kõige tuntum KOP perekonnas – Komponentne Pascal.
- Prototüüpne programmeerimine on objektorienteeritud programmeerimise stiil, kus klassi mõisted puuduvad ja pärimine toimub olemasoleva objekti eksemplari – prototüübi kloonimise teel. Kanoniliseks näiteks prototüüpide orienteeritud keeltest on keel Self.
Populaarsed programmeerimiskeeled
- JavaScript, samuti selle raamatukogud ja raamistikud (React, Angular JS, Vue JS, Node JS, jQuery) – prototüüpne orienteeritud programmeerimine, mida kasutatakse veebisaitide kliendi poole arendamiseks.
- Java – objektorienteeritud programmeerimine (OOP), mida kasutatakse lauaarvutite ja Androidi mobiilirakenduste arendamiseks.
- Python – protseduuriline programmeerimine ja OOP. Kasutatakse nii veebis kui lauaarvutite arenduses.
- PHP (serveripoolse veebiarenduse jaoks) – protseduuriline ja OOP.
- C# – OOP, mängude, tarkvara ja veebirakenduste programmeerimiseks.
- Swift – programmeerimine iOS-ile.
- Objective-C – programmeerimine iOS ja MAC OS-ile.
- Kotlin – staatiliselt tüübitud, objektorienteeritud programmeerimiskeel, mis töötab Java Virtual Machine’i peal ja mille arendab JetBrains. Samuti kompileeritakse see JavaScripti ja mitmete platvormide käivitatavasse koodi läbi LLVM infrastruktuuri. Keel on nimetatud Soome lahe saare Kotlini järgi, kus asub linn Kronshtadt.
Algoritm on täpne ja arusaadav ettekirjutus (juhend) täitjale, et teha kindel tegevuste järjestus, mis on suunatud määratud eesmärgi saavutamisele või seatud ülesande lahendamisele. Konkreetse toimingu täitmise juhend on käsk. Kõik käsud, mida teatud täitja võib täita, moodustavad käsusüsteemi.
Algoritmide omadused on:
- Diskreetsus – algoritmi jagamise võimalus.
- Arusaadavus (määratletud) – lõpp-käigus peab olema saavutatud tulemus või peab olema tõestatud selle puudumine.
- Ühemõttelisus (determinism) – mõne reegli, juhise täpne järgimine;
- Massilisus – võimalus saada tulemus erinevate algandmete jaoks sarnaste ülesannete klassi jaoks;
- Tulemuslikkus (lõpp) – kohustuslik mingi tulemuse (arv, tabel, tekst, heli, pilt jne) või signaali saamine, et antud algoritmi ei saa kasutada seatud ülesande lahendamiseks;
Algoritmide tüübid:
- Lineaarne – kõik toimingud toimuvad range järjestuse järgi (piruka valmistamine).
- Haru – toimingud toimuvad sõltuvalt tingimuse täitmisest või mitte täitmisest (ülekäiguraja ületamine valgusfoori järgi).
- Tsükliline – sisaldab korduvaid toiminguid (küttepuude lõhkumine).
Pealkiri
Обозначение -> Tähistus
Назначение блока -> Bloki eesmärk
Tähistus | Bloki eesmärk |
---|---|
Terminaator | Algus, programmi või alamprogrammi lõpp |
Tegevus | Andmetöötlus (arvutused, edastused jne) |
Andmed | Sisend-väljundoperatsioonid |
Otsus | Tingimus. Harud, valikud, iteratiivsed ja otsingutsüklid |
Andmetüübid:
- Int – Täisarvud: 3; 4; 5; 0-100000
- Str – String:
"ema"
,"2334456"
,"A"
- Bool – Tõesuse väärtused:
True = 1
;False = 0
- Float – Ujukomaarvud: 5.45; -48.125




Skeemi koostamine
Kvadratuurvõrrandi lahendamine
- Võrrand: ax2+bx+c=0ax^2 + bx + c = 0
- Sisendid: aa, bb, cc
- Diskriminandi arvutamine: D=b2−4acD = b^2 – 4ac
- Tingimused:
- Kui D<0D < 0: Lahendusi ei ole.
- Kui D>0D > 0: Kaks lahendust: x1=−b+D2a,x2=−b−D2ax_1 = \frac{-b + \sqrt{D}}{2a}, \quad x_2 = \frac{-b – \sqrt{D}}{2a}
- Kui D=0D = 0: Üks lahendus: x1=−b2ax_1 = \frac{-b}{2a}
