Funkční schéma a funkční skladba programu. Návrh strukturovaného programu


Téma 1.3: Systémový software

Téma 1.4: Servisní software a základy algoritmů

Úvod do ekonomické informatiky

1.3. Systémový software PC

1.3.1. Struktura softwaru pro PC

Sada programů určených k řešení problémů na PC se nazývá software. Složení PC softwaru se nazývá softwarová konfigurace.

Software lze rozdělit do tří kategorií:

  1. systémový software (programy pro obecné použití), které provádějí různé pomocné funkce, jako je vytváření kopií použitých informací, poskytování pomocných informací o počítači, kontrola funkčnosti počítačových zařízení atd.
  2. aplikační software, který zajišťuje potřebnou práci na PC: úpravy textových dokumentů, vytváření kreseb nebo obrázků, zpracování informačních polí atd.
  3. nástrojový software (programovací systémy), který zajišťuje vývoj nových počítačových programů v programovacím jazyce.


Rýže. 1.

Systémový software

Tyto programy pro obecné použití nejsou spojeny s konkrétní PC aplikací a provádějí tradiční funkce: plánování a správu úloh, správu I/O atd.

Jinými slovy, systémové programy provádějí různé pomocné funkce, například vytvářejí kopie použitých informací, poskytují informace nápovědy o počítači, kontrolují funkčnost počítačových zařízení atd.

Systémový software zahrnuje:

  • operační systémy (tento program se nahraje do paměti RAM při zapnutí počítače);
  • shellové programy (poskytují pohodlnější a názornější způsob komunikace s počítačem než použití příkazového řádku DOSu, například Norton Commander);
  • operační shelly – systémy rozhraní, které se používají k vytváření grafických rozhraní, multiprogramování atd.;
  • Ovladače (programy určené k ovládání portů periferních zařízení, obvykle nahrané do paměti RAM při spuštění počítače);
  • utility (pomocné nebo obslužné programy, které uživateli poskytují řadu doplňkových služeb).

Služby zahrnují:

  • správci souborů nebo správci souborů;
  • prostředky dynamické komprese dat (umožňují zvýšit množství informací na disku díky jeho dynamické kompresi);
  • nástroje pro prohlížení a přehrávání;
  • diagnostické nástroje; ovládací nástroje umožňují kontrolu konfigurace počítače a kontrolu výkonu počítačových zařízení, především pevných disků;
  • komunikační nástroje (komunikační programy) jsou určeny k organizaci výměny informací mezi počítači;
  • Nástroje pro zabezpečení počítače (zálohování, antivirový software).

Je třeba poznamenat, že některé nástroje jsou součástí operačního systému, zatímco druhá část funguje autonomně. Většina obecného (systémového) softwaru je součástí OS. Část obecného softwaru je součástí samotného počítače (některé programy OS a kontrolní testy jsou zapsány v paměti ROM nebo PROM nainstalované na základní desce). Některé z běžného softwaru jsou samostatné programy a jsou dodávány samostatně.

Aplikační software

Aplikační programy lze používat samostatně nebo jako součást softwarových systémů či balíčků.

Aplikační software – programy, které přímo na PC umožňují provádět potřebné práce: úpravy textových dokumentů, vytváření výkresů nebo obrázků, vytváření tabulek atd.

Aplikační softwarové balíčky jsou systémem programů, které se podle rozsahu použití dělí na problémově orientované, univerzální balíčky a integrované balíčky. Moderní integrované balíčky obsahují až pět funkčních komponent: testovací a tabulkový procesor, DBMS, grafický editor, telekomunikační nástroje.

Aplikační software například zahrnuje:

  1. Sada kancelářských aplikací MS OFFICE.
  2. Účetní systémy.
  3. Finanční analytické systémy.
  4. Integrované balíky pro správu kanceláře.
  5. CAD – systémy (computer-aided design systems).
  6. HTML nebo webové editory.
  7. Prohlížeče jsou prostředky k prohlížení webových stránek.
  8. Grafický editor.
  9. Expertní systémy.

Nástrojový software

Nástrojový software nebo programovací systémy jsou systémy pro automatizaci vývoje nových programů v programovacím jazyce.

V nejobecnějším případě pro vytvoření programu ve zvoleném programovacím jazyce (systémový programovací jazyk) potřebujete mít následující komponenty:

  1. Textový editor pro vytvoření souboru se zdrojovým textem programu.
  2. Kompilátor nebo interpret. Zdrojový text je přeložen do středního objektového kódu pomocí kompilátoru. Zdrojový kód velkého programu se skládá z několika moduly(zdrojové soubory). Každý modul je zkompilován do samostatného souboru s objektovým kódem, který se pak musí spojit do jednoho.
  3. Link editor nebo assembler, který provádí propojení objektových modulů a generuje funkční aplikaci jako výstup - spustitelný kód. Spustitelný kód je kompletní program, který lze spustit na libovolném počítači s operačním systémem, pro který byl program vytvořen. Výsledný soubor má zpravidla příponu .EXE nebo .COM.
  4. V poslední době se rozšířily metody vizuálního programování (pomocí skriptovacích jazyků) zaměřené na vytváření aplikací pro Windows. Tento proces je v prostředí rychlého návrhu automatizován. V tomto případě se používají hotové vizuální komponenty, které se konfigurují pomocí speciálních editorů.

Nejoblíbenější editory (programovací systémy využívající vizuální nástroje) pro vizuální design:

  1. Borland Delphi – navržený tak, aby řešil téměř jakýkoli problém s programováním aplikací.
  2. Borland C++ Builder je vynikající nástroj pro vývoj aplikací pro DOS a Windows.
  3. Microsoft Visual Basic je oblíbený nástroj pro vytváření programů Windows.
  4. Microsoft Visual C++ – tento nástroj umožňuje vyvíjet libovolné aplikace běžící v prostředí OS, jako je Microsoft Windows.

Sada programů určených k řešení problémů na PC se nazývá software. Složení PC softwaru se nazývá softwarová konfigurace. Software lze rozdělit do tří kategorií (obr. 1):

Obrázek 1. Klasifikace softwaru

    systémový software (programy pro obecné použití), které provádějí různé pomocné funkce, jako je vytváření kopií použitých informací, poskytování pomocných informací o počítači, kontrola funkčnosti počítačových zařízení atd.

    aplikační software, který zajišťuje potřebnou práci na PC: úpravy textových dokumentů, vytváření kreseb nebo obrázků, zpracování informačních polí atd.

    nástrojový software (programovací systémy), který zajišťuje vývoj nových počítačových programů v programovacím jazyce.

Systémový software je sada programů, které poskytují efektivní správu komponent počítačového systému, jako je procesor, RAM, vstupní/výstupní zařízení, síťová zařízení, fungující jako „interlayer interface“, na jehož jedné straně je hardware a na druhé straně, uživatelské aplikace. Na rozdíl od aplikačního softwaru systémový software neřeší konkrétní aplikační problémy, ale pouze zajišťuje chod jiných programů, spravuje hardwarové prostředky počítačového systému atd.

Tyto programy pro obecné použití nejsou spojeny s konkrétní PC aplikací a provádějí tradiční funkce: plánování a správu úloh, správu I/O atd. Jinými slovy, systémové programy provádějí různé pomocné funkce, například vytvářejí kopie použitých informací, poskytují informace nápovědy o počítači, kontrolují funkčnost počítačových zařízení atd. Systémový software zahrnuje:

    operační systémy (tento program se nahraje do paměti RAM při zapnutí počítače)

    shellové programy (poskytují pohodlnější a vizuálnější způsob komunikace s počítačem než použití příkazového řádku DOSu, například Norton Commander)

    operační shelly jsou systémy rozhraní, které se používají k vytváření grafických rozhraní, multiprogramování atd.

    Ovladače (programy určené k ovládání portů periferních zařízení, obvykle nahrané do paměti RAM při spuštění počítače)

    utility (pomocné nebo pomocné programy, které uživateli poskytují řadu doplňkových služeb)

Služby zahrnují:

    správci souborů nebo správci souborů

    nástroje pro dynamickou kompresi dat (umožňují zvýšit množství informací na disku díky jeho dynamické kompresi)

    nástroje pro prohlížení a přehrávání

    diagnostické nástroje; ovládací nástroje umožňují kontrolu konfigurace počítače a kontrolu funkčnosti počítačových zařízení, především pevných disků

    komunikační nástroje (komunikační programy) jsou určeny k organizaci výměny informací mezi počítači

    Nástroje pro zabezpečení počítače (zálohování, antivirový software).

Utility jsou programy určené k řešení úzkého rozsahu pomocných úloh.

Někdy jsou nástroje klasifikovány jako servisní software

Nástroje se používají pro:

    Monitorování indikátorů senzorů a výkonu zařízení - monitorování teplot procesoru a grafického adaptéru; čtení S.M.A.R.T. pevné disky;

    Správa parametrů zařízení - omezení maximální rychlosti otáčení CD mechaniky; změna rychlosti ventilátoru.

    Monitorovací indikátory - kontrola referenční integrity; správnost záznamu dat.

    Rozšířené možnosti – formátování a/nebo přerozdělování disku při ukládání dat, mazání bez možnosti obnovy.

Typy inženýrských sítí:

Diskové nástroje

      Defragmentátory

      Skenování disků - vyhledávání souborů a oblastí disku, které byly nesprávně zaznamenány nebo různým způsobem poškozené a jejich následné odstranění pro efektivní využití místa na disku.

      Vyčištění disku - odstranění dočasných souborů, nepotřebných souborů, vysypání koše.

      Rozdělení disku je rozdělení disku na logické disky, které mohou mít různé systémy souborů a operační systém je bude vnímat jako několik různých disků.

      Záloha - vytváření záložních kopií celých disků a jednotlivých souborů a také obnova z těchto kopií.

      Disková komprese - komprese informací na discích pro zvýšení kapacity pevných disků.

      • Nástroje registru

        Nástroje pro monitorování zařízení

        Zkoušky zařízení

Obrázek 2. Místo open source softwaru ve víceúrovňové struktuře počítače

Je třeba poznamenat, že některé nástroje jsou součástí operačního systému, zatímco druhá část funguje autonomně. Většina obecného (systémového) softwaru je součástí OS (obr. 2). Část obecného softwaru je součástí samotného počítače (některé programy OS a kontrolní testy jsou zapsány v paměti ROM nebo PROM nainstalované na základní desce). Některé z běžného softwaru jsou samostatné programy a jsou dodávány samostatně.

          Aplikační software. Aplikační programy lze používat samostatně nebo jako součást softwarových systémů či balíčků. Aplikační software - programy, které přímo podporují výkon potřebné práce na PC: úprava textových dokumentů, tvorba výkresů nebo obrázků, tvorba tabulek atd. Aplikační softwarové balíky jsou soustavou programů, které se podle rozsahu použití dělí na schůzky s obecnými balíčky a integrované balíčky orientované na problém. Moderní integrované balíčky obsahují až pět funkčních komponent: testovací a tabulkový procesor, DBMS, grafický editor, telekomunikační nástroje. Aplikační software například zahrnuje:

    Sada kancelářských aplikací MS OFFICE

    Účetní systémy

    Finanční analytické systémy

    Integrované balíky pro správu kanceláře

    CAD – systémy (počítačem podporované konstrukční systémy)

    HTML nebo webové editory

    Prohlížeče – prostředky pro prohlížení webových stránek

    Grafický editor

    Expertní systémy.

          Nástrojový software. Nástrojový software nebo programovací systémy jsou systémy pro automatizaci vývoje nových programů v programovacím jazyce. V nejobecnějším případě, abyste vytvořili program ve vybraném programovacím jazyce (systémový programovací jazyk), musíte mít následující komponenty: 1. Textový editor pro vytvoření souboru se zdrojovým textem programu. 2. Kompilátor nebo interpret. Zdrojový text je přeložen do středního objektového kódu pomocí kompilátoru. Zdrojový kód velkého programu se skládá z několika moduly(zdrojové soubory). Každý modul je zkompilován do samostatného souboru s objektovým kódem, který je pak nutné spojit do jednoho celku.3. Link editor nebo assembler, který provádí propojení objektových modulů a generuje funkční aplikaci jako výstup - spustitelný kód. Spustitelný kód je kompletní program, který lze spustit na libovolném počítači s operačním systémem, pro který byl program vytvořen. Výsledný soubor má zpravidla příponu .EXE nebo .COM.4. V poslední době se rozšířily metody vizuálního programování (pomocí skriptovacích jazyků) zaměřené na vytváření aplikací pro Windows. Tento proces je v prostředí rychlého návrhu automatizován. V tomto případě se používají hotové vizuální komponenty, které se konfigurují pomocí speciálních editorů. Nejoblíbenější editory (programovací systémy využívající vizuální nástroje) pro vizuální design:

    Borland Delphi – navržený tak, aby řešil téměř jakýkoli problém s programováním aplikací

    Borland C++ Builder je vynikající nástroj pro vývoj aplikací pro DOS a Windows

    Microsoft Visual Basic je oblíbený nástroj pro vytváření programů Windows

    Microsoft Visual C++ – tento nástroj umožňuje vyvíjet libovolné aplikace běžící v prostředí OS, jako je Microsoft Windows

