You are on page 1of 50

Gytis Petruškevičius

TINKLO ĮRENGINIŲ PASIEKIAMUMO PAGAL VARDĄ TESTAVIMO


ĮRANKIS
TOOL FOR MANAGING AND MONITORING NETWORK DEVICES

Profesinės praktikos ataskaita

Informatikos inžinerijos studijų kryptis

Vilnius, 2020
e
TURINY

1. Įvadas. 9
1.1. Užduoties analizė......................................................................................................................9
1.2. Tikslas ir uždaviniai..................................................................................................................9
2. Analogų apžvalga 10
3. Programos kūrimo procesas 14
3.1. Funkciniai reikalavimai...........................................................................................................14
3.2. Nefunkciniai reikalavimai.......................................................................................................15
3.3. Panaudos atvejų diagrama ir scenarijai...................................................................................17
3.4. Veiklos diagramos...................................................................................................................25
3.4.1. Kalbos keitimo veiklos diagrama.................................................................................25
3.4.2. Kompiuterių vardų pateikimas juos įrašant ranka........................................................26
3.4.3. Kompiuterių vardus talpinančio tekstinio failo pasirinkimas.......................................27
3.4.4. Testavimo eiga su pateiktais duomenimis....................................................................28
3.4.5. Rezultatų suvestinė ir jos saugojimas...........................................................................29
3.5. Trumpas skyriaus apibendrinimas...........................................................................................30
4. Užduoties įgyvendinimas 31
4.1. Panaudotos bibliotekos............................................................................................................31
4.2. Programinis funkcijų išpildymas.............................................................................................33
4.2.1. Duomenų pasirinkimas ir panaudojimas.......................................................................33
4.2.2. WMI funkcionalumo panaudojimas.............................................................................34
4.2.3. IP adreso gavimas.........................................................................................................35
4.2.4. Kompiuterio vardo paruošimas be prierašų..................................................................36
4.2.5. Rankini reikšmių įvedimas...........................................................................................37
4.2.6. Csv failų generavimas...................................................................................................38
4.2.7. Rezultatų suvestinės forma...........................................................................................41
4.2.8. Rezultatų suvestinės formos išsaugojimas....................................................................41
4.2.9. Duomenų konflikto išvengimas....................................................................................42
4.2.10. Formos uždarymas, įspėjimų kontrolė..................................................................42
4.3. Trumpas skyriaus apibendrinimas...........................................................................................43
5. Programos veikimo patirinimas 44
6. Rezultatų apibendrinimas 53
Literatūros ir informacinių šaltinių sąrašas 54

Paveikslų turinys

1 pav. Solarwinds WMI Monitor programa..................................................................................10


2 pav. Solarwinds WMI Monitor programa..................................................................................11
3 pav. WMIE 2.0 programos langas..............................................................................................12
4 pav. WMIE 2.0 užklausų langas.................................................................................................12
5 pav. PowerShell WMI užklausų vykdymas................................................................................13
6 pav. Panaudos atvejų diagrama..................................................................................................17
7 pav. Kalbos keitimo veiklos diagrama.......................................................................................25
8pav. Rankinis kompiuterių vardų įvedimas.................................................................................26
9 pav. Failo, su kompiuterių vardais, pasirinkimas iš failų katalogo............................................27
10pav. Algoritmo atliekamas testavimas.......................................................................................28
11pav. Rezultatų suvestinė ir jos saugojimas................................................................................29
12 pav. Bibliotekos........................................................................................................................31

[ESK-14-5.0LT] 7
e
13 pav. Failo pasirinkimo dialogo lango apsirašymas...................................................................33
14pav. Duomenų įtraukimas į simbolių masyvą...........................................................................33
15pav. Pagrindinis "try" blokas.....................................................................................................34
16pav. Pagrindinis "catch" blokas.................................................................................................35
17pav. IP adreso gavimas..............................................................................................................36
18pav. Vardų palyginimo metu atskiriamas domeno pavadinimas...............................................36
19pav. Rankinės reikšmių įvedimo funkcijos kodo fragmentas....................................................38
20pav. Stulpelių pavadinimų deklaravimas...................................................................................39
21pav. Ruošinys, kai kompiuteris atsako į savo vardą..................................................................39
22pav. Kai vardai nesutampa.........................................................................................................39
23pav. Kuomet nepavyksta gauti DNS vardo pagal IP adresą......................................................40
24pav. Kuomet nėra jokio atsako..................................................................................................40
25 pav. Rezultatų lentelės pildymas duomenimis.........................................................................41
26 pav. keliamės į "Home" klasėje esančią funkcją.....................................................................42
27 pav. Išvestinės saugojimas pasirinktoje lokacijoje...................................................................42
28 pav. Globalių kintamųjų nustatymas į nulinę reikšmę.............................................................42
29 pav. Formos išjungimas, iššokančių langų pranešimai.............................................................43
30 pav. Pagrindinis langas.............................................................................................................44
31 pav. Rankinio, kompiuterių vardų, įvedimo funkcija...............................................................45
32 pav. Aktyvuojamas testavimo pradžios mygtukas...................................................................45
33 pav. Rezultatų suvestinė...........................................................................................................46
34 pav. Pasirinkus lokaciją, failas išsaugomas, nuspaudus "OK" mygtuką.................................46
35 pav. Įspėjimo langas prieš išsaugant.........................................................................................47
36 pav. Įspėjimo langas po rezultatų išsaugojimo.........................................................................47
37 pav. Namų ekranas lietuvių kalba.............................................................................................48
38 pav. Failo pasirinkimo vaizdas lietuvių kalba..........................................................................48
39 pav. Testavimas su kompiuterių sąrašu....................................................................................49
40 pav. Failo pasirinkimas.............................................................................................................49
41 Pav. Failo pasirinkimas 2..........................................................................................................50
42 pav. Vyksta testavimas su įkeltu sąrašu....................................................................................50
43 pav. Suvestinė, po testavimo įkeliant dokumentą.....................................................................51
44 pav. Ataskaitos vaizdas, žiūrint per Microsoft Excel...............................................................52

Lentelių turinys

1 lentelė. Tekstinio failo įkėlimas..................................................................................................18


2 lentelė. Kompiuterių vardų įvedimas rankiniu būdu..................................................................19
3 lentelė. Kalbos keitimas..............................................................................................................20
4 lentelė. Rezultatų suvestinės peržiūra.........................................................................................21
5 lentelė. Rezultatų rikiavimas......................................................................................................22
6 lentelė. Rezultatų suvestinės saugojimas....................................................................................23
7 lentelė. Rezultatų peržiūra palikus rezultatų peržiūros langą.....................................................24

8
1. ĮVADAS.

1.1. Užduoties analizė

Šio darbo tikslas yra sukurti įrankį, kurio pagalba būtų galima, turimą kompiuterių sąrašą,
patikrinti ir sužinoti kiek kompiuterių atsako per WMI užklausą į savo vardą ir kiek jų
neatsako. Neatsakiusių kompiuterių PING‘inimas gaunant jų IP adresą ir pagal adresą sužinoti,
kokį kompiuterio vardą gražina DNS serveris. Taip pat su programa galima matyti visai
neatsakančius įrenginius.
Tema aktuali, nes įmonėje, kurioje yra per 400 skirtingų įrenginių, vyksta daug senos
įrangos pakeitimo darbų, tačiau visi jie nėra utilizuojami ir vėliau yra vėl pajungiami į vidinį
tinką. Dalis įrenginių yra pervadinami, arba senų kompiuterių vardai perleidžiami naujiems,
todėl tokį didelį kiekį kompiuterių yra sunku peržiūrėti, kad visi turėtų teisingus vardus.
Pasitaikius neatitikimams į kompiuterius negalima įdiegti „silent update“ ar atlikti kitų
diagnostinių procesų.
Iki šiol naudojamas ne itin patogus „Power Shell“ metodas, kurio pagalba yra įklijuojamas
kodas ir gaunami minėti duomenys.
Tikslui pasiekti naudosiu c# programavimo kalbą ir Microsoft Visual Studio pasitelkiant
„Microsoft Windows Management Infrastructure“.
Programa turės grafinę vartotojo sąsają, bus galimybė įkelti sąrašą iš kompiuteryje
pasirinkto katalogo, taip pat įvesti pavienius, galimai klaidingus DNS įrašus turinčius
kompiuterių vardus. Testavimo rezultatai bus atvaizduojami tiek programoje, tiek
eksportuojami į Excel failą.

1.2. Tikslas ir uždaviniai

Tam, kad šis tikslas būtų realizuotas buvo iškelti šie uždaviniai:

1. Išanalizuoti kokie reikalavimai yra keliami šiam įrankiui;


2. Tariantis su užsakovais suderinti kokie programos tobulinimo darbai turi būti atlikti iki
tam tikro nutarto termino;
3. Bendradarbiaujant su užsakovais susidėlioti visus funkcinius bei nefunkcinius sistemos
reikalavimus;
4. Sukurti įrankį atitinkantį lūkesčius.
2. ANALOGŲ APŽVALGA

