Etapy tvorby programov. Prehľad procesu vývoja softvéru

  • 22.07.2019

Záujem o programovanie v poslednej dobe dramaticky vzrástol. Je to spôsobené rozvojom a implementáciou informačných a komunikačných technológií do každodenného života. Ak sa človek zaoberá počítačom, skôr či neskôr má túžbu a niekedy aj potrebu programovať.

Programovanie je oblasť činnosti zameraná na vytváranie programov. Na programovanie sa dá pozerať ako na vedu a ako umenie.

Programy sú určené na strojové vykonávanie úloh. Program je postupnosť počítačových príkazov vedúcich k riešeniu problému. Program je výsledkom intelektuálnej práce, ktorá sa vyznačuje tvorivosťou.

V súčasnosti pri vytváraní softvérových produktov vzniká množstvo problémov, z ktorých hlavné sú tieto:

1. Rýchla zmena výpočtovej techniky a algoritmických jazykov;

2. Neumiestňovanie počítačov medzi sebou (VAX a IBM);

3. Nedostatok úplného vzájomného porozumenia medzi objednávateľom a dodávateľom, pokiaľ ide o vyvíjaný softvérový produkt.

Uvažujme o všeobecných bodoch technológie programovania. Samozrejme, pri vývoji malých vzdelávacích programov by sa nemali vypracovať všetky prvky tejto technológie (a to nie je v podstate vždy možné), ale mala by sa realizovať jej samotná existencia.

Vývoj akéhokoľvek programu alebo softvérového systému začína definovaním požiadaviek naň pre konkrétnu skupinu používateľov a končí prevádzkou systému týmito používateľmi.

Existujú rôzne prístupy a technológie na vývoj algoritmov a programov. Hoci programovanie je do značnej miery umenie, napriek tomu je možné nahromadené profesionálne skúsenosti systematizovať a zovšeobecniť. Odporúča sa rozdeliť návrh a vývoj programov do niekoľkých sekvenčných etáp:

1) vyhlásenie o probléme;

2) návrh programu

3) zostavenie modelu

4) vývoj algoritmu;

5) písanie programu;

6) ladenie programu;

7) testovanie programu;

8) dokumentácia.

V krátkosti sa zastavíme pri každej z týchto fáz.

Ak chcete začať riešiť problém, musíte ho presne formulovať. V prvom rade to znamená definovanie vstupných a výstupných údajov, t.j. odpovede na otázky: a) čo je dané; b) čo nájsť. Ďalšie podrobnosti o probléme sú odpovede na sériu otázok tohto druhu:

Ako definovať riešenie;

Aké údaje chýbajú a sú všetky potrebné;

Aké sú predpoklady atď.

Stručne teda môžeme povedať, že vo fáze nastavenie úlohy potrebné:

Opis počiatočných údajov a výsledku;

Formalizácia úlohy;

Popis správania programu v špeciálnych prípadoch (ak existujú).



V priebehu práce sa identifikujú vlastnosti, ktoré by mal mať systém vo finálnej podobe (návrhu), popisujú sa funkcie systému a charakteristiky rozhrania.

Dizajn programu... Najprv sa vykoná návrh architektúry softvérového systému. Ďalším krokom je podrobný návrh. V tejto fáze je procedurálny popis programu, výber a vyhodnotenie algoritmu pre implementáciu každého modulu. Vstupom do návrhu sú systémové požiadavky a špecifikácie.

Existujú rôzne prístupy a metódy na navrhovanie programov. Moderný dizajnový prístup je založený na rozklade, ktorý je zasa založený na použití abstrakcie. Cieľom dekompozície je vytvárať moduly, ktoré na seba vzájomne pôsobia podľa určitých a jednoduchých pravidiel. Dekompozícia sa používa na rozdelenie programu na komponenty, ktoré je možné následne kombinovať.

Techniky architektonického dizajnu spadajú do dvoch skupín:

1) orientované na spracovanie

2) orientované na údaje.

Metódy orientované na spracovanie zahŕňajú nasledujúce všeobecné myšlienky.

a) Modulárne programovanie.

Základné pojmy:

Každý modul implementuje jednu nezávislú funkciu;

Má jeden vstupný/výstupný bod;

Veľkosť modulu je minimalizovaná;

Každý modul je vyvinutý nezávisle od ostatných modulov;

Systém ako celok je zostavený z modulov.

Na základe týchto princípov je každý modul testovaný samostatne, následne po kódovaní a testovaní sú integrované a testovaný celý systém.

b) Funkčný rozklad.

Podobne ako pri stratégii rozdeľ a panuj. Ide prakticky o rozklad v podobe detailného detailovania krok za krokom a konceptu skrývania informácií.

c) Návrh pomocou dátového toku.

Používa tok údajov ako všeobecnú návrhovú líniu programu.

Obsahuje prvky konštrukčného dizajnu zhora nadol s podrobnými detailmi.

d) Technológia štrukturálnej analýzy projektu.

Je založená na štruktúrnej analýze pomocou špeciálnych grafických nástrojov na vytváranie hierarchických funkčných väzieb medzi objektmi systému. Efektívne v počiatočných fázach budovania systému, keď sú diagramy jednoduché a čitateľné.

Techniky návrhu založené na použití dátových štruktúr sú popísané nižšie.

a) Jacksonova metodológia.

