Sunteți pe pagina 1din 35

Metode de

Dezvoltare Software

Smart Help 4
Smart Students

Descrierea aplicatiei
Ideea de baza a aplicatiei este interactiunea dintre elevii si profesorii,
posibilitatea acestora de a vorbi despre teme, lectiile predate, probleme
suplimentare precum si trimiterea de fisiere, mai pe scurt, posibilitatea de
a relationa intr-un mod inovator si mult mai atractiv pentru noile generatii
familiarizate inca de la varste fragede cu noua tehnologie.
Mai mult, elevii pot cere parerea altui profesor decat cel care le
preda la scoala, si pot acorda calificativ profesorului in
functie de solutia primita.
Aplicatia este dedicata tuturor scolilor si liceelor care
vor ca elevii lor sa beneficieze de o mai buna
intelegere a notiunilor predate, dar si pentru a le
facilita
comunicarea cu profesorii.
Aplicatia conduce la cresterea interesului
elevilor pentru activitatile desfasurate la scoala.
De
asemenea, acestia vor primi ajutorul
de care au nevoie in
orice moment.

Descrierea aplicatiei
Pe langa partenerii principali carora le este destinata aplicatia, scolile si
liceele, aceasta poate fi utilizata de oricine doreste ajutor la invatare si vrea sa
schimbe pareri cu alti profesori in afara celor de la orele de curs sau vrea
doar sa-si mareasca bagajul de cunostinte.
Pentru a interactiona cu potentialii utilizatori au fost create site-uri de
socializare precum pagina de Facebook - https://www.facebook.com/SH4SS.
In fiecare zi, sunt create o multime de aplicatii foarte
utile in viata cotidiana. Din pacate insa, modul in care
sunt
construite nu este unul accesibil si multi intampina
dificultati in a le
utiliza.
Aplicatia noastra abordeaza una dintre problemele
principale ale societatii : educatia.
Un om de succes are intotdeauna bazele unei
educatii solide, construite pas cu pas pana in cele
mai mici
detalii care nu a lasat niciodata nimic
la voia intamplarii.

SOFT-uri / Limbaje folosite


JAVA functionalitate
Oracle Database Server 11g R2 stocarea informatiilor
HTML5 & CSS3 construirea paginii de Ajutor.

Pentru implementarea conversatiei profesorelev, a fost folosit arhitectura client-server folosind


socketi. Pentru manipularea informatiilor din baza
de date a fost folosit serviciul RMI prin accesarea
ei aflate pe server.

O mica prezentare
a aplicatiei

Pagina initiala

Crearea unui cont

LOGARE

ONLINE

Meniul
STARE

Meniul
Vizualizare

Vizualizare\Editare CONT

Vizualizare activitate
elev

Vizualizare activitate
profesor

Fereastra de conversatie

Trimitere fisier

Primire fisier

Cerintele aplicatiei
Realizati un program de tip Instant Messenger.
Acesta va ajuta interactiunea dintre profesori si elevi, fiecare elev alegand
dintr-o lista de materii pe aceea de care este interesat. Aplicatia va avea o
arhitectura client/server. Componenta server va avea o baza de date
gestionata de un server MicrosoftSQL Server, Oracle etc, in care va stoca
informatiile despre utilizatorii inregistrati, fisierele shared intre clienti etc.
Componenta client va oferi cel putin urmatoarele functionalitati:
o fereastra principala, din care sunt accesate optiunile.
Printre acestea mentionam:
- creare cont
- logare in cont
- ajutor.
In functie de tipul utilizatorului ce se inregistreaza
( profesor, elev) se vor retine cel anumite
informatii:
nume, prenume, e-mail, parola,
intrebare de
securitate, categorie,
ciclul, profilul, materia.

Cerintele aplicatiei
o fereastra continand profesorii si elevii ce au conturi, utilizatorului
curent fiindu-i accesibila disponibilitatea fiecaruia, acesta avand
posibilitatea de a intra cu una dintre acele persoane intr-o conversatie.
In meniul aflat in antetul ferestrei utilizatorului ii sunt oferite
optiunea de ajutor, de vizualizarea a starii, a activitatii precum si cea de
editare si vizualizare a profilului.
fereastra pentru conversatie. Odata ce utilizatorul s-a decis cu ce
profesor doreste sa intre intr-o convesatie, acestuia ii
este disponibila o noua fereastra unde poate vedea
istoricul
conversatiei curente, poate sa trimita noi
mesaje
persoanei cu care discuta, sau poate chiar
sa trimita fisiere
catre aceasta.
La sfarsitul conversatiei acesta (utilizatorul)
trebuie sa selecteze cat de multumit a fost de
conversatia avuta si de informatiille
(ajutorul) primit.

Specificatii formale - Z

Specificatii formale - Z
a) Un student isi creeaza un cont.

Specificatii formale - Z
b) Un profesor isi creeaza un cont.

Specificatii formale - Z
c) Materia pe care o preda un profesor.

Specificatii formale - Z
d) Profilul la care este un elev.

Specificatii formale - Z
e) Multimea de elevi aflati la un profil anume.

Modelare UML Diagrame de clase

Modelare UML Diagrame de clase

Modelare UML Diagrame cazuri de


