• Acasă
  • Despre noi
  • Autori
  • Mărturii
  • Arhivă
  • Trimite Articol
  • Contact

WORLDIT

Lumea în 1 și 0.

  • Știri
    • Tehnologie
    • Tehnologie mobilă
    • Securitate
    • Developers
    • Știință
    • Benzi desenate
    • Jocuri
    • Intern
  • Tehnic
    • Browser
    • C#
    • C/C++
    • Challenge
    • HTML/CSS
    • Javascript, Ajax, jQuery
    • Open Source
    • PHP
    • Python
    • Securitate IT
    • Socializare
    • WordPress
    • Altele
  • Recenzii
  • Interviuri
  • Evenimente

Organizeaza proiectul intr-un mod extensibil

4
  • Publicat de Andrei Avădănei
  • în Altele · Tehnic
  • — 29 mart., 2010 at 12:29 pm

O problema interesanta ce se pune in domeniul programarii este STRUCTURAREA. Este inutil sa avem un proiect bine pus la punct dar care nu este organizat impecabil si nu ofera posibilitatea revenirii in timp asupra lui. De cele mai multe ori ne izbim de proiecte si idei foarte bune dar care esueaza din cateva motive simple, motive traite si pe propria piele :

• Nu avem suficient timp sa lucram la proiect.
• Complexitatea prea mare ne descurajeaza.
• Organizarea proiectului a inceput defectuos.
• Lucram pe o organizare defectuasa iar in momentul in care dorim sa revenim asupra proiectului ne izbim de probleme de continuare a dezvoltarii.
• Lucram in echipa si nu gasim o organizare comuna a proiectului.

Toate aceste probleme pot fi rezolvate daca structurarea si organizarea proiectului se face cu simt de raspundere. Acest articol va urmari prezentarea unuia dintre sub-aspectele structurarii si anume : dezvoltarea defectuasa ce ne creaza probleme in momentul in care dorim sa revenim asupra proiectului cu imbunatatiri.

Problema

Sa ne imaginam ca incercam sa dezvoltam o platforma ce va avea ca target elevii si studentii (nu intram in detalii inutile). Problema ce se ridica este viteza cu care internetul creste. O aplicatie care ar fi la zi cu toate lucrurile astazi, in cateva luni devine depasita. Trebuie gasita o solutie eficienta din mai multe puncte de vedere : organizare, eficienta, integrare rapida etc.

Solutie

Cea mai buna solutie, adoptata de foarte multe aplicatii online si standalone e crearea unui sistem de extensii. Prima impresie este complexitatea unui astfel de sistem. Din fericire, pentru un sistem simplu, totul se reduce la cateva operatii de baza clar stabilite ce trebuie sa lucreze impreuna.

Avantaje

• Vom crea un limbaj independent al hostului
• Putem permite interfetelor third party sa interactioneze cu aplicatia
• Necesita foarte putin cod suplimentar pentru integrarea cu hostul
• Necesita foarte putin cod suplimentatr pentru integrarea cu interfata hostului
• Posibilitatea de a face versiuni aplicatiei
• Dezvoltarea si extensibilitatea devin teoretic nelimitate
• Promovarea aplicatiei prin dezvoltatorii third party
• Posibilitatea de a crea o comunitate in jurul unui proiect Open Source

Descriere si implementare

Un sistem de extensii (cunoscute si ca plugin, addin, addon sau snapin) este un sistem din cadrul aplicatiei host, ce ofera o interfata dinamica pentru a putea rula diverse aplicatii externe (mai mult sau mai putin) intr-un cadru controlat, folosind un protocol bine definit.

Exemple

• Pluginurile de la WordPress
• Addonurile de la Mozilla Firefox, precum si pluginurile si extensiile celorlalte browsere precum Chrome.
• Media playerele folosesc pluginuri pentru a suporta noi formate
• Daca largim putin perspectiva, sistemele de operare pot fi considerate aplicatiile host pe care ruleaza aplicatiile (extensiile).

Structura unui framework, incluzand sistemul de extensii

Implementare