Tu je dátová štruktúra kľúčovým prvkom pri budovaní projektu. Štruktúra programu je určená štruktúrou údajov, ktoré sa majú spracovať. Program je prezentovaný ako mechanizmus, pomocou ktorého sa vstupné údaje konvertujú na výstup.

b) Metodológia Warner.

Podobne ako v predchádzajúcom, ale postup návrhu je podrobnejší.

c) Metóda hierarchických diagramov.

Táto metóda definuje vzťah medzi vstupom, výstupom a spracovaním pomocou hierarchického rozkladu systému (bez granularity). V skutočnosti sa používajú tri prvky: vstup, spracovanie, výstup.

d) Metodika objektovo orientovaného dizajnu.

Na základe konceptu skrývania informácií a abstraktných dátových typov. Kľúčovým pojmom je objekt. Každý objekt obsahuje nejakú dátovú štruktúru so súborom procedúr navrhnutých na prácu s týmito dátami. Táto metodika vytvára abstrakcie pre danú problémovú oblasť.

Stavba modelu vo väčšine prípadov to nie je ľahká úloha. Na získanie skúseností v modelingu je potrebné naštudovať si čo najviac známych a úspešných modeliek.

Pri konštrukcii modelov sa spravidla používajú dva princípy: deduktívne (od všeobecného k konkrétnemu) a induktívne (od konkrétneho k všeobecnému).

Ryža. 3.1. Schéma budovania modelu pre deduktívnu metódu

V deduktívnom prístupe (obr. 3.1) sa uvažuje o konkrétnom prípade známeho základného modelu. Tu je za daných predpokladov známy model prispôsobený podmienkam modelovaného objektu. Môžete si napríklad postaviť model voľne padajúceho telesa podľa známeho Newtonovho zákona ma = mg - F res a vziať model rovnomerne zrýchleného pohybu pre krátky časový interval ako prípustnú aproximáciu.

Ryža. 3.2. Schéma budovania modelu pre indukčnú metódu

Induktívna metóda (obr. 3.2) zahŕňa vypracovanie hypotéz, rozklad komplexného objektu, analýzu a potom syntézu. Tu sa široko používa podobnosť, analogické modelovanie, inferencia, aby sa vytvorili akékoľvek zákonitosti vo forme predpokladov o správaní systému.

Technológia budovania modelu pre indukčnú metódu:

1) empirická fáza

Záver;

intuícia;

Predpoklad;

Hypotéza.

2) nastavenie problému pre modelovanie;

3) odhady; kvantitatívny a kvalitatívny popis;

4) zostavenie modelu.

Vývoj algoritmu- najťažší a časovo najnáročnejší proces, ale aj najzaujímavejší v tvorivom zmysle. Výber metódy vývoja závisí od formulácie problému, jeho modelu.

Pri konštrukcii algoritmu pre komplexný problém sa používa systematický prístup využívajúci dekompozíciu (top-down design) a syntézu (bottom-up programovanie). Rovnako ako pri vývoji štruktúry akéhokoľvek zložitého systému sa pri vytváraní algoritmu používajú deduktívne a induktívne metódy.

V deduktívnom prístupe sa uvažuje o špeciálnom prípade dobre známych algoritmických modelov. Tu sa za daných predpokladov známy algoritmus prispôsobuje podmienkam riešeného problému. Napríklad mnohé výpočtové problémy v lineárnej algebre, najmä nelineárne rovnice, systémy algebraických rovníc atď., možno vyriešiť pomocou dobre známych metód a algoritmov, pre ktoré existuje veľa špeciálnych knižníc podprogramov a modulov. V súčasnosti sa rozšírili špecializované balíky, ktoré umožňujú riešiť mnohé problémy (Mathcad, Autocad atď.).

Induktívna metóda predpokladá heuristický systémový prístup (dekompozícia - analýza - syntéza). V tomto prípade neexistujú žiadne všeobecné a najúspešnejšie metódy. Možné sú niektoré prístupy, ktoré umožňujú v každom konkrétnom prípade nájsť a zostaviť algoritmy. Metódy vývoja algoritmov možno rozdeliť na metódy súkromných cieľov, zdvíhanie, spätnú prácu, vetvy a hranice atď.

Jednou zo systémových metód vývoja algoritmov je štruktúrované programovanie.

Štruktúrované programovanie je založené na použití blokových diagramov vytvorených pomocou riadiacich štruktúrovaných prvkov.

Existujú tri základné štruktúrne prvky (riadiace štruktúry): kompozícia, alternatíva, iterácia.

Zloženie Je lineárnou konštrukciou algoritmu, ktorý sa skladá z sekvenčne nasledujúcich funkčných vrcholov:

začať S1; S2; koniec

Alternatívne Je rozvetvená konštrukcia s predikátovým vrcholom. Štruktúra vetvenia v algoritmoch môže byť reprezentovaná ako vidlica:

ak B, tak S1 inak S2

a neúplná vidlica:

Iterácia Ide o cyklickú konštrukciu algoritmu, ktorá je vo všeobecnosti zloženou štruktúrou pozostávajúcou z kompozície a alternatívy. Iterácie môžu byť prezentované v dvoch formách: s podmienkou:

a s dodatočnou podmienkou:

opakujte S1 až do B