Kontrolní otázky:

    Definujte operační systém.

    Jaký software je považován za systémový?

    Pojmenujte obslužný software.

    Jaký software je považován za aplikační software?

    Jaký je účel softwaru?

    Jaké jsou hlavní třídy programů? Uveďte příklady programů v každé třídě podle jejich účelu.

Strukturní a funkční schémata programu

Strukturální diagram je soubor elementárních vazeb objektu a vazeb mezi nimi, jeden z typů grafických modelů. Elementárním článkem se rozumí část objektu, řídicího systému apod., která realizuje elementární funkci. Na Obr. 2.1 ukazuje blokové schéma vyvinutého programu.

Obrázek 2.1 - Blokové schéma programu

Funkční schéma je dokument, který vysvětluje procesy probíhající v jednotlivých funkčních okruzích výrobku (instalace) nebo výrobku jako celku. Funkční diagram je vysvětlením určitých typů procesů probíhajících v integrálních funkčních blocích a obvodech zařízení. Na obrázku 2.2 je funkční schéma vyvinutého programu.

Obrázek 2.2 - Funkční schéma programu

Popis procedur, funkcí a modulů

Deklarace modulu:

Každý zdrojový soubor musí obsahovat deklaraci modulu. Slovo jednotka je klíčové slovo, proto musí být napsáno malými písmeny. Název modulu může obsahovat velká i malá písmena a musí být stejný jako název používaný operačním systémem pro tento soubor.

Standardní moduly jazyka Delphi. Prostředí Delphi obsahuje vynikající sadu modulů, jejichž schopnosti uspokojí i toho nejnáročnějšího programátora. Všechny moduly lze rozdělit do dvou skupin: systémové moduly a moduly vizuálních komponent.

Systémové moduly zahrnují System, SysUtils, ShareMem, Math. Obsahují nejčastěji používané datové typy v programech, konstanty, proměnné, procedury a funkce. Modul System je srdcem prostředí Delphi; v něm obsažené podprogramy zajišťují chod všech ostatních modulů systému. Modul System je automaticky součástí každého programu a není nutné jej uvádět v příkazu use.

Moduly vizuálních komponent (VCL - Visual Component Library) slouží k vizuálnímu vývoji plnohodnotných GUI aplikací - aplikací s grafickým uživatelským rozhraním (Graphical User Interface). Tyto moduly dohromady představují objektově orientovanou knihovnu na vysoké úrovni se všemi druhy prvků uživatelského rozhraní: tlačítky, štítky, nabídkami, panely atd. Moduly této knihovny navíc obsahují jednoduché a efektivní prostředky pro přístup k databázím. Tyto moduly se připojují automaticky při umístění komponent na formulář.

Popis procedur:

Tento postup zavře titulní stránku a stránku a ukončí program.

procedure TForml.Button2Click(Sender: TObject);

Tento postup otevře hlavní nabídku programu a odstraní titulní stránku z obrazovky.

procedure TForm2.Button1Click(Sender: TObject);

Tento postup otevře okno s výběrem způsobu řešení problému s přepravou a odstraní okno nabídky z obrazovky.

Tento postup otevře okno obsahující informace o vyvinutém programu a odstraní okno nabídky z obrazovky.

Tento postup otevře okno s informacemi nápovědy k programu, což uživateli usnadní práci a odstraní okno nabídky.

Tento postup otevře okno o vývojáři a odebere okno nabídky.

procedure TForm2.Button5Click(Sender: TObject);

Tento postup zavře okno nabídky a ukončí program.

procedure TForm3.Button1Click(Sender: TObject);

Tento postup opustí hlavní nabídku a zavře okno s výběrem způsobu řešení problému dopravy:

procedure TForm3.Button3Click(Sender: TObject);

Tento postup zavře okno s řešením dopravního problému třemi způsoby a zobrazí formulář s řešením problému metodou minimálních nákladů:

Tento postup zavře okno s řešením dopravního problému pomocí tří metod a zobrazí formulář s řešením problému pomocí metody dvojité preference:

procedure TForm2.Button2Click(Sender: TObject);

procedure TForm2.Button3Click(Sender: TObject);

procedure TForm2.Button4Click(Sender: TObject);

Tyto postupy umožňují uživateli přejít z hlavní nabídky na jakoukoli položku v programu: „Formulář řešení“, „Uživatelská příručka“, „Informace pro vývojáře“, „Konec“.

postup KROK ZA KROKEM;

Toto je postup pro provádění výpočtů krok za krokem v programu, můžete sledovat každou fázi vyplňování tabulky. Po provedení jednoho výpočtu procedura výpočet přeruší a čeká na příkazy od uživatele.

procedure TForm4.Label2Click(Sender: TObject);

procedure TForm4.Label3Click(Sender: TObject);

procedure TForm4.Label4Click(Sender: TObject);

procedure TForm4.Label5Click(Sender: TObject);

Tyto postupy načtou textové pole Memo s obsahem textového dokumentu v závislosti na vybrané položce nabídky. Textové dokumenty obsahují informace o používání aplikace.

procedure TForm1.Button8Click(Sender: TObject);

Tento postup provede výpočty pomocí vzorců, dosadí zadané hodnoty a nakonec zapíše výsledek do proměnné.

procedure TForm1.Button9Click(Sender: TObject);

Tento postup zobrazí odpověď v textovém poli.

procedure TForm1.Button2Click(Sender: TObject);

Tento postup vyplní vstupní pole počátečními údaji v souladu se zadáním pro projekt předmětu.

procedure TForm3.Button4Click(Sender: TObject);

procedure TForm4.Button1Click(Sender: TObject);

Tyto postupy zavřou okno a zobrazí formulář s výběrem položky nabídky.

čištění procedur;

Tento postup vymaže vstupní a výstupní pole a uvolní proměnné z hodnoty, kterou mají.


Vývoj programového blokového diagramu (architektury) je jednou z nejdůležitějších fází procesu vývoje softwaru z následujících důvodů:

  • špatná volba architektury vede k riziku neúspěchu celého projektu v budoucnu;

  • tato fáze je základní pro celý vývojový proces;

  • dobře promyšlená architektura usnadňuje úpravu softwarového produktu, pokud se změní požadavky na něj.
Architektura je chápána jako soubor programových komponent, jakož i vazeb a způsobů organizace výměny informací mezi nimi. Prvním úkolem, který je třeba vyřešit při vývoji strukturálního diagramu systému, je úkol identifikovat jeho součásti.

Na základě analýzy požadavků na systém je stanovena sada všech funkcí, které musí program podporovat. Dále se získané funkce spojí do logicky propojených skupin. Každá z těchto skupin se může stát jednou ze součástí softwarového systému. Musíte být připraveni na to, že první verze sady komponent nebude kompletní. Během procesu analýzy prvků a v raných fázích architektonického návrhu mohou být identifikovány další prvky, které je třeba zahrnout do vyvíjeného programu. Tyto funkce budou z velké části nutné k provádění technologických procesů pro udržení systému v neporušeném a provozuschopném stavu. Je zcela přirozené předpokládat, že tyto funkční vlastnosti nemohou být známy zákazníkovi softwarového systému a vývojářům v prvních fázích vývoje.

V první řadě musí architektura programu obsahovat obecný popis systému. Bez takového popisu je poměrně obtížné vytvořit ucelený obrázek z mnoha malých detailů nebo alespoň tuctu samostatných tříd. Architektura by měla obsahovat důkazy, že při jejím vývoji byly zvažovány alternativní možnosti, a odůvodnit volbu konečného uspořádání systému.

Architektura musí jasně definovat odpovědnosti každé součásti. Složka by měla mít jednu oblast odpovědnosti a měla by vědět co nejméně o oblastech odpovědnosti ostatních složek. Minimalizací množství informací, které komponenty vědí o jiných komponentách, můžete snadno lokalizovat informace o návrhu aplikace do jednotlivých komponent.

Architektura musí jasně definovat pravidla komunikace mezi komponentami programu a popsat, které další komponenty může daná komponenta používat přímo, které nepřímo a které by neměla používat vůbec.

Uživatelské rozhraní je často navrženo ve fázi požadavků. Pokud tomu tak není, mělo by to být určeno ve fázi návrhu architektury. Architektura by měla popisovat hlavní prvky formátu webové stránky, grafického rozhraní (GUI) atd. Použitelnost rozhraní může v konečném důsledku rozhodnout o popularitě nebo selhání programu.

Architektura programu je modulární, takže grafické rozhraní lze měnit bez ovlivnění základní logiky programu.

Program pro zpracování studentských dotazníků lze rozdělit do dvou částí s různými funkcemi a úrovněmi přístupu pro uživatele:


  • systém studentských průzkumů;

  • systém pro zpracování výsledků průzkumu;

  • kontrolní systém.
Všechny díly jsou propojeny do jediného programu společnou databází.



Obrázek 2.1. - Struktura systému


Průzkumný systém obsahuje následující funkce:

  • zadání otázky z dotazníku;

  • automatická kontrola typu a správnosti zadávaných údajů;

  • ukládání dat do databáze.
Systém pro zpracování výsledků průzkumu umožňuje:

  • zobrazovat nebo tisknout zprávy o průzkumech;

  • zobrazit informace o anketě konkrétního studenta;

  • porovnejte výsledky současných a předchozích průzkumů se stejnými otázkami.
Řídicí systém umožňuje:

  • kontrolovat provádění průzkumu;

  • spravovat data - přidávat, mazat a měnit;
Každý ze systémů lze dále rozdělit do dvou podsystémů podle prostředí, ve kterém běží:

  • serverová část napsaná v programovacím jazyce PHP a spuštěná na serveru;

  • klientská část, napsaná ve značkovacím jazyce HTML a programovacím jazyce JavaScript pomocí knihovny jQuery a spuštěná v prohlížeči uživatele.
S
Serverová část programu svou strukturou odpovídá architektuře MVC (Model-View-Controller) nebo model-view-controller. MVC je softwarová architektura, ve které jsou datový model aplikace, uživatelské rozhraní a řídicí logika rozděleny do tří samostatných komponent, takže úprava jedné komponenty má minimální dopad na ostatní komponenty.
Obrázek 2.2. – Architektura Model-View-Controller
Tento přístup umožňuje oddělit data, prezentaci a zpracování uživatelských akcí do tří samostatných komponent.

  • Modelka(Modelka) - modul zodpovědný za přímý výpočet něčeho na základě dat přijatých od uživatele. Výsledek získaný tímto modulem musí být předán kontroléru a nesmí obsahovat nic souvisejícího s přímým výstupem (tj. musí být prezentován v interním formátu systému). Hlavním cílem je, aby byl model zcela nezávislý na ostatních částech a nevěděl o jejich existenci téměř nic, což by umožnilo měnit ovladač i pohled na model bez dotyku samotného modelu a dokonce umožnilo fungování několika instancí pohledy a ovladače se stejným modelem ve stejnou dobu. V důsledku toho nemůže model za žádných okolností obsahovat odkazy na objekty zobrazení nebo ovladače.

  • Pohled- modul výstupu informací. Mezi povinnosti pohledu patří zobrazení dat přijatých z modelu. Pohled má obvykle volný přístup k modelu a může z něj přebírat data, ale jedná se o přístup pouze pro čtení; pohledu je zakázáno cokoliv měnit v modelu nebo dokonce jednoduše volat metody, které vedou ke změnám jeho vnitřního stavu. Pro interakci s řadičem pohled obvykle implementuje rozhraní známé řadiči, které umožňuje nezávisle měnit pohledy a má více pohledů na řadič.

  • Ovladač- modul pro řízení vstupu a výstupu dat. Mezi úkoly regulátoru patří reakce na vnější události a změna modelu a/nebo pohledu v souladu s logikou v něm vloženou. Jeden kontrolér může pracovat s několika pohledy v závislosti na situaci a interagovat s nimi prostřednictvím určitého (předem známého) rozhraní, které tyto pohledy implementují. Důležitá nuance - v klasické verzi MVC ovladač nepřenáší data z modelu do pohledu.

    Regulátor přijímá data od uživatele a předává je modelu. Kromě toho přijímá zprávy od modelu a předává je pohledu. Je důležité poznamenat, že pohled i ovladač jsou závislé na modelu. Model však nezávisí ani na ovladači, ani na chování. To je jedna z klíčových výhod takového rozdělení. Umožňuje vám vytvořit model nezávislý na vizuální reprezentaci a také vytvořit několik různých reprezentací pro jeden model.