utilizare

Modelare UML Diagrame cazuri de


utilizare

Modelare UML Diagrame de secvente

Modelare UML Diagrame de stari

Inline

Inline

Testare 1
public void testSearch() {
System.out.println("Search");
ArrayList<String> Array = new ArrayList<String>();
String item = new String("Elev");
Array.add(item);
String search = "Elev";
int expResult = 0;
try {
int result = OnLine.Search(Array, search);
assertEquals(expResult, result);
System.out.println("BUN SEARCH");
} catch (NullPointerException npe) {
System.out.println("Eroare " + npe + " RAU SEARCH");
}
}

Testare 2
public void testAddPersonsInTree() throws IOException {
System.out.println("AddPersonsInTree");
Socket cs = new Socket ( "10.11.144.187", 1111);
DataInputStream is = new DataInputStream(cs.getInputStream());
DataOutputStream os = new DataOutputStream(cs.getOutputStream());
OnLine instance;
instance = new OnLine(cs, "Ioana Turcanu", is, os, "Elev", "ioana.turcanu@gmail.com" );
try {
OnLine.AddPersonsInTree();
int index = OnLine.model.getChildCount(OnLine.model.getRoot());
for (int i = 0; i < index; i++)
if (OnLine.model.getChild(OnLine.model.getRoot(), i).equals("Elev"))
for (int j = 0; j < OnLine.model.getChildCount(OnLine.model.getChild(
OnLine.model.getRoot(), i)); j++)
assertTrue(OnLine.model.getChild(OnLine.model.getChild(
OnLine.model.getRoot(), i), j).equals("Ioana Turcanu"));
System.out.println("BUN MAI MULTI");
} catch (NullPointerException npe) {
System.out.println("Eroare " + npe + " RAU MAI MULTI");
}
}

Testare 3
public void testRemove() {
System.out.println("Remove");
String nume_util = "Ionica Turcanu";
String category = "Elev";
try {
OnLine.Remove(nume_util, category);
int index = OnLine.model.getChildCount(OnLine.model.getRoot());
for (int i = 0; i < index; i++)
if (OnLine.model.getChild(OnLine.model.getRoot(), i).equals("Elev"))
for (int j = 0; j < OnLine.model.getChildCount(OnLine.model.getChild(
OnLine.model.getRoot(), i)); j++)
assertFalse(OnLine.model.getChild(OnLine.model.getChild(
OnLine.model.getRoot(), i), j).equals("Ioana Turcanu"));
System.out.println("BUN REMOVE");
} catch (NullPointerException npe) {
System.out.println("Eroare " + npe + " RAU REMOVE");
}
}

Testare 4
public void testAddPerson() throws IOException {
System.out.println("AddPerson");
String nume_util = "Ioana Turcanu";
String category = "Elev";
OnLine instance;
Socket cs = new Socket ( "10.11.144.187", 1111);
DataInputStream is = new DataInputStream(cs.getInputStream());
DataOutputStream os = new DataOutputStream(cs.getOutputStream());
instance = new OnLine(cs, "Ionica Turcanu", is, os, "Elev", "ionica@gmail.com" );
try {
instance.AddPerson(nume_util, category);
int index = OnLine.model.getChildCount(OnLine.model.getRoot());
for (int i = 0; i < index; i++)
if (OnLine.model.getChild(OnLine.model.getRoot(), i).equals("Elev"))
for (int j = 0; j < OnLine.model.getChildCount(OnLine.model.getChild(
OnLine.model.getRoot(), i)); j++)
assertTrue(OnLine.model.getChild(OnLine.model.getChild(
OnLine.model.getRoot(), i), j).equals("Ioana Turcanu"));
System.out.println("Bun");
} catch (NullPointerException npe) {
System.out.println("Eroare " + npe);
System.out.println("Rau");
}
}

Testare 5
public void testClose() throws IOException {
System.out.println("close");
Socket cs = new Socket ( "10.11.144.187", 1111);
OnLine instance;
DataInputStream is = new DataInputStream(cs.getInputStream());
DataOutputStream os = new DataOutputStream(cs.getOutputStream());
instance = new OnLine(cs, "Ionica Turcanu", is, os, "Elev",
"ionica@gmail.com" );
try {
instance.close();
System.out.println("BUN CLOSE!");
} catch(NullPointerException npe) {
System.out.println("Eroare " + npe + " RAU
CLOSE");
}
}

Testare 6
public void testAdauga() throws RemoteException, SQLException, Exception
{
try {
System.out.println("adauga");
Elev p = new Elev("","N","P","e","p","i","r","c","p","u");
Srv instance = new Srv();
instance.adauga(p);
String sql = "SELECT NUME FROM ELEVI WHERE
nume='N'";
ResultSet rs = stmt.executeQuery(sql);
assertEquals(rs.getString("NUME"), 'N');
}catch(Exception ex) {
System.out.println();
}
}

Testare
Se poate observa faptul ca toate cele 6 teste au trecut cu succes.
Mai jos se afla un printScreen ce atesta acest lucru.

Proiectul realizat de

Busca Gabriela
Daia Diana
Piuaru Ana Maria
Turcanu Ionica
Facultatea de Matematica Informatica
Grupa 232