Sukurtą įrankį palyginau su trimis, panašias funkcijas atliekančiomis, programomis.


Programa lyginau su nemokamai persisiųsti galimomis programos "Solarwinds Free WMI
Monitor", "WMI Explorer 2.0" ir " Powershell".
Solarwinds Free WMI Monitor yra nemokamas įrankis skirtas stebėti bet kokią Windows
vykdomą užduotį ar operaciją ar serverį ir leidžiantis stebėti atliekamų procesų veikimą realiu
laiku.

1 pav. Solarwinds WMI Monitor programa


2 pav. Solarwinds WMI Monitor programa

Ši programa pasižymi daug didesniu funkcionalumu nei mano kurtas įrankis kuris yra
orientuotas tik į vieną užduotį. Ši programa apima labai plataus spektro įrenginių bei programų
stebėjimą, ko mano programa pasiūlyti deja kol kas negali. Atsivėręs šią programą tikrai ne
kiekvienas naudotojas žinos kaip teisingai programą nustatyti, kad būtų gaunami reikiami
rezultatai, kadangi didelis funkcijų kiekis gali kartu įnešti šiokį tokį chaosą.
Mano kurtas įrankis yra labai paprastas, bet kadangi yra orientuotas pagrindinės užduoties
atlikimui ir būtent tai ir daro, nei daugiau, nei mažiau. Mano kurtas produktas nereikalauja
instaliacijos proceso ir užima labai nedaug vietos diske.

Kitas įrankis papuolęs į mano akiratį, yra taip pat nemokamas- WMI Explorer 2.0. Pirmas
įspūdis paleidus šią programą yra daugybė langų, kas simbolizuoja ne tik funkcijų įvairovę bet
ir nemažą slenkstį kurį teks peržengti norint nepasimesti langų gausoj ir išsiakinti kaip
pagrindinius programos panaudojimo atvejus.
3 pav. WMIE 2.0 programos langas

4 pav. WMIE 2.0 užklausų langas

Pirmas dalykas kurį išskirčiau, būtų labai aiškus SQL užklausų rašymo interfeisas. Galima
manyti, kad idėja yra šiek tiek skolintasi iš kito, duomenų bazių užklausoms vykdyti skirto
"SQL Server Management Studio" įrankio. Yra galimybė sukurtą SQL skriptą formatuoti
paspaudus tam skirta mygtuką apačioje. Ši ir prieš tai aptarta programa taip pat turi galimybę
jungtis prie serverio nuotoliniu būdų, kas taip pat yra svarus pranašumas jeigu lygintume su
mano kurta programa. Ši programa taip pat gali vykdyti "gilesnes" WMI užklausas bei geba
generuoti skriptus kitoms užklausas atliekančioms programos kaip kad PowerShell ar VBS,
tačiau tam reikalinga naujesnė PowerShell v2, tai galima priskirti ir prie šios programos
trūkumų. Programa yra patogi tuo, jog ji, kaip ir mano sukurta programa nereikalauja jokio
instaliacijos proceso, tai yra tiesiog paleidžia vos atsisiuntus. Norint atlikti tą pačią užduotį kuri
atliekama mano programos, tam yra reikalingas skriptas kurį teks parašyti patiems, bet tai kartu
atveria ir daugiau galimybių.
Trečioji programa dažniausiai randama visuose Windows kompiuteriuose. Tai PowerShell.
Kaip ir prieš tai aptarta programa, ši yra skirta vykdyti operacija aprašytas skripte, ką mano
kolegos darydavo iki šiol norint atlikti kompiuterių sąrašo testavimą. Tai yra labai universalus
įrankis, o internete yra gausybė forumų kuriuose yra dalinamasi patarimais ir pamokomis kaip
pasiekti tam tikrą funkcionalumą. Tai ko gero vienas universaliausių įrankių skirtas užklausų
kūrimui, tačiau šis įrankis neturi grafinės vartotojo sąsajos ir atliks tik tas užduotis kurios bus
aprašytos, taigi jeigu įrankis, tam tikrai užduočiai atlikti, bus naudojamas daugiau nei vieną
kartą, skriptą reikia saugoti diske, kad vėliau jį būtų galima vėl paleisti.

5 pav. PowerShell WMI užklausų vykdymas

Taigi, viską apibendrinant galima teigti jog, mano kurtoje programoje tikrai yra daug vietos
funkcionalumo vystymui. Tačiau verta pabrėžti, kad programa buvo orientuota tik į vieną
pagrindinę funkciją, kuri ją ir atlieka, o tobulėti visada yra į kur.
Pagrindinėmis kitų programų stiprybėmis galėčiau laikyti gebėjimą jungtis prie serverio
nuotoliniu būdų, SQL užklausų vykdymo galimybes, programų palaikymą, dideles
bendruomenes kurios randa vis naujų įrankių panaudojimo būdų ir galimybę atlikti didelę dalį
tinklo diagnostikos užduočių
3. PROGRAMOS KŪRIMO PROCESAS

3.1. Funkciniai reikalavimai

Pirma reikia nurodyti funkcinius reikalavimus t.y. kokiomis funkcijomis sistema pasižymės.
Toliau nurodomi funkciniai reikalavimai yra pagrindiniai arba būtinieji, be kurių sistema
negalėtų funkcionuoti ir būtų neišbaigta. Toliau pateikiamas funkcinių reikalavimų sąrašas:
1. Atsivėrus programą
• Pradiniai duomenys: darbuotojas pagrindiniame lange turi matyti du pagrindinius
mygtukus leisiančius sistemai pateikti duomenis tiek rankiniu būdu, tiek naršant failų katalogą.
Taip pat pagalbinį mygtuką kalbos keitimui.
• Veiksmai ir rezultatas: darbuotojas mato esančius variantus, esant reikalui kalbą galima
keisti tarp anglų ir lietuvių. Kadangi kompanija yra tarptautinė, anglų kalba yra nustatyta kaip
numatytoji.

2. Norint pradėti testavimą duomenis pateikiant juos įvedant klaviatūra arba įklijuojant iš
šaltinio
• Informacijos perdavimas: prieš suvedant kompiuterių vardus, darbuotojas pirmiausia turi
pasirinkti mygtuką „Manual Entry “ reiškiantį rankinį įvedimą. Atsivėrusiame lauke
vedami/įklijuojami kompiuterių vardai atskirti kableliais. Darbuotojas pradėti testavimą gali tik
tuomet kai laukas vardų įvedimui nėra tuščias.
• Veiksmai ir rezultatas: darbuotojas laukia kol vyksta užklausos, o joms pasibaigus,
naujame lange, yra atveriama suvestinė, kurioje yra galimas rikiavimas pagal 4 kriterijus.
• Formos uždarymas: darbuotojas paspaudęs formos uždarymo mygtuku dešiniajame
formos viršaus kampe, yra informuojamas jeigu formos suvestinė nebuvo išsaugota įrenginyje,
perspėjama, kad duomenys nebus išsaugoti. Ją išsaugojus eksportuojant į įrenginy, klausimas
nepasikartoja ir yra klausiama ar tikrai norima išjungti formą.

3. Norint pradėti testavimą, duomenis pateikiant, pasirenkant failą iš failų katalogo


• Informacijos perdavimas: prieš pasirenkant tekstinį dokumentą su kompiuterių vardais,
darbuotojas pirmiausia turi pasirinkti mygtuką „Select File“ reiškiantį pasirinkti failą.
Atsivėrusiame lange spaudžiant mygtuką „Browse and start“ reiškiantį pasirinkti ir pradėti, yra
atveriama failų katalogo naršyklė. Naršant surandamas failas ir spaudžiama „Open“ . Programa
pradeda testavimą automatiškai.
• Veiksmai ir rezultatas: darbuotojas laukia kol vyksta užklausos, o joms pasibaigus,
naujame lange, yra atveriama suvestinė, kurioje yra galimas rikiavimas pagal 4 kriterijus.
• Formos uždarymas: darbuotojas paspaudęs formos uždarymo mygtuku dešiniajame
formos viršaus kampe, yra informuojamas jeigu formos suvestinė nebuvo išsaugota įrenginyje,
perspėjama, kad duomenys nebus išsaugoti. Ją išsaugojus eksportuojant į įrenginy, klausimas
nepasikartoja ir yra klausiama ar tikrai norima išjungti formą.
• Pradiniai duomenys: darbuotojas priimantis užsakymą turi atsiversti maisto meniu, kuris
yra prie kiekvieno staliuko. Duotame meniu yra visi pasirinkimai, norint įvesti vieną ar kitą
pasirinkimą darbuotojas prie norimo maisto ar gėrimo spaudžia žalią pliuso mygtuką. Taip pat,
galima įterpti komentarą ar pastabą jeigu yra kažkokių specialių pageidavimų.
• Veiksmai ir rezultatas: darbuotojas paspaudęs pridėjimo mygtuką prideda kliento
pasirinktą patiekalą ar gėrimą prie to staliuko užsakymo.