Výhody, které architektura MVC představuje oproti tradičnímu modelu:

  • transparentnost systému;

  • jediný vstupní bod do systému;

  • opětovné použití kódu;

  • rychlý vývoj;

  • dostupnost hotových řešení;

  • snadnost podpory;

  • snadné provádět změny.
Využití architektury MVC tak přináší hmatatelné výhody při návrhu a vývoji programu pro zpracování anketních dotazníků pro studenty katedry, což má pozitivní vliv jak na rychlost samotného vývoje, tak na kvalitu konečného výsledku.

2.Vývoj struktury databáze programu

Organizace struktury databáze je tvořena na základě následujících úvah:

  • adekvátnost k popisovanému objektu - na úrovni konceptuálního a logického modelu;

  • jednoduchost použití pro účetnictví a analýzu dat - na úrovni tzv. fyzického modelu.
Podle modelu prezentace dat jsou hlavními modely hierarchické, síťové a relační, a proto pro práci s každou z výše uvedených databází využívají vlastní DBMS.

V tomto případě je nejvhodnější relační datový model, protože všechny informace lze snadno prezentovat ve formě tabulek. Relační datový model je logický datový model, který popisuje strukturální aspekt, aspekt integrity a aspekt zpracování dat relačních databází.

Strukturální aspekt- Data v databázi jsou množinou vztahů.

Aspekt integrity- vztahy splňují určité podmínky integrity.

Aspekt zpracování- jsou podporovány operátory manipulace se vztahy.

Důležitým aspektem návrhu databáze je normalizace – proces převodu databáze do podoby, která odpovídá normálním formám. Normalizace pomáhá chránit vaši databázi před logickými a strukturálními problémy nazývanými datové anomálie. Pokud je například v tabulce několik stejných záznamů, existuje riziko narušení integrity dat při aktualizaci tabulky. Tabulka, která prošla normalizací, je k takovým problémům méně náchylná, protože jeho struktura zahrnuje definování vztahů mezi daty, což eliminuje potřebu záznamů s duplicitními informacemi.

Jako DBMS byl zvolen bezplatný databázový systém MySQL. Flexibilita MySQL DBMS je zajištěna podporou velkého množství typů tabulek: uživatelé si mohou vybrat jak tabulky MyISAM, které podporují fulltextové vyhledávání, tak tabulky InnoDB, které podporují transakce na úrovni jednotlivých záznamů. Díky otevřené architektuře a licencování GPL (GNU General Public License - licence svobodného softwaru, jejímž účelem je poskytnout uživateli práva kopírovat, upravovat a distribuovat programy a také zajistit, aby uživatelé všech odvozených programů dostávali výše uvedená práva), se v MySQL DBMS objevují stále nové typy tabulek.

Důležitou výhodou MySQL DBMS je, že byl portován na velké množství platforem, jako je AIX, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, OpenBSD, Solaris a Windows. Všimněte si, že MySQL AB poskytuje zdarma ke stažení nejen zdrojové kódy DBMS, ale také hotové spustitelné moduly zkompilované a optimalizované pro konkrétní operační systémy.

MySQL má aplikační programovací rozhraní (API) pro jazyky jako Delphi, C, C++, Java, Perl, PHP, Python a Ruby, knihovny pro jazyky platformy .NET a také poskytuje podporu pro ODBC prostřednictvím ovladače ODBC (Open DataBase Connectivity je programové rozhraní pro přístup k databázím) MyODBC.

Jako hlavní typ tabulky byl zvolen typ MyISAM. Tabulky MyISAM jsou ideálně optimalizovány pro použití ve spojení s webovými aplikacemi, kde převažují čtecí dotazy. Tabulky jako MyISAM vykazují velmi dobré výsledky výkonu na SELECT dotazy. To je z velké části způsobeno nedostatečnou podporou transakcí a cizích klíčů. Při úpravách a přidávání záznamů je však celá tabulka krátce uzamčena, což může při velkém zatížení vést k vážným zpožděním. V případě programu pro analýzu dotazníků však nejde o závažný problém, protože se neplánuje vysoké zatížení systému.

Další výhodou tabulek jako MyISAM je nezávislost na platformě. Soubory tabulek lze přesouvat mezi počítači různých architektur a různých operačních systémů bez jakékoli konverze.

Tabulky MyISAM mohou mít pevné, dynamické nebo komprimované záznamy. Volba mezi pevným a dynamickým formátem je dána definicemi sloupců.

Struktura databáze je znázorněna na obrázku 2.4.

R

Obrázek 2.3. – Struktura databáze


Vztahy mezi tabulkami organizovanými v databázi umožňují provádět kaskádové mazání a aktualizace dat. Použití tabulek odkazů umožnilo snížit redundanci dat na minimum.

Tabulka it_students obsahuje údaje o studentech, kteří dokončili průzkum.

Tabulka 2.1 – datová tabulka „it_students“.


Pole

Typ

Délka

Popis

id

Číselné

11

Index

č

Číselné

11

Identifikační číslo studenta

název

Symbolický

100

název

druhé jméno

Symbolický

100

Příjmení

příjmení

Symbolický

100

Příjmení

narození

datum

-

Datum narození

rok_postupl

rok

-

Rok přijetí

adresa

Symbolický

500

Adresa

telefon_h

Symbolický

15

Domácí telefon

telefon_m

Symbolický

15

Mobilní telefon

pošta

Symbolický

250

Emailová adresa

icq

Číselné

10

ICQ číslo

Tabulka it_answers_var obsahuje možnosti pro zodpovězení otázek průzkumu.

Tabulka 2.2 – Datová tabulka „it_answers_var“

Tabulka it_questions obsahuje otázky průzkumu.

Tabulka 2.3 – datová tabulka „it_questions“.

Tabulka it_tests_cfg spojuje otázky průzkumu s konkrétním dotazníkem.

Tabulka 2.4 – Datová tabulka „it_tests_cfg“

Tabulka it_tests obsahuje údaje o všech dotaznících a datech průzkumů.

Tabulka 2.5 – datová tabulka „it_tests“.

Tabulka it_text_answers obsahuje údaje o ručně zadaných odpovědích studentů.

Tabulka 2.6 – Datová tabulka „it_text_answers“

Tabulka it_students_answers obsahuje údaje o odpovědích studentů.

Tabulka 2.6 – Datová tabulka „it_students_answers“

3.Vývoj databázového modelu toku informací

Vzhledem k tomu, že program pro analýzu dotazníků studentských průzkumů je postaven na principu MVC, lze informační toky reprezentovat následovně. Když je přijat požadavek od uživatele, který odešle prohlížeč na webový server, kontrolér podle naprogramovaných algoritmů kvalifikuje přijatý požadavek, upraví a odešle jej do modelu. Model, který je spojnicí mezi řadičem a DBMS, interpretuje požadavek a provede příslušné volání do MySQL DBMS a vrátí výsledky řadiči.

Pozoruhodné je, že pro controller zůstává skryto, s jakým typem či implementací DBMS pracuje, všechna volání do databáze probíhají přes model, jehož hlavním úkolem je abstrahovat práci s daty. Místo databáze můžete dokonce použít textový nebo XML soubor, na tom nezáleží. Paralelně řadič odešle požadavek komponentě zobrazení, která sestaví finální šablonu a vrátí ji řadiči. Je také možné, že k výměně dat dochází přímo mezi modelem a pohledem. Kontrolér zkombinuje výběr z databáze a šablony pohledu a předá jej prohlížeči uživatele.



Obrázek 2.4. - Schéma informačních toků architektury MVC

4.Vývoj podpory algoritmů

Algoritmická podpora pro všechny součásti programu má značné rozdíly, protože nesou různé funkce.

Když se student poprvé přihlásí do systému průzkumu, vytvoří se nové ID relace. Relace nebo relace umožňuje serveru identifikovat uživatele pomocí speciálního čísla, které je jedinečné a je přiřazeno, když uživatel komunikuje se serverem. Kromě toho vám relace umožňují svázat proměnné s tímto uživatelem a uložit tyto proměnné na server. Jinými slovy, relace umožňují vytvořit proměnné globální pro všechny součásti programu. Anketní systém tak může jednoznačně určit, od kterého uživatele pracujícího s programem určitá data pocházela.

D
Dále student odpovídá na sérii anketních otázek a teprve po vyplnění ankety se všechna data uloží do databáze. Algoritmus pro provoz systému průzkumu je znázorněn na obrázku 2.5.

Obrázek 2.5. – Algoritmus pro provoz systému průzkumu

Jedním z nejdůležitějších bezpečnostních bodů webové aplikace je kontrola všech příchozích dat, proto byste měli vždy zkontrolovat údaje zadané uživatelem do vyhledávacích formulářů, vyplňování registračních polí atd., zda neobsahují „nebezpečná“ data. Může se jednat o škodlivý kód JavaScript, příkazy PHP nebo PERL nebo (nejnebezpečnější) příkazy pro server.

Vždy byste měli mít na paměti, že pro nechráněnou webovou aplikaci je nebezpečný naprosto každý uživatel, takže se vždy vyplatí kontrolovat požadavky a proměnné přicházející od uživatele.


  • analýza POST a GET proměnných a superglobálních polí;

  • separace proměnných;

  • filtrování řetězcových proměnných.
Je bezpodmínečně nutné zkontrolovat příchozí proměnné na samém začátku programu, aby se zabránilo neověřeným, potenciálně nebezpečným datům od uživatelů v práci s funkcemi a dotazy do databáze. Všechny funkce potřebné pro ochranu tak budou umístěny na jednom konkrétním místě nebo dokonce souboru. V případě programu pro zpracování dotazníků studentské ankety je filtrace dat prováděna na úrovni frameworku CodeIgniter v automatickém režimu, neboť linka $config["global_xss_filtering"] = PRAVDA.

Naprosto každá proměnná v programu musí mít svůj vlastní typ již ve fázi návrhu, ať už jde o číslo nebo řetězec. Tento problém je zvláště akutní u programovacích jazyků se slabým nebo chybějícím psaním, mezi které patří PHP a JavaScript. Proto se v nejkritičtějších oblastech programu kontrolují proměnné z hlediska shody s typem.

Nebezpečné jsou zejména textové proměnné, například pole pro zadání odpovědi na anketní otázku. Jednoduše je třeba zkontrolovat, zda neobsahují škodlivý kód. Pro odstranění nebezpečí jsou některé prvky z textu odstraněny nebo nahrazeny jinými symboly. Algoritmus pro zpracování příchozích dat v rámci CodeIgniter je znázorněn na obrázku 2.6.

R
Obrázek 2.6. – Algoritmus pro zpracování příchozích dat v rámci CodeIgniter

2.5 Vývoj programového rozhraní

Jednou z nejdůležitějších otázek při vývoji softwarového systému je vývoj uživatelského rozhraní. Každý systém, který při své činnosti využívá technické prostředky, patří do třídy systémů „člověk-stroj“. Bylo by správné předložit následující požadavky na rozhraní testovacích systémů:


  • rozhraní by mělo být jasné, jednoduché a snadno použitelné

  • uživatel by neměl být rozptylován akcemi, které nesouvisejí s prováděným úkolem.