Každá z uvažovaných štruktúr má jeden vstup a jeden výstup. Preto môže byť akýkoľvek počítačový program reprezentovaný blokovou schémou vytvorenou z uvedených troch riadiacich štruktúr.

Proces štruktúrovaného programovania zvyčajne začína vývojom vývojového diagramu.

Myšlienka štruktúrovaného programovania zhora nadol navrhuje postupný proces rozdelenia algoritmu (vývojového diagramu) na menšie a menšie časti až na úroveň základných štruktúr, pre ktoré je možné písať špecifické príkazy.

Na ilustráciu techniky štruktúrovaného programovania zhora nadol zvážte príklad.

Príklad. Technológia vývoja programu na riešenie kvadratickej rovnice.

Na obr. 3.3 ilustruje podrobný popis procesu konštrukcie algoritmu krok za krokom. Všimnite si, že pre počiatočný krok vývoja programu máme ako vstup koeficienty a, b, c kvadratickej rovnice ax 2 + bx + c = 0 a na výstupe - hodnoty dvoch koreňov x1, x2 .

Alternatívou k postupu zhora nadol je často štruktúrované programovanie zdola nahor. V skutočnosti sa systematickou metódou dostávame ku konečnému výsledku. Najprv rozdelíme úlohu na samostatné bloky (moduly) s ich vzájomnými prepojeniami (dekompozícia), potom po ich rozvinutí zostavíme bloky do jedného programu (syntéza). Princíp zdola nahor je rozšírený medzi programátormi, ktorí preferujú modulárny prístup, ktorý maximalizuje využitie štandardných a špecializovaných knižníc procedúr, funkcií, modulov a objektov.

Na javisku písanie programu podľa vyvinutého algoritmu vo vybranom programovacom jazyku sa zostaví program.

Ladenie programu Je to proces zisťovania a odstraňovania chýb. Softvérové ​​chyby možno rozdeliť do dvoch tried: syntaktické (syntax programovacieho jazyka) a algoritmické (logické). Syntaktické chyby sa zisťujú pri kompilácii programu – ide o najjednoduchšie chyby z hľadiska ich opravy. Algoritmické chyby programu sa identifikujú oveľa ťažšie: program funguje, ale výsledok je nesprávny. Detekcia chýb tejto triedy vyžaduje testovaciu fázu programu.

Testovanie je proces spúšťania programov za účelom identifikácie (detekcie) chýb.

Existujú rôzne spôsoby testovania programov.

Testovanie programu ako „black box“ (stratégia „black box“ definuje testovanie s analýzou vstupných údajov a výsledkov programu). Kritériom pre vyčerpávajúce vstupné testovanie je použitie všetkých možných súborov vstupných údajov.

Testovanie programu ako „bielej skrinky“ spočíva v stratégii riadenia logiky programu, umožňuje využiť jeho vnútornú štruktúru. Kritériom je dôkladné testovanie všetkých trás a riadiacich štruktúr programu.

Rozumnou a realistickou stratégiou testovania je kombinácia modelov čiernej a bielej skrinky.

Princípy testovania:

Nevyhnutnou súčasťou testovacieho prípadu by mal byť opis očakávaných hodnôt výstupu alebo výsledkov;

Testy na nesprávne a neočakávané vstupy by mali byť navrhnuté tak starostlivo ako na správne a zamýšľané vstupy;

Je potrebné kontrolovať nielen to, či program robí to, čo má robiť, ale aj to, či nerobí to, čo by robiť nemal;

Pri vývoji softvéru veľmi užitočná metóda „ručného testovania“ bez počítača na základe kontroly a prechodu (suché testovanie).

Inspection and Walkthrough je súbor postupov a techník na zisťovanie chýb pri čítaní textu.

Hlavné typy chýb, ktoré sa vyskytujú pri programovaní:

Prístup k premenným, ktorých hodnoty nie sú priradené ani inicializované;

Index mimo hraníc polí;

Nezhoda typov alebo atribútov premenných;

Explicitné alebo implicitné problémy s adresovaním pamäte;

Chybné prevody kontroly;

Logické chyby.

Testovacie postupy sú navrhnuté so sériou testov, ktoré majú najvyššiu pravdepodobnosť odhalenia väčšiny chýb. Na účely vyčerpávajúceho testovania sa vytvárajú ekvivalentné oddiely vstupných parametrov a poskytujú sa dve triedy: správne vstupné údaje a nesprávne (chybné vstupné hodnoty). Pre každú triedu ekvivalencie vytvorte vlastný test. Triedu ekvivalencie testov možno nazvať takou množinou testov, že vykonanie algoritmu na jednom z nich zaručuje podobný výsledok behu pre ostatné.

Osobitná pozornosť by sa mala venovať testom na okrajových podmienkach. Okrajové podmienky sú situácie, ktoré vznikajú priamo na, nad alebo pod hranicami vstupných a výstupných tried ekvivalencie (t. j. blízko hraníc ekvivalentných oddielov).

Samotný proces testovania môže byť krok za krokom a/alebo monolitický. V oboch prípadoch sa používajú stratégie testovania zhora nadol, počnúc horným, hlavovým modulom a potom zapájaním ďalších modulov do série (figurálne zariadenie) a testovaním zdola nahor, počnúc testovaním jednotlivých modulov.

