Tarkvaraarendus | Разработка программного обеспечения

Arendusetapid | Этапы разработки

  1. Eelanalüüs – vajaduste ja nõuete kogumine ning analüüs
    Предварительный анализ – сбор и анализ требований
  2. Disain – tehniline ja visuaalne kujundus
    Дизайн – техническое и визуальное проектирование
  3. Arendus – tarkvara kirjutamine
    Разработка – написание кода
  4. Testimine – veaotsing ja kontroll
    Тестирование – поиск ошибок и проверка работы
  5. Juurutamine – tarkvara kasutuselevõtt
    Внедрение – запуск и внедрение продукта
  6. Hooldus – süsteemi järelevalve ja tugi
    Сопровождение – обслуживание и поддержка продукта

Tarkvara elutsükli mudelid | Модели жизненного цикла ПО

Waterfall (Kaskaad) | Каскадная модель

  • Etapid järgnevad üksteisele kindlas järjestuses.
  • Klient näeb tulemust ainult kindlates etappides.

Iteratiivne mudel | Итерационная модель

  • Projekt jagatakse osadeks, iga osa annab tööversiooni.
  • Tulemus täieneb iga iteratsiooniga.

Spiraalne mudel | Спиральная модель

  • Protsess liigub korduvate tsüklitena (planeerimine, disain, arendus, testimine).
  • Iga tsükkel viib eesmärgile lähemale.

Agile (Agiilne) | Гибкая методология

  • Inimesed ja koostöö on olulisemad kui protsessid.
  • Valmis toode tähtsam kui dokumentatsioon.
  • Paindlikkus ja kohanemisvõime on olulised.

Agile metoodikad | Гибкие методологии

  • Scrum – töö jagamine sprindiks (1–4 nädalat), sprint planning, backlog.
  • Kanban – ülesanded liiguvad etappide vahel visuaalsel tahvlil.
  • RUP – arendus neljas faasis: alustamine, täpsustamine, ehitamine, kasutuselevõtt.
  • DSDM – keskendub tähtajale ja eelarvele, nõuete muutumine on lubatud.
  • RAD – kiire arendus, prototüübid, tihe koostöö kliendiga.
  • XP (Extreme Programming) – lühikesed tsüklid, paarisprogrammeerimine, pidev testimine.

Testimine | Тестирование

Testimise liigid | Виды тестирования

  • Funktsionaalne, jõudlustestid, stressitestid
  • Kasutatavuse test, turvatest, lokaliseerimise test
  • Must kast, valge kast, hall kast (чёрный, белый, серый ящик)

Automatiseerimise tase | Уровень автоматизации

  • Manuaalne, automaatne, poolautomaatne

Komponentide isoleeritus | Изолированность компонентов

  • Moodul-, integratsiooni-, süsteemitestid

Ajaline aspekt | Время проведения

  • Alfa-, beeta-, suitsutestimine

Funktsionaalsed testid

  • Uue funktsiooni test, regressioonitest, kinnitav test

Veatüübid | Типы ошибок

  • Süntaksivead / Синтаксические ошибки – leitakse enne käivitamist
  • Erindid / Исключения – ilmnevad töö ajal (nt. jagamine nulliga)
  • Loogikavead / Логические ошибки – programm töötab, aga annab vale tulemuse

Veade jaotus arenduse etappide kaupa | Классификация по этапам

  • Kompileerimisvead – компилятор tuvastab
  • Paigutusvead – модулite ühendamise probleemid
  • Toimimisvead – ilmnevad programmi käivitamisel