Uživatelské rozhraní je vytvořeno ve značkovacím jazyce HTML pomocí JavaScriptu a knihovny jQuery, což umožnilo vytvořit interaktivní uživatelské rozhraní programu.

NA

Například textové pole pro zadání data pomocí jQuery bylo převedeno na kompaktní kalendář, který má funkci automatické kontroly správnosti zadaného data (viz obrázek 2.7).

Obrázek 2.7. – Rozhraní kalendáře pro výběr data narození
Uživatelské rozhraní dostupné studentům účastnícím se průzkumu je poněkud minimalistické. Díky tomu nejsou studenti rozptylováni krásnou grafikou a soustředí se na přemýšlení o odpovědi na otázku. Rozhraní s jedním z

průzkumů je znázorněn na obrázku 2.8.

Obrázek 2.8. – Rozhraní pro zodpovězení anketní otázky


Pokud student z nějakého důvodu nevybere žádnou z odpovědí na otázku, ale pokusí se přejít na další otázku, anketní systém automaticky zobrazí chybové hlášení a nabídne opětovné zodpovězení aktuální otázky (viz obrázek 2.9).

Obrázek 2.9. - Chybová zpráva při zadávání dat



Systém pro zpracování výsledků průzkumu umí zobrazovat výsledky v několika režimech - textovém, grafickém a tiskovém režimu. Rozhraní pro zobrazení výsledků průzkumu v grafické podobě je znázorněno na obrázku 2.10.

Obrázek 2.10. – Rozhraní pro zobrazení výsledků průzkumu



Prohlížeč, který je ve vztahu k serveru klientem a posílá mu požadavek na zpracování webové stránky, může být implementací tzv. tenkých klientů. Prohlížeč je schopen zobrazovat webové stránky a je zpravidla součástí operačního systému a funkce jeho aktualizace a údržby spočívá na dodavateli operačního systému. Aplikační logika je soustředěna na serveru a funkcí prohlížeče je především zobrazovat informace stažené přes síť ze serveru a přenášet uživatelská data zpět. Jednou z výhod tohoto přístupu je skutečnost, že klienti jsou nezávislí na konkrétním operačním systému uživatele a webové aplikace jsou tedy multiplatformními službami.

Významnou výhodou vytváření webových aplikací pro podporu standardní funkčnosti prohlížeče je, že funkce musí běžet nezávisle na operačním systému klienta. Místo psaní různých verzí pro Microsoft Windows, Mac OS X, GNU/Linux a další operační systémy je aplikace vytvořena jednou a nasazena na jakékoli platformě.

3. Technologická část

3.1 Technologie vývoje programu

3.1.1 Základy webového serveru

Jak webový server funguje: Je známo, že webové servery ukládají informace ve formě textových souborů, nazývaných také stránky. Kromě textu mohou takové stránky obsahovat odkazy na jiné stránky (umístěné na stejném nebo jiném serveru), odkazy na grafické obrázky, audio a video informace, různé objekty pro zadávání dat (pole, tlačítka, formuláře atd.) a stejně jako další objekty a programy spouštěné na serveru. Stránky ve skutečnosti představují určitý druh spojovacího článku mezi objekty různých typů. Jsou navrženy pomocí speciálního hypertextového značkovacího jazyka, HyperText Markup Language nebo zkráceně HTML. Pro přístup k informacím umístěným na webových serverech používají uživatelé speciální klientské programy - prohlížeče. V současné době existují desítky různých prohlížečů, ale jen několik z nich je v současné době nejoblíbenější:


  • Microsoft Internet Explorer;

  • Opera;

  • Mozilla Firefox

  • Google Chrome.
Každá stránka webového serveru má svou vlastní tzv. univerzální adresu zdroje – Universal Resource Locator (URL). Pro přístup na konkrétní stránku musí uživatel poskytnout prohlížeči její URL. Každý webový server má zpravidla jednu hlavní stránku obsahující odkazy na všechny ostatní stránky na tomto serveru. Prohlížení obsahu webového serveru proto obvykle začíná jeho hlavní (indexovou) stránkou.

3.1.2 Pasivní a aktivní webové servery

Existují pasivní a aktivní webové servery. Pokud stránky serveru obsahují pouze statický text a multimediální informace, stejně jako hypertextové odkazy na jiné stránky, pak se server nazývá pasivní. Když se stránky serveru chovají podobně jako okna běžných interaktivních aplikací a vstupují do dialogu s uživatelem, jedná se o aktivní server.


3.1.3 Objektově orientovaný přístup

V současné době je stále populárnější použití objektově orientovaného přístupu při vývoji webových aplikací. A přestože výhody tohoto přístupu nejsou tak zřejmé jako například v programovacích jazycích jako C++ nebo Java, stále větší počet volně distribuovaných knihoven a programů napsaných v programovacím jazyce PHP přechází na objektově orientované rozhraní. . Tím nutí vývojáře, kteří je používají, aby se obrátili na objektově orientované možnosti PHP. Zavedení plné podpory objektově orientovaného modelu v páté verzi PHP interpretu dále podporuje zájem o tuto metodiku.

Použití objektově orientovaného přístupu k místu a ne místu často povede k úspěchu projektu. Programování jako začátečník v objektově orientovaném stylu programování se často cítí jako navigace v minovém poli – pokud nevíte, kde jsou miny, je nemožné dosáhnout konce projektu. Objektově orientované programování samo o sobě není všelék - je to funkční technologie, která vám umožňuje:


  • zvýšit procento znovu použitého zdrojového kódu;

  • při programování pracujte s koncepty a objekty reálného světa (student, skupina, kurz atd.), spíše než s nízkoúrovňovými počítačovými pojmy (soubor, řádek atd.), což vám umožňuje vytvářet větší projekty s menším počtem chyb a efektivnější krátkou dobu.
Vývoj programovacích technologií, jak poznamenal Dijkstra, je diktován tezí „Rozděl a panuj“. Každá úspěšná technologie předpokládá, že čím kratší je zdrojový kód programu, tím snazší je vytvořit, ladit a udržovat, a jednoduchý program je mnohem méně náchylný k chybám než složitý.

Na úsvitu počítačové éry byl program jedno vlákno, které zpracovávalo jedno pole dat. Postupem času narůstala složitost programů a požadavky na ně kladené a tento způsob organizace dat se ukázal jako nepřijatelný. Byl navržen strukturální přístup, ve kterém bylo datové pole přístupné odkudkoli v programu, ale hlavní tok programu byl rozdělen do několika procedur. Samostatná malá procedura, i když používá společná data, je mnohem jednodušší na vývoj než velké množství zdrojového kódu.

Každá procedura má lokální proměnnou, jejíž životnost je určena dobou trvání procedury. Některé procedury mohou volat jiné, ale datové pole v programu zůstává společné a přístupné všem procedurám. Tento přístup se používá v procedurálním programování v PHP a umožňuje vytvářet rozsáhlé softwarové komplexy. Vývoj, ladění a podpora programů, které pracují s velkými objemy dat (jako je databáze oddělení), však stále zůstávají složité a vyžadují značné dovednosti a zkušenosti.

Reakcí na rostoucí složitost byl vznik objektově orientovaného přístupu k programování: program je rozdělen do několika datových polí, z nichž každé má své vlastní procedury, stejně jako procedury, které interagují s jinými datovými poli.

Výsledkem je, že složitý úkol se rozloží na řadu jednodušších dílčích úkolů a vývojáři získají flexibilnější způsob řízení projektu – úprava jednoho obrovského monolitického bloku kódu je mnohem obtížnější než sbírka malých, volně propojených bloků.

Bez ohledu na napojení na programovací jazyk má objektově orientovaný přístup řadu obecných principů, jmenovitě:


  • schopnost vytvářet abstraktní datové typy, což umožňuje spolu s předdefinovanými datovými typy (např. celé číslo, řetězec atd.) zavádět vlastní datové typy (třídy) a deklarovat „proměnné“ takových datových typů (objektů). Vytvořením vlastních datových typů nepracuje programátor se strojovými termíny (proměnná, funkce), ale s objekty reálného světa, čímž se dostává na novou úroveň abstrakce;

  • zapouzdření, které omezuje interakci uživatele abstraktních datových typů pouze na jejich rozhraní a skrývá vnitřní implementaci objektu, čímž zabraňuje ovlivnění jeho vnitřního stavu. Lidská paměť je omezená a nemůže obsahovat všechny detaily velkého projektu, zatímco použití zapouzdření vám umožňuje navrhnout objekt a používat jej bez starostí s vnitřní implementací a uchylováním se pouze k malému počtu metod rozhraní;

  • dědičnost, která umožňuje vyvinout existující abstraktní datový typ – třídu, vytvořením nové třídy na jejím základě. V tomto případě nová třída automaticky získá schopnosti existujícího abstraktního datového typu. Abstraktní datové typy jsou často příliš složité, takže se uchylují k jejich sekvenčnímu vývoji a vytvářejí hierarchii tříd od obecných po specifické;

  • polymorfismus, umožňující konstrukci celých řetězců a rozvětvených stromů, které od sebe dědí abstraktní datové typy (třídy). V tomto případě bude mít celá sada tříd řadu metod se stejnými názvy: u všech tříd v tomto stromu je zaručeno, že bude mít metodu se stejným názvem. Tento princip pomáhá automaticky zpracovávat datové sady různých typů.

3.1.4 Vlastnosti frameworku CodeIgniter

Použitý framework CodeIgniter je napsán pomocí objektově orientovaného přístupu. Všechny třídy řadičů, pohledů a modelů zavedené programátorem dědí původní třídy zavedené do samotného rámce. To umožňuje psát menší zdrojový kód, protože všechny potřebné základní funkce jsou okamžitě dostupné.

Kromě tříd kontrolérů, pohledů a modelů dostupných pro programátora má framework CodeIgniter také pluginy a pomocné funkce, které má programátor k dispozici. Pomocníci, jak název napovídá, jsou navrženi tak, aby pomáhali vykonávat některé drobné funkce. K dispozici jsou například pomocníci pro vytváření webových formulářů, stahování souborů nebo práci s relacemi. Na rozdíl od všech ostatních hlavních prvků frameworku jsou pomocníky sady elementárních funkcí, napsané i bez použití objektově orientovaného přístupu. Každá funkce provádí malý, přísně omezený úkol. Sada je však poměrně velká a taková „maličkost“ se v práci stává velmi užitečnou.

Pluginy jsou téměř totéž jako pomocníci, až na hlavní rozdíl: nejsou souborem funkcí, jsou jednou funkcí. Kromě toho můžete věnovat pozornost tomu, že pomocníci jsou spíše součástí jádra systému, zatímco pluginy jsou něco externího, ​​vyvinutého programátory třetích stran. Ve skutečnosti to tak dopadá. Dokonce i pluginy, které jsou součástí hlavní sady, jsou napsány uživateli CodeIgniter v komunitě.


3.1.5 Eclipse IDE

Při vývoji programu pro zpracování anketních dotazníků pro studenty katedry jsme použili i tak důležitý a užitečný programátorský nástroj, jakým je integrované vývojové prostředí (IDE - Integrated Development Environment), a to Eclipse. Eclipse je bezplatný framework pro vývoj modulárních multiplatformních aplikací. Vyvinutý a udržovaný nadací Eclipse.

Nejznámější aplikace založené na platformě Eclipse jsou různé „Eclipse IDE“ pro vývoj softwaru v různých jazycích (například nejoblíbenější „Java IDE“, které bylo zpočátku podporováno). V tomto případě byla rozšíření použita pro programování v programovacích jazycích PHP (modul PDT) a JavaScript (modul JSEclipse) a také rozvržení pomocí značkovacího jazyka HTML.

3.2 Technologie testování programu

Testování programu je proces identifikace chyb v softwaru. V současné době existuje mnoho metod pro testování programů, ale nezaručují identifikaci a odstranění všech závad a chyb, ani zajištění správného fungování analyzovaného programu. Proto všechny existující testovací metody fungují v rámci formálního procesu ověřování zkoumaného nebo vyvíjeného softwaru.

Tento formální proces ověření může prokázat, že chyby nejsou pouze z hlediska použité metody, ale nezaručuje jejich úplnou absenci.

