calitate software

5
In lucrarea de disertatie intitulata.... aplicatia informatica realizata are numele... si obiectivul acesteia este de a...(prelucra, calcula, alege, optimiza, dezvolta, analiza (sau altceva) .... si spuneti clar obiectul care apare ..... Din acesta aplicatie, am extras o functionalitate referitoare la ....(scrieti la ce se refera acea functionalitate) si corespunzator am proiectat structura modulului, cu luarea in considerare: - a limbajului.... pentru ca si dati 3 argumente solide - a cerintelor de autodocumentare (dati in clar cum faceti autodocumentarea) - cerintelor de calitate (spuneti cum planificati, cum realizati si cum testati calitatea) - pe ce specificatii ma bazez. Intrucat am discutat sa progresati in clarificarea aplicatiei de la disertatie, va trebui sa aveti cod realizat in asa fel incat sa urmariti calitatea si fiecare secventa pusa acolo sa o justificati. De aceea veti alege o secventa de 15-20 linii sursa din acel modul si luati fiecare instructiune si o analizati in raport de cum contribuie aceasta la cresterea calitatii aplicatiei voastre. In lucrarea de disertație intitulată ”Aplicație mobilă pentru corelarea cererii cu oferta din domeniul agricol ”, aplicația informatică realizată are numele ”Grădina ta online” si obiectivul acesteia este de a crea o platformă de legatura între producător, consumator și transportator. Cu alte cuvinte, pe această platformă micii agricultori își vor expune produsele și prețurile de vânzare, cumpărătorii pot alege ce produse doresc, astfel piața de zi cu zi se realizează online prin intermediului dispozitivului mobil, iar micii transportatori pot avea comenzi zilnice sau săptămânale, aprovizionând astfel cumpărătorii (locuitori în marile aglomerații urbane, foarte

Upload: roxana-florentina

Post on 15-Jan-2016

218 views

Category:

Documents


0 download

DESCRIPTION

reguli de calitate software

TRANSCRIPT

Page 1: calitate software

In lucrarea de disertatie intitulata.... aplicatia informatica realizata are numele... si obiectivul acesteia este de a...(prelucra, calcula, alege, optimiza, dezvolta, analiza (sau altceva) .... si spuneti clar obiectul care apare ..... Din acesta aplicatie, am extras o functionalitate referitoare la ....(scrieti la ce se refera acea functionalitate) si corespunzator am proiectat structura modulului, cu luarea in considerare:- a limbajului.... pentru ca si dati 3 argumente solide- a cerintelor de autodocumentare (dati in clar cum faceti autodocumentarea)- cerintelor de calitate (spuneti cum planificati, cum realizati si cum testati calitatea)- pe ce specificatii ma bazez.Intrucat am discutat sa progresati in clarificarea aplicatiei de la disertatie, va trebui sa aveti cod realizat in asa fel incat sa urmariti calitatea si fiecare secventa pusa acolo sa o justificati. De aceea veti alege o secventa de 15-20 linii sursa din acel modul si luati fiecare instructiune si o analizati in raport de cum contribuie aceasta la cresterea calitatii aplicatiei voastre.

In lucrarea de disertație intitulată ”Aplicație mobilă pentru corelarea cererii cu oferta din domeniul agricol ”, aplicația informatică realizată are numele ”Grădina ta online”  si obiectivul acesteia este de a crea o platformă de legatura între producător, consumator și transportator. Cu alte cuvinte, pe această platformă micii agricultori își vor expune produsele și prețurile de vânzare, cumpărătorii pot alege ce produse doresc, astfel piața de zi cu zi se realizează online prin intermediului dispozitivului mobil, iar micii transportatori pot avea comenzi zilnice sau săptămânale, aprovizionând astfel cumpărătorii (locuitori în marile aglomerații urbane, foarte ocupați). Din această aplicație am extras funcționlitatea referitoare la trimiterea notificărilor către utilizatorii de tip transportator care au optat pentru a primi notificări referitoare la tranzacțiile de vânzare cumpărare încheiate, pentru ca aceștia să poată veni cu oferte de transport pentru produsele tranzacționate. Corespunzător am proiectat structura modului, cu luare în considerare:

- a limbajului Java pentru că folosesc platfoma Android care se bazează pe aste limbaj, pentru că serviciul web folosește tot acest limbaj pentru prelucrarea informațiilor și a datelor din baza de date și pentru că folosesc o bază de date Oracle care comunică cu serviciul web. Am ales acest limbaj pentru că pe acesta îl cunosc și îl stăpânsc, și având în vedere că voi lucra singură la lucrarea de disertație și nu voi apela la un programator bun pe limbajul C, Windows Phone etc a trebuit să aleg tehnologii care folosesc și se bazează pe limbajul Java. Structura modului a fost astfel gândită pentru a putea fi realizată prin acest limbaj de programare.

- A cerințelor de autodocumentare: deși însăși textul codului sursă constituie o autodocumentare, acesta nu este suficient, astfel se vor folosi pentru autodocumentare comantariile. Acestea se vor scrie în timpul scrierii codului sursă, nu după, comentariile vor fi scurte si clare, suficiente, se vor evita comentariile inutile, incorecte sau evidente

Page 2: calitate software

pentru a nu îngreuna textul și a face dificilă citirea codului și a comentariilor chiar necesare. Dacă se vor modifica părți ale algoritmului, comentariile vor fi actualizate!Din punctul meu de vedere, această metodă de autodocumentare, prin comantarii, este una foarte importantă doarece mă va ajuta să înțeleg codul scris și după câteva luni, scutindu-mă astfel de timp pentru a descifra semnificațiile liniilor sursă. Comentariile vor fi scrise la începutul modului pentru a prezenta titlul și scopul modulului, data realizării lui, înaintea unei metode pentru a prezenta scopul acesteia, ce va prelucra și ce rezultat va întoarce, la definirea anumitor variabile, pentru a prezenta scopul acestora ( dacă este ceva mai special, mai greu de înțeles, mai complex), în dreapta unor instrucțiuni pentru a explica formulele folosite sau ideea acelor instrucțiuni.Pe lângă această metodă de autodocumentare, voi mai folosi și alegerea cu grjă a denumirii variabilelor, claritatea textului va fi cât mai bună ( o voi obține prin indentrea textului). Denumirea variabilelor se va face astfel: dacă aceasta reprezintă o instanță a unei entități, aceasta va lua numele entității, de exemplu daca doresc un obiect de tipul Seller, obiectul se va numi seller. Dacă variabila va primi rezultatul unei proceduri, aceasta va primi numele rezultatului, de exemplu, dacă o procedură întoarce prin numele ei totalul de plată pentru o comandă, atunci variabila se va numi totalPlata.

- Cerințelor de calitate: timp de executie mic și utilizarea resurselor eficientă. Aceste cerințe se îndeplinesc prin structurarea modului în proceduri, prin prelucrarea datelor pe server și nu pe client (dispozitivul mobil), astfel se va reduce timpul de executie si resursele vor fi folosite eficient (prin prelucrarea datelor și execuția operațiilor pe server unde puterea de calcul este mai mare). Se obține un timp de răspuns mic și se mărește viteza de calcul, consumul de resurse este unul redus, la fel și consumul de memorie ( din punctul de vedere al dispozitivului mobil). Indeplinind aceste cerințe se realizează caracteristica de eficiență a unei aplicații software.O altă cerință de calitate este securitatea și se referă la nivelurile de acces ale diferitelor tipuri de utilizatori, astfel încât numai utilizatorii de tip transportator să primească notificări la încheierea unor tranzacții și cei de tip cumpărător să primească oferte de transport de la transportatori. Tot la securitate se încadrează și opțiunile unor utilizatori de a primi sau nu notificări / oferte (și acestea trebuie luate în calcul). Astfel se va asigura caracteristica de funcționalitate.Planific să realizez aceste cerințe de calitate prin realizarea nivelului de secuitate al aplicației, a unor tabele de permisiuni pntru utilizatori, a unor opțiuni pentru primirea notificărilor sau nu. Voi testa funcționalitatea aplicației prin realizarea și rularea unor UnitTeste ( testarea procedurilor ce corespund operațiilor de lucru specifice obiectivului modului descris)

- mă bazez pe specificații bine definite, clare, pe specificații de funcționalitate, care definesc modul de funcționare al aplicației, definirea a 3 tipuri de utilizatori, precum și funcțiile și operațiile pe care le vor îndeplini aceștia, printre care se numără și trimiterea de notificări ș de oferte de transport. În plus, specificațiile de performanță prevăd realizarea calculelor și prelucrarea datelor pe server și afișarea rezultatelor prin intermediul dispozitivului mobil. Specificațiile de interfață se referă la existența a trei niveluri de acces corespunzătoare tipului de utilizator folosit, fiecare având anumite meniuri, opțiuni, anumite facilități.

Page 3: calitate software

@Autowired@Qualifier("baseRepositoryImpl")protected BaseRepository baseRepository;

@Resource(name = "baseServiceImpl")protected BaseService baseService;    public void sendNotification(Long idOrder,Long idCustomer){

Order order = baseRepository.findOne(Order.class, idOrder);

Customer customer = baseRepository.findOne(Customer.class, order.idCustomer);

Map<String, Object> orderDetails = new HashMap<String, Object>();

List<AsocOrderProduct> asocOrderProducts = baseRepository.findAll(AsocOrderProduct.class, new Eq(“idOrder|”, order.getId()));

String productsDetails=””;

productsDetails+=asocOrderProducts.get(0).getProduct().getDescription(); productsDetails+=”,”; for( int i=1; i<asocOrderProducs; i++){

productsDetails+=”,”;productsDetails+= asocOrderProducts.get(i).getProduct().getDescription();

}

List <User> users = baseRepository.findAll(User.class, new And( new Eq(“role|”, UserRole.CARRIER), new Eq(“acceptNotification”,Boolean.TRUE)));

orderDetails.put("date", order.getDate()); orderDetails.put("total", order.getTotal());        orderDetails.put("customer", customer.getName());        orderDetails.put("address", customer.getAddress()); orderDetails.put("productsDetails", productsDetails);        orderDetails.put("success", true);

try{for (User user:users)

sendMessage(user,orderDetails);}catch(Exception ex){System.out.println(“Could not send message to ”+ user.getName());}}