Talk:KRTT
Retsensioon XML andmefaili osale
XML
Element "tegutsemisaeg" võiks olla ära jaotatud kaheks: "algusAasta" ja "aõppAasta" või teha need elemendid "tegutsemisaeg" elemendi sisse. Attribuudi "pikkus" võiks olla jagatud erinevateks attribuutideks "minut" ja "sekund". Attribuut "žanr" puhul ei ole soovitatav kasutada "ž" tähte, kuigi encoding on küll UTF-8. Albumite ja Artistide ID väärtused on üle kontrollimata - osad ID väärtused kattuvad. Elemendil "artist" peaks samuti olemasolema attribuut "id". Elemendi "laulud" attribuut "kogus" näitab ainult alamelementide arvu, seega ei anna mingisugust lisainfot. Sama lugu on ka attribuudi väärtusega "yhik", mis ei anna samuti midagi juurde, sest laulude kogus on ju peamiselt ikka "tk" väärtusena. XML-i faili struktuur on hea ja tore, et olete kasutanud CDATA elemente sõne väärtuste korral. Samuti valideerub XML vastavalt skeemile.
XSD
Skeemifailis on märgitud elementide Id-de väärtuseks unsignedInt, mis ei ole sobiv andmebaaside korral. Tuleks kasutada int-i, sest uint ei vasta CLS (Common Language Specification) nõutele. Ilmumisaasta puhul ei ole mõistlik kasutada unsignedInt-i, sest vastav väärtus mahuks ära ka näiteks uShorti.
Küsimus: Miks on elemendi "laul" attribuut "pikkus" kohustuslik, kuid attribuut "yhik" on valikuline?
Transformatsioonid
Transformatsioonid töötavad kõik ja kuvavad seda, mida nad peaksid kuvama. Sellegipoolest oleks võinud kasutada ka IF-tingimuslauseid, näiteks attribuuti "aktiivne", mis oleks transformatsiooni korral kuvanud ainult aktiivseid artiste. Kaks viimast transformatsiooni teevad põhimõtteliselt sama sisu, ainult vorming on teine.
---
Kokkuõtvalt on ülesanne täidetud, kuid kui soov on kasutada antud XML faili, siis tuleks sisse viia mõningaseid parandusi!
Tegi meeskond VariableMoods
Kuupäev: 11. märts 2015
Retsensioon meeskonnalt Vertigo
Meeskond KRTT on oma esimeseks XML ülesandeks koostanud artistide ja nende albumite kataloogi.
XML
Tehtud töö vastab esitatud tingimustele. XML-il on isegi rohkem dimensioone, kui 4, seega on koostatud mudeli keerukus piisav. On kasutatud piisaval kogusel dimensioonidel atribuute, mis on enamad, kui id, näiteks nagu ilmumisaasta, pikkus, kogus jne. Tegutsemisaja elemendi puhul oleks võinud läbi mõelda sisemise liigenduse, et ei tekiks sellist olukorda, nagu näites toodud “Meie mehe” artisti puhul, kus on tegutsemisaeg 1997-..., kuna artist tegutseb ka täna. Sellisel juhul ei anna 3 punkti erilist lisainfot. Lisaks ei ole sellisel juhul võimalik teha lihtsalt väljavõtteid kataloogis olevate artistide tegutsemisaja järgi kronoloogiliselt. Tegutsemisaja elemendile oleks võinud teha 2 atribuuti, näiteks “alates” ja “kuni” ning “kuni” määrata “not required”, mis võimaldaks kirjeldada olukorda, kus artist on tegutsemas ka hetkel, mil kataloogi muudetakse. Atribuudi “žanr” kasutamise võiks üle kaaluda, kuna ž-täht võib tekitada probleeme loodu ootuspärases toimimises. Hea, et on kasutatud CDATA-t artisti ja laulu nimedes.
XSD
On arusaamatu, miks “yhiku” atribuut on mõnes kohas “optional” ja mõnes kohas “required”. Sisuliselt ei näe põhjendust selleks.
XSLT
Transformatsioonid töötavad. Kasutatud on ilusti for each-tsükleid. Viimase kahe transformatsiooni erinevus seisneb esitlusviisis. Kolmanda transformatsiooni oleks võinud teha sisuliselt põnevama, näiteks ära kasutades mõnda muud atribuuti, mis XML elemntidele lisatud, näiteks sorteerida andmeid žanri järgi vms.
Retsentsioon meeskonnalt Liisa ja Poisid
Valisime retsenseerida meeskond KRTT. KRTT oli otsustanud teha Xml-i artistide kohta. Milles kuvatakse välja artistid, nende albumid ja albumites olevad laulud.
- Vaatades esialgselt peale nende Xml-ile, tundub see üpris kena ja puhas. Pärast kiiret ülevaatamist, kasutasime ka xml validaatorit, et kindel olla, et ei oleks mingeid väikseid vigu. Xml läbis puhtalt validaatori.
Xml-i tehes on mõeldud läbi xml-i arhitektuur, mis tagab selle, et ei ole üleliigset pahna. Samuti on läbi mõeldud atribuudid mis on kasutatud elementidel. Xml-i töös oli nõutud, et elementidel oleks rohkem atribuute kui id, siin on see tingimus ilusti täidetud.
- XSD-st on natuke raske aru saada, kuid tundub, et kõik on õige. unsignedInt asemel võiks olla int kuid antud ülesande puhul ei ole see niivõrd oluline. Tundub et required atribuuti on kergelt lambist kasutatud ja seda ei ole läbi mõeldud, sest tekib vastuoluline situatsioon näiteks atribuudika yhik. Kuid vist on mõeldud koodi kirjutades nii, et tegutsemisaasta pole just kõige olulisem, aga see mis ühikus laul on, on kindalsti vajalik, kuna see määrab ära kas on tegemist tunniga või minutiga.
- XSLT on hästi koostatud. Kood teeb täpselt seda mis öeldud on ja kood lugedes saab ilusti aru mis seal tehtud on. Kasutatud on for tsükkleid, mis tagavad lühema ja mõistetavama koodi. Sama lugu on ka teise ja kolmanda xslt-ga. Kõik töötavad nii nagu peavad ja vigu ei tundu olevat. Puudu on neid ainult üks koodi osa. Kood mis muudaks Xslt Xml-iks. Kuid kui seda ignoreerida siis nende tehtud töö on üpris hea.
Rakenduse retsensioon meeskonnalt Taandarendajad
Meeskond on loonud WPF klientrakenduse enda poolt arendatud veebiteenusele. Välimuselt on tegemist väga lihtsakoelise disainiga, mis täidab aga oma eesmärgi ja võimaldab rakendust kasutada. Mis aga tõsiselt kasutusmugavust häirib, on asjaolu, et iga erinev vaade esitatakse eraldi hüpikaknana ja see on probleem, mille lahendamisega võiks WPF rakendust arendades hakkama saada (kasutada võiks nt. tab-e või sisemisi vaateid). Teisalt on see pigem viimistluse valdkond ja kasutusfunktsionaalsus on rakenduses olemas ja lahendatud. Paroolide sisestamiseks oleks võinud kasutada spetsiaalseid elemente, mis ei kuva sisestatavat parooli ekraanile.
Rakendus ise tundub olevat mõne koha pealt „katki“. Esineb olukordi, kus mõned nupud ei tööta ega kuhugi vii, samas rakenduses ringi klõpsides hakkavad need nupud mingitel hetkedel tööle. Kõige problemaatilisem koht tundub olevat kasutajate registreerimine ja sisse logimine – registreerimine annab mingitel hetkedel veateadet millele järgneb login nupu mittetöötamine. Sisse logimine ei vii ka kuskile edasi ja sellest, et sisse logimine on õnnestunud, võib aimu saada vaid muutunud sisuga vaadetest. Üritus autosid lisada lõppeb edutult – rakendus jookseb kokku ja sulgub. Sarnaseid näiteid esineb veelgi. Võib öelda, et meeskond on küll esmase rakenduse loonud ja mingisuguse funktsionaalsuse tööle saanud, aga nii rakenduse välimus/toimimine ja sisemine loogika ning veahaldus on jäänud silumata ja vajab veel tõsist tööd.
Meeskond on kasutanud arendusmustreid – kasutatud on projektides nõutud uow ja repo mustreid, suure plussina on tegeletud ka BLL kihi loomise ja DTO-de kasutamisega, WPF rakendus kasutab ära MVVM mustrit. Pöördumiseks veebiteenuse poole on tehtud serviceclass-id, mis sellise mahuga ülesande puhul ka igati piisav programmikoodi struktureerimise tase (võrrelduna näiteks DAL projektiga, mis on oluliselt keerulisema ülesehitusega). Tänu sellele on ka vaadete kood äriloogikast puhas ja selgesti hallatav.
Rakenduse kood on suures plaanis suhteliselt korralikult vormistatud. Silma hakkasid aga kaks veidrat tava programmeerimise poole pealt. Esiteks täiesti üleliigne „this.“ kasutamine väga paljudes kohtades, kus seda absoluutselt vaja ei lähe. Teiseks mõned veidrad loogikakontrollid, kus if – else kasutamise asemel on tõesuskontroll lahendatud kahe järjestikuse if kontrolliga ja hüüumärgi kasutamisega (stiilis if(istrue) ….. if (!istrue)…. Selle asemel, et kasutada if(istrue)….else….)
Kokkuvõtvalt saab öelda, et tööd on tehtud ja veebiteenuse peale klientrakendus valmis arendatud. Samas esineb rakenduse töös palju vigu ja seda just rakenduse silumise ja viimistlemise poole pealt.
Meeskonna Vertigo retsensioon klientrakendusele
Klientrakendus on lahendatud WPF-kujul ning on loodud enda loodud veebiteenusele.. Kujundusele suurt rõhku pole pandud, kasutajamugavuse poole pealt on kujunduses tegeletud väljade paigutamisega. Rakenduse loomisel on kasutatud MVVM mustrit.
Äriloogika poole pealt, oleksime tahtnud, et meeskond oleks kirjeldanud, mis on erinevate rollide võimalused. Oleksime soovinud ka meeskonnapoolset sisulisemat analüüsi, miks on seda rakendust hea kasutada ja kuidas ta abistab kasutajate tööd. Oleksime tahtnud näha ka mõnes kohas koodi kommentaarimist. Küll aga kohtas koodis mitmeid koodijuppe, mis oli välja kommenteeritud ning poldud lisatud selgitusi, miks on need alles jäetud. Võib eeldada, et koodi silumise ja viimistlemise jaoks ei jäänud meeskonnal aega. Lisaks oleks olnud hea, kui oleks olnud lisatud mõningad näidisandmed.
Sisselogimine ja registreerimine peaksid sisuliselt töötama, kuid omavad mitmeid puudujääke. Näiteks kasutaja registreerimisel läksime “Account” ja “Register”, misjärel avaneb ilusti vorm “Register”. Olenemata sellest, kas infot sisestada lahtritesse, on võimalik vajutada “Register” nuppu ning järgmisena avaneb kasutaja ees vaade “AdminView”, kus ei kuvata midagi peale menüüriba. Kindlasti oleks pidanud siia infot looma, et kasutaja saaks aru, kuhu ta on sattunud, kas registreerimine õnnestus ning mida saab edasi teha. Kuigi, kui proovida registreerida ja see ei õnnestu, siis saab minna “Cars” ja “Manage Cars” ja sealt alt autosid lisada, mis muidu peaks olema koht, kuhu ei saa ligi, kui pole sisse logitud. Segadusse ajav on ka rakenduses toimiv siis, kui sisestada registreerimisel väljadesse infot, mis ei peaks sinna käima. Näiteks, kui üritada registreerida ning sisestada lahtritesse info, mis ei ole valiidne (nt pole @-märki e-maili rea peal), siis ütleb rakendus, et “Something went wrong”, aga ometi on järgmine vaade selline, kus saab sisse logida. Registreerimisvormil on parool näha, kui seda sisestada (sisestatu ei muudeta nt tärnideks, et oleks turvalisem), mistõttu iseenesest väga hea lähenemine - sisestad parooli ja siis siestad uuesti parooli, et kindel olla, et tead, mida sisestasid - kaotab oma mõtte, kuna mõlemal korral kasutaja näeb igat sümbolit, mis ta on sisestanud.
Ebaloogiline on lahendus, et rakenduse avamisel kuvatakse esimese lehena “Cars”, kuid menüüreal on näha “Menu” all alammenüüd “Home”, millele klõpsates ilmub vaade, mille põhjal võib järeldada, et sinna peaks tekkima ettevõtte nimi ning info selle kohta. Samas on “Cars” ise alles 4. valik alammenüüna. Kui meeskond otsustas, et “Home”-leheks, mis tavapäraselt on ka esimene leht ning see, kust kasutaja alustab enda toiminguid, on leht, mis kuvab infot ettevõtte kohta, siis oleks nad pidanud üleüldiselt rakenduses ka sellest lähtuma. Vastasel juhul oleks meie meelest olnud loogilisem, et praegune “Home”-leht sobiks enda sisu poolest hästi “About”-lehe alla ning “Cars” võiks olla olemuselt “Home”-leht, kuid mitte seda nime kanda.
Kasutajal on võimalik autosid sisestada ja need lisatakse andmebaasi ning kuvatakse ka "Cars" lehel.
Küll mitte oluliselt häiriv, kuid kasutajamugavuse koha pealt oleks olnud mõnusam, kui iga vaade ei oleks avanendu eraldi aknas, mis tähendas ka seda, et rakenduse aken liikus desktopil.
Tundub, et klientrakenduses pole kasutatud võimalust kuvada veebiteenuses nõutud funktsionaalsust - teenuse kasutajate ja kasutusstatistika üle arve pidamist kasutajate lõikes. On näha, et rakenduse viimistlemisele ei jäänud palju aega. Klientrakenduses on mitmed kohad jäänud läbi mõtlemata. Kasutajale on selgusetu mitmes kohas, miks ta kuhugi tegevuste jadas satub ning, mida edasi teha. Lisaks, mõnel juhul rakenduses toodud nupud ei reageeri ning rakendust on võimalik suurt vaeva nägemata kokku jooksutada.
Kokkuvõttes, on näha töö tulemusel valminud klientrakendus omaloodud veebiteenuse peale, on nähtud omajagu vaeva. Selge on ka see, et rakendust saaks veel oma jagu lihvida ning kasutajaloogikat läbi mõelda.
Meeskonna Error405 retsensioon meeskonna KRTT veebiteenusele
Meeskond kelle valisin retsenseerimiseks on KRTT või siis nüüd KTT. Retsensioon on tehtud selle meeskonna veebiteenusele. Veebiteenuse tegemiseks otsustas meeskond kasutada ASP.NET WEB API’t. Esmapilgul tundub, et nad on selle korralikult teinud. Projekti on nad kenasti jaganud ära mitmetesse kihtidesse. Olemeid on neil piisavalt. Nõutud oli 6 aga nad on lisanud neid lausa 10 ja lisaks ka kasutajate olemid on nad siina Olemeid lähemalt uuride näen, et nad on kasutanud vähe annotatsioone. Mõnes olemis rohkem mõnes vähem ja mõnes ei ole nad neid üldse kasutanud. Selle kohapealt miinus, kuna andmebaasi efektiivseks kasutamiseks on see oluline ning nende ära jätmine võib saada kurjalt ärakasutatud nende käest kes oskavad sellele tähelepanu pöörata ehk häkkerid. Näiteks olemis „firma“ saab seal lisada lõpmata pikka firma nime mis võib omakorda andmebaasi neil kokku jooksutada. Nad on oma veebiteenuse teinud kasutades RESTful tehnoloogiat ja mitte SOAP'i. Veebiteenus neil töötab ja annab välja JSON objekte. Kuna katsetamisel oli andmebaas tühi andis ta siiski välja tühja JSON objekti. DAL kihis on kasutusele võetud repositooriumid, interface’id, ja helpersid mis väga hea. Sellega on nad teinud oma projekti paindlikumaks ja AB’st sõltumatuks. DomainBLL kihis on nad kasutanud data transfer objekte. Märkasin, et neil dto’des on kasutusel need objektid mida nende web api välja annab ja lisaks ka need, milliseid objekte see web api vastu võtab, kui ma olen nende objektide kirjeldusest õigesti aru saanud. Ausalt öeldes ei saa ma aru kas see on vajalik. Kui nad on teinud get ja post siis miks mitte sinna lisada put ja delete. See oli koht mis jäi natuke mulle arusaamatuks. Äriloogika kihis on neil välja toodu ka loogika milles nad on ära kasutanud unit of work’i. See on hea, kuna annab jällegi projektile ehk teenusele rohkem paindlikkust juurde. WebAPI controllerid on enamvähem korras. Kasutatud on Ninjecti mis on hea. Tundub, et nad ei ole Status koodidega midagi ette võtnud. Kõik tunduvad olevat generic’ud, ehk sellised millised nad uue controlleri tegemisel. See on halb kuna vigade juhtumisel on debuggimist raske teostada. Controllerites on näha vähemalt rohkem kommenteerimist. See on hea, aga ikkagi kuidagi Controllerites on ka kenasti ära kirjeldatud CRUD operatsioonid. Üks suur miinus oleks ka see kommenteerimise asi. Kui mina arendajana saaksin kätte sellise koodi kus kommentaare on vähe siis läheb ikka natuke aega, et aru saada kuidas see teenus täpsemalt toimib. Terves projektis oleks tahtnud, et koodi oleks rohkem kommenteeritud. Pannes teenus käima ja minnes sinna avalehele ja sealt edasi Help lehele siis on välja toodud kenasti need entiteid ja nende käsud mida nendega teha saab. Kuigi neid on vähem kui nende olemeid andmebaasis siis jääb mulje, et nad on nagu midagi sealt välja jäänud, aga mina seda ei tea kas see oli neil niimoodi meelega või nad lihtsalt unustasid. Võttes kasutusele abi tööriista fiddler, et nende teenust katsetada siis peab tõdema, et see neil töötab. Mina oma katsetustes sain edukalt seal andmeid sisestada ja muuta ja kustutada. Meeskond on teinud ära suure töö, et kogu see teenus käima saada. Andmebaas on neil ikka väga suur arvestades teiste meeskondade omadega. Minu silmis on neil edukalt töötav teenus ja kohad mis minus tekitasid mure kohti ongi alustuseks kommenteerimine ja dokumenteerimine. Kuna meeskonna liikmed sooviksid kindlasti tulevikus edukateks arendajateks saada siis tuleks juba varakult hakata harjutama seda kuidas koodi korralikult ja põhjalikult kommenteerida. Nii mahuka töö ülevaatamine võtab ikka parasjagu aega ja arvatavasti jäid väiksemad vead mul kahesilma vahele. Kenasti on ära kasutatud neile õpetatud teadmisi ja projekt on edukalt lõpuni viidud. Minu arvamuse kohaselt väärib see projekt kuskil 85 - 95% max tulemusest. Natuke tuunimist ja rohkem tähelepanemis nende poolt ja oleks 100% ära.
Meeskonna Error405 retsensioon meeskonna KRTT klientrakendusele
Retsenseerimiseks olen valinud meeskonna KRTT klient rakenduse. Klient rakenduse on meeskond teinud WPF-I kasutades. Projekti lahti tehes näen kohe, et meeskond on kasutanud MVVM mudelit selle täideviimisel. See annab loogilise ülesehituse ning tekitab kihid milles mudel on vaatest sõltumatu ja annab sellega lihtsamini tulevikus kavandatavaid muutusi teha ilma, et tekiks palju probleeme. Disaini poole pealt ei ole nad sellele väga suurt rõhku pannud ja selle klientrakenduse disain ei ole ka nii oluline. Oluline on see, et kas see klientrakendus ikka töötab. Koodi poolepealt on neil kõik kenasti kirjas. Ülesehituselt on nende rakendus kood lihtne ja kenasti kihtidesse jaotatud. Vaate kaustas on kõik vaated ära kirjeldatud ja hea on näha, et sellel meeskonnal on ka huumori soon arvestades seda mida nad about lehele on pannud. Ajas muigele küll. Koodi kohapealt ei oska rohkem kommenteerida kui seda, et meeskond oleks võinud koodi ka kommenteerida. Sama mure oli ka selle meeskonna teenuse koodis, et oli vähe kommenteeritud. Nüüd ei jää muud kui programm käima lasta. Tundub, et programm ei avane neil kodu vaates. Natuke vigane on ka nende erinevate vaadete vahel liikumine. Eriti häiriv on see, et kui ülevalt menüü reast valida mingi muu vaade siis aken avaneb uues asukohas kuvaril. Oletame, et kui programm on avatu ja oled liigutanud selle paremale ülesse nurka siis liikudes uude vaatesse näiteks about siis programmi aken muuda asukohta ja see on väga häiriv. Proovides registreerida, tekib uus väiksem aken mis küsib meili ja parooli ja parooli kordamist. Peale andmete sisestamist tuleb veateade mis ütleb, et midagi läks valesti. Kuid sellest pole midagi, sest isegi kui see veateade tuleb läheb programm edasi nii nagu oleksid ennast sinna registreerinud. Avaneb vaade cars kus kasutaja saab autosid lisada. Minul tekkis autode lisamisega probleem. Kui jkätsin mõne välja täitmata ja vajutasin add new siis programm viskas mul visualstudio lahti ja andis errorit. Sellised lahendused, et kõik väljad on nõutud oleks võinud lahendada nii, et programm ütleb millised väljad on vajalikud ja mis asi seal lahtris peab olema. Julgen arvata, et kuna meeskonnal läks veebiteenuse peale palju aega siis selle klientrakendusega ei jõutud lõpupoole väga tegeleda ja sellest ka selline vigane klientrakendus. Kuna rakendus minu puhul on vigane ja ei saa palju sellega teha siis kahjuks ei ole minu retsensioon sellest ka piisavalt põhjalik, ega mahukas. Ma pakun, et ilmselt on meeksonnal peale tulnud tudengi sündroom, et on alustatud veits hilja ja sellega on nad jäänud ajanappusesse ja nad ei saanud korralikult vigade parandusse oma aega panna kuna see sai otsa. Lühikese aja kohta hea töö aga oleks saanud seda kindlasti paremini teha. Pakun selle töö tulemuseks kuskil 70% maksimumist.