Test je informace sestávající ze speciálně vybraných počátečních dat pro laděný program a odpovídajících referenčních výsledků používaných ke sledování správné činnosti programu.

Řízení programu spočívá ve výběru testů, jejichž obdržení správných výsledků by zaručilo správný chod programu pro zbytek vstupních dat z celého přípustného rozsahu hodnot.

Systém byl testován pomocí několika metod:


  • Zátěžové testování;

  • ruční ladění a trasování programu pomocí rozšíření XDebug;

  • Testování jednotek pomocí phpUnit.
Při testování programů napsaných v PHP byste měli zkontrolovat, zda data zobrazovaná na obrazovce uživatele splňují očekávání. Jsou možné následující hlavní problémy:

  • na obrazovce se nic nezobrazuje nebo je zobrazena systémová chyba s odpovídajícím kódem (chyba autorizace, porucha webového serveru atd.);

  • při práci s databází došlo k chybě a je vygenerována chybová zpráva;

  • selhání serveru v důsledku vysokého zatížení aplikace nebo databáze;

  • Došlo k chybě při provádění programu, což má za následek zobrazení nesprávných dat nebo chybové hlášení.

3.2.1 Zátěžové testování programu

Jedním z nejdůležitějších testů je zátěžové testování, které umožňuje najít úzká hrdla ve zdrojovém kódu nebo volání databáze.

Existuje mnoho nástrojů, které zjednodušují úkol zvýšení počtu požadavků a volání více operací na serveru. Test limitu zatížení musí být navržen tak, aby přesně kopíroval očekávané pracovní zatížení aplikace.

Pro zátěžové testování programu pro zpracování anketních dotazníků pro studenty katedry byl použit program curl-loader. Curl-loader je volně distribuovaný nástroj pro testování výkonu webových aplikací napsaný v programovacím jazyce C. Je schopen simulovat stovky a dokonce tisíce serverových volání přes protokoly HTTP a HTTPS a využívá knihovnu libcurl, která vám umožňuje snadno testovat aplikace, které vyžadovat autorizaci. A podpora protokolu HTTPS vám umožňuje používat utilitu curl-loader pro testování zátěže webových aplikací pracujících prostřednictvím šifrovaných transportních mechanismů SSL (Secure Sockets Layer) a TLS (Transport Layer Security).

3.2.2 Ladění pomocí vestavěných nástrojů PHP

Standardní chování aplikace napsané v PHP, když dojde k chybě v kódu, do značné míry závisí na nastavení konfigurace. Zpravidla se nastavují v konfiguračním souboru php.ini:

  • parametr display_errors, nastavený na zapnuto nebo vypnuto, určuje, zda se mají chybová hlášení zobrazovat uživateli, nebo zda mají být ponechána skrytá;

  • parametr log_errors, nastavený na zapnuto nebo vypnuto, způsobí, že interpret PHP zapisuje zprávy do souboru protokolu událostí;

  • Direktiva error_reporting určuje, ve kterých případech má být generováno varování a v jakých případech může být ignorováno.
Při vývoji a ladění programu na testovacím serveru musíte povolit parametr display_errors a zakázat parametr log_errors. To umožňuje programátorovi co nejrychleji reagovat na výskyt chybové situace a minimalizovat počet „přepínání mezi okny“.

Ve funkční verzi programu byste naopak měli zakázat parametr display_errors, ale povolit log_errors. Na jednu stranu to zkomplikuje život útočníkům, kteří již nebudou moci vidět ladicí informace. Na druhou stranu vám v kritické situaci pomůže pochopit, co se přesně stalo, a opravit chybu, i když není v testovacím prostředí reprodukovatelná.

V obou případech je vhodné nastavit parametr error_reporting na nejpodrobnější stav - E_ALL, což PHP nutí hlásit co nejvíce drobných chyb v kódu.

3.2.3 Ladění programu pomocí XDebug

Zatímco programovací jazyk PHP lze použít k vytváření skriptů příkazového řádku pro úkoly, jako je správa systému a tradiční zpracování dat, síla jazyka je patrná zejména ve webových aplikacích.

Vzhledem ke krátkému trvání webových aplikací a jejich vrstvenému designu (klientská aplikace, síť, webový server, aplikační kód a podkladová databáze) může být obtížné zachytit chyby ve zdrojovém kódu. I když předpokládáme, že všechny vrstvy kromě PHP kódu fungují bezchybně, vysledování zpět k chybě programu může být obtížné, zvláště pokud aplikace používá velké množství tříd.

PHP echo výraz a funkce jako var_dump(), debug_zval_dump() a print_r() jsou běžné a velmi oblíbené ladicí nástroje, které mohou pomoci vyřešit různé drobné problémy. Jako testovací a ladicí nástroje jsou však tyto výrazy (a ještě spolehlivější nástroje, například balíček PEAR Log) málo užitečné a ne vždy.

Navíc je tento typ ladění přístupem hrubé síly. Pokud potřebné informace chybí, je třeba předělat zdrojový kód, zopakovat předchozí kroky a znovu začít hledat chybu. Mnohem efektivnější strategií je testovat aplikaci za chodu. Můžete katalogizovat parametry dotazu, zobrazit zásobník volání procedur a zjistit hodnotu libovolné proměnné nebo objektu. Můžete dočasně přerušit provádění aplikace a přijímat upozornění na změny hodnoty proměnné

Toto „živé“ neboli interaktivní zkoumání zajišťuje speciální aplikace zvaná debugger. Ladicí program běží nebo se připojuje k procesu, aby s ním manipuloval a prozkoumal jeho paměť. Nebo v případě interpretovaných jazyků může debugger přímo interpretovat kód. Typický moderní debugger dokáže indexovat a prohlížet zdrojový kód, zobrazovat složité datové struktury v čitelné podobě a současně zobrazovat stav programu, zásobník volání, výstup programu a hodnoty všech proměnných. Například je běžné, že debugger katalogizuje a zobrazuje vlastnosti a metody třídy.

Místo ručního přidávání různých výstupních funkcí ladění můžete použít XDebug k vytvoření protokolu trasování. Protokol trasování je seznam volání funkcí a metod třídy během provádění programu. Jeho výhodou je, že naprosto každé volání se promítne do logu.

Protokol trasování se obvykle liší běh od běhu, protože závisí na příchozích datech, která se liší požadavek od požadavku.

Sledování protokolu vám pomůže pochopit, jak se program provádí, ale je velmi obtížné vizualizovat všechny možné větve, pokud není program velmi jednoduchý. Z tohoto důvodu je testování velkých programů poměrně obtížné: existuje příliš mnoho různých vývojových cest a každý z nich musí být testován.

Nástroj pro ladění aplikací XDebug, jak jeho název napovídá, poskytuje několik funkcí pro zobrazení stavu programu a je velmi cenným výzkumným nástrojem. Po instalaci XDebug zasahuje, aby zabránil nekonečným rekurzím, přidává informace o zásobníku a trasování funkcí do chybových zpráv, monitoruje alokaci paměti a provádí několik dalších funkcí. Xdebug také obsahuje sadu funkcí, které lze přidat do zdrojového kódu a získat tak diagnostická data za běhu.

Výsledky modulu XDebug lze prohlížet pomocí programu KCachegrind, který umožňuje vizualizovat procesy probíhající ve zdrojovém kódu (viz obrázek 3.1).

Abychom to shrnuli, XDebug je malý, ale velmi užitečný nástroj pro vývojáře PHP a měl by být nainstalován na každém interpretu PHP používaném pro vývoj. Ale neměli byste používat XDebug na produkčních serverech, protože to výrazně sníží výkon.
R

Obrázek 2.1. – Rozhraní programu KCachegrind

3.2.4 Jednotkové testování pomocí phpUnit

Unit testing je proces v programování, který vám umožňuje kontrolovat správnost jednotlivých modulů zdrojového kódu programu. Cílem je napsat ověřovací testy pro každou netriviální funkci nebo metodu. To vám umožní rychle zkontrolovat, zda další změna kódu nevedla k výskytu chyb v již napsaných a testovaných částech programu, a také to usnadní detekci a odstranění takových chyb. Účelem unit testování je izolovat jednotlivé části programu a ukázat, že samostatně tyto části fungují.

Při ladění a testování programu pro zpracování anketních dotazníků pro studenty katedry byl použit systém phpUnit, který umožňuje unit testování webových aplikací napsaných v programovacím jazyce PHP.

Abyste mohli napsat minimální sadu testů pomocí phpUnit, musíte:


  • zahrnout knihovnu PHPUnit.php;

  • vytvořit podtřídu základní třídy TestCase;

  • přidejte k němu libovolný počet testovacích metod, jejichž názvy začínají na „test“. Jako vstup budou dodány předem známé parametry a výsledek bude porovnán s referenčním pomocí rodiny funkcí Assert, zděděné třídou test ze základní třídy TestCase;

  • vytvořte třídu PHPUnit_TestSuite a předejte jí název třídy se sadou testů jako parametr;

  • Spusťte sadu testů a zkontrolujte výsledek provedení.

6 (?). Seznam grafického materiálu

6.1 Popis problému

6.2 Blokové schéma programu


3. STRUKTURÁLNÍ SCHÉMA PROGRAMU

Hlavní funkce, které je třeba v našem programu implementovat, vyplývají z formulace a analýzy problému:

1)Zobrazení uživatelských dat ve formě tabulky a práce s nimi.

2) Přidávání a odstraňování typů objektů.

3)Grafické znázornění plánu s možností škálování.

4) Práce se soubory a tisk výsledků.

5) Pohodlné uživatelské rozhraní.

Níže je funkční blokové schéma programu, znázorněné ve formě hlavních modulů a propojení mezi nimi. Jasně představuje implementaci výše uvedených požadavků v programu.

Rýže. 3.1. Funkční struktura programu.

Hlavní částí programu je modul ovládání a generování rozhraní. Představuje hlavní formulář, na kterém jsou ovládací prvky umožňující provádět další funkce a tvoří také uživatelské rozhraní.


4. ZÁKLADNÍ ALGORITMY

Tím hlavním je algoritmus pro konstrukci obrázku na základě dat z hlavní tabulky, implementovaný ve formě metody plandraw().

Níže je jeho blokové schéma a popis.

4.1 Popis algoritmu

Pokud není záložka obsahující náš obrázek plánu aktivována, aktivujeme ji.

Připravíme tabulku vzdáleností a vyčistíme ji od předchozích záznamů.

Nastavíme parametry pozadí (barvu) a nakreslíme jej, poté nastavíme parametry pera (tloušťka čáry a styl), které určí zobrazení čar trasy ve výkresu. Na začátku je tloušťka čáry rovna jedné - pro kreslení souřadnicové sítě.

Pomocí vlastnosti RecordCount table zjistíme počet řádků v hlavní tabulce.

Nastavíme ukazatel aktuálního rekordu na první a uspořádáme cyklus procházení všech tabulkových záznamů, ve kterém počítáme počet tras.

Na samém začátku cyklu se připravíme na zobrazení měřítka - proměnné měřítko přiřadíme faktor zvětšení (v celých jednotkách) a pro oba posuvníky určíme maximální hodnotu, která závisí na míře zvětšení a velikost obrázku.

Pokud je číslo trasy nula, je splněna podmínka pro vykreslení souřadnicové sítě – poledníků a rovnoběžek. Nejprve se provede cyklus kreslení poledníků - postupujeme od 0 do 360 stupňů v krocích v závislosti na stupni zvětšení (15, 6, 3 nebo 1 stupeň) a u každého poledníku se podepíše odpovídající stupeň zeměpisné délky (východní zeměpisná délka - se znaménkem „+“), západní – se znaménkem „-“). Hlavní poledník je zobrazen černě. Podobné akce se provádějí v cyklu kreslení rovnoběžek, jediný rozdíl je v tom, že cyklus probíhá od 0 do 180 stupňů. Znak „+“ označuje severní šířku a znak „-“ označuje jižní šířku.

Chcete-li zobrazit čáry trasy, změňte tloušťku čáry na 2.

Vytvoříme tři pole, do kterých budeme zadávat indexy aktuálních záznamů trasy a souřadnice. Dále zorganizujeme smyčku, ve které procházíme položky tabulky a vyplňujeme tato pole pro aktuální trasu. Kromě toho se do souřadnicových polí zadávají již upravené hodnoty. Ve stejném cyklu počítáme počet bodů trasy.

