Az Innosmart Kft. magyarországi (budapesti) telephelyére egyedi, hagyományos és web alapú, üzleti, ügyviteli és nyilvántartási szoftverrendszerek fejlesztéséhez junior Microsoft .NET programozót keres. Feladat: - hagyományos és web alapú alkalmazások fejlesztése, karbantartása (felhasználói felület, üzleti logika, adatbázis-kezelés tervezése, programozása), - az alkalmazáshoz kapcsolódó riport készítési feladatok végrehajtása, - adatbázis műveletek és üzleti folyamtok programozása, - már meglévő alkalmazások és web alapú portál funkciók folyamatos karbantartása, továbbfejlesztése, - programozói tesztfeladatok végrehajtása, - telepítési, üzemeltetési és tesztkörnyezet előkészítése, támogatása, - programozói dokumentációk készítése (belső működés, tesztanyagok, üzemeltetés). Alkalmazási feltételek: - felsőfokú szakirányú végzettség, - Microsoft Visual Studio ismeretek (legalább 2005 és 2008-as verziók), - Microsoft .NET Framework programozási ismeretek, - C# nyelvismeret, - relációs adatbázis-kezelő ismeretek, - SQL-nyelvismeret, - középfokú angol nyelvismeret, - kiemelkedő szintű alkalmazkodó készség és rugalmasság, - önálló, fegyelmezett munkavégzési képesség, - kreativitás, pontosság, igényesség, - agilis csapatmunkában való részvételi hajlandóság. Előnyök: - Microsoft Internet Information Service (IIS) ismeretek, - szerver oldali programozási ismeretek (Windows szolgáltatások, WF, MSMQ), - webszolgáltatások fejlesztésében szerzett ismeretek (különösen WCF), - Oracle és Microsoft SQL Server relációs adatbázis-kezelő rendszer ismeretek, - szoftver architektúrális ismeretek (rétegek, azok jelentősége és kapcsolata), - szoftvertervezési minták ismerete, - UML ismeretek (legalább az alap diagramok), - HTML, XML/XSLT/XSD és CSS ismeretek. A kínálat: - érdekes munka (saját fejlesztésű, .NET alapú portálmotor és .NET alkalmazások), - programozói tudás bővítése, további gyakorlat megszerzése, - agilis csapatmunkában való részvétel, - részvétel kisebb és/vagy országos szintű, nagy egyedi projektek megvalósításában, - CRM, Webáruház és üzleti adatok, elemzések webes megvalósítása, - hagyományos üzleti, ügyviteli, technikai alkalmazások megismerése, - megegyezés szerinti bérezés. A benyújtott szakmai önéletrajz feltétlenül tartalmazza az alábbiakat: - a fejlesztői ismeretekre vonatkozó utalásokat, - az „Alkalmazási feltételek” részben látható képességek és tudások rövid ismertetését, - az „Előnyök” részben látható képességek rövid ismertetését vagy felsorolását, - az eddigi munkahelyek és beosztások rövid felsorolását (ha volt ilyen), - a korábban elvégzett programozói feladatok, munkák rövid leírását (2-3 mondatban). Jelentkezni kizárólag a fenti adatokat is tartalmazó szakmai önéletrajzzal, valamint egy .NET alapú, Visual Studio segítségével megvalósított próbafeladat eredményével lehet.
PRÓBAFELADAT A feladat egy hagyományos vastag kliens alkalmazás készítése .NET-ben, Visual Studio-val, C# nyelven. A feladatot önállóan, idegen segítség nélkül kell végrehajtani (az interjú során a megoldáshoz kapcsolódó részletkérdésekre válaszolni kell majd). 1. A próbafeladat megoldásának elbírálási szempontjai: a. Kötött feladatleírás értelmezése (önálló, kreatív gondolkodás és munkavégzés) b. A feladat megoldásakor észlelhető problémamegoldási készség, különösen a technikai (pl.: adatbázis), valamint a tervezési és fejlesztési területeken c. A választott módszerek, algoritmusok, megoldások tartalma, használhatósága d. A C# forráskódok, egyéb esetleges szkriptek szerkezete, tagoltsága e. A kódok megjegyzésekkel való ellátottsága (magyarázatok mennyisége, minősége) f. A feladat megoldását elmagyarázó rövid dokumentáció szerkezete, érthetősége Az alkalmazás külseje, szépsége az értékelésnél nem sokat számít. Mint ahogy nem cél a működési hibáktól mentes állapot elérése se, bár azért nem hátrány, ha a bíráló egy újrafordítható, működő és használható állapotot kap. 2. A próbafeladat megvalósításának minimálisan szükséges eszközei: Microsoft .NET Framework 4.0, valamint WPF vagy Silverlight (választható) Microsoft Visual Studio Express (vagy próba) verziók valamelyike Microsoft SQL Server 2008 Express Edition, vagy Oracle Express Edition, esetleg Microsoft Access A különféle ingyenes VisualStudio, SQL Server és Oracle „Express” verziók az alábbi helyekről szabadon letölthetőek: www.microsoft.com/express www.microsoft.com/express/Database www.oracle.com/us/products/database/express-edition Megjegyzés: Természetesen bármely, a pályázó birtokában lévő, és a fentiekkel egyenértékű (akár több funkciót is tartalmazó) Visual Studio, Microsoft SQL Server, Oracle vagy Access ugyanúgy megfelelő, legyen az akár próba, akár hivatalosan megvásárolt változat, hiszen a megoldáshoz lerögzített adatokat nem kell mellékelni. 3. Kérdezési lehetőségek: A feladatot jelen dokumentáció alapján kell értelmezni és elkészíteni (mindenki a legjobb tudása, illetve belátása szerint). A feladat tartalmához, megvalósításához kapcsolódó kérdést csak egy alkalommal lehet feltenni (második kérdésre már nincs lehetőség). Egyéb, tehát a feladat megvalósításához, tartalmához NEM kapcsolódó kérdéseket bármikor fel lehet tenni. A kérdéseket a 4. pontban olvasható email címre kell elküldeni. 4. A feladatot elbíráló személy részére átadandó fájlok: A teljes Visual Studio projekt könyvtár, benne a próbafeladat megoldását tartalmazó forráskódokkal, szkriptekkel, konfigurációs fájlokkal stb. Egy rövid, tömör, maximum 3 oldalas dokumentáció, mely a feladat megoldását és a beüzemeléséhez, működtetéséhez szükséges adatokat ismerteti, Egyéb, a megoldás szempontjából esetleg még szükséges fájlok (adatbázis-mentés, rögzített és napló adatok nem kellenek, de a működést befolyásoló paraméterek vagy azok leírása igen). A megoldást tartalmazó fájlokat egyetlen egy ZIP vagy RAR módszerrel tömörített önálló fájl formájában, email közvetítésével kell eljuttatni az
[email protected] címre.
5. A próbafeladat adatbázis-szerkezete: Az alkalmazás adatbázis-szerkezete Microsoft SQL Server / Transact-SQL szintaktika szerint: CREATE TABLE HD_Bejelentes ( bejelentes_azon INTEGER NOT NULL, ugyfel_kod VARCHAR(5) NOT NULL, ugyfel_nev VARCHAR(30) NOT NULL, ugyfel_telefon VARCHAR(40) NOT NULL, ugyfel_email VARCHAR(30), bejelenetes_targya VARCHAR(254), bejelentes_szovege VARCHAR(2000), bejelentes_datum SMALLDATETIME NOT NULL, PRIMARY KEY (bejelentes_azon));
A Microsoft SQL Server, Oracle (vagy Access) segítségével készíteni kell egy „HelpDesk” adatbázist, majd azon belül létre kell hozni a fentebb látható „HD_Bejelentes” adatbázis-táblát és annak oszlopait (Oracle vagy Access esetén értelemszerűen az adattípusok és függvények változhatnak). Az adatbázis létrehozás módszerét, az alkalmazható SQL-szintaktikát az SQL Server, Oracle vagy Access online módon is elérhető dokumentációja tartalmazza. 6. A próbafeladat ismertetése 6.1.
A feladat egy hagyományos, HelpDesk bejelentéseket kezelő, mini vastag kliens alkalmazás elkészítése, a korábban leírt technológia és eszközök segítségével. A felhasználói felület WPF (Windows Presentation Foundation), vagy Silverlight alapú lehet (amelyiket a pályázó választja). Az alkalmazás két fő funkcióból és három képernyőből áll: a. Nyitóképernyő a menüvel (nyomógombokkal) b. Bejelentések rögzítése funkció (önálló ablak) c. Bejelentések lekérdezése funkció (önálló ablak) Megjegyzés: A lerögzített adatokat a rögzítő funkció által adatbázisban (SQL Server, Oracle vagy Access) kell tárolni, és természetesen a lekérdezéshez onnan is kell felolvasni. A képernyők stílusa, betűtípusa, elrendezése nagyjából hasonlítson az itt látottakhoz.
6.2.
A HelpDesk bejelentőt kezelő alkalmazás
a. Nyitóképernyő:
HelpDesk bejelentés Bejelentés rögzítése Bejelentés lekérdezése Kilép
A fent látható nyitóképernyő tartalmaz egy képernyő-címet, valamint a két kiválasztható menüpontot, illetve egy kilépést biztosító nyomógombot. Az egyes menüpontokra való kattintással aktiválható a mögöttük lévő funkció (ablak), a „Kilép” gomb hatására pedig leáll az alkalmazás.
b. Bejelentést rögzítő képernyő:
HelpDesk bejelentés rögzítése Ügyfél adatok Ügyfél kód: Ügyfél név: Ügyfél telefonszám: Ügyfél email cím: Bejelentés adatok Bejelentés tárgya: Bejelentés szövege:
Rögzít
Bezár
Az egyes mezők kitöltése után a képernyőn lévő űrlap adatokat a „Rögzít” gomb megnyomásának hatására el kell tárolni a korábban ismertetett „HD_Bejelentes” adatbázistáblába (egy képernyőnyi adat egy adatbázis-sornak felel meg). Minden mezőbe csak annyi adat gépelhető be, amennyit a „HD_Bejelentes” adatabázis-tábla deklarációja megenged. Az elsődleges kulcsnak megfelelő bejelentés azonosító („HD_Bejelentes.bejelentes_azon”) automatikusan generálódjon, tehát a felhasználónak ne kelljen kézzel megadnia, és a rögzítő képernyőn ez a mező ne is látszódjon. A „Telefonszám” mező („HD_Bejelentes.ugyfel_telefon”) csak számokat, kötőjelet, zárójelet és plusz karaktereket tartalmazhat, melyet ellenőrizni is kell. Az „Ügyfél email cím” mezőben („HD_Bejelentes.ugyfel_email”) legalább egy karakternek lennie kell, de ez nem lehet sem az első, sem pedig az utolsó karakter.
„@”
A bejelentés rögzítésének dátuma („HD_Bejelentes.bejelentes_datum”) automatikusan képződjön, tehát a felhasználónak ne kelljen kézzel megadnia, és a rögzítő képernyőn ez a mező ne is látszódjon. Az értéke az aktuális napi dátumnak megfelelő legyen. A többi mező (ugyfel_kod, ugyfel_nev, bejelenetes_targya,
bejelentes_szovege) kitöltésére
nincsenek egyedi szabályok.
Hibás vagy kitöltetlen adatok esetén erre figyelmeztetni kell a felhasználót, és természetesen az adatokat nem szabad lerögzíteni az adatbázisba. Hiba esetén (a pontos hibaüzenet megjelenítése után) biztosítani kell a javítás és újbóli rögzítés lehetőségét anélkül, hogy az összes adatot újra be kellene gépelnie a felhasználónak. A „Bezár” gomb megnyomásának hatására az ablak lezárul, majd ismét a nyitóképernyő jelenik meg. Ha a bezáráskor a képernyőn lévő mezők bármelyikében van adat, akkor a bezárási művelet folytatása csak a felhasználó jóváhagyása után történhet.
Az adatok helytelensége miatt bekövetkezett hibákat még annak képernyőn való megjelenítése előtt (tehát a felhasználó tájékoztatása előtt) naplózni kell. A naplóban szerepeljen az aktuális számítógép neve, a hiba keletkezésének dátuma és ideje, a hiba megnevezése, valamint a hibás adat. A napló adatok csak szabványos, jól formázott XMLfájlokban tárolódhatnak (a formátum, tag-nevek, és tartalom megalkotása, kitalálása a pályázó feladata). Minden egyes hiba-alkalom külön-külön, önálló naplófájlba (vagyis XMLfájlba) kerüljön bele. A fájl nevében legyen benne a hiba keletkezésének dátuma és ideje, valamint egy egyedi GUID azonosító is (pl.: évhónapórapercmásodperc_guid.xml formában). Példák a naplófájl elnevezésére: 20100422091025_ bd48d617-9344-47e9-a787-b55205bb225c.xml 20100422091038_eaf1e561-f724-417e-a8a9-2c3a9405f8b9.xml A napló adatokat tartalmazó fájl helye az alkalmazás gyökérkönyvtára alatti „Log” alkönyvtár (pl.: ..\Bin\Log) legyen. A rögzítési művelet befejeztével a képernyőt törölni kell. c. Bejelentés lekérdezés képernyő:
HelpDesk bejelentések lekérdezése Azon.
Kód
Név
Telefon
Email
Tárgy
Szöveg
Dátum
Bezár
A lekérdezés során (az ablak megjelenésekor azonnal) a „HD_Bejelentes” adatbázistáblában lévő összes sort, szűrés nélkül, bejelentés azonosítóra csökkenő sorrendben meg kell jeleníteni, méghozzá a képernyőn lévő táblázatban. A táblázat 100%-ban a képernyő-ablak aktuális szélességéhez igazodjon. A sorok magassága kötött (csak egy sornyi adat lehet benne). A táblázat egyes oszlopai értelemszerűen a „HD_Bejelentés” adatbázis-táblának megfelelően kell kialakítani (a fejléc alapján az egyes oszlopnevek beazonosíthatók). Az utolsó „Dátum” oszlopba a „HD_Bejelentes” tábla „bejelentes_datum” oszlopának aktuális értéke kerül, év.hó.nap óra:perc:másodperc formátum szerint. A fejléceket középre, a numerikus adatokat jobbra, a többi adatot balra kell igazítani. A „Bezár” gomb megnyomásának hatására az ablak lezárul, majd ismét a nyitóképernyő jelenik meg (6.2./a. pont).