V procese ladenia programy používajú metódu hrubej sily - pomocou kolíkov medziľahlých údajov v rámci programu (sledovanie) alebo pomocou automatických prostriedkov. Napríklad Turbo-Pascal má výkonné zariadenie na automatické ladenie programu (režim DEBUG).

Zo všetkého uvedeného vyplýva, že testovanie spočíva v zostavovaní súborov testov (vstupné údaje sú očakávaným výsledkom), ktoré by pokrývali všetky vetvy algoritmu.

Existuje zlaté pravidlo programátorov – navrhujte svoje programy tak, ako by ste chceli vidieť programy napísané inými. Každý finálny softvérový produkt vyžaduje zdokumentovaná údržba vo forme pomoci (help), textu súboru (readme.txt).

Kontrolné otázky

1. Uveďte kroky na vytváranie programov.

2. Čo sa robí vo fáze vytvárania problému?

3. Čo je rozklad?

4. Aké princípy sa používajú vo fáze budovania modelu?

5. Na akých princípoch je založené štruktúrované programovanie?

6. Aké základné štrukturálne prvky sa rozlišujú v štruktúrovanom programovaní?

7. Aké dve formy iterácie (ako prvok štruktúrovaného programovania) poznáte?

8. Aká je myšlienka štruktúrovaného programovania zhora nadol?

9. Aká je myšlienka štruktúrovaného programovania zdola nahor?

10. Čo je ladenie programu?

11. Aké triedy softvérových chýb poznáte a kedy sú zistené?

12. Aký je účel testovania programu?

13. Aké metódy testovania poznáte?

14. Aký je rozdiel medzi stratégiou „bielej skrinky“ pri testovaní a stratégiou „čiernej skrinky“?

Vývoj akéhokoľvek programu, od jednoduchej vzdelávacej úlohy až po profesionálnu aplikáciu, možno rozdeliť do niekoľkých etáp. Stručne ich popíšeme a charakterizujeme.

1. Definícia vstupných a výstupných údajov, požiadavky na program.

V prvej fáze sú vstupné a výstupné dáta programu, spôsob jeho interakcie ( rozhranie) s používateľom, programovací jazyk a prostredie, v ktorom bude vyvíjaná, ako aj požiadavky na hardvér a systémový softvér počítačov, na ktorých bude aplikácia bežať.

2. Vývoj algoritmu.

V tomto kroku sa určí a zaznamená postupnosť činností vedúcich k riešeniu problému v jednom z formulárov uvedených v článku 1.3.

3. Kódovanie (programovanie).

Treťou fázou je preloženie algoritmu do programovacieho jazyka a vytvorenie zdrojový kód programu v jednom z programovacích systémov. Program v akomkoľvek jazyku pozostáva z operátorov- takzvané jednotlivé úkony povolené v jazyku. Počet operátorov v akomkoľvek jazyku je obmedzený a pravidlá pre ich písanie sú prísne definované.

4. Kompilácia a ladenie.

Zdrojový text v jazyku Pascal nebude priamo spustený počítačom - program to vyžaduje zostaviť, teda preložiť do strojového kódu. Túto prácu vykonáva špeciálny program kompilátor alebo škrupina Jazyk. Pascal shell, s ktorým budeme vyvíjať naše programy, sa nazýva Turbo Pascal 7.1, bol vyvinutý spoločnosťou Borland International v rokoch 1983-97. V dôsledku prevodu kompilátora zdrojového kódu programu do strojového kódu získame spustiteľný súbor s príponou exe, ktorú je možné spustiť ( vykonať) v operačnom systéme (OS), pre ktorý bol kompilátor vyvinutý. Náš shell Pascal bol vytvorený pre operačný systém MS-DOS, avšak v moderných operačných systémoch rodiny Windows bude program napísaný v Pascale stále fungovať, avšak bez pohodlných možností rozhrania Windows.

takze kompilácia - je to proces konverzie programu na strojový kód. Program, ktorý bol úspešne skompilovaný, nemusí nevyhnutne fungovať správne. Môže obsahovať chyby, ktoré má štádium identifikovať. ladenie- hľadať chyby v programe. Kompiláciu a ladenie spravidla vykonáva programátor v úzkom spojení.

Existujú tri typy softvérových chýb:

· syntaktický(chyby v pravidlách jazyka);

· algoritmický(chyby v logike programu);

· runtime chyby vznikajúce v priebehu prebiehajúceho programu.

Kompilátor je schopný nájsť iba syntaktické chyby, zatiaľ čo stupeň sa používa na detekciu algoritmických chýb. testovanie programy. Chyby pri behu sa vyskytujú v dôsledku nesprávnych akcií používateľa, nezákonných operácií s údajmi (napríklad pokusov o extrakciu druhej odmocniny záporného čísla, delenia nulou) alebo chýb v softvéri a hardvéri počítača. O ich spracovaní bude reč v Ch. osem.

5. Testovanie.

Testovanie sa nazýva kontrola správnosti programu na súboroch „skúšobných“ ( test) údaje s vopred určeným výsledkom. Samozrejme, testovanie celého programu naraz je možné len pri jednoduchých vzdelávacích úlohách. Skutočné programy sa spravidla testujú "po častiach" - samostatnými funkciami a modulmi.

6. Dokumentácia a podpora.