Programmeerimisparadigmad | Парадигмы программирования

  • Imperatiivne / Императивное – käskude jada (nt. C, Python)
  • Deklaratiivne / Декларативное – kirjeldus ilma toiminguteta (nt. HTML, SQL)
  • Struktureeritud / Структурное – loogiline jaotus mooduliteks, ei kasutata GOTO
  • Funktsionaalne / Функциональное – reeglipõhine andmetöötlus
  • Loogiline / Логическое – põhineb loogikal ja faktidest järeldamisel (nt. Prolog)
  • Objektorienteeritud / Объектно-ориентированное – klassid ja objektid (nt. Java, C#)
  • Komponentpõhine / Компонентно-ориентированное – eraldi taaskasutatavad komponendid
  • Prototüüpne / Прототипно-ориентированное – ilma klassideta, objektide kloonimine (nt. JavaScript)

Keeled ja nende kasutus | Языки программирования и их применение

  • JavaScript (+ React, Vue, Node) – veebiarendus, prototüüpne
  • Java – Android, objektorienteeritud
  • Python – veeb, skriptimine, OOP ja protseduuriline
  • PHP – serveripoolne, OOP ja protseduuriline
  • C# – mängud, rakendused, OOP
  • Swift/Objective-C – iOS, Mac OS arendus

Avatud vs suletud lähtekood | Открытый и закрытый исходный код

  • Avatud lähtekood – kood avalikult nähtav, välja arvatud tundlik info
  • Suletud lähtekood – ainult valmis toode on kasutajale kättesaadav

Algoritmid | Алгоритмы

  • Algoritm – hulk kohustavaid juhiseid kindlas järjekorras
    Алгоритм — набор обязательных шагов для решения задачи

Мухаммед бен Муса алХорезми

Põhiomadused | Основные свойства алгоритма:

  1. Diskreetsus – jaguneb sammudeks
  2. Selgus (määratlus) – iga samm on üheselt mõistetav
  3. Ühesus – samade sisendite korral sama tulemus
  4. Universaalsus – töötab mitme sarnase probleemi puhul
  5. Lõplikkus – lõpeb kindla tulemusega
  6. Korrektne – annab õige tulemuse, kui selline on olemas

Algoritmide tüübid / Типы алгоритмов

  • Lineaarne algoritm / Линейный алгоритм
    Sammud täidetakse järjestikku, sõltumata vahetulemustest.
    Шаги выполняются последовательно, независимо от промежуточных результатов.
  • Hargnev algoritm / Разветвляющийся алгоритм
    Sammude täitmine sõltub tingimusest.
    Порядок шагов зависит от условия или результата.
  • Tsükliline algoritm / Циклический алгоритм
    Osa algoritmist täidetakse korduvalt.
    Часть алгоритма повторяется многократно.
  • Plokkskeem / Блок-схема
    Algoritmi visuaalne kujutis, kasutades plokke ja nooli.
    Графическое представление алгоритма в виде блоков и стрелок.

Andmetüübid / Типы данных

  • Int – täisarv / целое число (nt. 5, -100)
  • Float – ujukomaarv / число с плавающей точкой (nt. 2.5, -3.14)
  • Str – sõne / строка (nt. “kass”, “123”)
  • Bool – tõeväärtus / логическое значение (True / False)

Plokkskeemi põhielemendid / Основные элементы блок-схем

  • Algus / Lõpp – начало / конец
  • Sisend / Väljund – ввод / вывод
  • Omandamine / Arvutamine – получение / вычисление
  • Tingimus – условие
    • Kui tõene – sooritatakse üks tegevus / Если условие верно – выполняется действие
    • Kui väär – teine tegevus / Если ложно – другое действие
  • Tsükkel tingimusega / Цикл с условием
  • Tsükkel loeteluga / Цикл с перечислением

Plokkskeemi näide / Пример блок-схемы

Ruutvõrrandi lahendamine / Решение квадратного уравнения

Üldkuju: ax² + bx + c = 0
Sisend: a, b, c
Arvutame D: D = b² - 4ac

  • Kui D < 0 → lahendusi pole
  • Kui D = 0 → üks lahendus: x = -b / 2a
  • Kui D > 0 → kaks lahendust:
    x₁ = (-b + √D) / 2a
    x₂ = (-b - √D) / 2a

Muutujad / Переменные

  • Muutuja = mälupiirkond kindla nimega.
    Переменная — именованная область памяти.
  • Väärtuse määramine = võrdusmärgiga
    Присваивание значения — через знак =
  • Reeglid:
    • Ei tohi sisaldada tühikuid (kasuta _ alakriipsu)
    • Ei tohi alata numbriga
    • Ei tohi olla Pythoni võtmesõna

Pythoni andmetüübid / Типы данных в Python

  • int – täisarv
  • float – ujukomaarv
  • str – sõne
  • bool – tõeväärtus (True, False)

Madala taseme keeled / Языки низкого уровня

1. põlvkond / Первое поколение (1954–1958)

  • Masinkood (binaarkood) – keeruline lugeda ja siluda
  • Примеры: FORTRAN I, ALGOL-58, Flowmatic, PL V

2. põlvkond / Второе поколение (1959–1961)

  • Sümboolne assembler
  • Ilmus muutuja mõiste
  • Käsud: sqlCopyEditMOV AL, 19 ADD AL, 4 OUT 2
  • Примеры: FORTRAN II (allprogrammid), ALGOL-60, COBOL, Lisp

Kõrgetasemelised keeled / Языки высокого уровня

3. põlvkond / Третье поколение (1962–1970)

  • Suhteliselt lihtsad, sõltumatud riistvarast
  • Orienteeritud algoritmidele
  • Примеры: FORTRAN, COBOL, BASIC, Pascal, C, C++, Java, Python, C#, Delphi, Visual Basic

4. põlvkond / Четвёртое поколение (alates 1970 / с 1970)

  • Probleemile orienteeritud
  • Kasutus kitsas valdkonnas
  • SQL – andmebaasi päringukeel
  • HTML/XML – märgistuskeeled
  • Prolog – loogikaprogrammeerimine

Ei ole täisväärtuslikud programmeerimiskeeled
Не являются полноценными языками программирования


5. põlvkond / Пятое поколение

  • Puudub selge määratlus
  • Arvuti lahendab probleemi ilma otsese programmeerijata
  • Programmeerija määratleb ainult tingimused ja ülesande

Translaatorid / Трансляторы

Enne programmi käivitamist tõlgitakse see masinkoodi.

  • Kompilaator – kogu programm teisendatakse masinkoodiks ja seejärel käivitatakse
    Пример: C, Fortran, Pascal
  • Interpretaator – programm loetakse rida-realt ja kohe täidetakse
    Пример: BASIC, Java