4. Pradėti sekantį testavimą


• Pradiniai duomenys: darbuotojas palikęs rezultatų suvestinę, gali grįžti atgal ir pateikti
naują/naujus testuojamų kompiuterių vardus. Esant reikalui, galima grįžti į pradinį langą ir
rinktis kitą informacijos įvedimo metodą.

5. Programos instaliavimas ir valdymas


• Programos instaliavimas: Programa neturi instaliavimo proceso ir yra paleidžia ant visų
Windows mašinų programa paspaudžiant du kartus.
• Valdymas: Kiekvienai funkcijai yra atitinkamas mygtukas su nurodyta veiksmo reikšme,
o iš bet kurio lango galima grįžti į praeitą/pradinį langą.

3.2. Nefunkciniai reikalavimai

Nefunkciniai reikalavimai, tai reikalavimai, kurie nusako, kaip sistema turės veikti. Toliau
pateikiamas nefunkcinių reikalavimų sąrašas:

1. Programa turi gebėti nuskaityti visus tekstiniame dokumente surašytus kompiuterių


vardus, ir juos sutalpinant į masyvą.
2. Programa turi gebėti nuskaityti visus rankiniu būdu įvestus simbolius iš tam skirto lauko.
3. Programa turi gebėti išfiltruoti tarpus tarp suvestų žodžių.
4. Programa turi gebėti sutalpinti nuskaitytą informaciją į masyvą.
5. Programa turi gebėti atskirti vienos reikšmės pradžią ir pabaigą orientuojantis pagal
kablelius.
6. Programa geba atlikti įrenginio paiešką tinkle, naudojanti Windows valdymo įrankio
(Windows Management Instrumentation) infrastruktūrą;
7. Programa geba įrenginio neaptikus vardu kuriuo ji buvo užklausta, gauti to įrenginio IP
adresą;
8. Programa geba gautą IP adresą panaudoti užklausiant, domeną aptarnaujantį vardų
serverį (angl. DNS-domain name server) gauti kompiuterio vardą, kuriam tas IP adresas
priklauso;
9. Programa geba gautą vardą iš ,domeną aptarnaujančio vardų, serverio (angl. DNS-
domain name server) paruošti užklausai atskiriant prierašus, kaip „.odin.local“.
10. Programa geba lyginti pirmą vardo dalį (be .odin.local) su užklaustu vardu;
11. Programa geba lyginti vardus nepaisant didžiųjų ir mažųjų raidžių;
12. Programa, atlikus testavimus, geba atverti rezultatų suvestinę, naujame lange;
13. Programa geba išsaugoti pateiktą suvestinę į naudotojo pasirinktą lokaciją
įrenginyje;
14. Programa geba perspėti naudotoją, jei suvestinės langas yra uždaromas o
duomenys nėra dar išsaugoti;
15. Programa geba pakeisti perspėjimo žinutę atsižvelgiant į pasirinktą kalbą ir ar
suvestinėje pateikti duomenys buvo išsaugoti ar ne.
3.3. Panaudos atvejų diagrama ir scenarijai

Panaudos atvejų diagramoje pateiktoje žemiau (pav. 1) yra pavaizduotos pagrindinės


sistemos funkcijos ir rolės, kurios gali atlikti šias funkcijas. Visi panaudos atvejai yra plačiau
aprašyti kartu su diagramomis kitame šio skyriaus poskyryje (žr. 1 pav.).

6 pav. Panaudos atvejų diagrama


Pirmasis panaudos atvejų scenarijus aprašo galimybę pasirinkti tekstinį dokumentą iš failų
katalogo lango (žr. 2 lentelė)

1 lentelė. Tekstinio failo įkėlimas

Pavadinimas Įkelti tekstinį dokumentą.

ID: UC01

Trumpas Naudotojui suteikiama galimybė įkelti tekstinį dokumentą talpinantį


kompiuterių sąrašą
aprašymas:
Naudotojas: Asmuo norintis atlikti testavimą su tam tikrais kompiuteriais
Prieš - sąlygos 1. Naudotojas turi naudoti kompiuterį, kuris prijungtas prie to
paties tinklo, kaip ir testuojami įrenginiai.

2. Naudotojas turi turėti šią, testavimui skirtą programą.


3. Naudotojas turi turėti iš anksto paruoštą kompiuterių sąrašą
reikalingą testavimui.
Pagrindinis 1. Naudotojas atidaro testavimui skirtą aplikaciją.

scenarijus 2. Naudotojas turi pasirinkti funkciją „Browse file“ reiškiančią


pasirikti failą.
3. Naudotojas turi paspausti „Browse and start“ mygtuką
inicijuojantį failų katalogo atvėrimą ir testavimo pradžią
4. Naudotojas iš atverto failų katalogo pasirenka reikiamą tekstinį
dokumentą ir spaudžia „Open“ mygtuką patvirtinti failo
pasirinkimui
Alternatyvūs 4. a Naudotojas nusprendžia, kad atlikti testavimo, pasirenkant tekstinį
dokumentą, nenori.
scenarijai: 4. b Naudotojas grįžta į namų langą su „grįžti“ mygtuku. Renkasi kitą
reikiamą funkciją
Antrasis panaudos atvejų scenarijus aprašo galimybę įvesti pavienius kompiuterių vardus,
neįkeliant viso sąrašo (žr. 3 lentelė)

2 lentelė. Kompiuterių vardų įvedimas rankiniu būdu

Pavadinimas Vardų įvedimas klaviatūra.

ID: UC02

Trumpas Naudotojui suteikiama galimybė įvesti pavienius kompiuterių vardus,


neįkeliant viso sąrašo.
aprašymas:
Naudotojas: Asmuo norintis atlikti testavimą su tam tikrais kompiuteriais .

Prieš - sąlygos 1. Naudotojas turi naudoti kompiuterį, kuris prijungtas prie to


paties tinklo, kaip ir testuojami įrenginiai.

2. Naudotojas turi turėti šią, testavimui skirtą programą.

3. Naudotojas iš anksto turi turėti kompiuterių vardus, kartu su po


taško sekančiu domeną aptarnaujančio serverio vardu

Pagrindinis 1. Naudotojas atidaro testavimui skirtą aplikaciją.

scenarijus 2. Naudotojas turi pasirinkti funkciją „Manual entry“ reiškiančią


rankinį kompiuterių vardų įvedimą.
3. Naudotojas turi suvesti kompiuterių vardus, kiekvieną jų
atskiriant kableliu, esant daugiau vardų nei vienam.
4. Naudotojas turi paspausti, po vardų įvedimo aktyvuota,
testavimo pradžią inicijuojantį „start“ mygtuką.
Alternatyvūs 3.a Naudotojas nusprendžia, kad testavimui bus naudojamas ne
rankinis vardų įvedimas, bet bus pasirenkamas failas iš failų katalogo.
scenarijai:
3. b Naudotojas grįžta į namų langą su „grįžti“ mygtuku. Renkasi kitą
reikiamą funkciją.
Trečiasis panaudos atvejų scenarijus aprašo galimybę keisti sistemos kalbą (žr. 4 lentelė)

3 lentelė. Kalbos keitimas.

Pavadinimas Įkelti tekstinį dokumentą.

ID: UC03

Trumpas Naudotojui suteikiama galimybė keisti sistemos kalbą.

aprašymas:
Naudotojas: Asmuo norintis atlikti kalbos pakeitimą programoje.

Prieš - sąlygos 1. Naudotojas turi turėti šią, testavimui skirtą programą.

Pagrindinis 1. Naudotojas atidaro testavimui skirtą aplikaciją.

scenarijus 2. Naudotojas spaudžia mygtuką su kalbą simbolizuojančiu užrašu


(Lt arba Eng, priklauso jau naudojamos kalbos sistemoje).
3. Kalba pasikeičia į tą kuri buvo sufleruojama kalbos keitimo
mygtuko. Kalbos keitimo mygtukas pakeičia reikšmę
atsižvelgiant į naudojamą kalbą. (Jeigu programa yra anglų
kalba, mygtukas rodys galimybę ją keisti į lietuvių su Lt
simboliu).
Alternatyvūs 2. a Naudotojas nenori keisti kalbos. Kalbos keitimo mygtukas nėra
spaudžiamas.
scenarijai:
2. b Naudotojas nori atkeisti kalbą į prieš tai buvusią. Spaudžiamas
kalbos keitimo mygtukas, grąžina prieš tai buvusią kalbą.
Ketvirtasis panaudos atvejų scenarijus aprašo galimybę peržiūrėti, po testavimo, gautus rezultatus
pateikiamus lentelėje (žr. 5 lentelė).

4 lentelė. Rezultatų suvestinės peržiūra.

Pavadinimas Rezultatų suvestinės peržiūra.

ID: UC04

Trumpas Naudotojui suteikiama galimybė po atlikto testavimo peržiūrėti gautus