Táto fáza zahŕňa vytvorenie systému pomoci a dokumentácie k programu, prípadné rozšírenie jeho funkčnosti, vydanie nových verzií, opravu chýb, ktoré sú takmer nevyhnutné v akomkoľvek zložitom softvérovom systéme. V našich tréningových úlohách bude absentovať fáza podpory.

Táto metodológia návrhu kombinuje dekompozíciu objektov, techniky reprezentácie fyzických, logických, ako aj dynamických a statických modelov systému.

Typický projekt zahŕňa nasledujúce fázy vývoja softvéru:

  • analýza požiadaviek projektu;
  • dizajn;
  • implementácia;
  • testovanie produktov;
  • implementáciu a podporu.

Analýza požiadaviek projektu

V tejto fáze sa formulujú ciele a zámery projektu, zvýraznia sa základné entity a vzťahy medzi nimi. To znamená, že je vytvorený základ pre ďalší návrh systému.

V rámci tejto etapy sa nielen evidujú požiadavky zákazníka, ale prebieha aj ich formovanie - zákazníkom sa vyberá optimálne riešenie ich problémov, určuje sa požadovaný stupeň automatizácie a najrelevantnejšie obchodné procesy pre automatizáciu. sú identifikované.

Pri analýze požiadaviek sa stanovia podmienky a náklady na vývoj softvéru, vytvoria sa a podpíšu sa referenčné podmienky pre vývoj softvéru.

Dizajn

Návrh systému sa vykonáva na základe predchádzajúcej etapy. Táto metodológia návrhu kombinuje dekompozíciu objektov, techniky reprezentácie fyzických, logických, ako aj dynamických a statických modelov systému.

Počas procesu návrhu sa vyvinú návrhové riešenia pre výber platformy, kde bude fungovať systém jazyka alebo implementačných jazykov, priradia sa požiadavky na používateľské rozhranie a určí sa najvhodnejší DBMS. Vyvíja sa funkčná softvérová špecifikácia: vyberie sa architektúra systému, prediskutujú sa požiadavky na hardvér, určí sa množina org. činnosti, ktoré sú potrebné na implementáciu softvéru, ako aj zoznam dokumentov upravujúcich jeho používanie.

Implementácia

Táto etapa vývoja softvéru je organizovaná v súlade s modelmi evolučného typu životného cyklu softvéru. Pri vývoji sa využíva experimentovanie a analýzy, stavajú sa prototypy, ako celého systému, tak aj jeho častí. Prototypy poskytujú príležitosť ponoriť sa hlbšie do problému a urobiť všetky potrebné rozhodnutia o dizajne v ranom štádiu návrhu. Takéto rozhodnutia môžu ovplyvniť rôzne časti systému: vnútornú organizáciu, používateľské rozhranie, riadenie prístupu atď. V dôsledku implementačnej fázy sa objaví pracovná verzia produktu.

Testovanie produktu

Testovanie úzko súvisí s fázou návrhu a implementácie vývoja softvéru. V systéme sú zabudované špeciálne mechanizmy, ktoré umožňujú otestovať systém z hľadiska súladu s požiadavkami naň, skontrolovať dizajn a dostupnosť potrebného balíka dokumentácie.

Výsledkom testovania je odstránenie všetkých nedostatkov systému a záver o jeho kvalite.

Implementácia a podpora

Implementácia systému zvyčajne zahŕňa nasledujúce kroky:

  • inštalácia systému,
  • školenie užívateľov,
  • vykorisťovanie.

Ku každému vývoju je pripojený kompletný balík dokumentácie, ktorý obsahuje popis systému, používateľské príručky a pracovné algoritmy.

Podporu pre fungovanie softvéru by mala vykonávať skupina technickej podpory vývojára.

Materiál nie je vyčerpávajúci a slúži len na oboznámenie sa s hlavnými problémami existujúcimi v tejto oblasti. Pre podrobné informácie o spolupráci kontaktujte našich manažérov alebo zavolajte na nižšie uvedené číslo.

Etapy vývoja softvéru

Profesionálne programovanie znamená, že výsledok práce – softvérový produkt – bude využívať určitý okruh ľudí, používateľov. Vo fáze vývoja programu, na ktorom sa môže zúčastniť skupina ľudí, sú prezentovaní používatelia Zákazník.

Na dokončenie úlohy vytvorenia a prevádzky softvéru je rozdelený do určitých etáp:

1. Vyjadrenie problému.

2. Zostavenie algoritmu.

3. Vypracovanie a zadanie programu.

4. Ladenie a testovanie programu.

5. Údržba softvérového produktu.

Akýkoľvek program začína s nastavenie úlohy... Na začiatku je úloha položená z hľadiska určitej tematickej oblasti a je potrebné ju previesť do pojmov a výrazov, ktoré sú bližšie k programovaniu. Keďže programátor sa spočiatku len zriedka dôkladne orientuje v predmetnej oblasti a zákazník je v programovaní, môže sa stanovenie problému stať veľmi náročným opakovaným procesom.

Vyjadrenie problému končí vytvorením technickej úlohy a potom externá špecifikácia programu ktoré zahŕňa:

1. Opis počiatočných údajov a výsledkov (typy, prezentácia, presnosť, obmedzenia atď.).

2. Popis úlohy vykonávanej programom.

3. Spôsob prístupu k programu.

4. Popis možných špeciálnych a núdzových situácií a chýb používateľa.

