Universitatea Politehnica Bucuresti |
|
Ingineria Programarii Instant MessengerSoftware Design Document |
|
(se va preda o data cu tema)
Nume Grupa Realizarea temei [%,motiv] Semnatura
______ _____ _______ ______ _____________ _________
_____ _______ ______ _____________
_____ _______ ______ _____________
______ _____ _______ ______ _____________ _________
_____ _______ ______ _____________
_____ _______ ______ _____________
______ _____ _______ ______ _____________ _________
_____ _______ ______ _____________
_____ _______ ______ _____________
Data predarii:
Semnat,
Istoria modificarilor documentului
1.3. Definitii, acronime si abrevieri
3.2. Descriere procese concurente
6.1. Proiectare detaliata module
6.2. Proiectare detaliata module de date
A1. Diagrame cazuri de utilizare (use cases diagrams)
A2. Diagrame clase (class diagrams)
Conform cu standardul IEEE STD-1016-1998, IEEE Recommended Practice for Software Design Descriptions.
In functie de tipul de dezvoltare ales, poate fi utila o retinere a tuturor modificarilor aduse acestui document. De exemplu, pentru un proiect in metodologie Waterfall w/ milestones, vor fi retinute toate modificarile aduse intre doua momente de evaluare a proiectului (milestones). O sortare a listei de modificari in ordine cronologica (data cea mai recenta prima) este indicata.
Versiune |
Data |
Autorul/Autorii modificarilor |
Detalii asupra modificarilor |
Alexandru IOSUP |
Varianta de baza (template) |
||
Noi |
Varianta actuala |
Documentul de fata prezinta sructura de ansamblu a proiectuli software "Instant Messenger".El va constitui un punct de referinta in implementarea proiectului.
Acest document se adreseaza echipei de dezvoltare al aplicatiei software pentru posibile viitoare modificari sau completari.
Java |
Tehnologie software dezvoltata de compania Sun care permite dezvoltarea de aplicatii portabile pe diverse sisteme de operare, avand insa ca cerinta minima de sistem instalarea unei aplicatii denumita Java Runtime Engine (sau Java Virtual Machine). |
Client |
Entitate a produsului nostru ce corespunde utilizatorului; permite comunicarea cu alti clienti |
Server |
Entitate a produsului nostru ce trebuie sa ruleze pe unul dintre calculatoarele retelei pentru a media comunicarea intre clienti, fara a putea in sine sa comunice textual. |
[1] IEEE STD-1016-1998, IEEE Recommended Practice for Software Design Descriptions
Site-ul oficial al firmei Sun: https://java.sun.com/
[3] Jabber Software Foundation: https://www.jabber.org/
[4] Sourceforge: https://sourceforge.net/
Acest capitol corespunde capitolului 6.2.1, Decomposition description, din [1].
Descrierea modulelor se face conform 5.3.1 - 5.3.10, din [1]. Modulele pot fi identificate pe diagrama/diagramele de utilizare (use case diagram(s)) din documentul de specificare a cerintelor.
Nume |
Creare cont |
Tip |
Proces |
Scop |
Crearea unui cont de utilizator nou prin retinerea unui ID si a unei parole aferente |
Mod de operare |
Un formular de inscriere in care se va completa userul si parola sub forma unei ferestre.Daca userul este deja existent in sistem, unserul nou este rugat sa isi aleaga at username |
Subordonari |
Autentificare |
Dependente | |
Resurse |
Java AWT |
Nume |
Autentificare |
Tip |
Procedura |
Scop |
Logarea in sistem pentru a putea conversa cu ceilalti prieteni online |
Mod de operare |
Se completeaza inttr-un formular numele si parola care sunt trimise serverului pentru autentificare. |
Subordonari |
Adaugare|Stergere , Comunicare ,Delogare |
Dependente |
Creare cont |
Resurse |
Java AWT |
Nume |
Adaugare|Stergere |
Tip |
Proces |
Scop |
Actualizarea listei de prieteni |
Mod de operare |
La adaugare apare o fereastra in care se completeaza ID-ul cerut sa fie adaugat.Se cere confirmarea acestui user inainte de adaugarea efectiva.La stergere se da click drapta pe prieten si se confirma stergerea. |
Subordonari | |
Dependente |
Autentificare |
Resurse |
Java AWT |
Nume |
Comunicare |
Tip |
Proces |
Scop |
Trimiterea mesajelor intre useri |
Mod de operare |
Se da dublu click pe un prieten si prin intermediul ferestrei care apare se trimit si primesc mesaje |
Subordonari | |
Dependente |
Autentificare |
Resurse |
Java AWT |
Nume |
Delogare |
Tip |
Procedura |
Scop |
Iesirea din sistem si anuntarea celorlati clienti ca nu mai suntem disponibili la convorbiri |
Mod de operare |
Se apasa butonul Sign OUT |
Subordonari | |
Dependente |
Autentificare |
Resurse |
Java AWT |
Descrierea proceselor concurente se face conform 5.3.1 - 5.3.10, din [1]. Procesele pot fi identificate pe diagrama/diagramele de secvente de utilizare (sequence diagram(s)) din documentul de specificare a cerintelor.
Nume |
Creare cont |
Tip |
Proces |
Scop |
Crearea unui cont de utilizator nou prin retinerea unui ID si a unei parole aferente |
Mod de operare |
Se trimite cererea de inscriere si daca datele sunt valide se confirma sau nu inscrierea. |
Resurse |
Java |
Nume |
Adaugare|Stergere |
Tip |
Proces |
Scop |
Actualizarea listei de prieteni |
Mod de operare |
Se trimite cererea de adaugare catre server ,acesta instiinteaza celalalt user de aceasta actiune si daca este de acord serverul i va permite primului user sa il adauge in lista lui de prieteni si va updata listele de prieteni ale celor 2. La stergere se alege userul care vrea sa fie sters si se instiinteaza serverul care updateaza listele de prieteni. |
Resurse |
Java |
Nume |
Comunicare |
Tip |
Proces |
Scop |
Trimiterea mesajelor intre useri |
Mod de operare |
Conectarea intre 2 useri se va face peer to peer acesti comunicand direct intre ei. |
Resurse |
Java |
Descrierea modulelor de date se face conform 5.3.1 - 5.3.10, din [1]. Modulele de date pot fi identificate pe diagrama/diagramele de utilizare (use case diagram(s)) din documentul de specificare a cerintelor.
Nume |
Lista de prieteni |
Tip |
Modul de date |
Scop |
Retinerea prietenilor unui user |
Mod de operare |
Se introduc si se scot useri din lista |
Subordonari |
Modul user |
Dependente | |
Resurse |
Spatiu hardware ,java.io |
Nume |
User |
Tip |
Modul de date |
Scop |
Retinerea datelor unui client(user,parola,port,IP ,logat, etc.) |
Mod de operare |
Se retin datele unui user |
Subordonari | |
Dependente | |
Resurse |
Spatiu hardware ,java.io |
Nume |
Lista useri |
Tip |
Modul de date |
Scop |
Retinerea tuturor clientilor care au cont in sistem |
Mod de operare |
Se updateaza in momentul creearii unui cont nou si se salveaza intr-un fisier. |
Subordonari | |
Dependente | |
Resurse |
Spatiu hardware ,java.io |
Acest capitol corespunde capitolului 6.2.2, Dependency description, din [1].
Atat lista
de prieteni corespunzatoare fiecarui user, cat si lista generala de useri sunt
alcatuite din structuri de date de tip User. Listele de prieteni sunt particularizari
ale listei generale de useri in functie de userul careia corespunde fiecare. Atat
unele cat si celelalte vor contine toti useri
Acest capitol corespunde capitolului 6.2.3, Interface description, din [1].
Se descriu pe larg interfetele modulelor descrise in capitolul 3.1. Diagramele detaliate sunt recomandate.
Nume |
Creare cont (vezi 3.1.1) |
Tip |
(vezi 3.1.1) |
Scop |
(vezi 3.1.1) |
Mod de operare |
(vezi 3.1.1) |
Interfata 1 |
Descriere Ex: result CreateAccount(user_name, password) |
Intrari |
Ex: user_name: string - numele utilizatorului, citit de la tastatura password: string - parola de acces a utilizatorului, citita de la tastatura |
Iesiri |
Ex: result:string - OK sau FAILED, in functie de rezultatul cautarii(user_name) in lista de clienti retinuta in server. |
Descriere |
Descrierea modului in care functioneaza interfata Ex: Operatia de creare cont se face prin introducerea, de la tastatura, a unui nume de utilizator si a unui cuvant de acces; se verifica existenta acestui user in baza de date a utilizatorilor; se va intoarce rezultatul cautarii in baza de date a utilizatorilor sub forma de string.Daca e OK se va crea contul si serverul va adauga in lista sa de clienti noul user.Daca am primit FAILED utilizatorul e rugat sa introduca noi date. |
Nume |
Autentificare(vezi 3.1.2) |
Tip |
(vezi 3.1.2) |
Scop |
(vezi 3.1.2) |
Mod de operare |
(vezi 3.1.2) |
Interfata 2 |
Descriere Ex: result Login(user_name, password) |
Intrari |
Ex: user_name: string - numele utilizatorului, citit de la tastatura password: string - parola de acces a utilizatorului, citita de la tastatura |
Iesiri |
Ex: result:string - OK sau FAILED, in functie de rezultatul cautarii tuplului (user_name, password) in lista de clienti retinuta in server . |
Descriere |
Descrierea modului in care functioneaza interfata Ex: Operatia de inregistrare in sistem se face prin introducerea, de la tastatura, a unui nume de utilizator si a unui cuvant de acces; se verifica existenta acestui tuplu in baza de date a utilizatorilor; se va intoarce rezultatul cautarii in baza de date a utilizatorilor sub forma de string.Daca e OK userul va intra online si ii va aparea o noua fereastra .Daca e FAILED userul este instiintat de faptul ca usernamul sau parola sunt gresite. |
Nume |
Adaugare(vezi 3.1.3) |
Tip |
(vezi 3.1.3) |
Scop |
(vezi 3.1.3) |
Mod de operare |
(vezi 3.1.3) |
Interfata 3 |
Descriere Ex: add_user(user_name) |
Intrari |
Ex: user_name: string - numele utilizatorului ce se vrea adaugat. |
Iesiri |
Ex: result:string - OK sau FAILED, in functie de rezultatul cautarii user_name in lista de clienti retinuta in server si acceptul acestuia. |
Descriere |
Descrierea modului in care functioneaza interfata Ex: Operatia de adaugare prieten in lista de prieteni se face prin introducerea, de la tastatura, a unui nume de utilizator; se va intoarce rezultatul cautarii in lista de clienti a serverului sub forma de string.Daca e OK userul va aparea in lista de prieteni.Daca e FAILED userul este instiintat de faptul ca userul nu exista sau nu vrea sa accepte cererea de adaugare. |
Nume |
Comunicarea(vezi 3.1.4) |
Tip |
(vezi 3.1.4) |
Scop |
(vezi 3.1.4) |
Mod de operare |
(vezi 3.1.4) |
Interfata 4 |
Descriere Ex: send_message(user,message) receive_message(user) |
Intrari |
Ex: user: string - numele utilizatorului caruia ii trimitem mesaj message- string-mesajul pe care il trimitem |
Iesiri |
Ex: user: string - numele utilizatorului de la care primim mesaj message- string-mesajul pe care il primim |
Descriere |
Descrierea modului in care functioneaza interfata Ex: Operatia de comunicare se face prin intermediul unei noi ferestre in care vor aparea mesajele primite si trimise. |
Nume |
Delogare (vezi 3.1.5) |
Tip |
(vezi 3.1.5) |
Scop |
(vezi 3.1.5) |
Mod de operare |
(vezi 3.1.5) |
Interfata 2 |
Descriere Ex: LogOut(user) |
Intrari |
Ex: user: string - numele utilizatorului |
Iesiri | |
Descriere |
Descrierea modului in care functioneaza interfata Ex: Serverul este instiinta de faptul ca userul s-a delogat. |
Acest capitol corespunde capitolului 6.2.3, Interface description, din [1].
Se descriu pe larg modulele descrise in capitolul 3.1. Diagramele detaliate sunt recomandate.
Nume |
Nume modul 1 (vezi 3.1.1) |
Tip |
(vezi 3.1.1) |
Scop |
(vezi 3.1.1) |
Mod de operare |
(vezi 3.1.1) |
Clase |
Identificarea claselor componente |
6.1.1.1. Modul 1, clasa 1
Nume |
Nume clasa 1 |
Scop |
Descrierea scopului acestei clase in cadrul modulului |
Membri |
Identificarea campurilor din cadrul clasei |
Metode |
Identificarea metodelor componente |
Diagrama clasei (vezi class diagrams din documentul de specificare a cerintelor).
6.1.1.1.1. Modul 1, clasa 1, metoda 1
Nume |
Nume metoda 1 |
Scop |
Descrierea scopului acestei metode in cadrul clasei |
Prototip |
Descrierea prototipului acestei metode |
Intrari |
Descrierea intrarilor acestei metode |
Iesiri |
Descrierea iesirilor acestei metode |
Apelant |
Rutine care apeleaza aceasta metoda. |
Apeleaza |
Alte rutine apelate de aceasta metoda |
Algoritm |
Descrierea algoritmului / procedurii de functionare. |
Se descriu pe larg modulele de date descrise in capitolul 3.3. Diagramele detaliate sunt recomandate.
Client |
+ nume : String + portAscultare: int + socket ascultare : socket + socket server : socket + lista prieteni : Client[] |
- trimite (Mesaj, entitate) - primeste (entitate) - createAccount (userName: String, pass: String) - login (userName:String, pass:String) - addFriend (user:Client) - deleteFriend (user:Client) - logout (userName:String) - comunica (user:Client) |
Server |
+ portAscultare: int + socket ascultare : socket + lista useri : Client[] + lista prieteni: Client[][] |
- trateazaAuth (userName: String, pass: String) - trateazaCreareCont (userName: String, pass: String) - trateazaDelogareClient (userName: String) - trateazaLogin (userName: String, pass: String) - addFriendForUser (user: Client, userFriend: Client) - delFriendFromUser (user: Client, userFriend: Client) - updateListaPrieteni (user: Client) |
|