rezultatus.
aprašymas:
Naudotojas: Asmuo norintis atlikus testavimą su tam tikrais kompiuteriais
peržiūrėti gautus rezultatus.

Prieš - sąlygos 1. Naudotojas turi naudoti kompiuterį, kuris prijungtas prie to paties
tinklo, kaip ir testuojami įrenginiai.

2. Naudotojas turi turėti šią, testavimui skirtą programą.

3. Naudotojas tam, kad pamatytų rezultatų lentelę, jau turi būti


pradėjęs testavimo procesą.

Pagrindinis 1. Naudotojas atidaro testavimui skirtą aplikaciją.

scenarijus 2. Naudotojas turi pasirinkti vieną iš testavimo funkcijų.


3. Naudotojas turi palaukti kol testavimas pasibaigs ir naujai
atsidariusiame lange išvys rezultatų suvestinę talpinamą lentelėje
4. Naudotojas peržiūrėjęs rezultatus gali išjunti naujai atvertą langą.

Alternatyvūs 4. a Naudotojas peržiūrėjęs rezultatus ir paspaudęs išjungimo


mygtuką, paklaustas ar nori išeiti iš programos su sąlyga, jog gauti
scenarijai:
rezultatai nebus išsaugomi, gali veiksmą atšaukti ir grįžti prie rezultatų
peržiūros.
Penktasis panaudos atvejų scenarijus aprašo galimybę išrikiuoti gautus rezultatus pagal
atitinkamus kriterijus. Naudinga, kai norima didelį kiekį duomenų atrūšiuoti ir matyti tik problemines testavimo
rezultatų sritis (žr. 6 lentelė).

5 lentelė. Rezultatų rikiavimas.

Pavadinimas Rezultatų rikiavimas pagal kriterijus rezultatų suvestinės lentelėje.

ID: UC05

Trumpas Naudotojui suteikiama galimybė po atlikto testavimo peržiūrėti gautus


rezultatus surikiuoti pagal atitinkinamus kriterijus.
aprašymas:
Naudotojas: Asmuo norintis atlikus testavimą su tam tikrais kompiuteriais
peržiūrėti gautus rezultatus ir juos surikiuoti.

Prieš - sąlygos 1. Naudotojas turi naudoti kompiuterį, kuris prijungtas prie to paties
tinklo, kaip ir testuojami įrenginiai.

2. Naudotojas turi turėti šią, testavimui skirtą programą.

3. Naudotojas tam, kad pamatytų rezultatų lentelę ir galėtų rikiuoti


pateiktus rezultatus, jau turi būti pradėjęs testavimo procesą.

Pagrindinis 1. Naudotojas atidaro testavimui skirtą aplikaciją.

scenarijus 2. Naudotojas turi pasirinkti vieną iš testavimo funkcijų.


3. Naudotojas turi palaukti kol testavimas pasibaigs ir naujai
atsidariusiame lange išvys rezultatų suvestinę talpinamą lentelėje
4. Naudotojas turi paspausti ant vienos iš stulpelio esmę nusakančios
etiketės.

5. Naudotojas gali peržiūrėti surikiuotus rezultatus.


Alternatyvūs 4. a Naudotojas gali surikiuoti rezultatus ne tik mažėjimo bet ir
didėjimo tvarka. Tam reikalinga paspausti ant tos pačios stulpelio
scenarijai:
etiketės antrą kartą.
Šeštasis panaudos atvejų scenarijus aprašo galimybę išsaugoti gautus rezultatus sugeneruojant
CSV formato failą ir pasirinkti vietą jo saugojimui. Funkcijos paskirtis yra ta, kad ir palikus rezultatų suvestinės
formą, rezultatai nebūtų prarasti. (žr. 7 lentelė).

6 lentelė. Rezultatų suvestinės saugojimas.

Pavadinimas Rezultatų suvestinės saugojimas

ID: UC06

Trumpas Naudotojui suteikiama galimybė po atlikto testavimo ir rezultatų


peržiūros, duomenų neprarasti, o juos sėkmingai saugoti kompiuterio
aprašymas:
atmintyje.

Naudotojas: Asmuo besinaudojantis šia kompiuterių testavimo programa.

Prieš - sąlygos 1. Naudotojas turi naudoti kompiuterį, kuris prijungtas prie to paties
tinklo, kaip ir testuojami įrenginiai.

2. Naudotojas turi turėti šią, testavimui skirtą programą.

3. Naudotojas tam, kad pamatytų rezultatų lentelę ir joje pateiktus


duomenis saugoti turi jau būti atlikęs testavimą su pasirinktais
įrenginiais.
Pagrindinis 1. Naudotojas atidaro testavimui skirtą aplikaciją.

scenarijus 2. Naudotojas turi pasirinkti vieną iš testavimo funkcijų.


3. Naudotojas turi palaukti kol testavimas pasibaigs ir naujai
atsidariusiame lange išvys rezultatų suvestinę talpinamą lentelėje
4. Naudotojas peržiūrėti rezultatus.

5. Naudotojas spaudžią mygtuką „Export“ inicijuojantį failų katalogo


iškvietimą
6. Failų katalogo langę yra pasirenkama lokacija kur duomenys bus
saugomi
Alternatyvūs 5.a Naudotojas nesirenka išsaugoti pateiktų duomenų ir palieka
rezultatų suvestinės lango formą, ją išjungdamas.
scenarijai:
6.a Naudotojas gali apsigalvoti ir rezultatų nesaugoti, palikdamas failų
katalogo langą nuspausdamas išjungimo mygtuką viršutiniame
dešiniajame kampe.
Septintasis panaudos atvejų scenarijus aprašo galimybę išsaugotos ataskaitos peržiūrą po to kai ji
buvo išsaugota CSV formatu (žr. 8 lentelė).

7 lentelė. Rezultatų peržiūra palikus rezultatų peržiūros langą.

Pavadinimas Įkelti tekstinį dokumentą

ID: UC07

Trumpas Naudotojui suteikiama galimybė po atlikto testavimo ir rezultatų


išsaugojimo, juos peržiūrėti net ir palikus rezultatų peržiūros langą.
aprašymas:
Naudotojas: Asmuo besinaudojantis šia kompiuterių testavimo programa.

Prieš - sąlygos 1. Naudotojas turi naudoti kompiuterį, kuris prijungtas prie to paties
tinklo, kaip ir testuojami įrenginiai.

2. Naudotojas turi turėti šią, testavimui skirtą programą


3. Naudotojas kad turėtų sugeneruotą CSV formato failą turi jau būti
atlikęs testavimą, o duomenis išsaugojęs jame.
4. Naudotojas turi turėti CSV failų skaityklę (Microsoft Excel).
Pagrindinis 1. Naudotojas atidaro testavimui skirtą aplikaciją.
2. Naudotojas turi pasirinkti vieną iš testavimo funkcijų.
scenarijus
3. Naudotojas turi palaukti kol testavimas pasibaigs ir naujai
atsidariusiame lange išvys rezultatų suvestinę talpinamą lentelėje
4. Naudotojas peržiūrėti rezultatus.
5. Naudotojas spaudžią mygtuką „Export“ inicijuojantį failų katalogo
iškvietimą
6. Failų katalogo langę yra pasirenkama lokacija kur duomenys bus
saugomi.

7. Naudotojas išjungęs programą gali peržiūrėti sugeneruotą failą


naudojantis vieną iš CSV failo formatą palaikančių skaityklių
Alternatyvūs Naudotojas nėra išsaugojęs suvestinės, todėl jos peržiūra nėra galima.

scenarijai:
3.4. Veiklos diagramos

3.4.1. Kalbos keitimo veiklos diagrama

Pirmoje veiklos diagramoje vaizduojamas kalbos keitimas. Numatytoji programos kalba yra anglų,
tačiau vienu paspaudimu, programą galima pritaikyti ir anglų kalba nekalbantiems specialistams. Kadangi
įmonė yra įsikūrusi ne tik Lietuvoje bet ir kitose šalyse, svarbu kad kalba nebūtų vienas tų barjerų neleisiančių
naudotis programa.
Kalbą galima keisti beveik iš kiekvieno programos lango, o pakeitus kalbą pasikeičia ne tik mygtukų
pavadinimai, bet ir iššokančių pranešimų tekstas (žr. 2 pav.).

7 pav. Kalbos keitimo veiklos diagrama


3.4.2. Kompiuterių vardų pateikimas juos įrašant ranka

Antrojoje veiklos diagramoje vaizduojamas kalbos keitimas kompiuterių vardų pateikimas juos įrašant
ranka Gana paprastas tačiau ir gana reikalingas reikšmių perdavimas jas įrašant ranka. Praktikos eigos metus,
testuojant pastebėjome jog yra labai nepatogu testuoti visą daugiau nei 400 šimtų kompiuterių sąrašą, kuomet
tereikia patikrinti tik kelis įrenginius, o kuriant atskirus tekstinių dokumentų failus, kurių greičiausiai vėliau
neprireiks, tapo ne tik neracionalu, bet ir bereikalinga, kuomet darbalaukyje, ar kitoje vietoje laikomi tekstiniai
dokumentai su pavienėmis reikšmėmis yra linkę lengviau pasimesti ar būti sumaišyti su kitais tekstiniais
dokumentais.