V další smyčce seřadíme obsah indexového pole, abychom pak mohli kreslit průjezdní body v pořadí, v jakém se objevují v tabulce.

Nastavte barvu čáry v závislosti na čísle trasy. A organizujeme smyčku, která kreslí čáry.

V cyklu kreslení čar provádíme následující: s přihlédnutím k polohám posuvníků se vypočítá poloha okna vzhledem k mapě a souřadnice bodu v okně se vypočítají vzhledem k této poloze. Pokud je to náš první průchod, pak jednoduše najedeme kurzorem na bod s vypočtenými souřadnicemi, pokud ne a příznak kreslení čáry je zapnutý, nakreslíme čáru z předchozího bodu do tohoto. Pokud je zaškrtávací políčko deaktivováno, jsou na mapě umístěny pouze body.

Poté se vypočítá vzdálenost mezi body umístěnými na zeměkouli, jejichž průměty jsme právě znázornili na naší mapě. Vzdálenosti se počítají v kilometrech, poloměr Země se bere 6371 km. Vzdálenost se vypočítá, pokud i není rovno 0 a nejedná se o první průchod cyklem. Tato podmínka je nezbytná, protože používáme souřadnice předchozího bodu ke zjištění vzdálenosti k aktuálnímu bodu.

Jelikož je zemský povrch kulový, musíme vypočítat délku oblouku. Hlavním problémem je zde najít úhel, pod kterým oblouk spočívá.

Zvažují se tři případy:

1) pokud jsou body na stejné zeměpisné délce, úhel lze snadno určit - bude se rovnat rozdílu mezi větší a menší hodnotou zeměpisné šířky.

2) pokud jsou body na stejné zeměpisné šířce, pak její určení také není obtížné - rovná se rozdílu mezi větší a menší hodnotou zeměpisné délky, vynásobené korekcí cos(f), kde f je aktuální zeměpisná šířka.

3) pokud jsou body umístěny v různých zeměpisných šířkách a délkách, je tento případ nalezení úhlu složitější. Podívejme se na to podrobně.

Nejprve najdeme rozdíl v zeměpisné délce bodů, jako by byly na stejné zeměpisné šířce, vynásobíme korekcí cos(f) a vypočítáme lineární vzdálenost mezi nimi pomocí kosinové věty (další dvě strany trojúhelníku jsou poloměry Země). Stejným způsobem vypočítáme vzdálenost mezi body, jako by byly na stejné zeměpisné délce. Tyto vzdálenosti označujeme jako l1 a l2.

Nyní máme pravoúhlý trojúhelník s nohami l1, l2, jejichž přepona je vzdálenost l3. Vypočítáme to pomocí Pythagorovy věty. Naším cílem je najít úhel a. Pomocí kosinové věty najdeme kosinus tohoto úhlu. Když jsme z něj vypočítali arkus cosinus, dostaneme úhel! Níže je vysvětlující nákres.


Rýže. 4.1. Vysvětlení výpočtů vzdáleností v různých zeměpisných šířkách a délkách.

Po nalezení úhlu spočítáme délku oblouku a výslednou vzdálenost zadáme do tabulky vzdáleností spolu s číslem aktuální trasy.

Poznámka: Protože funkce kosinus a arkkosinus pracují s úhly zadanými v radiánech, program převádí radiány na stupně a naopak. Všechny tyto výpočty vedou k hromadění chyb.

Všechny uvedené vzorce jsou uvedeny v příloze E.

Po výpočtu vzdálenosti ji zobrazíme na plánu vedle aktuálního bodu, pokud je zapnuta příslušná vlajka. Navíc, vzhledem k podmínce pro odhad délky trasy, obrázek nezobrazuje délku jednoho segmentu, ale součet délek segmentů předcházejících tomuto bodu. Uživatel se může podívat na délky jednotlivých segmentů v tabulce vzdáleností.

Mapa také zobrazuje typ objektu pro daný bod, pokud je zaškrtnuto políčko "zobrazit typ objektu".

Pokud je zaškrtávací políčko „nezobrazovat tabulku vzdáleností“ deaktivováno, zviditelněte jej.

Po nakreslení všech tras uvolníme paměť přidělenou pro pole indexů a souřadnic.


4.2 Vývojový diagram algoritmu

Rýže. 4.2. Vývojový diagram algoritmu kreslení plánu.


5. IMPLEMENTACE SOFTWARU 5.1 Výběr vývojového prostředí programu

Jak již bylo zmíněno v „Problémovém prohlášení“, pro vytvoření tohoto programu bylo zvoleno vývojové prostředí Borland C++Builder 5. Toto rozhodnutí je dáno tím, že v něm není proces tvorby rozhraní obtížný ani pro programátora, který se poprvé setkal s Builderem a pracuje dobře s databázemi a grafikou, což je přesně to, co potřebujeme k vývoji našeho programu.

Nevýhodou je podle mého názoru velký spustitelný kód programu - aby fungoval na stroji, kde není nainstalován Builder, je nutné zahrnout všechny v něm použité knihovny, proto velikost program se několikanásobně zvětší.

Na Builderu je navíc dobrá věc, že ​​komponenty mají mnoho vlastností, které lze měnit nejen během konstrukce, ale i během provádění programu, díky čemuž je práce s nimi flexibilnější.

5.2 Práce s tabulkami

Jako databázový ovladač používáme Paradox. Tento typ databáze byl zvolen především proto, že Builder má vestavěné nástroje pro práci s tabulkami Paradox, jako je Borland Database Engine, a také je dodáván s programem Database Desktop. Za druhé, výhodou Paradoxu je, že název databáze lze zadat jako cestu k adresáři, kde je umístěn soubor tabulky, a všechny tabulky jsou uloženy v samostatných souborech. Za třetí, zabírají málo místa a jsou nejjednodušší z místních stolů. Za čtvrté, tabulky Paradoxu umožňují vytvářet klíčová pole.

Pro zajištění práce s tabulkou jsme na formulář nainstalovali následující komponenty:

DBGrid, pomocí kterého můžeme vkládat, mazat nebo upravovat data v tabulce nebo je jednoduše zobrazovat.

Seznam DBComboBox, pomocí kterého můžeme vkládat data z tabulky objektů do aktuálního záznamu hlavní tabulky. Před použitím tohoto seznamu musí být naplněn hodnotami z tabulky objektů. K tomu při spuštění programu projdeme všechny jeho záznamy a jejich obsah zapíšeme do pole Položky tohoto seznamu.

Navigátor DBNavigator - s ním můžete mazat, přidávat, upravovat záznamy v tabulce a také v nich procházet. Připojíme jej k mřížce, ve které bude zobrazena naše tabulka.

Všechny tyto komponenty jsou propojeny s tabulkou prostřednictvím DataSourse, v jehož vlastnostech uvádíme jeho název. Kromě toho je samotná tabulka také reprezentována jako komponenta Table, ve které by měla být věnována největší pozornost třem vlastnostem:

1)Aktivní – ukazuje, zda je tabulka aktivní. Pokud se k ní pokusíte přistupovat, pokud je tato vlastnost zakázána, program vygeneruje chybu „Nelze provést tuto operaci na uzavřené datové sadě“. Během testování byly sledovány a řešeny všechny možné situace, které by mohly vést k této chybě.

2) DatabaseName – název databáze, za kterou se bere cesta k adresáři, ze kterého byla tabulka otevřena nebo vytvořena.

3) TableName – název tabulky - soubor s příponou .db, ve kterém je tabulka uložena.

Všechny tyto vlastnosti se během provádění programu mění.

Potřebujeme komponentu Tabulka, abychom se zbavili specifikace. Můžeme pod rouškou tabulky otevřít libovolnou konkrétní tabulku a změnit pouze vlastnosti tabulky, aniž bychom ovlivnili ostatní komponenty. Například při otevírání tabulky zavřeme a deaktivujeme předchozí, přičemž se odstraní název databáze a název tabulky ve vlastnostech komponenty Tabulka a otevřeme a aktivujeme novou, přičemž do DatabaseName zapíšeme nové názvy adresářů a souborů. a TableName při otevírání. (Viz metody TBOpenFileClick a TBCloseFileClick v příloze A).

Komponenty DataSourse a Table jsou umístěny na formuláři, ale jsou viditelné pouze při práci s programem v Builderu.

5.3 Práce s grafikou

Ke kreslení plánu používáme komponentu Obrázek. Tento objekt má dvě důležité vlastnosti:

1)Obrázek – je objekt třídy TPicture, což je kontejner pro grafiku jakéhokoli druhu. Tito. tato komponenta může ukládat bitmapovou grafiku, ikony nebo jinou uživatelsky definovanou grafiku. Na obrázku je umístěn náš výkres. S jeho pomocí uložíme výsledný výkres do souboru. (Viz Příloha A, metoda TBSaveFileClick). Upozorňujeme také, že velikosti obrázku a obrázku nemusí být stejné. Tento problém bude podrobněji popsán níže.

2) Canvas – plátno. Celý proces kreslení se provádí na plátně komponenty Image. Canvas umožňuje nastavit parametry pera, štětce, písma, kreslit objekty jako čáry, obdélníky, elipsy a také zobrazovat text.

V našem programu používáme kreslení čar pomocí obrysových metod MoveTo a LineTo, kreslení bodů pomocí Elipsy a výstup textu pomocí metody TextOut. (Viz příloha A, plandraw).

Tito. canvas nám umožňuje pracovat s funkcemi Windows GDI bez přímého přístupu k nim, což značně usnadňuje práci s grafikou.


5.4 Vývoj rozhraní

Zvláštní pozornost by měla být věnována také vývoji rozhraní, protože je nutné, aby bylo uživatelsky přívětivé. Nástroje Builder usnadňují implementaci rozhraní ve standardech Windows.

Hlavní prvky standardního programového rozhraní Windows:

1) Nabídky – poskytují uživatelům snadný způsob provádění logicky seskupených příkazů.

Hlavní menu je vytvořeno pomocí komponenty MainMenu a je velmi pohodlné jej upravovat při vytváření programu, protože jej pro kontrolu nemusíte spouštět - veškerý jeho obsah je již zobrazen na formuláři.

2) Panel nástrojů - obsahuje tlačítka nástrojů, která odpovídají položkám v nabídce programu a poskytují uživateli přímější přístup k jeho příkazům.

Panel nástrojů je implementován pomocí komponenty ToolBar, která umožňuje rychle přidávat a umisťovat tlačítka. Všechna tlačítka nástrojů na panelu nástrojů mají stejnou šířku a výšku.

Pro každé tlačítko můžete nastavit ikonu, která zobrazuje akci, kterou provádí, výběrem čísla ikony z obrázků uložených v komponentě ImageList. To je výhodné, protože ikonu můžete snadno změnit, aniž byste museli pokaždé načítat ikonu ze souboru.

V souladu se standardem Windows jsem na panelu vytvořil tlačítka odpovídající položkám nabídky „Nový“, „Otevřít“, „Uložit“, „Tisk“.

3) Tlačítka - s jejich pomocí uživatel spustí provádění akce přiřazené tomuto tlačítku.

Typicky, podle standardu rozhraní Windows, se tlačítka téměř nikdy nepoužívají, aby nerušila okno programu. Místo toho se používají panely nástrojů a nabídky.

Ale protože náš program neprovádí příliš velké množství akcí, můžeme použít i tlačítka. To je výhodné v tom, že na rozdíl od nabídek jsou umístěny vedle prvku, ve vztahu k němuž se provádí akce, kterou volají (například tlačítka pro přidávání a odstraňování objektů jsou umístěna vedle seznamu objektů a tlačítka zoomu jsou další na obrázek ), což bude samozřejmě pro uživatele pohodlné.

Kromě toho na ně můžete umístit podpisy vysvětlující jejich účel, což je také pohodlné.

Tlačítko se vytvoří umístěním komponenty Button na formulář. Při vývoji programu se používá jeho vlastnost Caption - nápis na tlačítku a za běhu vlastnost Enabled k deaktivaci tlačítka nebo naopak k jeho aktivaci. (Viz Dodatek A, HideButtons() a ShowButtons()). Například při otevírání tabulky aktivujeme tlačítka pro kreslení plánu a při zavírání je deaktivujeme.