V tejto fáze sa program považuje za „čiernu skrinku“, pre ktorú sa určuje funkcia, ktorú vykonáva, vstupné a výstupné údaje. Ako sa dosiahne výkon funkcií tu nie je špecifikované.

V druhej etape vyvinú sa algoritmy, dané špecifikáciami, a vytvorí sa (navrhne) všeobecná štruktúra programov. Tu sa zvyčajne používa technika dizajnu zhora nadol metóda krok za krokom detailov... To znamená, že sa najprv vytvorí integrovaný algoritmus vo svojej najvšeobecnejšej forme. Potom sú kroky (bloky) špecifikované s podrobnejším popisom. V tejto fáze sa popisy robia v jazyku zrozumiteľnom pre ľudí pomocou špecifickej formy zápisu algoritmu. V programovaní je široko používaný grafický zápis vo forme blokových diagramov alebo grafových diagramov.

Tretia etapa je to len programovanie v jazyku zrozumiteľnom pre počítač. Tretia etapa je v podstate pokračovaním druhej, keďže program je tiež formou zápisu algoritmu s maximálnou mierou detailov – softvérom.

Tento kurz je venovaný štúdiu jedného z programovacích jazykov na vysokej úrovni.

Štvrtá etapa znamená odstránenie všetkých chýb a nedorozumení, ktoré vznikli v predchádzajúcich fázach. Je ľudskou prirodzenosťou robiť chyby, preto sa štvrtému stupňu venuje veľká pozornosť.

Existuje široká škála techník a pokynov na testovanie a ladenie. Je potrebné rozlišovať medzi týmito dvoma. Testovanie je proces, ktorým sa overuje, či program funguje správne a či spĺňa všetky špecifikácie návrhu. Na tieto účely je vytvorený najmä testovací balík. Ladenie- proces opravy chýb v programe. Počas ladenia sa teda opravujú syntaktické chyby, algoritmické chyby, chyby zistené počas testovania a iné.

Piata etapa nastáva, keď je softvérový produkt uvedený do prevádzky (alebo sa začal jeho predaj). Tu je tiež možné odhaliť chyby, ktoré neboli nájdené v štádiu testovania – je potrebné ich lokalizovať a opraviť. Okrem toho je možné zmeniť vlastnosti programu pre jednoduché používanie: prvky rozhrania, niektoré funkcie atď. Zdá sa, že piata etapa je najjednoduchšia. Jemu sa však venuje najväčšia časť vynaloženého času a peňazí: až polovica alebo viac.

Všetky tieto fázy vývoja a údržby softvérového produktu, vrátane dokončenia prevádzkovej podpory, tvoria životný cyklus programu.

Ďalšie rozdelenie na etapy je možné s približným rozdelením podľa času realizácie, ako je naznačené na obr. 1.1:

1. Analýza požiadaviek.

2. Definícia špecifikácií.

3. Dizajn.

4. Kódovanie.

5. Offline testovanie.

6. Komplexné testovanie.

Ryža. 1.1. Čas strávený implementáciou fáz cyklu vývoja softvéru (okrem fázy prevádzky a údržby)

Viac ako polovica času je alokovaná na poslednú etapu prevádzky a údržby veľkých softvérových produktov: až 67 % z celkovej doby životného cyklu.

Nasledujúci súbor technologických fáz (procesov) sa nazýva klasický:

1. Vznik a výskum myšlienky

2. Manažment

3. Analýza požiadaviek

4. Dizajn

5. Programovanie

6. Testovanie a ladenie

7. Uvedenie do prevádzky

8. Prevádzka a údržba

9. Koniec prevádzky

Procesy životného cyklu softvéru sú definované medzinárodnou normou ISO 12207 a sú rozdelené do troch skupín (bez ohľadu na čas):

· Hlavné procesy: akvizícia, dodávka, vývoj, prevádzka, údržba.

· Podporné procesy: dokumentácia, konfiguračný manažment, zabezpečenie kvality, overovanie, validácia, spoločné hodnotenie, audit, riešenie problémov.

· Organizačné procesy: riadenie, vytváranie infraštruktúry, zlepšovanie, školenia.

Proces výroby softvéru možno rozdeliť do niekoľkých odlišných činností. Spôsob, akým sú tieto aktivity organizované do krokov v procese, sa môže líšiť v závislosti od modelu, ktorý si vyberiete. Tieto činnosti by sa však mali vykonávať pri realizácii akéhokoľvek projektu bez ohľadu na to, ako sú v procese organizované. Etapy môžu byť zhruba reprezentované ako analýza, návrh a implementácia.

Štúdie uskutočniteľnosti

Táto fáza sa často vykonáva ešte pred začiatkom výrobného procesu, aby sa podporilo rozhodnutie, či je nový vývoj skutočne potrebný. Jeho účelom je vypracovať správu o štúdii uskutočniteľnosti, ktorá predstavuje rôzne scenáre a alternatívne riešenia spolu s diskusiou o kompromisoch medzi nákladmi a prínosmi. Štúdia uskutočniteľnosti sa často používa na pomoc organizácii pri rozhodovaní o kúpe alebo výrobe: oplatí sa vyvinúť samotný produkt alebo je nákladovo efektívne kúpiť podobný?