Taip kilo idėja padaryti galimybę jog norint atlikti testavimą tik su keliomis reikšmėmis, jas būtų
galima įvesti ranka, ar įklijuoti reikiamus kompiuterių vardus iš atitinkamo šaltinio. Procesas užtrunka
nepalyginamai trumpiau, o kai domina tik mažas kiekis prietaisų iš stambaus sąrašo yra gan paprasta juos
įklijuoti tiesiai į programą ir nesijaudinti dėl bereikalingai ant darbalaukio išdėstytų ir turbūt tik vieną kartą
panaudojamų tekstinių dokumentų (žr. 3 pav.).
8pav. Rankinis kompiuterių vardų įvedimas

Testavimas įvedant pavienius kompiuterių vardus vyksta taip pačiai, kaip ir pasirenkat duomenų
failą, tik duomenys jau nuskaitomi ne iš failo, bet iš teksto lauko kur buvo suvesti kompiuterių vardai.

3.4.3. Kompiuterių vardus talpinančio tekstinio failo pasirinkimas

Trečiojoje veiklos diagramoje vaizduojamas kompiuterių vardus talpinančio tekstinio failo pasirinkimas.
Norint pradėti darbą su programa, pirma reikia turėti tekstinį dokumentą. Iš pradžių buvo pritaikytas ganėtinai
nelankstus ir neefektyvus, direktorijos nurašymo metodas. Duomenims pasirinkti, norėjosi kažko paprasto ir
lengvai suprantamo. Nusprendėme, kad naršymas per katalogus yra pats patogiausiais metodas, bei
nereikalaujantis ypatingų įgūdžių. Pasirinktas būdas atrodė tiek estetiškai tvarkingas, tiek greitas.
Tam pasiekti naudojau dialogo langus, kas procesą ne vien paspartino, bet ir dėl savo gerai pažystamos
išvaizdos, failo pasirinkimą supaprastino (žr. 4 pav.).
9 pav. Failo, su kompiuterių vardais, pasirinkimas iš failų katalogo

Paleidus programą ir pasirinkus funkciją failui atidaryti atsiveria naujas langas, kuriame turime
mygtuką atverti failų katalogui ir pradėti testavimą. Failo pasirinkimas ir testavimo pradžia yra gludžiai susiję,
kadangi iškvietus failų katalogo funkcija ir pasirinkus reikia tekstinį dokumentą nedelsiant yra pradedamas
pagrindinis testavimas, apie kurį kalbėsime šiek tiek vėliau

3.4.4. Testavimo eiga su pateiktais duomenimis

Ketvirtojoje veiklos diagramoje vaizduojama testavimo eiga su pateiktais duomenimis. Windows


valdymo įrankio (Windows Management Instrumentation) karkasas yra skirtas darbui „Windows“ operacinėse
sistemose, ir atlieka nemažą dalį funkcijų vienai jų būnant užklausiant serverį informacijos apie vidiniame
tinkle esančius kompiuterius. Šį algoritmą, kaip ir minėjau anksčiau, naudojau aptikti kompiuterius pagal jų
tariamą vardą ir rasti neteisingus domeną aptarnaujančio vardų serverio (angl. DNS-domain name server)
įrašus. Tai yra vienas iš kodo skolinių paimtų iš oficialaus Microsoft C# blogo, kuriame yra detalizuotos ir kitos
Windows valdymo įrankio (Windows Management Instrumentation) funkcijos, kurių, nenorėdamas išsiplės,
šiame darbe neminėsiu.

10pav. Algoritmo atliekamas testavimas

Sistemai nuskaičius kompiuterių vardus iš pasirinkto tekstinio dokumento ar iš teksto lauko skirto
kompiuterių vardams įvesti, juos atskiriant kableliais, kiekvienas vardas yra talpinamas į vieną iš simbolių
eilutės (eilutės masyvo tipo) ląstelių. Tada vykstant pirmajai užklausai sužinoma ar užklaustu vardu
kompiuteris atsako ar ne, jeigu ne, kaip ir diagramoje pavaizduota, yra atliekami kiti atitinkami patikrinimai
nustatyti ar tai yra neteisingo DNS įrašo kaltė ar visgi tai yra susiję su kompiuterio nepasiekiamumu, kas
dažniausiai yra sukeliama kai kompiuteris yra išjungtas arba nėra prijungtas prie to paties tinklo prie kurio yra
prijungtas įrenginys atliekantis šį testavimą.
Testavimui pasibaigus yra pereinama prie rezultatų atvaizdavimo funkcinės dalies. (žr. 5 pav.).
3.4.5. Rezultatų suvestinė ir jos saugojimas

Penktojoje veiklos diagramoje vaizduojama rezultatų suvestinė ir jos saugojimas. Programa pabaigus testuoti ar
kompiuteriai atsako pagal savo vardą, suradus ne atitikmenis ir parengus rezultatus peržiūrai atveria naują
langą, kuriame visa informacija apie testuotus kompiuterius kartu su išvadomis, yra talpinama duomenų tinklelį
(angl. data grid view) .

11pav. Rezultatų suvestinė ir jos saugojimas

Programos naudotojas neinicijuoja šios programinės dalies pradžios, tačiau atvėrus langą jis gali
rezultatus peržiūrėti. Taip pat duomenų tinklelis (angl. data grid view) turi galimybę jame pateiktus duomenis
rikiuoti pagal kiekvieną iš esamų stulpelių. Tarkim programos naudotojas pirma nori matyti tuos kompiuterius,
su kuriais atlikus testavimą, paaiškėjo jog yra konfliktas tarp originaliai užklausto vardo ir gauto vardo iš
domeną aptarnaujančio vardų serverio (angl. DNS-domain name server). Tokiu atveju yra spaudžiama ant
stulpelio viršuje esančio stulpelio reikšmę nusakančios etiketės, kuri šiuo atveju būtų „status“ reiškiančios
statusą, ir rezultatai yra surikiuojami taip, kad visi kompiuteriai kurie turėjo statusą „conflict“ reiškiantį
konfliktą bus sugrupuoti kartu.
Baigus žiūrėti rezultatus naudotojas gali išeiti iš šio, rezultatų pateikimui skirto, lango
paspausdamas viršaus dešinėje esantį „x“ mygtuką. Jeigu suvestinė nebus išsaugota, prieš uždarant programos
langą, programa naudotoją informuoja, kad rezultatai nebus automatiškai išsaugomi, o išėjus iš šio lango, jie
bus ištrinti.
Esant būtinybei, naudotojas nesirenka kad nori išeiti iškilusiame dialogo lange, renkasi išvestinės
eksportavimo funkciją spausdamas „export “ mygtuką ir pasirenkama lokacija kompiuterio atmintyje skirtą
saugoti sugeneruotam CSV formato failui. Tuomet galima grįžti prie programos lango, atvaizduojančio
rezultatus, išjungimo ir sutikus kad, kad langas bus išjungtas grįžtama į pagrindinį, testavimui skirtą langą iš
kurio buvome nukelti į ką tik uždarytą langą.

3.5. Trumpas skyriaus apibendrinimas


Šiame skyriuje aptarėme pagrindinius principus kurias vadovaujantis buvo kuriamas šis įrankis.
Buvo apibrėžta kiek ir kokių funkcinių reikalavimų programa turi atitikti, kad butų galima ją laikyti pilnai
išbaigtą arba atitinkančia keltus tikslus ir lūkesčius. Taip pat, buvo apibrėžti ir nefunkciniai reikalavimai.
Nefunkciniai reikalavimai atskleidžia kaip tam tikra funkcija bus įgyvendinama ir kokie procesai vyks norint tai
pasiekti.
Sekantis dalykas apie kurį yra rašoma šiame skyriuje yra panaudos atvejai. Buvo sudarytas eskizas
kuriame yra pavaizduotos pagrindinės sistemos funkcijos ir rolės, kurios gali atlikti šias funkcijas. Kiekvienam
iš panaudos atvejų aprašyti buvo pateikta po scenarijų lentelę, kurioje galima matyti scenarijaus aprašymą prieš
sąlygas, pagrindinį scenarijų ir alternatyvų scenarijų.
Trečiasis dalykas, aptariamas šiame skyriuje, buvo veiklos diagramos, kurios buvo pateiktos su
detaliu aprašymu. Diagramose galima matyti kaip vyksta kiekviena iškviesta funkcija ir kokie veiksmai yra
atliekami tiek iš naudotojo pusės tiek iš programos
4. UŽDUOTIES ĮGYVENDINIMAS

4.1. Panaudotos bibliotekos

Naudoti sąryšiai (angl. reference) pridėti rankiniu būdų:

1. System.Windows.Forms;
2. System.Windows;
3. System.Management;
4. System.Management.Instrumentation.

12 pav. Bibliotekos

Norint įgyvendinti vieną ar kitą funkcionalumą, buvo naudojamos atitinkamos bibliotekos


aprašomos žemiau [6].
Biblioteka „System.Management“

Suteikia prieigą prie gausaus informacijos rinkinio ir įvykių susijusių su sistema valdymo,
įrenginiai bei programos, dėka šios bibliotekos gali būti pritaikytos Windows valdymo instrumentacijai
(Windows Management Instrumentation). Programos ir paslaugos gali užklausti reikalingos valdymo
informacijos (pvz., kiek laisvos vietos liko diske, koks yra dabartinis procesoriaus panaudojimas, prie
kurios duomenų bazės yra prijungta tam tikra programa, ir daug daugiau), naudodamiesi klasėmis,
gautomis iš „ManagementObjectSearcher“ ir „ManagementQuery“ kurios yra aktyvinamos pridėjus šią
biblioteką. Taip pat yra galimybė matyti įvairius valdymo įvykius naudodami
„ManagementEventWatcher“ klasę. Paskirtoje aplinkoje prieinamus duomenis gali sudaryti tiek
valdomi, tiek nevaldomi komponentai.

Biblioteka „System.IO“

„System.IO“ pasižymi savo gebėjimu skaityti ir rašyti į failus ir duomenų srautus atitinkamą
informaciją, taip pat turi galimybę įgalinti paprastųjų failų ir katalogų palaikymą.

Biblioteka „System.Net“

„System.Net“ vardų sritis suteikia paprastą programavimo sąsają daugeliui šiandien tinkluose
naudojamų protokolų. „WebRequest“ ir „WebResponse“ klasės sudaro vadinamųjų jungiamųjų
protokolų, tinklo paslaugų diegimo, leidžiančio kurti programas, naudojančias interneto išteklius,
nesijaudinant dėl konkrečių atskirų protokolų detalių, pagrindą.
Klasės „System.Net“ vardų erdvėje gali būti naudojamos kuriant „Windows Store“ programas arba
darbalaukio programas.

Biblioteka „System.Net.Sockets“

„Socket“ klasėje pateikiamas gausus metodų ir savybių rinkinys tinklo ryšiui palaikyti. „Socket“
klasė leidžia atlikti tiek sinchroninį, tiek asinchroninį duomenų perdavimą, naudojant bet kurį iš ryšių
protokolų, išvardytų „ProtocolType“ sąraše, kurį, kaip ir didžiosios dalies su C# programavimu
susijusių klausimų, atsakymus, galima rasti oficialiame Microsoft C# programavimo kalbos palaikymo
puslapyje

„Socket“ klasė seka asinchroninių metodų .NET Framework pavadinimų modelį. Pvz., Sinchroninio
priėmimo metodas atitinka asinchroninį „BeginRecept“ ir „EndRecept“ metodus.
4.2. Programinis funkcijų išpildymas

4.2.1. Duomenų pasirinkimas ir panaudojimas

Norint pradėti darbą su programa, pirma reikia turėti tekstinį dokumentą (txt formato). Iš pradžių
buvo pritaikytas ganėtinai nelankstus ir neefektyvus, direktorijos nurašymo metodas. Duomenims
pasirinkti, norėjosi kažko paprasto ir lengvai suprantamo. Nusprendėme, kad naršymas per katalogus yra
pats patogiausiais metodas, bei nereikalaujantis ypatingų įgūdžių. Pasirinktas būdas atrodė tiek estetiškai
tvarkingas, tiek greitas. Tam pasiekti naudojau dialogo langus, kas procesą ne vien paspartino, bet ir dėl
savo gerai pažystamos išvaizdos, failo pasirinkimą supaprastino.

13 pav. Failo pasirinkimo dialogo lango apsirašymas

Toliau, iš pasirinkto failo, reikia pasiimti duomenis. Tai padaryti yra sąlyginai paprasta. Iš
pasirinkto txt dokumento, kompiuterių vardus sudedame į simbolių masyvą. Tai vėliau padės kiekvieną iš vardų
traukti iš masyvo ir juos leisti per tolimesnius kodo fragmentus. Kode matote, kaip į „StringArray“ sutalpiname
visas eilutes iš „theDialog“. Taip buvo užvadintas procesas, kuomet atidarant dialogo langą pasirinkome failą.
Per kiekvieną ciklo iteraciją yra kreipiamasi į WmiCheck fikciją vis su nauja vardo reikšme.

14pav. Duomenų įtraukimas į simbolių masyvą


4.2.2. WMI funkcionalumo panaudojimas

Windows valdymo įrankio (Windows Management Instrumentation) algoritmas [2] yra skirtas
darbui „Windows“ operacinėse sistemose, ir atlieka nemažą dalį funkcijų vienai jų būnant užklausiant serverį
informacijos apie vidiniame tinkle esančius kompiuterius. Šį algoritmą, kaip ir minėjau anksčiau, naudojau
aptikti kompiuterius pagal jų tariamą vardą ir rasti neteisingus domeną aptarnaujančio vardų serverio (angl.
DNS-domain name server) įrašus. Tai yra vienas iš kodo skolinių paimtų iš oficialaus Microsoft C# blogo,
kuriame yra detalizuotos ir kitos Windows valdymo įrankio (Windows Management Instrumentation) funkcijos,
kurių, nenorėdamas išsiplės, šiame darbe neminėsiu.
Visą pagrindinę programos logiką dėliojau šioje „WmiCheck“ funkcijoje, kuri pagal atitinkamus
scenarijus, išsišakoja ir nukreipia duomenis į kitas, pagalbines funkcijas

Pagrindinis „Try Catch“ blokas.


Pirma yra inicijuojama nauja jungtis ir paruošiama užklausa [5] su perduotu vardu iš ankstesnės dialogą
iššaukiančios funkcijos. Vykdomas „foreach“ ciklas kuriame yra iškeliama sąlyga skambanti taip: jeigu
„Globals.pcName“ yra lygus užklausoje gražinamam vardui, prie CSV registruojamo vardo prijungiamas įrašas
sakantis kad kompiuteris atsako į savo vardą. Kartu pridedamas IP adresas bei statusas. Jeigu ši sąlyga nėra
tenkinama tada kviečiama konfliktą registruojanti funkcija. Daugeliui funkcijų nėra perduodamos reikšmės,
kadangi kintamieji yra statiniai („static“) ir prieinami juos kviečiant bet kurioje programos vietoje. Try daliai
nepavykus aptikti jokio domeną aptarnaujančio vardų serverio (angl. DNS-domain name server) įrašo, einame į
catch dalį, kuri išveda į funkciją skirtą identifikuoti klaidos priežastį. Apie ją kitame kalbėsiu kitame skyriuje.

15pav. Pagrindinis "try" blokas


16pav. Pagrindinis "catch" blokas

4.2.3. IP adreso gavimas

Pirma yra bandoma gauti atitinkamo kompiuterio IP adresas[5]. Gavus adresą, einame į kita funkciją
„DNSnameSep“. Tačiau jeigu IP adreso nepavyksta gauti, Catch dalyje esanti funkcija, programą nuveda į
„noIP“ funkciją kur yra registruojamas įrenginio nepasiekiamumas, dažniausiai dėl jo buvimo išjungtu arba
atjungtu nuo tinklo.
17pav. IP adreso gavimas

Tai pirminis būdas tikrinant kompiuterio vardą, kadangi iš čia toliau einant į funkciją
„DNSnameSep“ mes galime ne tik sužinoti ar įrenginys neatsako užklaustas IP adresu, bet atlikti kita naudinga
vardo paruošimo, pirminiam tikrinimui, funkciją.
Nors algoritmas yra originaliai sukurtas pačio „Microsoft“, pastebėjau kelis trūkumus. Jeigu
kompiuteris turi „.odin.local“ prierašą, gale savo vardo, šis algoritmas teigia, kad vardai nėra vienodi. Taigi, dėl
šios priežasties pasitelkiau papildomą metodą kompiuterių vardų tikrinimui.

4.2.4. Kompiuterio vardo paruošimas be prierašų

18pav. Vardų palyginimo metu atskiriamas domeno pavadinimas

Kaip jau minėjau kartais domeną aptarnaujančio vardų serverio (angl. DNS-domain name server)
serveris gražindamas vardą kartu paima ir prierašą „odin.local.“. Iš pat pradžių teko ilgai ieškoti ir sukti galvą
kas galėtų iššaukti tokį rezultatą. Pasikonsultavus su praktikos vadovu, paaiškėjo, kad vardai yra vienodi, bet
ateinantys su prierašu. Buvo įgyvendinta priemonė šiai problemai išspręsti. Gale reikšmės gavimo yra
pridedama „Split“ operacija, ir nurodoma kad tai yra masyvas ir imti reikšmę reikia pačia pirmą. Yra paskutinį
kartą patikrinama kad taip, šis gautas ir originaliai užklaustas, vardai yra skirtingi ir programos veikla toliau
tęsiama „conflict“ funkcijoje kurioje yra registruojamas įrenginio vardų neatitikimas, IP adresas bei statusas
„CONFLICT“