4) Rozbalovací seznamy – slouží k tomu, aby uživatel mohl vybrat položku ze seznamu. To je mnohem pohodlnější než ruční zadávání.

V tomto programu se pole se seznamem používá k zadání typu objektu do tabulky (DBComboBox, popsaný výše) a k odstranění typu objektu z tabulky objektů (ComboBox).

Rozdíl mezi DBComboBox a ComboBox je v tom, že první je spojen s polem tabulky a druhý je jednoduchý seznam. Použití jednoduchého seznamu ComboBox umožňuje řešit problémy interakce s tabulkou a DBComboBox, které vznikají při mazání objektu z tabulky.

5) Scroll bary – realizované pomocí komponenty ScrollBox, v našem případě jsou nutné k posouvání obrázku plánu při jeho zvětšení. Program změní parametr Max, který určuje maximální míru rolování v závislosti na měřítku.

6) Zaškrtávací políčka (přepínače) – určují, zda je možnost, kterou představují, povolena nebo zakázána.

V Builderu je to komponenta CheckBox.

Zaškrtávací políčka v programu určují, zda jsou povoleny nebo zakázány následující funkce:

Kreslení čar tras;

Zobrazení vzdálenosti na plánu;

Zobrazení typu objektu na plánu;

Zobrazit tabulku vzdáleností.

Zaškrtávací políčka se obvykle nacházejí v nabídce nastavení. Ale vzhledem k jednoduchosti našeho programu jsou zobrazeny na panelu vedle kreslicího pole, což je pro uživatele velmi pohodlné.

7) Záložky - v tomto programu jsou tabulka a výkres plánu umístěny na různých záložkách. Domnívám se, že to bude pro uživatele pohodlnější, jelikož celý program je obsažen v jednom okně a zároveň není plocha tabulky ani plocha kreslení umístěna na úkor druhé.

V Builderu existují dva typy karet: TabControl a PageControl.

Program používá PageControl, protože na rozdíl od prvního může tato komponenta obsahovat heterogenní ovládací prvky na kartách. V TabControl jsou všechny stránky stejné.

8) Dialogy jsou velmi pohodlným nástrojem, který pomáhá implementovat taková dialogová okna s uživatelem, jako je uložení, otevření souboru, tisk a výběr barvy použité v tomto programu.

Všechny potřebné dialogy jsou umístěny na formuláři, ale zůstávají pro uživatele neviditelné. Jsou volány programem a implementují standardní rozhraní Průzkumníka.

Pomocí dialogů OpenDialog a SaveDialog program obdrží název souboru a adresáře, který uživatel vybere. Pomocí PrintDialogu se vyvolá nastavení tisku. A ColorDialog vám pomůže vybrat barvu (používá se k výběru barvy pozadí obrázku).

Účel každé komponenty uživatelského rozhraní je popsán v uživatelské příručce.

Stojí za zmínku, že každý objekt rozhraní má vlastnost nazvanou Align. Umožňuje zarovnat ovládací prvek vpravo, vlevo, nahoře nebo dole ve formuláři a panelu a ovládací prvek tam zůstane, i když se změní velikost formuláře. Například panel s tlačítky u obrázku je zarovnán doprava, tabulka vzdáleností je zarovnána doleva a pole obrázku je zarovnáno na alClient, který zabírá veškerý volný prostor mezi tabulkou a panelem. . Jak natahujete formulář, tyto ovládací prvky se také roztahují a zůstávají na místě.

Použití vlastnosti Zarovnat je výhodné, protože ve fázi návrhu můžete komponenty uspořádat podle potřeby a nemusíte pak ručně nastavovat jejich velikosti pokaždé, když se tvar změní.

5.5 Některé vlastnosti algoritmů

Algoritmus kreslení

Vzhledem k tomu, že již byla poměrně podrobně popsána, přidám k jejímu vývoji pouze jednu poznámku: kreslí mapu v konformní projekci. Ty zachovávají rovnost úhlů mezi směry na mapě a v přírodě. Zároveň jsou zkreslené rozměry území.

Tento typ promítání byl vybrán, protože je nejjednodušší nakreslit pro něj souřadnicovou síť, protože se skládá z přímých čar. (Více informací o mapových projekcích a souřadnicích sítě najdete v příloze E.)

Vzdálenosti se počítají ve skutečných velikostech.

Algoritmus pro výpočet vzdálenosti.

Je také podrobně popsán v "Popis algoritmu". Je součástí kreslícího algoritmu.

Byl odvozen autorem programu, protože jeho analogy nebyly nikde nalezeny. Jeho zvláštností je, že je nutné vzít v úvahu zakřivení zemského povrchu a vypočítat délku oblouku. To je obzvláště obtížné, pokud jsou body umístěny ve stejné zeměpisné šířce a délce.

Koule je brána jako tvar zemského povrchu. To může vést k chybám, protože tvar země je ve skutečnosti elipsoid, ale značně to zjednodušuje výpočty. Průměrný poloměr Země je 6371 km. To dává chybu asi 0,3 %.

Je třeba také poznamenat, že pro výpočet vzdálenosti, zejména v nejsložitějším případě, se používá několik po sobě jdoucích výpočtů, v důsledku čehož se chyba hromadí. Velikost chyby je ovlivněna také převodem stupňové míry úhlu na radiány a naopak. Ale s moderní přesností počítačových výpočtů bude tato chyba malá a kromě toho úkol nenaznačoval, že by odhad trasy měl být přesný.

Vytvoření tabulky

Zde je třeba říci, že jsem v žádné knize, kterou mám, nenašel algoritmus pro vytvoření tabulky programově. Veškerá literatura hovořila o vytváření tabulek v DatabaseDesktop, což by pro uživatele bylo nepohodlné instalovat ještě větší program jen kvůli řešení problému s vytvářením nových tabulek.

Ale přesto byl tento algoritmus nalezen v nápovědě Builderu, i když tam obsahoval chyby.

Program také představuje jeho funkční příklad (viz Příloha A, TBNewFileClick).

Jako vlastnost tohoto algoritmu je třeba poznamenat, že před voláním procedury vytvoření tabulky CreateTable() musíte inicializovat všechna pole s uvedením jejich názvu, typu, délky (je-li požadováno) a požadované hodnoty (zda je požadována). nebo ne). Po inicializaci polí deklarujeme klíčové pole a teprve poté zavoláme proceduru vytvoření tabulky. Poté musíte novou tabulku svázat s komponentou Tabulka, abyste s ní mohli pracovat pomocí mřížky a navigátoru. Název souboru nové tabulky je požadován pomocí SaveDialog.

Problém s velikostí grafiky

Při vývoji programu vznikl poměrně závažný problém s kreslením obrázku - při změně velikosti formuláře se měla změnit velikost obrázku, ale nestalo se tak.

Důvodem bylo, že se stále měnila velikost komponenty Image, ale velikost obrázku zůstala stejná. V tomto ohledu byla vytvořena procedura ResizeForm (viz Příloha A), která reagovala na změny velikosti formuláře a měnila velikost obrázku v souladu se změněnou velikostí komponenty Image.

5.6 Testování

Během celého návrhu programu byl testován a laděn. Zvláštní pozornost byla věnována dvěma bodům – správnosti práce s tabulkami a správnosti zakreslení plánu.

Při práci s tabulkami bylo prvním krokem vysledování případných problémů spojených s otevíráním, vytvářením tabulek a kreslením. Pokud například nedeaktivujete tlačítka kreslení, kliknutí na ně, když není tabulka otevřená, může vést k chybě. Pro odstranění této chyby, pokud není otevřená tabulka, jsou tlačítka deaktivována.

Další důležitou chybou, která byla opravena, je problém s velikostí grafiky (viz výše).

Dále bylo nutné zajistit, aby při deaktivaci/povolení checkboxů a změně velikosti formuláře nedošlo k vykreslení obrázku, pokud uživatel ještě neklikl na tlačítko „kreslit“. Toto sledování v programu se provádí pomocí příznaku kreslení, který se nastaví, když uživatel klikne na tlačítko kreslení, a zruší se, když klepne na tlačítko vymazat. Během testovacího procesu byly monitorovány a laděny všechny situace, ve kterých bylo nutné zkontrolovat tento příznak.

Nejdůležitějším aspektem testování byla kontrola funkčnosti programu na počítači, který nemá nainstalovaný Builder. To pomohlo určit následující:

1) při kompilaci programu musíte zahrnout všechny použité knihovny. Toho je dosaženo vypnutím dvou možností v nastavení kompilátoru. Současně se zvětší spustitelný kód programu, ale může fungovat i na stroji bez Builderu.

2) program vyžaduje Borland Database Engine. Pokud ji nemáte v počítači, musíte ji nainstalovat.


6. POPIS PROGRAMU

Program je určen k poskytování informační podpory pro tvorbu plánu lokality. Umožňuje ukládat data o bodech plánu do tabulky, zobrazovat je graficky, vytvářet novou tabulku, přidávat a mazat typy objektů, počítat vzdálenosti a odhadovat délku trasy, kreslit více tras, ukládat výsledky do souboru popř. tisk.

Program byl vytvořen pro operační systém Windows a má standardizované a uživatelsky přívětivé rozhraní. Spolu s ním přichází i příklad v podobě tabulky s trasami vlaků.


7. NÁVOD K INSTALACI

Pro instalaci programu musí být splněny následující požadavky: procesor 233 MHz nebo vyšší, RAM 16 MB, OS Windows98 nebo vyšší.

Chcete-li nainstalovat program, musíte provést následující:

1) Vytvořte novou složku pro program.

2) Z média, na kterém je archiv programu umístěn (disketa nebo disk), jej zkopírujte do této složky.

3) Rozbalte archiv do této složky.

4) Ujistěte se, že soubory objects.db a rasst.db jsou ve stejné složce jako program.

5) Ujistěte se, že atribut "Pouze pro čtení" je pro tyto soubory vymazán. Pokud ne, odstraňte jej.

6) Rozbalte archiv s knihovnami do složky Windows.

7) Nyní můžete program spustit a používat.


8. UŽIVATELSKÁ PŘÍRUČKA 8.1 Hlavní nabídka Nabídka "Soubor".

Abyste mohli začít pracovat v programu, musíte otevřít soubor s tabulkou nebo vytvořit nový. To lze provést pomocí položek nabídky Soubor, Otevřít a Nový.

"Otevřít" - otevření existující tabulky. Vyvolá dialog, ve kterém musí uživatel vybrat soubor s příponou .db.

"Nový" - vytvoření nové tabulky. Je vyvolán dialog, ve kterém uživatel zadá název nové tabulky.

"Tisk" - v závislosti na otevřené kartě vytiskne obrázek nebo tabulku. Po výběru této položky se otevře dialogové okno nastavení tisku, po kliknutí na tlačítko "OK" se úloha odešle k tisku.

Nabídka tabulky

"Plán sestavení" - pokud je tabulka otevřená, aktivuje záložku "Plán" a nakreslí plán.

"Přidat typ objektu" - vyvolá formulář pro přidání typu objektu.

"Smazat typ objektu" - vyvolá formulář pro smazání typu objektu.

Nabídka nápovědy

"O programu" - zobrazuje název programu a informace o autorovi.


8.2 Panel rychlých tlačítek

Akce těchto tlačítek jsou podobné položkám se stejným názvem v nabídce "Soubor".

- "Nový" - vytvoření nové tabulky.

- "Otevřít" - otevřete existující tabulku.

- "Tisk" - tisk obrázku nebo tabulky.

8.3 Tabulka tab

Mřížka tabulky – tabulka se do ní načte. Pomocí této mřížky může uživatel upravovat a prohlížet položky tabulky.

Navigátor – umístěný pod mřížkou umožňuje upravovat a prohlížet tabulku.

Navigační tlačítka

- "První záznam" - přesune se na první záznam v tabulce.

- "Předchozí záznam" - přesun na předchozí záznam v tabulce.

- "Další záznam" - přesun na další záznam v tabulce.

- "Poslední záznam" - přesun na poslední záznam v tabulce.

- „Přidat záznam“ - tabulka se přepne do editačního režimu, před aktivní záznam se vloží nový prázdný záznam.

- “Smazat záznam” - smaže aktuální záznam po předchozí žádosti o potvrzení.