Din testele ce le-am facut eu in diverse aplicatii am ajuns la concluzia ca cea mai eficienta modalitate este cea bazata pe evenimente (prefer sa le spun actiuni). Cand o actiune este declansata aceasta ruleaza toate extensiile inregistrate la acea actiune intr-un anumit mod. Voi descrie o „clasa” ce va avea in vedere toate functiile de baza ale unui astfel de sistem. Aceasta descriere va fi facuta in pseudocod pentru a putea fi inteleasa de toata lumea.

clasa ServiciuExtensii
{
      //  Incarca toate resursele, inregistreaza evenimente, ataseaza extensii la evenimente
      functie constructor();
      //  Elimina extensiile atasate, sterge evenimente si elimina resurse alocate.
      functie destructor();

      /* ---------------------------- ---------------------------- */

      // Creaza un nou eveniment(actiune).
      functie inregistreaza_eveniment();
      // Sterge un eveniment(actiune).
      functie sterge_eveniment();
      // Tine controlul evenimentul in curs. 
      functie evenimentul_curent();
      //  Ruleaza toate extensiile ce sunt atasate unui eveniment. Practic trebuie sa anunti extensiile ca e momentul lor.
      functie ridica_eveniment();


       /* ---------------------------- ---------------------------- */

      // inregistreaza extensie in host (pentru a putea fi luata in seama la viitoarele lansari ale evenimentelor)
      functie inregistreaza_extensie();
      // dezinstaleaza extensie din host
      functie sterge_extensie();
      // ataseaza o extensie la un eveniment pentru a putea intra in lista de asteptare a respectivului eveniment
      functie ataseaza_extensie_la_eveniment();
      // elimina extensie din coada de asteptare a unui eveniment
      functie elibereaza_extensie_de_la_eveniment();


       /* ---------------------------- ---------------------------- */

      // stocheaza informatii in cache-ul hostului( ce pot fi procesate de extensii) - cache permanent/temporar
      functie adauga_in_cache();
      // extrage informatii stocate in cache-ul hostului
      functie extrage_din_cache();
      // modifica informatii stocate in cache-ul hostului
      functie editeaza_cache();
      // sterge informatii stocate in cache-ul hostului (doar daca sunt temporare sau doar daca sunt permanente si pluginul are permisiuni de stergere)


       /* ---------------------------- ---------------------------- */

      // cauta in resursele stocate de sistemul de extensii diverse informatii in functie de diverse criterii (evenimente, atasamente, extensii, eveniment curent, resurse etc)
      functie cauta_dupa(); 


       /* ---------------------------- ---------------------------- */
      
      // monitorizeaza starea sistemului de extensii, trateaza exceptii, erori, cazuri speciale, asigura stabilitatea sistemului
      functie monitorizeaza_eveniment();
     // monitorizeaza starea unei extensii, trateaza exceptii, erori, situatii speciale, asigura stabilitatea extensiei si inceteaza activitatea acestuia in cazurile extreme
      functie monitorizeaza_procesul_extensiei();
}

Am considerat ca fara un exemplu concret de un astfel de sistem, articolul nu are valoare. De aceea, puteti vizualiza un sistem mult mai simplu si implicit mai neeficient facut de mine pe aproape acelasi principiu anul trecut. Are un scop doar informativ, nefiind gandit pentru dezvoltare multipla.

Daca acest articol contine o greseala, selecteaza cuvintele sau fraza gresita si tasteaza combinatia de taste Shift + Enter sau apasa click aici pentru a o raporta. Multumim!

Etichete: cum sa faci un sistem de extensiicum sa faci un sistem de pluginuricum sa structurezi o aplicatie eficientcum sa structurezi un site eficientorganizarea unui websiteprogramareproiectstructurarea proiectului

— Andrei Avădănei a scris 1246 articole

Andrei scrie pe worldit.info din vara lui 2011. Este fondatorul Asociatiei Centrul de Cercetare in Securitate Informatica din Romania - CCSIR si coordoneaza DefCamp, cea mai importanta conferinta de securitate informatica & hacking din Europa Centrala si de Est. Andrei ofera in cadrul Bit Sentinel servicii de securitate informatica, penetration testing, security management, recuperarea de pe urma unui atac cibernetic, training-uri si workshop-uri.

  • Articolul anterior Adobe lanseaza Buzzword
  • Articolul următor Parcurgerea unui RSS folosind C# si XPath