Taip pat verta paminėti, kad tuo atveju kai nėra gaunamas domeną aptarnaujančio vardų serverio
(angl. DNS-domain name server) vardas, nors prieš tai ir pavyko gauti IP adresą, programa catch dalyje palieka
DNSnameSep funkciją ir išeina į nodnsName kur yra registruojamas įrenginio nepasiekiamumas su IP adreso
prierašu.

Štai visi galimi scenarijai, ir funkcijos į kurias išeinama norint nusakyti testavimo rezultatus.

CsvOut.AppendLine(Globals.ogName + "," + Globals.pcName + "," + Globals.ipAdr + "," + "


OK");

CsvOut.AppendLine(Globals.ogName + "," + "N/A" + "," + "N/A" + "," + " CAN'T BE


PINGED");

CsvOut.AppendLine(Globals.ogName + "," + "N/A" + "," + Globals.ipAdr + "," + "


UNREACHABLE");

CsvOut.AppendLine(Globals.ogName + "," + Globals.pcName + "," + Globals.ipAdr + "," + "


CONFLICT");

4.2.5. Rankini reikšmių įvedimas

Gana paprastas tačiau ir gana reikalingas reikšmių paėmimas jas įrašant ranka. Praktikos eigos
metus, testuojant pastebėjome jog yra labai nepatogu testuoti visą daugiau nei 400 šimtų kompiuterių sąrašą,
kuomet tereikia patikrinti tik kelis įrenginius. Taip kilo idėja padaryti galimybę įvesti ranka, ar įklijuoti
reikiamus kompiuterių vardus. Procesas užtrunka nepalyginamai trumpiau, o kai domina tik mažas kiekis
prietaisų iš stambaus sąrašo yra gan paprasta juos įklijuoti tiesiai į programą ir nesijaudinti dėl bereikalingai ant
darbalaukio sėdinčių vieną kartą panaudotų „txt“ failų.
19pav. Rankinės reikšmių įvedimo funkcijos kodo fragmentas

Taip atrodo kodas kuomet tėra tik apsirašoma ką programa darys su įvestu tekstu.
Taip pat matome kaip globalus kintamasis pasiima reikšmę ją pernešdamas į funkciją žemiau, kuri, kaip jau
aptarta Browse funkcija, atlieka, labai panašią jei ne tą pačią, vardų padavimo pagrindinei „WmiCheck“
funkcijai, užduotį. Tik šį kartą įvesti vardai yra talpinami į simbolių masyvą prieš tai išfiltravus tarpus, o
kablelius naudojant kaip atskirties tašką, ties kuriuo programa žino, kad tolimesni simboliai po kablelio bus
talpinami jau kitoje, simbolių masyvo ląstelėje.

Principe viskas vyksta taip pačiai, tik duomenys jau nuskaitomi ne iš failo, net iš teksto lauko kur
buvo suvesti kompiuterių vardai
Galima pastebėti, kas tiek šioje tiek jau aptartoje „Browse“ funkcijoje prieš pat „return“ yra dar vienas
išsukimas iš šios funkcijos. Žemiau kalbėsime apie funkcijas atliekamas atvėrus kitos klasės (Results.cs) formą,
kuo ji naudinga ir kaip ji buvo įgyvendinta.

4.2.6. Csv failų generavimas

Pratestavus visus įrenginius, yra kuriama viso proceso ataskaita/išklotinė[3]. Ataskaitai sukurti
naudojau CSV formatą, kadangi, atsidarius failą ar per „Microsoft Excel“ ar per „LibreOffice“ yra labai patogu
gautus duomenis rūšiuoti, tiek pagal pavadinimus, tiek pagal statusą. Apsibrėžiau, kad failą sudarys 4 stulpeliai:

• Target (liet. taikomasis įrenginys);


• Real name (liet. tikrasis vardas);
• IP address (liet. IP adresas);
• Status (liet. statusas).
StringBuilder CsvOut = new StringBuilder();

CsvOut.AppendLine("Target" + "," + "Real name" + "," + "IP address" + "," + " Status");

20pav. Stulpelių pavadinimų deklaravimas

Informacija atlikus tikrinimus per visus 4 scenarijus yra skirtinga. Štai kaip įrašymas. Pabrėžiu, kad
kableliai naudojami informacijai talpinti atskiruose langeliuose, nėra vienintelis metodas, galima naudoti ir kiti
simboliai, ar tarpai. Tereikia atsidarius šia ataskaitą vienoje iš mano pateiktų skaitymo programų pasirinkti, kad
toks ir toks simbolis apibrėžia reikšmės pabaigą ir sekančios pradžią. Rekomenduoju naudoti kablelius nes tai
dažniausiai yra numatyta skirstymų reikmė.

Toks spausdinimo ruošinys yra naudojamas kai kompiuterių vardai atitinka ir jis yra sutinkamas
pačio pirminio tikrinimo sąlygos viduje.

21pav. Ruošinys, kai kompiuteris atsako į savo vardą

Kai atsakas nėra toks kokio buvo tikimasi, veiksmas persikelia į „IPAddressas“. Gaunamas IP ir
perduoda į „DNSnameSep“. Net po vardų sutrumpinimo bei jų pavertimo tik mažosiomis raidėmis, jiems
neatitikus keliamės į funkciją „conflict“, kur mus pasitiks jau atroji ruošinio išvestis. Štai kas į CSV failą bus
įrašyta, antruoju atveju:

22pav. Kai vardai nesutampa

Kai į kompiuterį kreipiamasi su IP adresu ir klausiama, kam jis priklauso bet dėl kažkokios
priežasties vardas nėra grąžinamas iš domeną aptarnaujančio vardų serverio (angl. DNS-domain name server),
tuomet, kai nukeliausime į „nodnsName“ funkciją, į mūsų ataskaitą bus įrašoma štai tokia eilutė.
23pav. Kuomet nepavyksta gauti DNS vardo pagal IP adresą

Ir paskutinysis scenarijus. Kai užklausus koks IP adresas yra atitinkamo kompiuterio, negauname jokio
teigiamo atsako funkcija „noIP“ pasirūpins kad, mūsų ataskaitoje atsirastų štai tokia eilutė

24pav. Kuomet nėra jokio atsako


4.2.7. Rezultatų suvestinės forma

Taigi, kai programa atliko didžiąją dalį darbo, einame ties rezultatų suvestinės lango, kuriame
sugeneruotos lentelės viduje bus talpina testavimo rezultatų informacija.

25 pav. Rezultatų lentelės pildymas duomenimis

4.2.8. Rezultatų suvestinės formos išsaugojimas

CSV failo išsaugojimas, kai jau minėjau yra skirtas tam, jeigu gauti rezultatai yra reikalingi ir po
rezultatų suvestinės peržiūros. Tam taip pat buvo pasitelktas dialogo langas. Kai ir su pirmuoju failų katalogo
langu, naudotu pasirinkti failui, čia tereikia pasirinkti lokaciją kur bus saugoma paruošta ataskaita.

Tereikia pasirinkti direktorija, pavyzdžiui kad ir „Desktop“ ir failas atsiranda jūsų darbalaukyje.
Failo pavadinimą sudarys žodelis „out“, simbolizuojantis „output“ (liet. išvestis) bei tos dienos data ir laikas
sekundžių tikslumu, taip bus išvengta failo perrašymo jeigu bus nuspręsta saugoti failą toje pačioje vietoje kur
ir prieš tai.
26 pav. keliamės į "Home" klasėje esančią funkcją

27 pav. Išvestinės saugojimas pasirinktoje lokacijoje

4.2.9. Duomenų konflikto išvengimas

Testuojant susidurta su menka problema, kuomet nebuvo galima išgauti IP adreso ar domeną
aptarnaujančio vardų serverio (angl. DNS-domain name server) vardo, likdavo senos reikšmės globaliuose
kintamuosiuose[8], nuo prieš tai testuotų kompiuterių vardų. Nepastebėjus problemos ataskaita būdavo
gaunama klaidinga, teigianti gavusi vienokį ar kitokį vardą ar adresą, jau priklausantį praeitiems testų
rezultatams. To išvengti padeda paprastas reikšmių nuėmimas. Tai yra daroma po kiekvieno scenarijaus
išvesties.

28 pav. Globalių kintamųjų nustatymas į nulinę reikšmę

4.2.10.Formos uždarymas, įspėjimų kontrolė.

Prieš uždarant formą, naudotojas yra informuojamas, kad palikus formą, rezultatai yra ištrinami,
pastebėjus, jog suvestinė nebuvo išsaugota, naudotojas yra perspėjamas apie negrįžtamą duomenų praradimą.
Yra siūloma duomenis išsaugoti, naudojant mygtuką „Eksportuoti“.
Duomenims jau esant išsaugotiems, naudotojas prieš išjungdamas formą, yra paklausiamas ar tikrai nori
išeiti iš formos. Įspėjimų žinutės keičiasi priklausomai nuo naudojamos kalbos ir duomenų saugojimo.
29 pav. Formos išjungimas, iššokančių langų pranešimai

4.3. Trumpas skyriaus apibendrinimas


Šiame skyriuje aptarėme papildomas bibliotekas kurios buvos naudojamos norint įgyvendinti jau
aprašytus funkcinius ypatumus. Buvo parengta trumpa kiekvienos bibliotekos apžvalga, kad būtų galima
suprasti kiekvienos iš jų svarbą šiame projekte
Didžioji šio skyriaus dalis buvo skirta gilinimuisi į patį programos kodą. Kodo fragmentai buvo
pateikti iliustracijose, taip pat detaliai aprašytas jų veikimas. Taip pat buvo paminėti ir kilę sunkumai norint
pasiekti vieną ar kitą funkcionalumą, buvo pakomentuota kaip problema buvo sprendžiama kartu pateikiant ir
kodo fragmentą kur problema buvo kilusi.
5. PROGRAMOS VEIKIMO PATIRINIMAS

30 pav. Pagrindinis langas

Pagrindiniame lange galime matyti funkcijas rankiniam vardų įvedimui, taip pat funkciją testavimui atlikti
su jau iš anksto paruoštu vardų sąrašu. Jeigu kompiuteris nėra tinkle registruotas kaip turintis administratoriaus
teises, turime pasirūpinti, kad tiek vedant vardus su „Manual entry“ funkcija, tiek juos įkeliant iš jau
sugeneruoto sąrašo, kiekvienas iš vardų turės domeno pavadinimą. Vilniaus kolegijoje naudojami kompiuteriai
naudoja „ad.viko.lt“, tad kompiuterio vardas turėtų atrodyti taip- „EIF-D-S-205-16.ad.viko.lt“.
Taip pat galite pastebėti mygtuką esantį apatiniame, kairėje esančiame kampe su užrašu,
simbolizuojančiu, kokia kalba programa gali veikti.
31 pav. Rankinio, kompiuterių vardų, įvedimo funkcija

Pasirinkus „Manual Enry“. formos vaizdas yra perpaišomas, matome lauką informacijos
suvedimui. Taip pat viršuje esantis užrašas informuoja, kad reikšmes reikia atskirti kableliais.

Pabaigus ties informacijos įvedimu galime spausti atsiradusį mygtuką „Start Test“. Jis yra
aktyvuojamas kai pradedame rašyti teksto įvedimo laukelyje.

32 pav. Aktyvuojamas testavimo pradžios mygtukas


Po „Start test“ mygtuko paspaudimo inicijuojama programos darbo pradžia, prasideda įvestų
vardų tikrinimas tinkle. Laukiame testavimo rezultatų.

Programai atlikus savo darbą, naudotojui yra atveriamas naujas langas. Jame yra vaizduojami
duomenys, gauti testavimo, metu. Visi duomenys yra talpinami į lentelę, kurioje patogiai galima juos išfiltruoti
[7].

33 pav. Rezultatų suvestinė

Formoje galime pastebėti, informacijai išsaugoti skirtą mygtuką „Export“. Jo pagalba, galime ir
išjungus rezultatų lentelės langą, rezultatus peržvelgi išsaugotame faile. Norint išsaugoti, spaudžiame mygtuką
„Export“, tada atsivėrusiame dialogo lange pasirinkame norimą saugojimo lokaciją ir spaudžiame „OK“

34 pav. Pasirinkus lokaciją, failas išsaugomas, nuspaudus "OK" mygtuką


Pažiūrėjus gautus rezultatus, galime išjunti formą. Programa mus informuoja, kad jeigu
išjungsime formą, duomenų neišsaugojus, juos prarasime negrįžtamai.

35 pav. Įspėjimo langas prieš išsaugant

Sistemai pamačius, kad forma visgi buvo išsaugot, naudotoją pasitinka, šiek tiek kitokia, žinutė,
klausianti ar tikrai norima išeiti iš rezultatų peržiūros lango, nieko neminint apie rezultatų praradimą.

36 pav. Įspėjimo langas po rezultatų išsaugojimo

Formą paliekame, nuspaudę „Yes“ mygtuką. Atsirandame lange, iš kurio buvome nukelti į
rezultatų peržiūros langą. Šiuo atveju esame rankinio kompiuterių vardų įvedimo funkcijos lange. Jame galime
įvesti kitus kompiuterių vardus, taip pat jeigu naudotojas nori, galima grįžti į namų ekraną, iš kur galime patekti
į kita funkciją „Browse file“ reiškiančią, failo su kompiuterių vardais įkėlimas. Taip pat galime pakeisti kalbą į
lietuvių.
37 pav. Namų ekranas lietuvių kalba

Spaudžiame pasirinkti failą, atsiveria naujas langas.

38 pav. Failo pasirinkimo vaizdas lietuvių kalba

Galime kalbą keisti ir šioje formoje. Dėl vientisumo pakeiskime į atgal į anglų kalbą.
39 pav. Testavimas su kompiuterių sąrašu

Paspaudus ant „Browse and start“ iššoka naujas langas kur pasirenkame failą norima testuoti.

40 pav. Failo pasirinkimas


41 Pav. Failo pasirinkimas 2

Suradę reikiamą failą spaudžiame „Open mygtuką, ir pradedamas testavimas

42 pav. Vyksta testavimas su įkeltu sąrašu.

Testavimo metu, esančiame teksto lauke buvo taip pat galima matyti progresą, pagal tai kiek
kompiuterių vardų jau praėjo testavimą.
O po testavimo, programa, kaip ir prieš tai, atveria testavimo rezultatų suvestinę
43 pav. Suvestinė, po testavimo įkeliant dokumentą
Metas apžvelgti gautą ataskaitą kuri buvo išsaugota po testavimo. Atidaryti, sugeneruota failą,
naudojant „Microsoft Excel“ arba tos programos, nemokamai leidžiamą parsisiųsti, alternatyvą „LibreOffice“.

44 pav. Ataskaitos vaizdas, žiūrint per Microsoft Excel


6. REZULTATŲ APIBENDRINIMAS

Praktikos darbo rengimo metu keltas tikslas bei kelti uždaviniai sėkmingai įgyvendinti, t. y.,
sėkmingai sukurta programa, leidžianti atlikti kompiuterių pasiekiamumą tinkle kreipiantis į juos vardu.
Siekiant įgyvendinti šį tikslą sėkmingai įvykdyti tokie uždaviniai:
1. Išanalizuoti reikalavimai keliami šiai programai;
2. Atlikta užduoties analizė (t. y., nubrėžtos panaudos atvejų bei veiklos diagramos);
3. Buvo laikomasi terminų ir atlikti nutarti patobulinimai, kad programa būtų visapusiškai
išbaigta;
4. Funkciniai bei ne funkciniai reikalavimai įgyvendinti;
5. Sukurta programa atitinkanti tiek mano tiek programą naudosiančių darbuotojų lūkesčius;
Literatūros ir informacinių šaltinių sąrašas

1. System.Xml.Linq Namespace straipsnis.[žiūrėtas 2019-12-02] prieiga per internetą:


<https://docs.microsoft.com/en-us/dotnet/api/system.xml.linq?view=netframework-4.8>
2. Socket Class straipsnis. [žiūrėtas 2019-12-02] prieiga per internetą: <https://docs.microsoft.com/en-
us/dotnet/api/system.net.sockets.socket?view=netframework-4.8>
3. System.IO Namespace straipsnis. [žiūrėtas 2019-12-02] prieiga per internetą: <https://docs.microsoft.com/en-
us/dotnet/api/system.io?view=netframework-4.8>
4. System.Management Namespace straipsnis. [žiūrėtas 2019-12-02] prieiga per internetą:
<https://docs.microsoft.com/en-us/dotnet/api/system.management?view=netframework-4.8>
5. Resolving an IP address from DNS in C#. Stackoverflow forumas. [žiūrėtas 2019-12-02] Prieiga per
internetą: <https://stackoverflow.com/questions/12756302/resolving-an-ip-address-from-dns-in-c-sharp>
6. List of .NET libraries and frameworks straipsnis Wikipedia. [žiūrėtas 2019-11-02] Prieiga per internetą:
<https://en.wikipedia.org/wiki/List_of_.NET_libraries_and_frameworks>
7. DataGridView Class. [žiūrėtas 2019-12-20] Prieiga per internetą <https://docs.microsoft.com/en-
us/dotnet/api/system.windows.forms.datagridview?view=netframework-4.8 >
8. C# Global Variables, Fields and Functions. [žiūrėtas 2019-11-02] Prieiga per internetą:
<https://www.arclab.com/en/kb/csharp/global-variables-fields-functions-static-class.html>

You might also like