Na vykonanie štúdie uskutočniteľnosti musí softvérový inžinier najskôr analyzovať problém aspoň globálne. Pretože vývojári softvéru si nemôžu byť istí, že ich návrh bude prijatý, majú len veľmi obmedzenú motiváciu investovať do analýzy problémov. Na druhej strane, ak štúdia problému poskytuje nepresné výsledky, potom môžu byť zdroje potrebné na vývoj softvérovej aplikácie podhodnotené, čo bude mať za následok vážne rozpočtové problémy.

Na základe popisu problému počas predbežnej analýzy vývojári určia alternatívne riešenia. Pre každé navrhované riešenie sa odhadujú náklady a termíny dodania.

Štúdia uskutočniteľnosti sa teda snaží predstaviť budúce scenáre vývoja softvéru. Výsledkom je dokument, ktorý by mal obsahovať aspoň tieto body:

1. Definícia problému.

2. Alternatívne riešenia a očakávané prínosy.



3. Požadované zdroje, náklady a dodacie lehoty pre každé navrhované alternatívne riešenie.

Identifikácia, pochopenie a špecifikácia požiadaviek

Medzi vývojármi a zákazníkmi existuje zhoda, že postupy na identifikáciu, pochopenie a špecifikáciu požiadaviek sú najdôležitejšími aspektmi procesu softvérového inžinierstva. V skutočnosti sa disciplína inžinierstva požiadaviek snaží vytvoriť štandardné a systematické metódy na identifikáciu, dokumentáciu, klasifikáciu a analýzu požiadaviek.

Špecifikácia softvéru- formalizovaná reprezentácia služieb, ktoré bude mať vytvorený softvér, ako aj obmedzenia kladené na funkčnosť a vývoj softvéru.

V špecifikácii požiadaviek by technik mal opísať, aké vlastnosti má aplikácia vykazovať, nie ako sa tieto vlastnosti získavajú počas procesu návrhu a implementácie. Môžete napríklad chcieť definovať funkčnosť vašej aplikácie bez špecifikovania špecifickej distribuovanej architektúry, modulárnej štruktúry alebo algoritmov, ktoré má vaše riešenie používať.

Ako už bolo uvedené, vyvíjaná softvérová aplikácia je veľmi často súčasťou všeobecnejšieho systému. Kritickou operáciou v tomto zmysle je oddelenie softvérových požiadaviek od požiadaviek celého systému. Požiadavky na softvér sú to, čo musí softvérové ​​riešenie spĺňať. Definujú zodpovednosti softvérových komponentov v rámci celého systémového riešenia.

Hlavným cieľom činnosti definovania požiadaviek je presné pochopenie interakcie medzi vyvíjanou aplikáciou a jej vonkajším prostredím. Takýmto prostredím môže byť povedzme fyzická prevádzka, ktorej prevádzku je určená softvérová aplikácia na automatizáciu a riadenie, alebo môže ísť o knižnicu, kde knihovníci využívajú systém na evidenciu nových prírastkov do katalógov, požičiavanie kníh čitateľom a podobne. kde si čitatelia môžu prezerať katalógy a nájsť knihy, ktoré potrebujú.

Výstupom činnosti písania požiadaviek je dokument so špecifikáciou požiadaviek, ktorý popisuje výsledky analýzy. Účel tohto dokumentu je dvojaký: na jednej strane musí byť analyzovaný a odsúhlasený rôznymi účastníkmi, aby sa zabezpečilo, že priania všetkých zákazníkov budú zohľadnené, a na druhej strane ho používajú vývojári na vytvorenie riešenia. ktorý spĺňa požiadavky.

Ďalšou možnou súčasťou tvorby požiadaviek je definovanie plánu testovania systému. Pri testovaní systému sa skutočne kontroluje, či spĺňa zadané požiadavky. Preto spôsob, ako to možno v konečnom dôsledku dosiahnuť, je dohodnúť sa so zákazníkom vo fáze testovania systému a vydať špecifikáciu požiadaviek spolu s dokumentom.

Nasleduje možný zoznam klauzúl v dokumente so špecifikáciou požiadaviek, ktorý by mohol byť návodom pre softvérového inžiniera:

1. Oblasť predmetu. Stručný popis aplikačnej domény a cieľov, ktoré sa majú dosiahnuť pri vývoji finálneho produktu.

2. Funkčné požiadavky. Opíšte akcie softvérového produktu pomocou neformálnych, poloformálnych, formálnych alebo ich kombináciou.

3. Nefunkčné požiadavky. Možno ich klasifikovať do nasledujúcich kategórií: spoľahlivosť (operabilita, integrita, bezpečnosť, ochrana atď.); presnosť výsledkov; výkon; otázky interakcie človeka a počítača; prevádzkové obmedzenia; fyzické obmedzenia; prenosnosť atď.

4. Požiadavky na proces vývoja a údržby. To zahŕňa postupy riadenia kvality (najmä postupy testovania systému), priority pre požadované funkcie, možné zmeny postupov údržby systému a ďalšie požiadavky.

Definícia softvérovej architektúry a pracovný návrh

Dizajn je činnosť, pri ktorej vývojári štruktúrujú softvérovú aplikáciu na rôznych úrovniach detailov. Výsledkom je dokument špecifikácie dizajnu, ktorý popisuje architektúru softvérového produktu.

Kódovacie a testovacie jednotky