4 Comentarii

  1. Tweets that mention Organizeaza proiectul intr-un mod extensibil | WorldIT -- Topsy.com spune:
    martie 29, 2010 la 12:38 pm

    […] This post was mentioned on Twitter by Andrei Avadanei, Avadanei Andrei. Avadanei Andrei said: Organizeaza proiectul intr-un mod extensibil http://goo.gl/fb/NKDX #WorldIT […]

  2. dage spune:
    martie 29, 2010 la 2:11 pm

    Felicitari pentru articol, chiar vroiam sa citesc un astfel de articol, pentru ca este foarte important si organizarea unui proiect, pana sa te apuci sa scrii efectiv codul.
    Cum in ziua de astazi majoritatea aplicatiilor(web/soft) folosesc un astfel de sistem, acest articol este foarte util pentru oricine vrea sa devina un programator cat mai bun.

  3. Avadanei Andrei spune:
    martie 29, 2010 la 4:55 pm

    Multumesc dage,

    Acesta probabil este primul dintr-o serie mai lunga de astfel de articole ce se refera la organizarea efectiva si la modul cum trebuie gandit un proiect. 🙂

  4. uberVU - social comments spune:
    martie 29, 2010 la 5:50 pm

    Social comments and analytics for this post…

    This post was mentioned on Twitter by worldIT: Organizeaza proiectul intr-un mod extensibil http://goo.gl/fb/NKDX #WorldIT…


  • Facebook

    WorldIT.info
  • Ultimele Atacuri Cibernetice din Romania – RO Hacked

    • imacoolat-curat.ro
      | Published: februarie 3, 2020 - 2:00 am
    • hotel-palace.ro
      | Published: februarie 2, 2020 - 2:00 am
    • www.tahometru.ro
      | Published: februarie 1, 2020 - 2:00 am
    • alexisart.ro
      | Published: ianuarie 30, 2020 - 2:00 am
    • justshop.ro
      | Published: ianuarie 29, 2020 - 2:00 am
    RO Hacked este registrul atacurilor cibernetice din România.
  • Caută

  • Articole Recomandate

    • Recent Posts
    • Tags
    • Număr record de participanți la DefCamp 2015, cel mai important eveniment dedicat securității cibernetice din Europe Centrala si de Estdecembrie 2, 2015
    • La DefCamp 2015 vei afla prin ce tehnici pot fi evitate măsurile de securitate ale sistemelor informatice criticeoctombrie 16, 2015
    • Ultima sansa sa rezervi bilete de tip Early Bird la DefCamp 2015septembrie 1, 2015
    • 15 sfaturi despre cum poti deveni un programator bun venite de la specialisti romaniaugust 4, 2015
    • algoritmica Android antivirus Apple Avadanei Andrei benzi desenate BitDefender blog browser C++ Chrome concurs eveniment Facebook Firefox Google google chrome hacking html5 infografic informatica internet Internet Explorer IT javascript linux Microsoft Mozilla Firefox online PHP programare retea sociala review Romania securitate Tehnologie Twitter web Windows Windows 7 Wordpress WorldIT worldit.info Yahoo! YouTube
  • ianuarie 2021
    L Ma Mi J V S D
    « dec.    
     123
    45678910
    11121314151617
    18192021222324
    25262728293031
  • Link-uri Sponsorizate

    • laptop second hand

    • Calculatoare Second Hand

    • cod voucher pc garage

  • Home
  • Tehnic
  • Altele
  • Organizeaza proiectul intr-un mod extensibil
  • Important

    • Bit Sentinel
    • Centrul de Cercetare în Securitate Informatică din România
    • DefCamp
  • Prieteni

    • BetiT.ro
    • bijuterii handmade
    • Computerica | Resurse gratuite PC
    • Descopera.org
    • Gadgeturi si IT – Giz.ro
  • Prieteni

    • PC – Config
    • RO Hacked
    • Stiri IT

Copyright © 2009-2014 WORLDIT. Toate drepturile Rezervate.
Termeni și condiții | Contact | Licența Creative Commons

Multumim foarte mult ca ne-ai raportat greseala! O vom remedia in cel mai scurt timp posibil.