Proiectarea Si Implementarea Unei Aplicatii Messenger Multilingv

Proiectarea și implementarea unei aplicații messenger multilingvă

Cuprins

Cuprins

1. Introducere

2. Programare. Fundamente Teoretice

2.1 Introducere în programare

2.2 Programare orientată pe obiecte

3. Proiectarea și implementarea aplicației

3.1 Specificații

3.2 Architectura aplicației

3.2.1 Schema generală

3.2.2 Proiectare UML

3.2.3 Modul Client

3.2.4 Modul Server

3.2.5 Modul traducere automată

3.2.6 Comunicare Client-Server

3.2.7 Tehnologii folosite

4. Utilizarea aplicației. Rezultate și evaluare

4.1 Interfața grafică

4.2 Utilizare mono-lingvă

4.3 Utilizare multi-lingvă. (cu traducere automată)

4.4 Evaluarea aplicației

4.4.1 Evaluare traducere

4.4.2 Studii cu utilizatori

5. Concluzii

6. Bibliografie

1. Introducere

Din cauza dezvoltării tehnologice și economice, un număr important al activităților umanității se situează pe o scală și un orizont atât de mari, încât au depășit granițele naționale. Au apărut corporațiile multinaționale, piețele financiare globale și comunicarea între oameni a devenit tot mai complicată.

Din acest motiv, această lucrare de licență se ocupă de proiectarea și realizarea unei aplicații messenger pentru a face posibilă comunicarea între persoane care vorbesc limbi diferite.

Fiecare utilizator selectează limba cunoscută în momentul deschiderii aplicației, iar când trimite mesajele către persoana cu care comunică, aplicația traduce mesajul în mod automat.

Aplicația este scrisă în Java, un limbaj de programare foarte răspândit. Am ales acest limbaj, deoarece fiind orientat pe obiecte, unitățile care alcătuiesc un program, se apropie de modul de gândire a omului.

Această lucrare este împărțită în patru capitole:

Capitolul 2 conține noțiuni introductive despre elementele esențiale a programării.

Al treilea capitol prezintă tehnologiile și programele folosite, care au fost necesare în crearea messenger-ului.

Al patrulea capitol conține proiectarea și implementarea programului. În acest capitol am prezentat mai multe diagrame UML importante și câteva secvențe din cod.

În al cincilea capitol am prezentat utilizarea messenger-ului.

În ultimul rând am afișat concluziile și o listă cu bibliografia.

2. Programare. Fundamente Teoretice

2.1 Introducere în programare

Programele de calculator sunt constituite dintr-o serie de instrucțiuni executate de calculator. La crearea unui program trebuie avute în vedere aceste instrucțiuni pentru realizarea operațiilor dorite. Procesul de definire a instrucțiunilor executate de calculator este numit programare.

Instrucțiunile utilizate de calculator sunt așa numite grupuri 1 și 0, adică cifre binare, care sunt semnale electronice în interiorul calculatorului. Pentru programarea primelor calculatoare (în anii 1940-1950) trebuia înțeleasă modul de interpretare a diferitelor combinații 0 și 1, unde programatorii scriau toate programele utilizând cifrele binare. Acest mod de lucru a devenit incomod pentru programatori, deoarece programele au ajuns să fie din ce în ce mai mari. În acest sens cercetătorii au creat limbaje de programare care au dat acces la o exprimare mai accesibilă a instrucțiunilor pentru om.

Un limbaj de programare este un set de expresii și reguli (sau tehnici) de formulare a instrucțiunilor pentru un calculator. Acesta face posibilă programatorului specificarea în mod exact acțiunilor executate de calculator. Pentru executarea unui program scris într-un limbaj anume, există două abordări: compilarea sau interpretarea. Compilarea constă în faptul că programul-sursă este transformat de compilator în totalitate într-un program echivalent scris în limbaj, care la urmă va fi executat. La interpretare, interpretorul va lua prima instrucțiune din programul-sursă și o va transforma într-un limbaj pe care la urmă o execută, după care trece la următoarea instrucțiune.

Limbajele moderne combină aceste două abordări, adică codul sursă este compilat într-un limbaj binar numit bytecode care la rulare este interpretat de către o mașină virtuală.

2.2 Programare orientată pe obiecte

Programarea orientată pe obiecte este o paradigmă de programare care folosește obiecte și interacțiuni pentru modelarea arhitecturii unui program.

Programarea orientată pe obiect este un pas important în evoluția limbajelor de programare spre o puternică abstractizare a implementării programelor. Acesta a apărut din necesitatea exprimării problemei într-un mod natural a ființei umane. Astfel unitățile care alcătuiesc un program se apropie de modul de gândire a omului mai mult decât la modul de lucru al calculatorului. Până la apariția acestui tip de programare, programele au fost puse în aplicare cu ajutorul programelor procedurale (C, Pascal) sau în limbaje care nu oferau o modalitate de grupare a instrucțiunilor în unități logice (funcții, proceduri), ca de exemplu în cazul limbajului de asamblare (asembler).

Conceptul de bază al programării orientate pe obiecte este Clasa. Aceasta grupează datele și unitățile de prelucrare a acestora într-un modul.

Clasele sunt grupate în module, pachete, programe, etc., care vor stabili legături între ele. Legăturile prezintă relațiile care sunt stabilite între clasele sau obiectele problemei care sunt preluate din natură.

Principiile de bază a programării orientate pe obiecte sunt:

Abstractizarea – este procesul de transformare a obiectelor reale în concepte virtuale;

Încapsularea – obiectele nu pot modifica starea internă a altor obiecte în mod direct, aceste transformări pot fi făcute doar de metodele proprii ale obiectului;

Polimorfismul – reprezintă capacitatea obiectelor de a conține funcționalități diferite sub același nume. Aceeași metodă poate executa acțiuni diferite în funcție de locul în care este implementat;

Moștenirea – se pot crea noi clase, pornind de la definiții de obiecte existente. Clasele nou create au proprietăți și funcționalități similare cu clasele părinte.

3. Proiectarea și implementarea aplicației

Există o mulțime structurată de activități necesare pentru a dezvolta o aplicație, și anume: definirea specificațiilor și analiza, proiectarea și implementarea, verificarea, testarea și evoluția.

Definirea specificațiilor și analiza fac parte din procesul de stabilire a serviciilor necesare, specificarea detaliată a funcționalităților ce trebuie să fie suportate de către sistemul informatic. La sfârșitul procesului, se analizează și se realizează identificarea caracteristicilor esențiale tuturor soluțiilor corecte posibile.

Proiectarea și implementarea aplicației este un proces în care programatorii convertesc specificațiile definite într-un sistem executabil. Proiectarea în sine înseamnă realizarea unei structuri de aplicație care trebuie să rezolve specificațiile. Iar implementarea este translatarea acestei structuri de aplicație într-o aplicație executabilă.