Kódovanie a testovanie jednotiek sú operácie, ktorými sú programy napísané v programovacom jazyku. Jednotky kódovania a testovania boli jedinou uznávanou fázou vývojového procesu za starých čias, aj keď je to len jedna z niekoľkých etáp v akomkoľvek procese konštrukčného návrhu. Výsledkom tejto aktivity je implementovaná a otestovaná kolekcia modulov.

Zostavenie a testovanie systému

Integrácia (montáž) spočíva v zostavení softvérovej aplikácie zo sady samostatne vyvinutých a testovaných komponentov. Zostavenie sa nie vždy považuje za samostatnú operáciu od kódovania. V skutočnosti môže postupný vývoj postupne integrovať a testovať komponenty tak, ako sa vyvíjajú. Napriek tomu, že tieto dve fázy je možné kombinovať, zásadne sa líšia v rozsahu problémov, ktoré sú navrhnuté na riešenie: prvá sa týka lokálneho programovania, zatiaľ čo druhá - programovania systému ako celku.

Komplexné testovanie zahŕňa testovacie sady modulov, keď sú kombinované, pričom podlieha predbežnému testovaniu každého modulu samostatne.

Dodávka, nasadenie a údržba softvéru

Po dokončení vývoja softvérovej aplikácie zostáva vykonať určitý počet operácií. Najprv musí byť softvérový produkt doručený zákazníkovi. Najčastejšie sa to robí v dvoch fázach. V prvej fáze, ktorá vedie k oficiálnemu uvoľneniu, je aplikácia doručená členom vybranej skupiny zákazníkov. Účelom tohto postupu je uskutočniť určitý druh riadeného experimentu s cieľom určiť na základe spätnej väzby od používateľov potrebu zmien v softvérovom produkte pred jeho oficiálnym vydaním. Tento typ testovania systému, ktorý vykonávajú vybraní zákazníci, sa nazýva beta testovanie.

Údržba spočíva v oprave chýb, ktoré zostávajú v systéme (opravná údržba), v prispôsobovaní aplikácie zmenám vonkajšieho prostredia (tuning maintenance), ako aj vo vylepšovaní, zmene alebo pridávaní nových funkcií a vlastností do programu (zlepšovanie údržby) . Majte na pamäti, že náklady na údržbu často presahujú 60 % celkovej ceny produktu a že opravná a prispôsobená údržba predstavuje až 20 % nákladov na údržbu, zatiaľ čo údržba na zlepšenie predstavuje 50 %. Na základe týchto štatistík možno usúdiť, že rozvoj je tu možno vhodnejší výraz ako sprevádzanie (hoci to druhé sa používa častejšie).

Iný typ klasifikácie nákladov na údržbu bol opísaný v práci Lienza a Swansona v roku 1980. Ich analýza ukázala, že asi 42 % nákladov súvisí so zmenami požiadaviek používateľov, 17 % so zmenou formátu údajov a 12 % s riešením problémov. , 9 % za procedúry ladenia, 6 % za úpravy hardvéru, 5 % za opravu dokumentácie, 4 % za zlepšenie výkonu a zvyšok z iných dôvodov.

Vo všeobecnosti, pokiaľ ide o technickú podporu, možno vyvodiť nasledujúce závery.

Ako už bolo uvedené, požiadavky sú hlavným zdrojom problémov s údržbou, pretože je ťažké ich opísať a pretože sa neustále menia.

Pomerne veľa chýb nie je opravených, kým nie je systém dodaný zákazníkovi. Ide o vážny problém, pretože čím neskôr sa chyba objaví, tým drahšia je jej oprava. Je jasné, že je vhodnejšie a lacnejšie opraviť chyby požiadaviek počas analýzy ako po nasadení systému, pretože rovnaká chyba bude musieť byť opravená vo všetkých inštaláciách daného systému.

Tendencia k zmenám je charakteristickou vlastnosťou každého softvérového produktu, ale je pomerne náročné udržiavať zmeny v softvérových produktoch.

Kontrolné otázky

1. Aký je životný cyklus softvéru?

2. Aký normatívny dokument upravuje životný cyklus softvéru?

3. Na ktorých troch skupinách procesov je založená softvérová štruktúra životného cyklu?

4. Popíšte proces vývoja softvéru počas životného cyklu

5. Popíšte proces fungovania softvéru počas životného cyklu

6. Popíšte proces riadenia softvérového projektu počas životného cyklu

7. Opíšte proces riadenia konfigurácie životného cyklu softvéru

8. Popíšte fázy procesu návrhu životného cyklu softvéru

9. Aké sú požiadavky na funkčnú špecifikáciu?

10. Popíšte hlavné charakteristiky a štruktúru modelu vodopádu životného cyklu

11. Aké sú nevýhody vodopádového prístupu?

12. Nakreslite schému skutočného procesu tvorby softvéru

13. Popíšte hlavné charakteristiky a štruktúru špirálového modelu životného cyklu

14. Popíšte fázu vývoja softvéru, v ktorej sa vykonáva štúdia uskutočniteľnosti.

15. Popíšte štádium vývoja softvéru, v ktorom sa vykonáva návrh softvéru.

16. Popíšte štádium vývoja softvéru, ktorým je implementácia softvéru.

17. Uveďte definíciu softvérovej špecifikácie. Z akých položiek môže tento doklad pozostávať?

18. Uveďte typy softvérových produktov súvisiacich so súpravou nástrojov programovacej technológie.