Toggle menu
Toggle preferences menu
Toggle personal menu
Neprihlásený/á
Your IP address will be publicly visible if you make any edits.
Bez shrnutí editace
Bez shrnutí editace
 
(16 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 4: Riadok 4:


== História ==
== História ==
Začiatkom 21. storočia bol progres v oblasti softvérového inžinierstva exponenciálny. Dnes sa so softvérom stretávame prakticky všade a je nevyhnutnou súčasťou technologicky napredujúceho sveta, ktorý by nedokázal bez výpočtovej techniky fungovať – či už ide o Internet, navádzacie systémy lietadiel a vesmírnych rakiet alebo jednoducho aplikáciu v našom smartfóne, všetky tieto systémy sú neoddeliteľnou súčasťou "Internetu vecí" a využívame ich každodenne pre riešenie našich problémov.
{{Pojem|obsah=úvod do softvérového inžinierstva, história}}
Začiatkom 21. storočia bol progres v oblasti softvérového inžinierstva exponenciálny. Dnes sa so softvérom stretávame prakticky všade a je nevyhnutnou súčasťou technologicky napredujúceho sveta, ktorý by nedokázal bez výpočtovej techniky fungovať – či už ide o Internet, navádzacie systémy lietadiel a vesmírnych rakiet alebo jednoducho aplikáciu v našom smartfóne všetky tieto systémy sú neoddeliteľnou súčasťou "Internetu vecí" a využívame ich každodenne pre riešenie našich problémov.{{Pojem|obsah=programové vybavenie v minulosti}}Ale nie vždy tomu bolo tak. V 70. – 80. rokoch 20. storočia neboli ešte osobné počítače veľmi rozšírené. Programové vybavenie týchto počítačov bolo jednoduché a používatelia mali iba málo možností ako mohli takéto počítače používať. Ak niekto potreboval softvér na špecifické účely, častokrát si ho musel naprogramovať sám pre seba. Takéto menej výkonné a obmedzené počítače používali vo veľkej miere iba ľudia ktorí vedeli takýto softvér používať a zároveň ho aj vytvárať – z toho vyplýva, že tento softvér sa nedistribuoval ďalej.{{Pojem|obsah=rozširovanie vývoja softvéru}}Avšak, ako sa výpočtové zariadenia rozširovali ďalej do celého sveta, vzrástli aj očakávania ich používateľov a s nimi aj potreba vyvíjať softvér s neustále novšími a lepšími funkciami. Z pár stoviek riadkov kódu v jednom súbore sa postupne stávali tisícky. Príchod novších a jednoduchších programovacích jazykov zároveň umožnil komplexnejšie techniky pre vytváranie programov, kód sa začal rozvetvovať do viacerých súborov a konfigurácií. Ľudia si začali deliť jednotlivé úlohy v rámci vývoja softvéru, pretože bolo zrejmé, že tímová práca je nevyhnutná.{{Pojem|obsah=zmysel softvérového inžinierstva}}Problém bol však v tom, že sa doteraz nezadefinoval žiadny formálny postup pre vývoj softvéru a softvérové inžinierstvo (pretože nebol potrebný). Ako deliť túto prácu efektívne? Aké sú morálne a etické aspekty vo vývoji softvéru? Je možné definovať presné metodiky a postupy? Ako popísať univerzálne nejakú triedu alebo procedúru naprieč rôznymi programovacími jazykmi ktoré majú rôzne syntaxe? Odpovede na tieto otázky nám zčasti ponúka '''[[Úvod do softvérového inžinierstva#Softvérové inžinierstvo|softvérové inžinierstvo]]'''.


Ale nie vždy tomu bolo tak. V 70. – 80. rokoch 20. storočia neboli ešte osobné počítače veľmi rozšírené. Programové vybavenie týchto počítačov bolo jednoduché a používatelia mali iba málo možností ako mohli takéto počítače používať. Ak niekto potreboval softvér na špecifické účely, častokrát si ho musel naprogramovať sám pre seba. Takéto menej výkonné a obmedzené počítače používali vo veľkej miere iba ľudia ktorí vedeli takýto softvér používať a zároveň ho aj vytvárať – tento softvér sa nedistribuoval ďalej.
== Softvérové inžinierstvo ==
{{Pojem|obsah=softvérové inžinierstvo, softvér, projekt}}Je to inžinierska disciplína, ktorá '''sa zaoberá všetkými aspektmi vývoja softvéru, od počiatočnej myšlienky a všeobecnej špecifikácie až po jeho spustenie a údržbu'''<ref>I. Sommerville; ''Software Engineering, 10th Global Edition'' (2016; [https://dn790001.ca.archive.org/0/items/bme-vik-konyvek/Software%20Engineering%20-%20Ian%20Sommerville.pdf Archive.org])</ref>. Pod pojmom '''softvér''' chápeme nielen všetok zdrojový kód programu, ale aj priľahlé postupy a dokumentácie ktoré viedli k vývoju projektu. '''Projekt''' je dočasné (vopred časovo ohraničené) úsilie s cieľom vytvorenia jedinečného výrobku alebo služby (projekt ≠ softvér, projekt je činnosť, softvér je artefakt – človekom vytvorená vec)<ref>J. Šimko, M. Šimko, M. Bieliková; ''Softvérové inžinierstvo v otázkach a odpovediach'' (2017)</ref>.{{Pojem|obsah=softvérová kríza}}Softvérové inžinierstvo je relatívne nová disciplína ktorá sa neustále vyvíja a spresňuje. Počiatky sa datujú do roku 1968, kedy prebiehala aj takzvaná ''[[wikipedia:Software_crisis|softvérová kríza]]''. S narastajúcim objemom kódu bolo potrebné definovať pravidlá – ako softvér vyvíjať a spravovať čo najefektívnejšie.{{Pojem|obsah=zákazník a používateľ}}Osoby (alebo organizácie), ktoré majú záujem na vytvorení nejakého softvéru, sa nazývajú '''zákazníci'''. So softvérom interagujú (koncový) '''používatelia'''. Nie vždy je zákazník zároveň aj používateľ a vice versa (ale môže byť) napríklad, spoločnosť chce vylepšiť dizajn svojho e-shopu, tak si najme webového dizajnéra (táto spoločnosť je ''zákazník''). Ale tento e-shop budú používať zákazníci tohto e-shopu, nie samotná firma ktorá e-shop prevádzkuje (z hľadiska softvérového inžinierstva sú zákazníci tohto e-shopu ''používatelia''). Na druhú stranu, ak by si napríklad táto spoločnosť obstarala softvér pre prehľad a správu svojich finančných výdavkov, bola by zároveň aj ''zákazníkom'' (pretože za softvér zaplatila) a aj ''používateľom'' (pretože ho bude používať).


Avšak, ako sa výpočtové zariadenia rozširovali ďalej do celého sveta, vzrástli aj očakávania ich používateľov a s nimi aj potreba vyvíjať softvér s neustále novšími a lepšími funkciami. Z pár stoviek riadkov kódu sa postupne stávali tisícky. Príchod novších a jednoduchších programovacích jazykov zároveň umožnil komplexnejšie techniky pre vytváranie programov, kód sa začal rozvetvovať do viacerých súborov a konfigurácií. Ľudia si začali deliť jednotlivé úlohy v rámci vývoja softvéru, pretože bolo jasné že tímová práca je nevyhnutná.
== Špecifikácia požiadaviek ==
{{Pojem|obsah=požiadavky zákazníkov a používateľov}}Je dôležité rozlišovať a zosúladiť požiadavky zákazníkov a požiadavkami používateľov. Keď si zoberieme príklad s e-shopom vyššie, zákazník (teda, samotný e-shop) môže chcieť, aby mal zoznam produktov menej možností pre filtrovanie a vyhľadávanie a aby bol prehľadnejší. Používateľ (zákazník tohto e-shopu) ale môže mať naopak od softvéru iné očakávania a možnosti bohatého triedenia a filtrovania produktov. V realite je dôležité nedorozumenia jednoznačne komunikovať a riešiť čo najskôr od toho, ako nastanú. Vyhneme sa tak nejasnostiam v dizajne alebo logike samotnej aplikácie.{{Pojem|obsah=špecifikácia požiadaviek}}Aby bol tento proces definovaný od raného štádia vývoja softvéru, tak nám softvérové inžinierstvo ponúka '''špecifikáciu požiadaviek'''. Je to jeden z úplne prvých procesov vykonávaných v softvérovom inžinierstve, počas ktorého stručne a zreteľne definujeme '''funkčné''' a '''nefunkčné''' požiadavky daného softvérového projektu – jedná sa v podstate o kritériá, ktoré musí daná aplikácia spĺňať. Definuje ich ako zákazník, tak aj vývojár softvéru (programátor; to sme teda my).


Problém bol však v tom, že sa nezadefinoval žiadny formálny postup pre vývoj softvéru a softvérové inžinierstvo. Ako deliť túto prácu efektívne? Aké sú morálne a etické aspekty vo vývoji softvéru? Je možné definovať presné metodiky a postupy? Odpovede na tieto otázky nám z časti ponúka '''softvérové inžinierstvo''' - je to inžinierska disciplína, ktorá sa zaoberá všetkými aspektami vývoja softvéru, od počiatočnej myšlienky a špecifikácie až po jeho spustenie a údržbu<ref>Software Engineering, 10th Global Edition (I. Sommerville) ([https://dn790001.ca.archive.org/0/items/bme-vik-konyvek/Software%20Engineering%20-%20Ian%20Sommerville.pdf Archive.org])</ref>.
=== Funkčné požiadavky ===
{{Téma|Oblast=Kategória:Softvérové inžinierstvo|Poradie=10}}
{{Pojem|obsah=funkčné požiadavky}}Funkčné požiadavky '''majú priamy vplyv na funkčnosť daného softvéru'''. Popisujú to, ako by sa mal daný softvér správať, ako by mal vyzerať, kto je jeho koncovým používateľom, a podobne...
 
Napríklad:
 
* "Hlavná stránka bude zobrazovať slogan e-shopu a najlepšie produkty z hľadiska predaja";
* "Používateľ sa vie prihlásiť pomocou e-mailu alebo svojho konta na sociálnych sieťach";
* "Produkty sa môžu triediť podľa rôznych kritérií (cena, dostupnosť...)";
* "Administrátor vie zablokovať používateľov", a mnohé iné...
 
=== Nefunkčné požiadavky ===
{{Pojem|obsah=nefunkčné požiadavky}}Nefunkčné požiadavky nemajú priamy vplyv na funkčnosť softvéru. Konkretizujú zväčša technické zabezpečenie softvéru, napríklad z hľadiska jeho bezpečnosti, škálovateľnosti, použitého programovacieho jazyka, právnej legislatívy a podobne. Týkajú sa vecí, ktoré používateľ v aplikácií priamo neuvidí, ale napriek tomu sú dôležité pre správne fungovanie aplikácie.
 
Napríklad:
 
* "Dáta používateľov musia byť spracovávané v súlade s GDPR normami Európskej únie";
* "Systém musí vedieť obslúžiť minimálne 100 používateľov naraz.";
* "Aplikácia musí byť naprogramovaná v programovacom jazyku Python";
* "Pri komunikácií medzi frontendom a backendom musí byť použitá REST API architektúra", a tak ďalej...
 
== Modely ==
Špecifikácia požiadaviek nie je stopercentne záväzná – je to živá reprezentácia kritérií pre danú aplikácia, a v priebehu času a vývoja softvérového projektu sa môže meniť a dopĺňať. Je v nej voľne popísané to, ako by sme chceli aby aplikácia vyzerala a čo by mala podľa nás robiť. Požiadavky sa v neskorších fázach konkretizujú do podoby takzvaných '''modelov''', ktoré sú reprezentované prostredníctvom obrázkov ('''diagramov''').{{Téma|Oblast=Kategória:Softvérové inžinierstvo|Poradie=10}}


== Referencie ==
== Referencie ==
<references />
<references />{{PojemConfig
| nadradene_cislo = 1
}}
[[Kategória:Softvérové inžinierstvo]]
[[Kategória:Softvérové inžinierstvo]]

Aktuálna revízia z 06:28, 6. máj 2025

Stručná história softvérového inžinierstva, jeho zmysel a základné pojmy.


História

Začiatkom 21. storočia bol progres v oblasti softvérového inžinierstva exponenciálny. Dnes sa so softvérom stretávame prakticky všade a je nevyhnutnou súčasťou technologicky napredujúceho sveta, ktorý by nedokázal bez výpočtovej techniky fungovať – či už ide o Internet, navádzacie systémy lietadiel a vesmírnych rakiet alebo jednoducho aplikáciu v našom smartfóne – všetky tieto systémy sú neoddeliteľnou súčasťou "Internetu vecí" a využívame ich každodenne pre riešenie našich problémov.

Ale nie vždy tomu bolo tak. V 70. – 80. rokoch 20. storočia neboli ešte osobné počítače veľmi rozšírené. Programové vybavenie týchto počítačov bolo jednoduché a používatelia mali iba málo možností ako mohli takéto počítače používať. Ak niekto potreboval softvér na špecifické účely, častokrát si ho musel naprogramovať sám pre seba. Takéto menej výkonné a obmedzené počítače používali vo veľkej miere iba ľudia ktorí vedeli takýto softvér používať a zároveň ho aj vytvárať – z toho vyplýva, že tento softvér sa nedistribuoval ďalej.

Avšak, ako sa výpočtové zariadenia rozširovali ďalej do celého sveta, vzrástli aj očakávania ich používateľov a s nimi aj potreba vyvíjať softvér s neustále novšími a lepšími funkciami. Z pár stoviek riadkov kódu v jednom súbore sa postupne stávali tisícky. Príchod novších a jednoduchších programovacích jazykov zároveň umožnil komplexnejšie techniky pre vytváranie programov, kód sa začal rozvetvovať do viacerých súborov a konfigurácií. Ľudia si začali deliť jednotlivé úlohy v rámci vývoja softvéru, pretože bolo zrejmé, že tímová práca je nevyhnutná.

Problém bol však v tom, že sa doteraz nezadefinoval žiadny formálny postup pre vývoj softvéru a softvérové inžinierstvo (pretože nebol potrebný). Ako deliť túto prácu efektívne? Aké sú morálne a etické aspekty vo vývoji softvéru? Je možné definovať presné metodiky a postupy? Ako popísať univerzálne nejakú triedu alebo procedúru naprieč rôznymi programovacími jazykmi ktoré majú rôzne syntaxe? Odpovede na tieto otázky nám zčasti ponúka softvérové inžinierstvo.

Softvérové inžinierstvo

Je to inžinierska disciplína, ktorá sa zaoberá všetkými aspektmi vývoja softvéru, od počiatočnej myšlienky a všeobecnej špecifikácie až po jeho spustenie a údržbu[1]. Pod pojmom softvér chápeme nielen všetok zdrojový kód programu, ale aj priľahlé postupy a dokumentácie ktoré viedli k vývoju projektu. Projekt je dočasné (vopred časovo ohraničené) úsilie s cieľom vytvorenia jedinečného výrobku alebo služby (projekt ≠ softvér, projekt je činnosť, softvér je artefakt – človekom vytvorená vec)[2].

Softvérové inžinierstvo je relatívne nová disciplína ktorá sa neustále vyvíja a spresňuje. Počiatky sa datujú do roku 1968, kedy prebiehala aj takzvaná softvérová kríza. S narastajúcim objemom kódu bolo potrebné definovať pravidlá – ako softvér vyvíjať a spravovať čo najefektívnejšie.

Osoby (alebo organizácie), ktoré majú záujem na vytvorení nejakého softvéru, sa nazývajú zákazníci. So softvérom interagujú (koncový) používatelia. Nie vždy je zákazník zároveň aj používateľ a vice versa (ale môže byť) – napríklad, spoločnosť chce vylepšiť dizajn svojho e-shopu, tak si najme webového dizajnéra (táto spoločnosť je zákazník). Ale tento e-shop budú používať zákazníci tohto e-shopu, nie samotná firma ktorá e-shop prevádzkuje (z hľadiska softvérového inžinierstva sú zákazníci tohto e-shopu používatelia). Na druhú stranu, ak by si napríklad táto spoločnosť obstarala softvér pre prehľad a správu svojich finančných výdavkov, bola by zároveň aj zákazníkom (pretože za softvér zaplatila) a aj používateľom (pretože ho bude používať).

Špecifikácia požiadaviek

Je dôležité rozlišovať a zosúladiť požiadavky zákazníkov a požiadavkami používateľov. Keď si zoberieme príklad s e-shopom vyššie, zákazník (teda, samotný e-shop) môže chcieť, aby mal zoznam produktov menej možností pre filtrovanie a vyhľadávanie a aby bol prehľadnejší. Používateľ (zákazník tohto e-shopu) ale môže mať naopak od softvéru iné očakávania a možnosti bohatého triedenia a filtrovania produktov. V realite je dôležité nedorozumenia jednoznačne komunikovať a riešiť čo najskôr od toho, ako nastanú. Vyhneme sa tak nejasnostiam v dizajne alebo logike samotnej aplikácie.

Aby bol tento proces definovaný od raného štádia vývoja softvéru, tak nám softvérové inžinierstvo ponúka špecifikáciu požiadaviek. Je to jeden z úplne prvých procesov vykonávaných v softvérovom inžinierstve, počas ktorého stručne a zreteľne definujeme funkčné a nefunkčné požiadavky daného softvérového projektu – jedná sa v podstate o kritériá, ktoré musí daná aplikácia spĺňať. Definuje ich ako zákazník, tak aj vývojár softvéru (programátor; to sme teda my).

Funkčné požiadavky

Funkčné požiadavky majú priamy vplyv na funkčnosť daného softvéru. Popisujú to, ako by sa mal daný softvér správať, ako by mal vyzerať, kto je jeho koncovým používateľom, a podobne...

Napríklad:

  • "Hlavná stránka bude zobrazovať slogan e-shopu a najlepšie produkty z hľadiska predaja";
  • "Používateľ sa vie prihlásiť pomocou e-mailu alebo svojho konta na sociálnych sieťach";
  • "Produkty sa môžu triediť podľa rôznych kritérií (cena, dostupnosť...)";
  • "Administrátor vie zablokovať používateľov", a mnohé iné...

Nefunkčné požiadavky

Nefunkčné požiadavky nemajú priamy vplyv na funkčnosť softvéru. Konkretizujú zväčša technické zabezpečenie softvéru, napríklad z hľadiska jeho bezpečnosti, škálovateľnosti, použitého programovacieho jazyka, právnej legislatívy a podobne. Týkajú sa vecí, ktoré používateľ v aplikácií priamo neuvidí, ale napriek tomu sú dôležité pre správne fungovanie aplikácie.

Napríklad:

  • "Dáta používateľov musia byť spracovávané v súlade s GDPR normami Európskej únie";
  • "Systém musí vedieť obslúžiť minimálne 100 používateľov naraz.";
  • "Aplikácia musí byť naprogramovaná v programovacom jazyku Python";
  • "Pri komunikácií medzi frontendom a backendom musí byť použitá REST API architektúra", a tak ďalej...

Modely

Špecifikácia požiadaviek nie je stopercentne záväzná – je to živá reprezentácia kritérií pre danú aplikácia, a v priebehu času a vývoja softvérového projektu sa môže meniť a dopĺňať. Je v nej voľne popísané to, ako by sme chceli aby aplikácia vyzerala a čo by mala podľa nás robiť. Požiadavky sa v neskorších fázach konkretizujú do podoby takzvaných modelov, ktoré sú reprezentované prostredníctvom obrázkov (diagramov).

Referencie

  1. I. Sommerville; Software Engineering, 10th Global Edition (2016; Archive.org)
  2. J. Šimko, M. Šimko, M. Bieliková; Softvérové inžinierstvo v otázkach a odpovediach (2017)