În etapa de testare se validează faptul că implementarea respectă specificațiile și cerințele clientului, presupune execuția sistemului într-un caz de utilizare cu date reale.

Ultima etapă de dezvoltare este evoluția aplicației, care a devenit tot mai importantă în ultima vreme. Cerințele se schimbă foarte repede și aplicația trebuie să fie cât mai flexibilă față de aceste schimbări. Chiar dacă a existat o separare între dezvoltare și evoluție, aceasta este tot mai slabă, deoarece tot mai puține aplicații sunt complet noi.

Figura 01 reprezintă modelul de dezvoltare a unei aplicații.

3.1 Specificații

Aplicația prezentată în această lucrare este un chat care poate ușura comunicarea între persoane care vorbesc limbi diferite.

Limba utilizată în intermediul aplicației este selectată înainte de autentificare și este cunoscut de partenerii de comunicare pe tot parcursul sesiunii. Utilizatorul are posibilitatea de a schimba limba folosită pentru comunicare după deconectare.

Autentificarea nu poate fi realizată fără înregistrarea utilizatorului, această funcționalitate fiind disponibilă în fereastra de autentificare.

După autentificare, clientul primește lista utilizatorilor conectați la sistem. Din această listă poate selecta partenerul de convorbire.

Fereastra de comunicare cu partenerul selectat, afișează limba aleasă de ambii utilizatori care participă la convorbire.

Prin intermediul acestei ferestre se realizează comunicarea în timp real, mesajele fiind traduse și afișate atât în limba selectată de fiecare ulitizator, cât și în limba originală în care mesajul a fost trimis.

3.2 Arhitectura aplicației

În acest capitol am să prezint faza de proiectare și implementare a aplicației. El are în vedere activitatea de convertire a specificațiilor și cerințelor sistemului într-un sistem executabil. Proiectarea și implementarea unei aplicații sunt strâns legate și deseori se suprapun.

ToDo – Ceva general despre fiecare subcapitol în parte.

3.2.1 Schema generală

Figura 02 prezintă pe scurt modul de funcționare a aplicației.

Utilizatorii selectează limba în care doresc să desfășoare convorbirea pe parcursul sesiunii de comunicare, în momentul autentificării. Partenerul de convorbire astfel, va fi informat pe tot parcursul sesiunii, despre limba selectată de restul ultizatorilor.

În acest exemplu concret, după autentificare începe convorbirea între cei doi utilizatori. Primul utilizator trimite un mesaj în limba română către partenerul de discuții. Pentru el totul este transparent, dar în spate, mesajul – care pe lângă textul care trebuie tradus, conține numele utilizatorului expeditor și al utilizatorului destinatar – ajunge la server.

Server-ul trimite mai departe informațiile – textul și limba în care acesta trebuie tradus (engleză) – către serviciul nor de traducere automată.

Când traducerea s-a desfășurat, serviciul de nor trimite mesajul tradus la server, iar acesta redirectează, pe baza numelui de utilizator destinatar, textul original și cel tradus tradus către utilizatorul numărul 2.

Când utilizatorul 2 răspunde la mesaj, totul se întămplă în același mod, doar în direcția inversă (traducere din engleză în română).

3.2.2 Proiectare UML

Limbajul de modelare (UML – The Unified Modeling Language) reprezintă un sprijin semnificativ în analiza și proiectarea aplicațiilor software, deoarece exprimă grafic structura și comportamentul aplicației care urmează să fie implementată.

Acest mod de reprezentare ajută la înțelegerea funcționalităților, este un limbaj potrivit pentru specificarea, vizualizarea, construirea și documentarea software.

Modelarea se realizează prin combinarea notațiilor UML în cadrul elementelor principale ale acestora, numite diagrame.

Aceste diagrame sunt prezentate și explicate în foarte multe moduri, deoarece, și UML-ul – în concordanță cu toate sistemele informatice – continuă să fie actualizat și îmbunătățit în funcție de necesitățile pieței.

Cea mai răspândită reprezentare, împarte diagramele în două categorii mari, și anume: diagrame care reprezintă informații de structură sau de comportament. Cele de comportament pot conține și informații legate de interacțiune cu alte elemente ale sistemului.

Figura 03 prezintă diagramele UML cele mai folosite după modalitatea de reprezentare spicificată mai sus.