- "Upravit" - upravit aktuální záznam.

- "Zrušit změny" - zruší změny aktuálního záznamu a vrátí jeho předchozí hodnotu.

- "Aktualizace". Aktualizuje tabulku v mřížce.

Pod navigátorem se nachází Seznam objektů a tlačítka pro mazání a přidávání objektů.

Seznam objektů – obsahuje seznam typů objektů. Když vyberete typ ze seznamu, zapíše se do aktuálního záznamu v tabulce.

Přidat typ objektu – vyvolá formulář přidání typu. Když jej přidáte, okamžitě se přidá do seznamu.

Smazat typ objektu – vyvolá formulář pro smazání typu objektu.

Přidat formulář typu objektu

Obsahuje editační pole pro zadávání textu, do kterého se zadává název nového typu.

"Přidat" - přidá typ objektu do seznamu a tabulky bez zavření formuláře.

"Ok" - pokud objekt nebyl přidán, zapíše jej do seznamu a tabulky a zavře formulář.

"Zrušit" - zavře formuláře bez přidání.

Smazat formulář typu objektu

Seznam objektů - z něj uživatel vybere, který objekt potřebuje smazat.

"Smazat" - odstraní vybraný typ objektu z tabulky a seznamu.

"Smazat vše" - zcela vymaže tabulku objektů a seznamy.

"OK" - zavře formulář.


8.4 Záložka "Plán".

Výkresové pole je oblast, kde je zobrazen výkres plánu.

Posuvníky – zobrazí se, když obrázek zvětšíte kliknutím na tlačítko „Zvětšit“. Umožňuje posouvat zvětšený obrázek.

Tabulka vzdáleností – zobrazuje pro každou trasu její počet a délku úseků v kilometrech. Tabulka je viditelná, pokud není zaškrtávací políčko "Skrýt tabulku vzdáleností" zrušeno.

"Vymazat mapu" - vymaže pole obrázku.

„Nakreslit“ - nakreslí plán.

"Barva pozadí" - umožňuje vybrat barvu pozadí obrázku. Po klepnutí na toto tlačítko se zobrazí dialogové okno pro výběr barvy.

"+ Enlarge" - zvětší obrázek na plánu.

"- Oddálit" - zmenší obrázek na plánu. Toto tlačítko se aktivuje, když stisknete tlačítko pro zvýšení.

"Výchozí" - nastaví počáteční velikost obrázku.

„Nakreslit čáry trasy“ - pokud je zaškrtnuto, budou na plánu vykresleny trasy, pokud ne, budou vyznačeny pouze body.

„Zobrazit vzdálenosti na mapě“ - pokud je zaškrtnuto políčko, vedle každého bodu trasy se zobrazí vzdálenost ve formě součtu délek úseků předcházejících tomuto bodu. „0“ je umístěno poblíž prvního bodu trasy.

„Zobrazit typ objektu na mapě“ – pokud je zaškrtnuto políčko, zobrazí se u každého bodu typ objektu.

"Skrýt tabulku vzdáleností" - pokud je zaškrtnuto políčko, tabulka vzdáleností je neviditelná. Pokud není zaškrtnuto, tabulka se zobrazí napravo od pole výkresu.

Všechna zaškrtávací políčka jsou ve výchozím nastavení zaškrtnutá.


9. TESTOVACÍ PŘÍPAD

Jako testovací příklad znázorníme trasy několika vlaků Gorkého železnice.

Jedeme těmito vlaky:

N 497G Gorky-Mosk - Adler

N 471G Gorkij-Mosk - Novorossijsk

N 431G Gorkij-Mosk - Adler

N 367G Gorkij-Mosk - Samara

N 059A Gorkij-Mosk - Petrohrad-Glavn

N 039G Gorkij-Mosk - Moskva Kursk

Zapišme do tabulky souřadnice největších obydlených oblastí jako body na každé trase. Jako objekty použijeme názvy měst.

Rýže. 9.1. Celkový pohled na program na záložce "Tabulka", zadání názvu objektu do záznamu pomocí seznamu.


Dříve jsme přidali stanici Red Knot do tabulky objektů, ale protože ji nepotřebujeme, odstraníme ji.

Rýže. 9.2. Odstraňte typ objektu.

Při vytáčení trasy vlaku 431 potřebujeme Vladimíra. Protože není na seznamu, musíte jej přidat.

Rýže. 9.3. Přidání typu objektu.


Takže jsme shromáždili všechny trasy, které jsme chtěli. Ve výsledku jsme skončili s takovým stolem.

Rýže. 9.4. Stůl

Nyní pomocí našeho tabletu vytvoříme plán.

Rýže. 9.5. Obrázek plánu se všemi nápisy.


Ve výchozím nastavení zobrazujeme čáry, vzdálenosti a názvy měst.

Uvidíme, jak budou vypadat trasy bez podpisů.

Rýže. 9.6. Obrázek plánu bez všech nápisů.

Nyní se podívejme na vzdálenosti.

Rýže. 9.7. Obrázek plánu pouze se vzdálenostmi.


Ve skutečnosti nebyly spočítány příliš přesně, ale je to proto, že jsme nebrali v úvahu všechny body těchto tras a také souřadnice nebyly úplně správné - byly určeny z mapy „okem“.

Nyní se podívejme na náš plán pouze s názvy měst.

Rýže. 9.8. Obrázek plánu zobrazující pouze typy objektů.

Rýže. 9.9. Obrázek plánu ve formě teček se všemi podpisy.


Můžete také vidět tabulku vzdáleností.

Rýže. 9.11. Celkový pohled na program na záložce "Plán" s viditelnou tabulkou vzdáleností.


ZÁVĚR

Úkol kladený v zadání bakalářské práce byl úspěšně splněn. Vyvinutý program plně splňuje počáteční podmínky popsané v problémovém prohlášení. Program implementoval zejména práci s tabulkami, grafikou a soubory.

Práce uživatele programu se provádí pomocí jednoduchého rozhraní vytvořeného podle standardů programového rozhraní Windows.

Mezi další vylepšení a rozšíření možností tohoto projektu patří přidání výpočtu nejkratší trasy, kreslení ikon objektů, obrázky reliéfu a možnost načíst obrázek mapy jako pozadí.


BIBLIOGRAFIE

1. P. Gustafson, M. Cashman, B. Swart, J. Holingworth. Borland C++ Builder 6. Příručka pro vývojáře. – Williams, 2004.

2. A. Archangelskij. Programování v C++ Builder 6. – Binom, 2002.

3. T.A. Pavlovská. C/C++. Programování v jazyce vysoké úrovně. – Petr, 2001.


PŘÍLOHA PŘÍLOHA E. Mapové projekce a mřížkové mapy

Není možné rozvinout kulovou plochu na rovině bez zlomů a záhybů, to znamená, že její půdorysný obraz v rovině nelze znázornit bez zkreslení, s úplnou geometrickou podobností všech jejích obrysů. Úplné podobnosti obrysů ostrovů, kontinentů a různých objektů promítaných na rovnou plochu lze dosáhnout pouze na kouli (zeměkouli). Obraz zemského povrchu na kouli (zeměkouli) je stejný v měřítku, stejný v úhlu a stejný ve velikosti.

Je nemožné současně a úplně zachovat tyto geometrické vlastnosti na mapě. Zeměpisná mřížka zkonstruovaná na rovině, zobrazující poledníky a rovnoběžky, bude mít určitá zkreslení, takže obrazy všech objektů na zemském povrchu budou zkreslené. Povaha a rozsah zkreslení závisí na způsobu konstrukce kartografické sítě, na jejímž základě je mapa sestavena.

Zobrazení povrchu elipsoidu nebo koule v rovině se nazývá mapová projekce. Existují různé typy mapových projekcí. Každý z nich odpovídá specifické kartografické síti a jejím přirozeným deformacím. V jednom typu projekce jsou rozměry ploch zkreslené, v jiném - úhly, ve třetím - plochy a úhly. Přitom ve všech projekcích bez výjimky dochází ke zkreslení délek čar.

Kartografické projekce jsou klasifikovány podle charakteru zkreslení, typu zobrazení poledníků a rovnoběžek (geografická síť) a některých dalších charakteristik. Podle charakteru zkreslení se rozlišují následující mapové projekce:

Rovnoúhlé, zachovávající rovnost úhlů mezi směry na mapě a v přírodě. Obrázek E.1 ukazuje mapu světa, na které si kartografická síť zachovává vlastnost ekviúhlosti. Mapa si zachovává podobnost rohů, ale velikosti oblastí jsou zkreslené. Například oblasti Grónska a Afriky na mapě jsou téměř stejné, ale ve skutečnosti je oblast Afriky asi 15krát větší než plocha Grónska.

Obr.E.1 Mapa světa v konformní projekci.

Stejné velikosti, zachování proporcionality oblastí na mapě k odpovídajícím oblastem na zemském elipsoidu. Obrázek E.2 ukazuje mapu světa nakreslenou v projekci stejné plochy. Zachovává proporcionalitu všech oblastí, ale podobnost obrazců je zkreslená, to znamená, že neexistuje rovnostrannost. Vzájemná kolmost poledníků a rovnoběžek na takové mapě je zachována pouze podél středního poledníku.

Ekvidistantní, udržuje konstantní měřítko v libovolném směru;

Libovolné, nezachovává ani rovnost úhlů, proporcionalitu ploch ani stálost měřítka. Smyslem použití libovolných projekcí je rovnoměrnější rozložení zkreslení na mapě a pohodlí při řešení některých praktických problémů.


Rýže. E. 2 Mapa světa v projekci stejné plochy.

Sítě poledníků a rovnoběžek mapové projekce se podle typu obrazu dělí na kuželové, válcové, azimutální atd. Navíc v každé z těchto skupin mohou existovat projekce různého charakteru zkreslení (konformní, rovnoplošné , atd.). Geometrická podstata kuželových a válcových projekcí spočívá v tom, že na boční plochu kužele nebo válce se promítá mřížka poledníků a rovnoběžek s následným rozložením těchto ploch do roviny. Geometrická podstata azimutálních projekcí spočívá v tom, že mřížka poledníků a rovnoběžek se promítá na rovinu tečnou ke kouli na jednom z pólů nebo sečnu podél nějaké rovnoběžky. Kartografická projekce, která je nejvhodnější z hlediska charakteru, velikosti a rozložení zkreslení pro konkrétní mapu, se volí v závislosti na účelu, obsahu mapy a také velikosti, konfiguraci a geografické poloze mapovaného území. Díky kartografické mřížce všechna zkreslení, ať už jsou jakkoli velká, sama o sobě neovlivňují přesnost určení zeměpisné polohy (souřadnic) objektů zobrazených na mapě na mapě. Kartografická síť, která je grafickým vyjádřením projekce, zároveň umožňuje zohlednit povahu, velikost a rozložení zkreslení při měření na mapě. Každá zeměpisná mapa je tedy matematicky určeným obrazem zemského povrchu.

Osobní vedlejší pozemky Aginského Burjatského autonomního okruhu na roky 2005 - 2010,“ který byl připraven v pracovní verzi. 4. Hlavní směry pro zlepšení činnosti vládních orgánů při podpoře osobních pobočných pozemků venkovského obyvatelstva v autonomním okruhu Aginsky Burjat 4.1 Problémy a priority rozvoje pozemků osobních poboček v oblasti Aginsky...

Studium rodin vedlo k rozvoji psychologických, pedagogických a sociologických metod, které prohlubují a rozšiřují představy o moderní rodině. KAPITOLA 3. SOCIÁLNÍ PROBLÉMY A VYHLÍDKY SOCIÁLNÍ PRÁCE S MLADÝMI RODINAMI V OBCI VORONOVKA 3.1 Obecná charakteristika Str. Voronovka, okres Shegarsky, region Tomsk, okres Shegarsky se nachází v jižní části města Tomsk...




Zajištění a podpora pro děti; - v současné době byl v Rusku vyvinut a zaveden mechanismus pro financování cílených programů na podporu mateřství a dětství. 2. Finanční mechanismus realizace státní politiky na podporu mateřství a dětství 2.1 Postup a podmínky vyplácení sociálních dávek K dnešnímu dni má Rusko rozvinutý poměrně rozvinutý systém dávek, ...