La proiectarea acestei aplicații am utilizat 4 tipuri de diagrame UML (folosind programul StarUML 2.4.0:

diagrama cazurilor de utilizare (use case) prezintă funcțiile sistemului din punct de vedere al utilizatorului, având ca arce relațiile dintre grafurile de actori și cazurile de utilizare;

diagrama de secvență arată șirul evenimentelor care apar în timpul unei interacțiuni a utilizatorului cu sistemul;

diagrama de activități prezintă comportamentul unei operațiuni în termeni de acțiuni, acestea fiind cazuri particulare ale diagramelor de stare. Acestea însă nu arată un flux de control bazat pe evenimente, ci o procedură, unde toate tranzițiile sau o mare parte a lor se efectuează automat, la terminarea acțiunilor în interiorul stării;

diagrama de clase reprezintă structura statică în termeni de clase și relații, aceste diagrame fiind grafuri având ca noduri în general clase, dar putând conține și pachete, interfețe sau chiar obiecte, iar ca arce relațiile dintre aceste elemente.

Figura 04 reprezintă așa numita diagramă use case sau diagrama cazurilor de utilizare și ilustrează modurile de utilizare a sistemului. Utilizatorul se poate înregistra și autentifica la sistem, are posibilitatea de a trimite și a primi mesaje, după care se poate deconecta.

În timpul înregistrării, serverul verifică validitatea datelor în concordanță cu conținutul bazei de date (de exemplu, nume de utilizator existent), după care – în cazul în care datele sunt valide – salvează informațiile în baza de date.

Autentificarea se poate face doar după o înregistrare reușită cu datele de autentificare stabilite în urma înregistrării. În mod asemănător cu procedura de înregistrare, și în cazul autentificării se verifică corectitudinea datelor în baza de date. Dacă numele de utilizator sau parola nu corespunde, autentificarea nu se poate efectua.

Este important de menționat faptul că, limba folosită pe tot parcursul sesiunii de convorbire, se selectează înainte de autentificare.

După o autentificare reușită, utilizatorii pot trimite și recepționa mesaje. Orice mesaj, prima dată va fi transmis către server împreună cu numele de utilizator destinatar. Serverul – precum la autentificare toți utilizatorii au selectat limba în care doresc să comunice – cunoaște limba folosită de destinatar și cere de la API-ul Translator traducerea mesajului în limba respectivă.

Mesajul tradus, este trimis către destinatar împreună cu mesajul original. Acest lucru este necesar, deoarece nu toate cuvintele existente au varianta corespunzătoare în baza de date a translatorului și se pot crea confuzii.

Ultima funcționalitate prezentată în diagramă este deconectarea. Utilizatorul poate părăsi chat-ul prin apăsarea butonului Sign-Out.

Pentru cazurile mai complexe, cum ar fi înregistrarea, autentificarea și trimitea/recepționarea mesajelor am pregătit câte o diagramă de secvență (sequence diagram), care are ca scop prezentarea șirului de evenimente care apar în timpul interacțiunii utilizatorului cu sistemul.

Diagrama de mai sus reprezintă procesul de înregistrare al unui utilizator (fig. 05). După deschiderea aplicației și înainte de autentificare, utilizatorul apasă butonul de înregistrare și se deschide fereastra cu formularul de înregistrare. Câmpurile care trebuiesc completate în mod obligatoriu de către client sunt: nume utilizator, parolă, nume, prenume și adresă de e-mail. Numărul de telefon, țara și data nașterii sunt câmpuri opționale.

Majoritatea formularelor de înregistrare, conțin încă două câmpuri care au un rol semnificativ în selectarea numelui de utilizator și parolei, deoarece obligă utilizatorul să introducă același nume de utilizator și aceeași parolă de două ori. Astfel șansele de a introduce o informație nedorită scad. Pentru această dublă-verificare se folosesc câmpurile confirmare nume utilizator și confirmare parolă.

Datele completate sunt verificate parțial direct de către modulul client (câmpurile obligatorii, reverificarea mai sus menționată și formatul adresei de e-mail), respectiv de către server în baza de date (nume utilizator existent).

După terminarea procesului de verificare, în caz de eșec, toate greșelile constate sunt afișate într-un singur mesaj și utilizatorul este rugat să corecteze datele necesare înregistrării.

În cazul în care toate informațiile introduse sunt corecte, modulul client trimite datele completate către server, care încearcă salvarea lor în baza de date.

Având ca premisă faptul că baza de date există, conexiunea între server și bază de date este activă, datele se vor salva și utilizatorul va fi informat cum că înregistrarea s-a făcut cu succes. În diagrama de mai sus este prezentat și cazul contrar.

A doua diagramă de secvență prezintă procesul de autentificare (fig. 06). După deschiderea aplicației, apare fereastra de autentificare. Presupunând că utilizatorul a trecut de procesul de înregistrare, el poate introduce numele lui de utilizator și parola selectată anterior.

Asemănător cu validarea din procesul de înregistrare, unele informații sunt verificate doar de către modulul client: utilizatorul trebuie să completeze în mod obligatoriu câmpurile nume utilizator și parolă, iar limba trebuie să fie selectată dintr-o listă.

Înainte de autentificare, serverul verifică în baza de date numele de utilizator și parola introduse de client. Dacă informațiile introduse se găsesc printre înregistrările bazei de date, utilizatorul se poate conecta.

În cazul în care condițiile de mai sus nu sunt îndeplinite (câmpuri obligatorii necompletate sau date de autentificare incorecte), serverul trimite un mesaj de eroare către client, el având posibilitatea de a corecta datele.

Dacă utilizatorul a introdus toate datele corect și a selectat o limbă va primi mesajul de autentificare cu succes de la server și va apare fereastra principală de WWM.

Ultima diagramă de secvență prezintă procesul de convorbire (fig. 07). În cadrul ferestrei principale, din lista utilizatorilor conectați, Utilizatorul 1 selectează partenerul de comunicare și apare fereastra de convorbire pentru cei doi. După introducerea textului și apăsarea butonului Trimite, Utilizatorul 1 trimite mesajul către server împreună cu numele utilizatorului destinatar (Utilizator 2).

După căutarea limbii selectate de către Utilizatorul 2 în structurile interne, server-ul înaintează translatorului textul, împreună cu limba în care acesta trebuie tradus.

Translatorul efectuează traducerea și răspunde server-ului. Mesajul original și cel tradus va fi transmis, pe baza numelui de utilizator destinatar, către fereastra de convorbire aferentă Utilizatorul 2.

După ce mesajele apar în fereastra de convorbire, Utilizatorul 2 are posibilitatea de a răspunde în timp real, iar procedura va fi identică și în direcție opusă.

După diagramele de secvență am pregătit o diagramă de activitate (activity diagram), care arată fluxul de lucru în cadrul aplicației (fig. 08). Acest tip de diagramă este caracterizat prin încadrarea activităților aplicației între punctele start și stop.

În fereastra de autentificare trebuie luată decizia, dacă utilizatorul este unul nou sau a fost înregistrat deja. În cazul în care este vorba de un utilizator nou, în prima etapă trebuie să se înregistreze; iar în cazul în care este vorba de un utilizator înregistrat, acesta cunoaște numele de utilizator și parola și se poate autentifica. În urma completării incorecte apare un mesaj de eroare, iar în caz contrar se poate desfășura autentificarea.

După o autentificare cu succes, utilizatorul poate alege o persoană din lista utilizatorilor conectați la sistem și se va începe convorbirea între cei doi.

În urma trimiterii mesajului de expeditor către destinatar, server-ul verifică dacă convorbirea este multi- sau mono-lingvă. În cazul convorbirii mono-lingve mesajul nu trebuie tradus și va apare direct în fereastra de convorbire a utilizatorului destinatar. Dacă convorbirea este multi-lingvă, serverul trimite textul care trebuie tradus la MS Translator API și așteaptă răspunsul. Mesajul tradus ajunge la server, după care se transmite utilizatorului destinatar.

Partenerul de discuții are posibilitatea de a răspunde și în acest caz, acțiunile se vor desfășura în același mod, doar în direcția inversă.

În cazul în care un client nu mai dorește să comunice cu utilizatorii conectați la sistem se poate deconecta și fluxul de lucru se sfârșește.

În continuare am să prezint structura claselor folosite în cadrul aplicației cu ajutorul diagramelor de clase (class diagram).

Întregul program este împărțit în 7 mari pachete. Fiecare pachet conține mai multe clase la rîndul lui, astfel voi prezenta mai detaliat doar câteva dintre acestea, iar despre celelalte clase voi vorbi în alt capitol.

Un class diagramm ajută la identificarea unei anumite clase. Class diagramm-ul conține informații imortante despre o anumită clasă, ca de exemplu numele clasei, variabilele, metodele și vizibilitatea datelor. Vizibilitatea datelor poate fi de trei feluri:

privat, care se poate vedea doar în intermediul clasei

public, care se poate vedea de oriunde

protected, care înseamnă că va fi public prin moștenire, dar în principiu este privat.

În următoarele voi prezenta clasele și relațiile dintre acestea (fig. 09). Clasele se pot grupa în două mari categorii, stanga este server side-ul , care nu este vizibil pentru clienți și mare parte se rulează în fundal. Dreapta este client side-ul, de obicei GUI-ul, cu care se întâlnesc utilizatorii, dar multe lucruri se rulează în fundal și în acest caz. Se poate observa că sunt două clase care nu se poate lega niciunde. Acestea conțin constantele, clasa care este pe partea server conține părți din request și response. Ceea ce se găsește în partea de client conține constantele care sunt setate ca și mesajele de informație, atunci când greșește clientul în timpul înregistrării sau autentificării.

În următoarele subcapitole voi prezenta mai detaliat ServerSide-ul și Client-Side-ul separat.

3.2.3 Modul Client

Pentru o bună funcționare a messenger-ului pe fiecare calculator este nevoie de împărțirea sarcinii între client și server. Introducerea și afișarea datelor nu necesită o mare performanță. Menținerea diferitelor relații precum și stocarea și prelucrarea datelor se desfășoară de obicei pe server, în anumite cazuri serverul și clientul poate fi pe același calculator.

În acest subcapitol voi prezenta modulul client. Acest modul conține toate acele clase care sunt necesare la interfața grafică (fig. 10), iar în afară de acesta conține acele clase care lucrează în fundal pentru o bună funcționare a relației între client și server.

Pe imagine se poate observa că avem o clasă principală, care se rulează în fundal, acesta fiind ClientSideCommunicator-ul. Acesta conține mai multe metode importante, care au ca scop crearea și menținerea relației între client și server. În afară de acest lucru mai sunt prezente metode care servesc la înregistrare, autentificare/deconectare și trimiterea mesajelor.

Clasa MessengerMainScreen conține fereastra principală a WWM, acea fereastră care va apare după momentul autentificării. La această clasă se alătură încă două clase care se vor rula în fundal. Una dintre acestea este MessageReceiverThread-ul, iar cealaltă este AccountForList-ul.

Rolul MessageReceiverThread-ului este de a construi un fir de execuție cu ajutorul căruia se vor circula mesajele între utilizatori. Atunci când primul utilizator va trimite mesajul la al doilea, pe acest fir se va rula mesajul la al doilea utilizator până în momentul în care va apare pe fereastra MessengerDialogScreen.

O altă clasă este AccountForList, scopul căreia îi apare deja și în denumire. Această clasă caută toți acei utilizatori care sunt online și ea va afișa în lista care este în MessengerDialogScreen pe toți utilizatorii care sunt activi. Această listă trebuie actualizată, tocmai din acest motiv atunci când un utilizator va ieși din program, iar altul se va autentifica, aceste modificări vor apare imediat.

3.2.4 Modul Server

Cum menționasem înainte server-ul creează relația între clienți și trimite mesajul la MS Translator Api, pentru ca acesta să îl traducă pe limba cerută. Serverul prelucrează datele clientului și le salvează în baza de date.

Acest modul cuprinde acele clase, care sunt necesare la funcționarea messengerului (fig. 11). Fără existența acestor clase modulul client nici nu ar porni. Se poate observa că și în acest caz clasele sunt legate una de alta. Toate se vor porni prin intermediul ServerSideCommunicator. Acesta cuprinde metodele care pornesc și opresc serverul. După pornire el va pregăti Client Socket-ul și va aștepta conectarea clientului.

O clasă foarte importantă reprezintă ManageClientThread-ul, care va crea separat un fir de execuție pentru fiecare utilizator conectat în parte. Pe acest fir se va rula autentificarea și ieșire utilizatorului din program, pe când și mesajele primite al acestuia.

Această clasă conține o metodă importantă, care o va lega cu clasa MySQLConnector, care crează relația între server și baza de date. De asemenea conține metode prin intermediul cărora clientul se va putea înregistra în sistem, iar mai târziu își va poate verifica datele personale, ca de exemplu în momentul autentificării.

La clasa ManageClientThread se leagă o altă clasă importantă, SingletonHashMap, care este utilizat pentru restricționarea numărului de instanțieri ale unei clase la un singur obiect. Această clasă crează o listă care va afișa toți utilizatorii online.

Pe partea server sunt prezente două clase, de care n-am vorbit până în acest moment. Prima este Account-ul, care conține datele utilizatorilor, iar a doua este MSTransaltor-ul, care va căuta în fundal limbile folosite de către utilizatori și va traduce mesajele pe limba solicitată, după ce îl va transmite la server, care va trimite mai departe la utilizator mesajul tradus.

3.2.5 Modul traducere automată

Microsoft Translator API este un serviciu de nor de traducere automată care conține mai multe limbi peste 95% din lume. Microsoft Translator API poate fi folosit pentru a dezvolta aplicații, web site-uri și instrumente, sau orice soluție care necesită un sprijin multilingvă.

Microsoft Translator este o soluție dovedită, scalabilă și personalizabilă pentru o traducere automată. Se poate integra traducerea în web, desktop sau aplicații mobile, MS Translator API oferă o funcționalitate bogată pentru orice dezvoltator, are o gamă largă de interfețe: AJAX, HTTP, SOAP, OData și traducător Web Widget. Figura 12 reprezintă un sistem de traducere automată.

Sisteme de traducere automată, sunt aplicații sau servicii online care utilizează tehnologia “machine-learning” pentru a traduce o cantitate mare de text la și de la oricare dintre limbile lor acceptate. Deși conceptul și interfețele pentru utilizarea acestor sisteme sunt relativ simple, știința și tehnologia în spatele lor sunt extrem de complexe și aduc împreună mai multe tehnologii de vârf, cum ar fi machine-learning, big data, lingvistică, cloud computing și web API-uri.

Serviciul traduce o "sursă" de text dintr-o limbă într-o altă limbă "țintă". Micrisift Translator web service poate fi utilizat în web sau aplicații pentru clienți pe orice platformă și orice sistem de operare pentru a dezvolta traducerea limbii și alte operațiuni legate de limbă, ca și detectarea limbii, text to speech sau dicționar.

3.2.6 Comunicare Client-Server

La baza majorității aplicațiilor de rețea stă arhitectura Client-Server (fig. 13). Aceasta presupune un mod de implementare distribuită a aplicațiilor destinate lucrului în rețea: există doi actori implicați în procesul de comunicație precum și un set comun de reguli.

Protocolul reprezintă un set de reguli care sunt cunoscute și aplicate de actorii implicați în procesul de comunicare.

Și eu am creat un protocol pe care îl voi prezenta în acest capitol.

Clientul și serverul folosește același mediu de comunicație, mai precis un canal de comunicație care permite circulația informației de la server către client și invers. Acest canal de comunicație este rețeaua.

Pentru a putea prezenta propriul protocol în primul rând aș vrea să prezint clasa care conține părțile cererii (request-ului) și a răspunsului (response). (fig. 14)

Pe imaginea de mai sus se poate vedea COMMUNICATION_HOST și COMMUNICATION_PORT care cuprinde IP-ul serverului și numărul Port lui. În al treilea rând MAX_CONNECTION_NUMBER înseamnă că numai 10 utilizatori pot fi online în același timp.

De la al patrulea rând încep părțile mesajelor request și response. TAG, FIELD și ITEM_SEPARATOR ajută la împărțirea protocolului pe secțiuni mai mici. MSG_TYPE_REQUEST sau MSG_TYPE_RESPONSE conține prima parte a unei cereri (request) sau a unui răspuns (response), ceea ce arată dacă în cazul respective este vorba de o cerere de login sau logout, sau dacă este vorba de un răspuns. Cu ajutorul MSG_TYPE_SEND_MESSAGE sau MSG_TYPE_READ_MESSAGE se poate urmări dacă mesajul este trimis în momentul respectiv sau doar atunci se va primi. Părțile USERNAME, PASSWORD, FIRSTNAME, LASTNAME, PHONE, EMAIL, COUNTRY, BIRTHDATE sunt utilizate în momentul înregistrării. Serverul poate procesa și salva datele personale al utilizatorului în baza de date doar pe baza acestora. LANGUAGE-ul este folosit în momentul autentificării, pe când FROM și TO ajută comunicarea eficientă între utilizatori.

Pentru a fi vizibil cum arată în messenger un request după protocolul creat de mine, m-am înregistrat cu datele mele, ceea ce voi prezenta prin intermediul unui fragment de cod. (fig. 15)

.

Primul rând al acestui fragment de cod este “Public String Register (String username, String password, String firstname, String lastname, String phone, String email, String country, String date)”, care conține toate datele completate de utilizator în fereastra de înregistrare. Al doilea rând “if(isConnected())” verifică dacă utilizatorul este conectat la server și la baza de date, iar în cazul în care este conectat se va pregăti un request care arată în felul următor: REQ_REG-username-password-firstname-lastname-phone-email-country-date. Următorul mare String va muta toate datele la locul lor și adaugă liniuța de separare. Ultimul rând „output.writeUTF(requestReq)” va scrie output-ul, care se va trimite la server. Dacă totul merge bine atunci requestReq-ul trebuie să conțină după protocolul meu request-ul cu datele corecte.

Fig. 16 confirma funcționarea corectă a codului mai sus menționat, deoarece requestReq-ul conține următorul rând: REQ_REG – majorzsolt – parola – Zsolt – Major – +(40) 754 / 871.269 – [anonimizat] – Romania – 15.01.1993.

3.2.7 Tehnologii folosite

3.2.7.1 Java. Caracteristicile limbajului

Java este un limbaj de programare orientat pe obiecte. Acest limbaj s-a înființat în anul 1991, când compania Sun Microsystem (în zilele noastre filială Oracle) a finanțat un proiect, numit Green, condus de James Gosling.

Caracteristicile limbajului Java:

este un limbaj compilat și interpretat. Limbajul este compilat dacă programul scris în acel limbajul de programare este tradus într-un cod pe care un calculator îl poate executa mai ușor. De asemenea, putem vorbi de un limbaj interpretat dacă instrucțiunile unui program sunt efectuate linie cu linie.

este un limbaj independent de platformă. În momentul instalării limbajului Java, va fi creat o mașină virtuală Java care are drept țintă traducerea instrucțiunilor unui byte code Java în instrucțiuni-mașină pentru platforma curentă. Astfel fișierele pot fi copiate și implementate pe orice platformă.

este un limbaj orientat pe obiecte. Este o parte importantă a limbajului Java. Limbajul Java pune în evidență toate aspectele legate de programare orientată pe obiecte, mai exact: trimite parametri, încapsulare, clase, biblioteci, moștenire și modificatori de acces.

este un limbaj concurent. Concurența (multiheading) – este abilitatea unui program de a executa mai multe secvențe de cod deodată. O secvență de cod în limbajul Java se numește fir de execuție (thread).

este un limbaj distribuit. Java permite folosirea obiectelor locale și la distanță, astfel putem afirma că este distribuit. Respectă standarul IEEE (Institute of Electrical and Electronics Engineers) pentru sructurile de date, ca de exemplu folosirea întregilor, numerelor în virgulă flotantă și a șirurilor de caractere. Java se poate utiliza în aplicații de rețea, fiindcă el respectă protocolele de rețea, cum ar fi FTP, HTTP, SOAP, etc.

este un limbaj performant. Are posibilitatea să lucreze cu fire de execuție multiple și astfel este capabil să execute un byte code aproape la fel de repede ca pe un cod compilat. Un program Java poate să aștepte citirea unor date, în timp ce un alt fir de execuție poate aloca sau elibera memoria necesară programului.

este un limbaj dinamic și robust. Java este dinamic, deoarece întârzie până la momentul execuției alocarea obiectelor și legarea claselor. Astfel se evită erorile de alocare, chiar dacă mediul s-a modificat de la ultima compilare a programului. Java este un limbaj robust, fiindcă a fost eliminată utilizarea pointerilor, care a fost generatoarea de erori în alte limbaje de programare. Java verifică memoria dinamic, înainte de alocare.

este un limbaj sigur. Java alocă memoria doar la execuție și nu folosește pointeri, nu poate accesa memoria heap, stack sau elte secțiuni protejate de memorie. Înainte de executare, programul verifică dacă este un cod valid Java, prin intermediul cercetării accesului la date.

Limbajul Java poate fi instalat pe calculatoare cu diverse sisteme de operare, cum ar fi Windows sau Linux. Un program Java nu se execută direct de către microprocesor, ci folosește o mașină virtuală (Java Virtual Machine – JVM).

Pentru crearea și editarea programului Java se poate utiliza orice editor de texte, dar totuși este recomandat folosirea unui editor specializat, pentru că acestea reduc semnificativ timpul de dezvoltare a aplicațiilor. Unele dintre cele mai importante medii de programare pentru programul Java este Eclipse și NetBeans.

3.2.7.2 Eclipse

În cazul utilizării unui editor de text simplu, dezvoltarea aplicațiilor complexe Java pot deveni foarte dificile. În aceste condiții programatorul trebuie să aleagă și să instaleze o aplicație care să-l ajute în dezvoltarea aplicațiilor. O astfel de aplicație poartă numele de IDE (Integrated Development Enviroment).

Un mediu de dezvoltare (IDE) este un set de programe care ajută programatorul în scrierea de alte programe. Un mediu de dezvoltare combină pașii necesari creării unui program (ex.: editarea codului sursă, compilare, rulare, depanare) într-un singru soft, care oferă o interfață cu utilizatorul grafică, prietenoasă.

Eclipse este un mediu de dezvoltare open-source scris preponderent în Java. Acesta este folosit pentru dezvoltarea aplicațiilor Java. Eclipse cuprinde o mașină virtuală și un set de funcționalități de bază, la care se pot adăuga ulterior diverse unelte de dezvoltare sub forma unor plugin-uri. Mediul de prezentare pentru Java este prezentată în figura 17.

3.2.7.3 XAMPP

Xampp este un pachet de software și open source cross-platform (rulare identică pe platforme diferite) folosit pentru crearea în local a paginilor web dinamice. Pachetul interpretează scripturi scrise în limbajele PHP și PERL, constând în principal din server de web Apache. După instalarea pachetului de aplicații trebuie desfășurate unele configurări pentru o mai bună securitate, pentru a putea fi utilizat pe servere.

XAMPP a fost creat pentru a pune la dispoziția dezvoltatorilor un isntrument eficient de testare. Pachetul de aplicații va da posbilitatea unui comportament de server conectat la Internet, astfel permițând testarea aplicațiilor scrise înainte de a le copia pe serverul firmei care va deține produsul software realizat.

Caracteristicile principale sunt:

este un server web pentru folosirea în local sau a deține site-uri web;

instalare Apache, MySQL, PHP, Perl, phpMyAdmin, FileZilla FTP Server, etc.;

este stabil, sigur, rapid și eficient;

are o interfață simplă și intuitivă;

este o aplicație ușor de folosit.

Interfața XAMPP este prezentată în figura 18.

3.2.7.4 Baze de date. MySQL

Baza de date este o colecție de date, creată și menținută computerizat, pentru prelucrarea datelor în contextul unui set de aplicații. Prelucrarea datelor constă din operațiuni de culegere, memorare, organizare, regăsire, prelucrare și administrare a unui volum mare de date.

Arhitectura unei baze de date reprezintă modul de organizare a datelor, între calculatorul care operează asupra datelor sub forma de biți și utilizatorul bazelor de date. Nivelele de independență și de abstractizare a datelor sunt caracteristice arhitecturii unei baze de date.

Pentru asigurarea independenței datelor se impune adoptarea unei arhitecturi organizate pe cel puțin trei nivele. În funcție de nivelul de abstractizare se pot identifica următoarele nivele (figura 19 reprezintă arhitectura unei baze de date):

nivelul intern (baza de date fizică);

nivelul coneptual (modelul conceptual sau schema conceptuală);

nivelul extern (modelul extern, subschemă, vedere).

Nivelul intern, numit și baza de date fizică este o colecție de fișiere care conține date fizice la care sunt adăugate diverse structuri auxiliare care asigură accesul operativ la aceste date. Baza de date fizică este prezentă în memoria permanentă a calculatorului. Modul de organizare al acesteia depinde de configurația echipamentelor hardware care suportă baza de date și sistemul de operare.

Modelul conceptual constă din descrierea structurii logice a datelor în baza de date. Fiecare bază de date are un model conceptual propriu prin care sunt numite toate unitățile logice și legăturile dintre acestea. Acest model integrează viziunile utilizatorilor asupra datelor și aminește ce poate face parte din baza de date și ce anume nu poate fi memorat de aceasta.

Modelul extern poate fi privit ca o descriere a bazei de date, care corespunde fiecărui utilizator în parte. Acest model cuprinde o parte a unităților logice din modelul conceptual, la care se mai adaugă un număr de unități virtuale care nu au corepondent în baza de date fizică.

Conceptul de vedere se definește la nivel extern, ca fiind o viziune individualizată și simplificată asupra bazei de date, corespunzând unui anumit utilizator sau grup de utilizatori.

În cadrul unei baze de date transformările care definesc interfața între două nivele succesive se desfășoară prin trecerea de la un nivel la altul.

Un sistem de gestionare a bazelor de date (SGBD) este un software specializat în stocarea și prelucrarea unui volum mare de date. Pentru relizarea obiectivului, un SGBD utilizează toate nivelele de abstractizare ale bazei de date și toate interfețele dintre acestea.

Cele mai importante avantaje sunt:

dacă fiecare aplicație lucrează cu fișierele proprii este posibil ca aceeași date să apară de mai multe ori în fișiere diferite;

duplicarea datelor în fișiere poate cauza probleme la actualizare;

partajarea datelor – mai multe aplicații utilizează același fișier;

introducerea standardelor oferă posibilitatea transferului de date de la o bază de date la alta;

datele se consideră corecte dacă ele sunt consistente și valide prin proceduri specifice aplicației.

MySQL este un sistem de gestiune a bazelor de date relaționale foarte rapid. Serverul MySQL controlează accesul la datele utilizatorului pentru posibilitatea utilizării acestora simultan de către mai mulți utilizatori și pentru a oferi un acces rapid la ele, dar și pentru a garanta faptul că au acces la ele doar utilizatorii autorizați. Astfel, MySQL se poate numi un server multiuser (mai mulți utilizatori) și multithread (mai multe fire de execuție).

SQL (Structured Query Language) este limbajul de interogare a bazelor de date utilizat din toată lumea. Este limbajul standard pentru accesarea sistemelor de gestiune a bazelor de date relaționale (SGBDR), adică arhitectura client-server (fig. 20). Client-server este utilizat în sisteme de baze de date cum ar fi MySQL, Oracle, Microsoft SQL Server, etc.

Serverul MySQL ”așteaptă” posibilele cereri de conexiune ale clienților. Prin client MySQL înțelege orice aplicație capabilă să trimită interogări serverului MySQL.

MySQL are multe puncte forte, printre care:

performanță ridicată, adică MySQL este foarte rapid;

cost scăzut, este disponibil gratuit sub o licență Open Source sau la un preț mic sub o licență comercială dacă aceasta este necesară pentru aplicația;

ușurință în configurare și învățare, majoritatea bazelor de date moderne utilizează SQL. Deasemnea, MySQL este mai ușor de configurat decât multe produse asemănătoare;

portabilitate, MySQL poate fi folosit pe multe sisteme de operare;

disponibilitatea codului sursă, se poate modifica la codul sursă al bazei de date.

Există numeroase interfețe de acces la bazele de date MySQL din diverse limbaje și medii de programare. Între acestea se pot aminti aplicația phpMyAdmin, care poate fi utilizat cu mare eficiență și ușurință, pentru gestionarea bazelor de date, a tabelelor și a drepturilor de acces, dar și pentru execuția instrucțiunilor SQL. Programatorul își poate crea propriile interfețe de acces la bazele de date MySQL.

4. Utilizarea aplicației. Rezultate și evaluare

4.1 Interfața grafică

Interfața grafică (Graphical User Interface – GUI) este o interfață cu utilizatorul bazată pe un sistem de afișaj care utilizează elemente grafice. Pentru prezentarea informațiilor și acțiunilor disponibile, un GUI oferă pictograme și indicatori vizuali, în contrast cu interfețele bazate pe text, care oferă doar nume de comenzi sau navigația text.

Pentru crearea relației între utilizator și messenger, am pregătit mai multe ferestre pe care le voi prezenta în următorul capitol. În primul rând class diagram-urile care le aparțin, iar după aceea fereastra în sine.

Prima fereastră, AdminScreen, este importantă deoarece aceasta va porni serverul și relația între client și acesta. În cazul în care acest lucru nu funcționează, nici clientul nu se va putea conecta.

Fereastra în sine se poate identifica în fig. 21. Se observă un buton de pornire, START, pe partea stângă a ferestrei, iar pe partea dreaptă se vede un server icon. După apăsarea butonului START serverul va porni, iar butonul se va transforma în STOP. După ce Administratorul pornește server-ul, acesta va aștepta conectarea clienților.

Pe bara de titlu se poate citi descrierea de „WWM Admin”, care provine din prescurtarea World Wide Messenger, iar Admin-ul indică faptul că interfața este pentru Administrator.

AdminScreen-ul nu este vizibil pentru utilizatori, fiindcă aparține doar pe Server Side. Clienții se pot întâlni numai cu interfețe grafice din ClientSide.

Prima fereastră de pe ClientSide este LoginScreen-ul, se poate observa în fig. 22. Această fereastră se poate împărți în două. Partea stângă a ferestrei, unde apare o iconiță și butonul SingUp, prin intermediul căruia se poate înregistra, iar partea dreaptă a ferestrei unde trebuie alese datele de autentificare și clientul poate să aleagă una din aproape toate limbile a lumii. Astfel este îndeajuns să-și aleagă limba cunoscută/utilizată, iar mesajul pe care îl va trimite va fi tradus și primit de către prietenul lui în doar câteva clipe pe limba aleasă de acesta.

Utilizatorul se poate întâlni cu multiple mesaje în momentul autentificării în messenger. Aceste mesaje sunt prezentate în fig. 23.

Primul mesaj („You are not connected to the server.”) apare în cazul în care serverul nu funcționează și nu este conexiune între acesta și messenger. Al doilea („Empty username or password filed. Please fill in the blanks.”) și al treilea mesaj („No selected language. Please choose one from the list.”) este primit în cazul în care datele și/sau parola utilizatorului nu au fost introduse, iar limba nu a fost selectată. Al patrulea mesaj („Invalid username or password.”) este primit în cazul în care numele de utilizator și/sau parola sunt greșite. Ultimul mesaj, al cincilea („You have been successfully logged in.”), apare dacă autentificarea a fost cu succes.

În următorii paragrafi voi prezenta RegistrationScreen-ul. Această fereastră poate fi împărțită în trei părți (fig. 24).

Prima parte conține informații: „The information you supply will be used for registration purposes only. It will not be given to a third party.” Aceasta înseamnă ca datele clientului vor fi utilizate doar în scopul înregistrării și nu vor fi transmise la o a treia persoană datele (fig. 25).

A doua parte conține în sine formularul de înregistrare (fig. 26). Aici se vor desfășura mai multe verificări, de cele mai multe ori local, adică în fereastra de înregistrare, doar numele de utilizator va fi verificat de către server. Și în cazul acesta se poate întâlni utilizatorul cu mai multe mesaje.

Mesajele de pe fig. 27 („Empty filed. … is required.”) apar dacă utilizatorul nu va completa câmpurile obligatorii. În momentul de față am lăsat toate câmpurile goale, pentru ca toate mesajele să apară, dar în cazul în care utilizatorul va rata un singur câmp, sistemul va indica doar câmpul lăsat liber.

Pe următoarea imagine se poate observa mesajul („Usernames do not match.”) sau („Passwords do not match.”) care apare în cazul în care utilizatorul și câmpul de verificare al utilizatorului nu coincid și/sau parola și câmpul de verificare al parolei nu corespund (fig. 28).

Ultimul mesaj de eroare se poate vedea în fig. 29. Acesta apare atunci când utilizatorul a introdus un format greșit de e-mail („Invalid e-mail address.”). Pentru a efectua formatul de e-mail valid, trebuie să corespundă la următoarele cerințe:

În primul rând trebuie să conțină semnul “@” și nu poate apare imediat semnul “.” după acesta. După ultimul semn “.” trebuie să se afle minim două caractere. Nici primul caracter al adresei de e-mail nu poate fi semnul “.” și nu poate conține doar litere, numere, underscore și dash-uri. În ultimul rând, nu poate fi două “@”-uri sau “.” unul după altul. Dacă adresa trecută corespunde acestor puncturi, atunci se consideră a fi corectă, iar dacă nu atunci și acesta va apare într-un mesaj de eroare.

Dacă înregistrarea s-a desfășurat cu succes va apare următorul mesaj („Your account has been created successfully and is ready to use”) se poate observa pe fig. 30.

Ultima parte rămasă din această fereastră sunt butoanele (fig. 31).

După apăsarea butonului SAVE sistemul va efectua verificările mai sus menționate, iar în cazul în care va găsi orice eroare, atunci va afișa mesajul de eroare. Dacă totul s-a desfășurat cu bine datele va fi trimis la server, care le va salva în baza de date. Butonul CLEAR șterge toate datele trecute până în momentul respectiv din fereastră și dacă din cauza erorii s-a modificat numele câmpului în roșu sau rama acesteia, apăsarea butonului îl va transforma în forma ei inițială. În ultimul rând apare butonul CANCEL, care va închide fereastra de înregistrare și se va întoarce la fereastra LoginScreen.

După ce autentificarea s-a desfășurat cu succes, va apare MainScreen-ul WWM (fig.32), și această fereastră poate fi împărțită în trei.

Partea de sus afișează diferite informații (fig. 33). În bara de titlu al ferestrei va apare prescurtarea WWM cu numele de utilizator al clientului („WWM – NumeUtilizator”). Puțin mai jos, deja în cadrul ferestrei, va apare descrierea de „You Speak Romanian”. Acest lucru înseamnă că utilizatorul de față a ales limba română în momentul autentificării. Astfel sistemul îi va traduce întotdeauna mesajele primite în limba română.

Partea din mijloc conține lista de contacte (Contact list) și butonul Sign Out (fig. 34). În lista va apare fiecare utilizator care este online. Sistemul va afișa doar numele lor.

Prin apăsarea butonului Sign Out utilizatorul va putea ieși din messenger și sistemul va face posibil reîntoarcerea în orice moment. Va apare următorul mesaj la utilizarea butonului („You have been successfully logged out.”) fig. 35.

Partea de jos este secțiunea de căutare (Search) (fig.36), care va fi implementat în versiune noua. Această parte caută toți utilizatorii al căror nume a fost trecut în câmpul Search.

Ultima fereastră este DialogScreen-ul în sine, unde utilizatorii vor introduce mesajele unul pentru celălalt fig. 37.

Ca toate ferestrele menționate până acuma și pe acesta o putem împărți în trei. Prima parte conține un câmp mare unde apar mesajele scrise de către utilizatori (fig. 38). Aici va apare prima dată numele de utilizator, iar după aceea mesajul tradus, acestea sunt împărțite cu „:” și în ultimul rând în paranteză va apare mesajul original.

Pe partea dreaptă apar diferite informații. Cel mai sus va apare iconul WWM, care va poate fi schimbat în versiunile ulterioare. Sub icon va apare mesajul „Your Friend mzsolt”, unde după „Your Friend” apare numele partenerului de convorbire, în cazul de față „mzsolt”. Sub numele de utilizator în secțiunea „Languages” se pot vedea limbile (fig. 39). „Friend’s English” și „Yours Romanian” înseamnă că limba aleasă de către partener este engleza, în timp ce limba utilizatorului este româna.

Partea de jos cuprinde un câmp mai mic și butonul Send (fig. 40). Utilizatorul va trebui să își introducă mesajul în acest câmp, după care va trebui să apase butonul Send, pentru ca acesta să-i trimită textul.

Dacă în timpul discuției partenerul va ieși din messenger, va apare un nou rând între mesaje „Your friend signed out at 20:53” fig. 41, care ne atenționează de ieșirea partenerului, iar la sfârșit va afișa ora și minutul ieșirii din program.

4.2 Utilizare mono-lingvă

4.3 Utilizare multi-lingvă. (cu traducere automată)

4.4 Evaluarea aplicației

4.4.1 Evaluare traducere

4.4.2 Studii cu utilizatori

5. Concluzii

6. Bibliografie

Dr. Kris Jamsa & Lars Klander, Traducere de Eugen Dumitrescu, Totul despre C și C++ Manualul fundamental de programare în C și C++, Editura Teora, București, 2007

Ștefan Tanasă & Ștefan Andrei, Cristian Olaru, Java de la 0 la expert Ediția a II-a, Editura Polirom, 2011

Luke Welling & Laura Thomson, Traducere de Ioan Bledea, Dezvoltarea aplicațiilor Web cu PHP și MySQL, Ediția a II-a, Editura Teora, București, 2005

Craig Swann & Greg Caines, Traducere de Simona Preda & Titi Preda, XML în FLASH, Editura Teora, București, 2002

Steve Graham & Simeon Simeonov & Toufic Boubez & Doug Davis & Glen Daniels & Yuichi Nakamura & Ryo Neyama, Traducere de Tiberiu Ionescu, Servicii Web cu JavaTM XML, SOAP, WSDL și UDDI, Editura Teora, București, 2003

Vasile Topac, Ingineria Sistemelor de Programare, Note de curs, 2015

Vasile Topac, Programarea Sistemelor Automate Distribuite, Note de curs, 2015

Cristina Băla, Tehnologii Web, Note de curs, 2015

Mariana Nagy, Mihaiela Vizental, Baze de Date, Material de studiu pentru învățământ la distanță, Editura Universității Aurel Vlaicu, Arad, 2010

https://www.microsoft.com/translator/api.aspx

https://code.google.com/p/microsoft-translator-java-api/

https://en.wikipedia.org/wiki/Unified_Modeling_Language

Similar Posts

  • Studiu Critic al Actualelor Sisteme de E Learning

    CUPRINS CAPITOLUL 1 – ASPECTE GENERALE DESPRE E-LEARNING 3 Introducere 3 Definiții, termeni, argumente 5 E-Learning – paradigmă a instruirii asistate de calculator 9 Arhitectura unui sistem e-Learning 11 Avantaje și dezavantaje ale e-Learning 16 Soluții de e-Learning 18 Generații de e-Learning 18 Managementul proceselor de e-Learning 20 CAPITOLUL 2 – PLATFORME DE E-LEARNING 23…

  • Program Pentru Emiterea Sunetului U

    === l === CUPRINS BIBLIOGRAFIE…………………………………………………………………… ..….38 I. GENERALITĂȚI După locul de articulație, indicat de poziția limbii care se ridică spre partea posterioară a palatului dur, vocala u este posterioară. După gradul de deschidere a maxilarelor și de apropiere a limbii de palat, vocala u este închisă. După poziția buzelor (rotunjirea lor), vocala u este labială….

  • Proiectarea Unui Sistem Informational Privind Cotarea Si Tranzactionarea LA Bvb

    CUPRINS : INTRODUCERE………………………………………………………………………………………………………………5 CAP I : Sistemul informațional al firmei – element de bază al sistemului de management…………6 1.1. Considerente teoretice privind informațiile………………………………………………………….6 1.1.1. Tipologia informațiilor………………………………………………………………………..7 1.1.2. Tipologia circuitelor informaționale………………………………………………………9 1.1.3. Mijloace de tratare a informațiilor……………………………………………………….10 1.2. Elemente teoretice privind sistemul informațional ……………………………………………..11 1.2.1. Funcțiile sistemului informațional……………………………………………………….11 1.2.2. Principii în conceperea și elaborarea sistemului informațional………………..11…

  • Proiectarea Unui Magazin It Virtual

    PROIECTAREA UNUI MAGAZIN IT VIRTUAL Introducere Trăim în epoca vitezei, atunci cînd orice informație poate ajunge la destinatar doar în cîteva momente, fapt ce înlesnește rapiditatea lucrului efectuat. Acest lucru i se datorează, în exclusivitate, progresului științific, care în perioada contemporană s-a dezvoltat foarte intens, fapt ce a permis trecerea unor acțiuni clasice în spațiul…

  • Achizitia Unui Sistem Informatic Integrat

    C U P R I N S Cap. 1. DESCRIEREA SUCCINTA a PASILOR SELECTARII sistemelor informatice integrate (20 puncte) 1.1. Elemente care determina necesitatea integrarii produselor informatice 1.2. Beneficii posibile ale integrarii produselor informatice 1.3. Riscuri ale esecului integrarii produselor informatice 1.4. Fazele principale ale integrarii produselor informatice Cap. 2. DESCRIEREA GENERALĂ A ORGANIZAȚIEI (10…