Proiectarea, dezvoltarea şi întreţinerea siturilor web Nicolae Sfetcu Publicat de Nicolae Sfetcu Copyright 2014 Nicolae Sfetcu Site web sau sit web? Notă: Sunt printre puţinii susţinători ai traducerii expresii englezeşti "web site" prin "sit web", şi nu "site web". Pentru această abordare există argumente atât gramaticale, cât şi de ordin practic. Din punct de vedere gramatical, în limba engleză cuvântul "site" se defineşte prin "o zonă în care se găseşte o construcţie". Echivalentul în limba română a acestui cuvânt, este cuvântul "sit" (vezi, de ex., "sit arheologic"). Prin extensie, un sit web este o zonă pe Internet în care s-a construit ceva, unde se găsesc adunate la un loc nişte pagini web. Din punct de vedere practic, este mult mai uşor şi mai natural de lucrat cu expresia "sit web" decât cu "site web". Ultima expresie se observă că nu este naturală chiar şi atunci când scriem cuvântul pentru diverse cazuri substantivale. Cum este mai natural să scriem, "site-ului web" sau "sitului web"? Dar, întrucât expresia "site web" este mult mai cunoscută, am folosit-o şi eu în această lucrare, chiar dacă nu sunt de acord cu ea.
Dezvoltare web Dezvoltarea web este un termen larg, care cuprinde orice activitate legată de dezvoltarea unui sit web pentru World Wide Web sau intranet. Aceasta poate include dezvoltarea afacerilor prin comerţ electronic (e-commerce), web design, dezvoltarea de conţinut web, programare specifică, configurarea serverelor web, etc. Dezvoltarea web include atât realizarea unor simple pagini web statice cu text, până la cele mai complexe aplicaţii Internet, afaceri electronice (ebusiness), sau servicii de reţele sociale. Pentru afacerile şi organizaţiile mai mari, echipele de dezvoltatori web pot avea sute de specialişti. Organizaţiile mai mici pot necesita chiar şi o singură persoană, permanent sau cu contract temporar, sau încă o persoană designer specializat în editare grafică şi/sau un tehnician pentru sisteme informaţionale. Dezvoltarea web poate fi un efort colaborativ între mai multe departamente sau o activitate specifică unui singur departament specializat.
Industria dezvoltării web Începând cu mijlocul anilor 1990, dezvoltarea web a fost una din industriile cu rata de dezvoltare cea mai mare. În 1995 erau mai puţin de 1.000 companii de dezvoltatori web doar în Statele Unite, iar în 2005 erau peste 30.000 astfel de companii. Industria dezvoltării web se aşteaptă să crească cu peste 20% în 2010. Creşterea acestei industrii este ajutată de marile afaceri care doresc să îşi vândă produsele şi serviciile clienţilor într-un mod automat. În plus, costul dezvoltării siturilor web şi a găzduirii a scăzut dramatic în acest timp. În loc să coste zeci de mii de dolari, ca în cazul siturilor de început, acum se poate dezvolta un sit web simplu pentru mai puţin de 1.000 USD, în funcţie de complexitate şi mărimea conţinutului. Companiile de dezvoltare situri web mai mici pot acum să ofere servicii de web design accesibile atât companiilor mici cât şi persoanelor individuale permiţând dezvoltarea pe mai departe a industriei de profil. Există multe sisteme pentru dezvoltarea web disponibile în mod gratuit. Un exemplu binecunoscut este LAMP (Linux,Apache, MySQL, PHP), Care este de obicei oferit gratuit. Aceasta a ajutat peste tot în lume la instalarea zilnică a noi situri web contribuind astfel la creşterea popularităţii siturilor web. Un alt factor contributiv a fost creşterea uşurinţei în folosirea software WYSIWYG pentru dezvoltarea web, în special Adobe Dreamweaver sau Microsoft Expression Studio (fostul Microsoft Frontpage) . Prin folosirea acestor software practic oricine poate dezvolta o pagină web în câteva minute. Cunoaşterea HyperText Markup Language (HTML) sau a altor limbaje de programare nu mai este necesară, dar este recomandabilă pentru a obţine rezultate profesioniste. Următoarea generaţie de instrumente pentru dezvoltarea web folosesc creşterea puternică a tehnologiilor LAMP şi .NET de la Microsoft pentru a rula pe web aplicaţii online. Dezvoltatorii web livrează acum aplicaţii ca servicii web care erau în mod tradiţional disponibile ca aplicaţii pe calculatorul de birou. În loc să se ruleze cod executabil pe un calculator local, utilizatorii interacţionează cu aplicaţiile online pentru a crea conţinut nou. Aceasta a creat metode noi de comunicare şi a permis descentralizarea informaţiei şi distribuirea media. Utilizatorii pot acum să interacţioneze cu aplicaţii din multe locaţii, în loc să se limiteze doar la o staţie de lucru pentru mediul lor de aplicaţie. Exemple de transformare dramatică în comunicaţii şi comerţ determinate de dezvoltarea webului includ şi comerţul electronic. Siturile de licitaţii online precum eBay au schimbat modul de consum şi cumpărare a bunurilor şi serviciilor de către clienţi. Intermediarii online precum Amazon.com şi Buy.com (printre mulţi, mulţi alţii) au schimbat modul tradiţional de a face cumpărături. Un alt exemplu ilustrativ de schimbare în modul de comunicare determinată de dezvoltarea web este blogul. Aplicaţii web precum MovableType şi WordPress au realizat medii de blog uşor de implementat pentru situri web individuale. Conţinuturi în sursă deschisă precum Typo3, Xoops, Joomla! şi Drupal au extins dezvoltarea web spre noi modalităţi de interacţie şi comunicare
Codare client în dezvoltarea web
• • • •
AJAX – Oferă noi metode de folosire a Javascript, PHP, şi ale limbaje pentru a îmbunătăţi experienţa utilizatorului. Adobe Flash – Playerul Flash este o platformă omniprezentă pentru RIA. Flex 2 a fost de aemenea inclus în Playerul Flash (versiunea 9+). Javascript – Denumită înainte EMCAScript, Javascript un instrument de programare client omniprezent. Microsoft Silverlight – Plugin de browser al lui Microsoft care permite animaţia, grafica vectorială şi payback video de înaltă definiţie, programat folosind limbajele de programare XAML şi .NET.
Codificare partea de server World Wide Web a devenit o importantă platformă pentru dezvoltarea web a multor aplicaţii de întreprindere complexe şi sofisticate, în mai multe domenii. În plus faţă de funcţionalitatea lor multi-faţetă inerentă , aceste aplicatii web implică un comportament complex şi unele cerinţe unice pentru gusabilitate, performanţă, securitate şi capacitatea de a creşte şi evolua. Cu toate acestea, marea majoritate a acestor aplicaţii continuă să fie dezvoltate într-un mod ad-hoc, contribuind la problemele de usabilitate, mentenabilitate, calitate şi fiabilitate. În timp ce dezvoltarea web poate beneficia de practici stabilite de alte discipline conexe, are anumite caracteristici distinctive care necesită consideraţii speciale. În ultimii ani de dezvoltare web au existat unele evoluţii în direcţia soluţionării acestor probleme şi cerinţe. Ca o disciplină în curs de dezvoltare, ingineria web promoveaza în mod activ abordări sistematice, disciplinate şi cuantificabile pentru dezvoltarea cu succes a sistemelor şi aplicaţiilor web de calitate, cu usabilitate omniprezentă. În special, ingineria web se concentrează asupra metodologiilor, tehnicilor şi instrumentelor care stau la baza dezvoltării de aplicaţii web şi care susţin proiectarea, dezvoltarea, evoluţia, şi evaluarea lor. Dezvoltarea de aplicaţii web are anumite caracteristici care o fac diferită de software-ul tradiţional, sistemul informaţional, sau dezvoltarea de aplicaţii de calculator. Ingineria web este multidisciplinară şi cuprinde contribuţiile din diverse domenii: analiza si proiectarea sistemelor, inginerie, ingineria hipermedia / hipertext, ingineria cerinţelor, interacţiunea om-calculator, interfaţa cu utilizatorul, ingineria informaţiilor, indexarea şi regăsirea informaţiilor, testarea, modelarea şi simularea, managementul proiectelor, şi proiectarea şi prezentarea grafică. Ingineria web nu este nici o clona, nici un subdomeniu al ingineriei software, deşi ambele implică programarea şi dezvoltarea de software. În timp ce ingineria web utilizează principii ale ingineriei software, dezvoltarea web cuprinde noi abordări, metodologii, instrumente, tehnici, şi linii directoare pentru a îndeplini cerinţele unice pentru aplicatii web. Elemente ale codificării pe partea de server: • • • • • •
ASP (proprietate Microsoft) ActiveVFP (sursă deschisă) CSP, ANSI C partea de server ColdFusion (proprietate Adobe, fostă Macromedia, anterior Allaire) CGI Erlang, cu setul de soluţii Linux, Yaws, Mnesia, Erlang (LYME)
• • • • • • • • • • • • • •
Groovy (limbaj de programare) Grails (cadru) Java, de exemplu Java EE sau WebObjects Lotus Domino Node.js Perl, de exemplu Catalizator, Dancer sau Mojolicious (toate sursă deschisă) PHP (sursă deschisă) Python, de exemplu Django (cadru web) (sursă deschisă) Real Studio Web Edition Ruby, de exemplu Ruby on Rails (sursă deschisă) Smalltalk de exemplu Litoral, AIDA / Web SSJS Server-Side JavaScript, de exemplu Aptana Jaxer, Mozilla Rhino WebDNA (proprietate WSC) Websphere (proprietate IBM) . NET şi. .NET MVC Frameworks (proprietate Microsoft)
Codificare partea de server şi client • • •
• •
Google Web Toolkit oferă instrumente pentru a crea şi menţine aplicaţii complexe JavaScript front-end în Java. Dart oferă instrumente pentru a crea şi menţine aplicaţii complexe JavaScript front-end, şi ajută codare pe partea de server în limbajul de programare Dart. Opa este un limbaj de nivel înalt, în care sunt implementate atât partea de client cât şi cea de server. Compilatorul apoi decide ce componente va rula pe client (şi sunt traduse automat pentru JavaScript) şi care vor rula pe server. Dezvoltatorul poate regla aceste decizii cu instrucţiuni simple. (sursă deschisă) Pyjamas este un instrument şi un cadru pentru dezvoltarea de aplicatii Ajax şi RIA în Python. Tersus este o platformă pentru dezvoltarea de aplicatii RIA, prin definirea vizuală a interfeţei cu utilizatorul, a comportamentului pe partea de client, şi prelucrare pe partea de server. (sursă deschisă)
Cu toate acestea, limbaje precum Ruby şi Python sunt de multe ori asociate cu serverele de baze de date, altele decât MySQL (M în LAMP). Alte baze de date sunt de asemenea utilizate în prezent pe scară latgă pe web. De exemplu, unii dezvoltatori preferă configurarea unui LAPR (Linux / Apache / PostgreSQL / Ruby on Rails) pentru dezvoltare.
Considerente de securitate Dezvoltarea web are în vedere mai multe considerente de securitate, cum ar fi verificarea erorilor la introducerea de date prin formulare, filtrarea ieşirilor, şi criptarea. Practicile rău intenţionate, cum ar fi injecţia SQL, pot fi executate de către utilizatori cu intenţii răuvoitoare, chiar dacă pot avea cunoştinţe doar primitive de dezvoltare web per ansamblu. Scripturile pot fi folosite pentru a exploata siturile web prin obţinerea accesului neautorizat al utilizatorilor de malware care încearcă să colecteze informaţii, cum ar fi adrese de email, parole şi conţinut protejat, precum numere de carduri de credit. O parte din acestea depind de mediul serverului (cel mai frecvent Apache sau Microsoft IIS) pe care limbajul de scripting, cum ar fi PHP, Ruby, Python, Perl sau ASP, se execută, şi, prin
urmare, nu este ţine de dezvoltatorul web problema securităţii. Cu toate acestea, testarea strictă de aplicaţii web, înainte de lansarea publică, este încurajată, pentru a preveni astfel de exploatări. În cazul în care un anumit formular de contact este prevăzut într-un sit web, ar trebui să se includă un câmp captcha în acesta, care împiedică programe automate de calculator să completeze formularul şi trimiterea automată de spam. Păstrarea un server web în condiţii de siguranţă împotriva intruziunii este adesea numită Server Port Hardening. Multe tehnologii sunt folosite pentru a păstra informaţiile de pe internet în condiţii de siguranţă atunci când se fac transmisii de la o locaţie la alta. De exemplu, certificatele Secure Socket Layer (criptare SSL) sunt emise de autorităţile de certificare pentru a ajuta la prevenirea fraudelor pe internet. Mulţi dezvoltatori folosesc adesea diferite forme de criptare la transmiterea şi stocarea informaţiilor sensibile. O înţelegere de bază a preocupărilor legate de securitate în domeniul tehnologiei informaţiei este de multe ori o parte a cunoştinţelor unui dezvoltator web.
Dezvoltarea web agilă Dezvoltarea software agilă este un grup de metode de dezvoltare software în care cerinţele şi soluţii evoluează printr-o colaborare între echipe auto-organizate, inter-funcţionale. Aceasta promovează planificarea adaptivă, dezvoltare evolutivă, livrarea rapidă, îmbunătăţirea continuă, şi încurajează răspunsul rapid şi flexibil la schimbări. Este un cadru conceptual care se concentrează pe furnizarea de software funcţional cu un minimum de muncă. Agile Manifesto, manifestul care a enunţat pentru prima dată conceptele care stau la baza dezvoltării agile, a introdus termenul în 2001.
Satisfacţia clientului prin livrarea rapidă de software util Accent pe cerinţele de schimbare, chiar şi într-o etapă târzie a dezvoltării Software funcţional este livrat frecvent (săptămâni, mai degrabă decât luni) Cooperarea strânsă, zilnică, între oamenii de afaceri şi dezvoltatori Proiectele sunt construite în jurul persoanelor motivate, care ar trebui să fie de încredere Conversaţia faţă în faţă este cea mai bună formă de comunicare (co-locaţie) Software funcţional este măsura principală a progresului Dezvoltarea durabilă, în măsură să menţină un ritm constant O atenţie continuă pentru excelenţă tehnică şi design bun Simplitatea - arta de a maximiza volumul de muncă în lucru - este esenţială Echipe auto-organizate Adaptarea periodică a circumstanţelor în schimbare
Prezentarea generală
Există mai multe metode specifice de dezvoltare agilă. Cele mai multe promovează dezvoltarea, munca în echipă, colaborarea, şi adaptabilitatea procesului pe tot parcursul ciclului de viaţă al proiectului. Iterativ, incremental şi evolutiv Cele mai multe metode agile descompun sarcinile în etape mici, cu planificare minimă şi care nu implică în mod direct o planificare pe termen lung. Iteraţiile sunt termene scurte care durează de obicei între una şi patru săptămâni. Fiecare iteraţie implică o echipă inter-funcţională de lucru în toate funcţiile: planificare, analiza cerinţelor, proiectare, codificare, unitate de testare, şi testarea de acceptare. La sfârşitul iteraţiei are loc o demonstraţie a produsului în faţa beneficiarului. Acest lucru minimizează riscul global şi permite proiectului să se adapteze la schimbările repede. O iteraţie s-ar putea să nu adauge suficientă funcţionalitate pentru a justifica o lansare pe piaţă, dar scopul este de a avea o lansare disponibilă (cu defecte minime) la sfârşitul fiecărei iteraţii. Iteraţii multiple ar putea fi necesare pentru a lansa un produs sau noi caracteristici. Comunicare eficientă şi faţă-în-faţă Indiferent de disciplinele de dezvoltare necesare, fiecare echipă agilă va conţine un reprezentant al clientului. Această persoană este numită de către părţile interesate să acţioneze în numele lor şi face un angajament personal de a fi disponibilă pentru dezvoltatori pentru a răspunde la întrebări în timpul iteraţiei. La sfârşitul fiecărei iteraţii, părţile interesate analizează progresele şi reevaluează prioritatile, pentru a optimiza rentabilitatea investiţiei şi asigurarea alinierii cu nevoile clientului şi obiectivele companiei. În dezvoltarea de software agil, un radiator de informaţii este un afişaj fizic vizibil (în mod normal mare) situat vizibil într-un birou. Acesta prezintă un rezumat actualizat al stării proiectului software sau a altui produs aflat în lucru. Numele a fost inventat de către Alistair Cockburn, şi este descris în cartea sa din 2002, Agile Software Development. Alternativ, poate fi utilizat un indicator luminos de construcţii pentru a informa o echipă despre starea actuală a proiectului lor. Buclă de feedback şi ciclu de adaptare foarte scurte O caracteristică comună în dezvoltarea agilă sunt întâlnirile zilnice privind evoluţia. Într-o scurtă şedinţă, membrii echipei raportează între ei ce au făcut în ziua precedentă, ce intenţionează să facă în ziua respectivă, şi ce obstacole întâmpină. Focalizare pe calitate Instrumente şi tehnici specifice, cum ar fi integrarea continuă, unitate de testare automatizată, programare pereche, dezvoltare condusă prin teste, modele de design, design în funcţie de domeniu, reingineria codului, şi alte tehnici, sunt adesea folosite pentru a îmbunătăţi calitatea şi a spori agilitatea proiectului.
Filozofia dezvoltării web agile
Comparativ cu ingineria software tradițională, dezvoltarea agilă se adresează în principal la sistemelor complexe și proiectelor cu caracteristici dinamice, nedeterministe și non-lineare, unde estimările exacte, planurile stabile și previziunile sunt de multe ori greu de obţinut în stadii incipiente, si marile proiecte şi aranjamente prestabilite pot provoca, probabil, o mulțime de pierderi, nefiind economice. Aceste argumente de bază și experiențele prețioase din industrie învățate în ani de succese și eșecuri au ajutat la favoarizarea modelului agil de adaptare, iterativ și dezvoltare evolutivă. Adaptiv vs. predictiv Metodele de dezvoltare se găsesc într-un continuum de la adaptiv la predictiv. Metodele agile se află pe partea adaptivă a acestui continuum. O idee de metodă de dezvoltare adaptivă este abordarea de tip "Rolling Wave" în planificarea programului, care identifică repere, dar lasă flexibilitatea căilor de a le atinge, și, de asemenea, permite chiar schimbarea etapelor. Metodele adaptive se concentrează pe adaptarea rapidă la realitățile în schimbare. În cazul în care este nevoie de modificarea proiectului, o echipă de adaptare îl schimbă. O echipă de adaptare va avea dificultati în a descrie exact ce se va întâmpla în viitor. Cu cât este mai îndepărtat termenul, cu atât mai vagă va fi metoda de adaptare va fi cu privire la ce se va întâmpla la acea dată. O echipă de adaptare nu se poate raporta exact la ce sarcini se vor îndeplini săptămâna viitoare, ci doar ceea ce se intenţionează pentru luna viitoare. Când e întrebată despre o lansare de peste șase luni de acum încolo, o echipă de adaptare ar putea să vorbească doar despre angajamentul de lansare, sau privind valoarea așteptată față de cost. Metoda predictivă, în schimb, se concentrează pe analiza și planificarea viitorului în detaliu și luarea în considerare a riscurilor cunoscute. La extreme, o echipă de predicție poate raporta exact ce opţiuni și sarcini sunt planificate pentru întreaga durată a procesului de dezvoltare. Metodele predictive se bazează pe o analiză eficientă a fazei incipiente și, dacă acest lucru merge foarte rău, proiectul ar putea avea dificultăți în schimbarea direcției. Echipele de predicție vor institui de multe ori un panou de control cu schimbările pentru a se asigura că numai modificările cele mai valoroase sunt luate în considerare. Analiza de risc pot fi folosită pentru a alege între metodele adaptive (agile sau bazate pe valori) și predictive (bazate pe planificare). Barry Boehm și Richard Turner sugerează că fiecare parte a continuumului are propriul teren, după cum urmează: Zone adecvate pentru diferite metode de dezvoltare: •
•
•
•
Metode agile o Metode planificate o Metode formale Criticitate redusă o Criticitate mare o Criticitate extremă Dezvoltatori seniori o Dezvoltatori juniori (?) o Dezvoltatori seniori Cerințele se schimbă des
Cerintele nu se schimbă des Cerințe limitate, opţiuni limitate Număr mic de dezvoltatori o Număr mare de dezvoltatori o Cerințe care pot fi modelate Cultură care răspunde la schimbare o Cultură care necesită ordine o Calitate extremă o o
•
•
Iterativ vs cascadă Una dintre diferențele dintre agil și cascadă este că testarea software este realizată la diferite stadii ale ciclului de viață de dezvoltare a software. În modelul cascadă, există întotdeauna o fază de testare separată, aproape de finalizarea unei faze de implementare. Cu toate acestea, în metoda agilă și mai ales în programarea extremă, testarea se face de obicei în același timp cu codarea, sau, cel puțin activitatea de testare începe în primele etape ale iteraţiei. Pentru că faza de testare se face la fiecare mică iterație - care dezvoltă o mică bucată de software - utilizatorii pot folosi frecvent aceste piese noi de software și a valida valoarea. După ce utilizatorii cunosc valoarea reală a piesei actualizate de software, ei pot lua decizii mai bune cu privire la viitorul software. Cu o retrospectivă a valorii și sesiunii de re-planificare software la fiecare iterație - modelul Scrum are maximum o lună ca durată de iteraţie, - va ajuta astfel echipa să adapteze continuu planurile sale astfel încât să maximizeze valoarea pe care o oferă. Această practică iterativă introduce, de asemenea, o "mentalitatea de produs", mai mult decât "mentalitatea de proiect" de tip cascadă. Software poate fi văzut ca un organism viu, care se schimbă în mod activ ca urmare a schimbărilor de mediu. Atâta timp cât software este utilizat, în special atunci când are concurenţi, iterațiile în dezvoltarea de software agilă va conduce schimbarea. Din cauza stilului scurt de iteraţie în dezvoltarea de software agilă, există de asemenea, legături puternice cu conceptul de "lean startup". Cod vs. documentație Într-o scrisoare către IEEE Computer, Steven Rakitin și-a exprimat cinismul cu privire la dezvoltarea agilă, numind un articol care sprijină dezvoltarea software agilă "încă o încercare de a submina disciplina de inginerie software" și a tradus: "software de lucru înaintea documentației cuprinzătoare" ca "Vrem să petrem tot timpul codificând. Ţineţi minte, programatorii reali nu scrie documentație." Acest lucru este contestat de către susținătorii dezvoltării de software agilă, care afirmă că dezvoltatorii ar trebui să scrie documentație în cazul în care acesta este cel mai bun mod de a îndeplini obiectivele în cauză, dar că există modalități de multe ori mai bune de a atinge aceste obiective decât scrierea documentației statice. Scott Ambler afirmă că documentația ar trebui să
fie "doar destul de bună", că documentație prea multă sau completă ar provoca, de obicei, pierderi, iar dezvoltatorii rareori au încredere în documentația detaliată, pentru că este, de obicei, desincronizată cu codurile, în timp ce documentația prea puțină poate provoca, de asemenea, probleme de întreținere , comunicare, învățare și schimb de cunoștințe. Alistair Cockburn a scris despre metoda Crystal Clear: Cristal consideră dezvoltarea a fi o serie de jocuri cooperatiste, iar furnizarea de documentare este destinată să fie suficientă pentru a ajuta la următorul câștig din jocul următor. Produsele de lucru pentru Crystal includ cazuri de utilizare, lista cu riscurile, planul de iteraţie, modele de domeniu de bază, și note de proiectare pentru informare cu privire la alegeri ... cu toate acestea, nu există template-uri pentru aceste documente, și descrierile sunt în mod necesar vagi, dar obiectivul este clar, doar suficientă documentație pentru urmatorul joc. Întotdeauna tind să descriu aceasta echipei mele ca: ceea ce ai vrea să știi dacă ai intra în echipă mâine. - Alistair Cockburn
Metode de dezvoltare Metodele agile sunt axate pe diferite aspecte ale ciclului de viață de dezvoltare software. Unele se concentrează pe practici (de exemplu, XP (Programarea extremă), Programarea pragmatică, Modelarea agilă), în timp ce altele se concentrează pe gestionarea proiectelor software (de exemplu, Scrum). Cu toate acestea, există abordări care oferă o acoperire completă pe durata ciclului de viață de dezvoltare (de exemplu DSDM (Metoda dinamică a dezvoltării sistemelor), IBM RUP (Procesul unificat raţional)), în timp ce cele mai multe dintre ele sunt adecvate din faza de specificare a cerințele (FDD (Dezvoltarea în funcţie de caracteristici), de exemplu). Astfel, există o diferență clară între diferitele metode agile în acest sens. Dezvoltarea agilă este susținută de un pachet de practici concrete propuse de metodele agile, care vizează domenii cum ar fi cerințele, proiectarea, modelarea, codarea, testarea, managementul de proiect, procesul, calitatea, etc Alianța Agile a oferit o colecție online cuprinzătoare, cu un ghid al practicilor agile aplicabile. Croiala metodei În literatura de specialitate, termeni diferiți se referă la noțiunea de adaptare metodei, inclusiv "croiala metodei", "adaptarea fragmentelor metodei" și "ingineria metodei situaționale". Croiala metodei este definită ca: Un proces sau capacitate în care agenții umani determină o abordare a dezvoltării unui sistem pentru o situație specifică a unui proiect prin schimbari sensibile în, precum și interferențe dinamice între contexte, intenții, și fragmentele metodei. Teoretic, aproape toate metodele agile sunt potrivite pentru croiala metodei. Chiar metoda DSDM este folosită în acest scop și a fost adaptată cu succes într-un context CMM (Metoda maturităţiii capabilităţii). Adaptarea la situaţie poate fi considerată ca o caracteristică distinctivă
între metodele agile și metodele tradiționale de dezvoltare software, acestea din urmă fiind relativ mult mai rigide și prescriptive. Implicația practică este că metodele agile permite echipelor de proiect să adapteze practicile de lucru în funcție de necesitățile proiectelor individuale. Practicile sunt activități și produse care sunt parte a unui cadru de metode concrete. La un nivel mai extrem, filosofia din spatele metodei, constând dintr-un număr de principii, ar putea fi adaptată (Aydin, 2004). Programarea extremă (XP) face explicită nevoia de adaptare a metodei. Una dintre ideile fundamentale ale XP este că niciun proces nu se potrivește fiecărui proiect, ci mai degrabă că practicile ar trebui adaptate la nevoile proiectelor individuale. Adoptarea parțială a practicilor XP, după cum a sugerat Beck, a fost raportată în mai multe rânduri. Mehdi Mirakhorli propune o practică a croielii care oferă o suficientă planificare și orientări pentru adaptarea tuturor practicilor. Practica de cercetare-dezvoltare este concepută pentru personalizarea XP. Această practică, propusă la început ca o lucrare de cercetare de amploare în workshop-ul ASPO la conferinţa ICSE 2008, este în prezent singura metodă propusă și aplicabilă pentru personalizarea XP. Deși este în mod special o soluție XP, această practică are capacitatea de extindere la alte metodologii. La prima vedere, această practică pare să fie în categoria adaptării metodei statică, dar experiențele cu practice de cercetare-dezvoltare spune că poate fi tratată ca o adaptare a metodei dinamică. Distincția dintre adaptare metodei statică și adaptarea metodei dinamică este subtilă. Comparație cu alte metode RAD Metodele Agile au multe în comun cu tehnicile RAD (Rapid Application Development dezvoltare rapidă de aplicații) din anii 1980/'90 aşa cum au fost îmbrățișate de James Martin și alții. În plus față de metodele focalizate pe tehnologie, metodele concentare pe client-şiproiectare, cum ar fi Visualization- Driven Rapid Prototyping dezvoltat de Brian Willison, funcţionează prin angajarea clienților și utilizatorilor finali, pentru a facilita dezvoltarea de software agil. CMMI În 2008, Institutul de Inginerie Software (SEI) a publicat raportul tehnic "CMMI sau Agile: De ce să nu se folosească ambele" pentru a face clar că CMMI (Capability Maturity Model Integration - Integrarea modelului de maturitate a capabilităţii) şi Agile pot coexista. Procesele de dezvoltare compatibile CMMI moderne sunt, de asemenea, iterative. Versiunea 1.3 CMMI include sfaturi pentru punerea în aplicare şi îmbunătăţirea proceselor Agile și CMMI împreună.
Aplicaţii compozite (Mashup) Un mashup, în dezvoltarea web, este o pagină web sau o aplicaţie web care utilizează conţinut de la mai mult de o sursă pentru a crea un nou serviciu unic afişat într-o singură interfaţă grafică. De exemplu, aţi putea combina adresele şi fotografiile farmaciilor din oraş cu o hartă Google pentru a crea o hartă mashup. Termenul implică o integrare uşoară, rapidă, folosind frecvent interfeţe de
programare a aplicaţiei în sursă deschisă (API în sursă deschisă) şi surse de date, pentru a produce rezultate îmbunătăţite, care nu erau neapărat motivul iniţial pentru producerea datelor din sursa primară. Termenul mashup provine iniţial dinntr-un argou din Indiile de Vest Britanice, cu sensul de a fi în stare de ebrietate, sau ca o descriere pentru ceva sau cineva care nu funcţionează aşa cum trebuie. În limba engleză recentă se poate referi la muzică, unde oamenii combină perfect melodia de la un cântec cu piesa vocală de la un alt cântec - amestecându-le astfel pentru a crea ceva nou. Principalele caracteristici ale unui mashup sunt combinaţia, vizualizarea, şi agregarea. Este important să se facă datele existente mai utile pentru uz personal şi profesional. Pentru a putea accesa permanent datele altor servicii, mashup-urile sunt, în general, aplicaţii client sau găzduite on-line. În ultimii ani, tot mai multe aplicatii web au publicat API-uri care permit dezvoltatorilor de software să integreze cu uşurinţă date şi funcţii în loc să le construiască ei înşişi. Mashup-urile pot fi considerate a avea un rol activ în evoluţia software-ului social şi Web 2.0. Instrumentele de compoziţie mashup sunt, de obicei, destul de simplu pentru a fi utilizate de către utilizatorii finali. Pentru ele, în general, nu este nevoie de cunoştinţe de programare, şi mai degrabă să sprijine transmiterea vizuală de widget-uri GUI, servicii şi componente, împreună. Prin urmare, aceste instrumente ajută la o nouă viziune de web, unde utilizatorii au posibilitatea să contribuie.
Tipuri de mashup Există mai multe tipuri de mashup, cum ar fi mashup-uri de afaceri, mashup-uri de consum, şi mashup-uri de date. Cel mai frecvent tip de mashup este cel de consum, care vizează publicul larg. •
• •
Mashup-urile de afaceri (sau corporative) definesc aplicaţii care combină resurse, aplicaţii şi date proprii, cu alte servicii web externe. Acestea concentrează datele într-o singură prezentare şi permit o acţiune de colaborare între întreprinderi şi dezvoltatori. Aceasta funcţionează bine pentru un proiect de dezvoltare agile, care necesita o colaborare între dezvoltatori şi client (sau proxy-ul client, de obicei, un manager de produs) pentru definirea şi punerea în aplicare a cerinţelor de afacere. Mashup-urile sunt aplicaţii web securizate, bogate vizual, care expun informaţii interactive din diverse surse de informare interne şi externe. Mashup-urile de consum combină date din mai multe surse publice în browserl şi le organizează o printr-o simplă interfaţă de utilizator de browser. Mashup-urile de date, faţă de mashup-urile de consum, combină tipuri similare de media şi informaţii din surse multiple într-o singură reprezentare. Combinaţia tuturor acestor resurse crează un serviciu nou şi distinct Web care nu a fost prevăzută iniţial de către niciuna din surse.
Prin API Mashup-urile pot fi, de asemenea, clasificate în funcţie de tipul API de bază pe care îl folosesc, dar oricare dintre acestea pot fi combinate între ele sau încorporate în alte aplicaţii. Tipuri de date
• • •
Date indexate (documente, weblog-uri, imagini, clipuri video, articole comerciale, locuri de muncă ...), utilizate de către motoarele de metacăutare Date cartografice şi geografice: software de geolocalizare, geovizualizare Fluxuri de distribuţie, podcast-uri: agregatoare de ştiri
Funcţii • • • • •
Convertoare de date: traducători de limbă, prelucrarea vorbirii, scurtături de URL... Comunicare: e-mail, mesagerie instant, notificare ... Redarea de date vizuale: vizualizare informaţii, diagrame Securitate: sisteme electronice de plată, identificare ID ... Editoare.
Activatori mashup În tehnologie, un activator mashup este un instrument pentru transformarea resurselor IT incompatibile într-o formă care să le permită să fie uşor de combinat, pentru a crea un mashup. Activatorii mashup permit tehnici puternice şi instrumente (cum ar fi platformele mashup) pentru combinarea datelor şi a serviciilor care urmează să fie aplicate la noi tipuri de resurse. Un exemplu de activator mashup este un instrument pentru a crea un flux RSS dintr-o foaie de calcul (care nu poate fi uşor de utilizat pentru a crea un mashup). Mulţi editori mashup includ activatori mashup, de exemplu, Presto Mashup Conectors, Convertigo Web Integrator sau Caspio Bridge. Activatorii Mashup au fost, de asemenea, descrişi ca "furnizori de servicii şi instrumente, [sic], care fac mashup posibil". Istorie Mashup-uri timpurii au fost elaborate manual de către programatori entuziaşti. Cu toate acestea, când mashup-urile au devenit mai populare, companiile au început să creeze platforme pentru construirea de mashup-uri care permit proiectanţilor să construiască vizual mashup-uri prin conectarea împreună a componentelor mashup. Editorii mashup au simplificat foarte mult crearea de mashup-uri, au crescut semnificativ productivitatea dezvoltatorilor mashup şi chiar au permis dezvoltarea mashup de către utilizatorii finali şi experţi non-IT. Componente şi conectori standard permit proiectanţilor să combine resursele mashup în tot felul de moduri complexe, cu uşurinţă. Platformele mashup, cu toate acestea, au făcut prea puţin pentru a extinde domeniul de aplicare al resurselor accesibile prin mashup-uri şi nu au trecut de dependenţa masuo-urilor de date bine structurate şi biblioteci deschise (feed-uri RSS şi API-uri publice). Activatorii mashup au evoluat pentru a aborda aceste probleme, oferind posibilitatea de a converti alte tipuri de date şi servicii în resurse mashup. Resurse web
Desigur, nu toate datele valoroase se află în cadrul organizaţiilor. De fapt, informaţiile cele mai valoroase pentru informaţiile de afaceri şi suportul de decizie se găsesc de multe ori în exteriorul organizaţiei. Odată cu apariţia de aplicaţii internet bogate şi portaluri web online, o gamă largă de procese de afaceri critice (cum ar fi comenzile) devin disponibile online. Din păcate, foarte puţine dintre aceste surse de date sindicalizează conţinut în format RSS, şi foarte puţine dintre aceste servicii oferă API-uri accesibile publicului. Prin urmare, editorii mashup rezolvă această problemă prin furnizarea de activatori sau conectori.
Provocări în integrarea datelor Există o serie de provocări de rezolvat atunci când sunt integrate date din surse diferite. Provocările pot fi clasificate în patru grupe: nepotrivire de text/date, identificatori de obiect şi neadaptarea schemei, neadaptarea nivelului de abstractizare, acurateţea datelor. Nepotrivirea de text-date O mare parte a datelor este descrisă în text. Limbajul uman este adesea ambiguu - aceeaşi companie ar putea fi menţionată în mai multe variante (de exemplu, IBM, International Business Machines, sau Big Blue). Ambiguitatea face conectarea cu date structurate dificilă. În plus, datele exprimate în limbaj uman sunt dificil de procesat prin intermediul programelor software. Una dintre funcţiile unui sistem de integrare a datelor este de a depăşi nepotrivirea între documente şi date. Identitatea obiectului şi scheme separate Sunt disponibile date structurate într-o serie de formate. Convertirea datelor într-un format comun de date este astfel primul pas. Dar chiar dacă toate datele sunt disponibile într-un format comun, în practică sursele diferă în modul în care se afirmă practic acelaşi fapt. Diferenţe există atât la nivelul obiectelor individuale cât şi la nivelul schemelor. Ca un exemplu de nepotrivire la nivel de obiect, luaţi în considerare următoarele: SEC utilizează o aşa-numită Index Central Key (CIK) pentru a identifica persoane (directori executivi, CFO), companii şi instrumente financiare, în timp ce alte surse, cum ar fi DBpedia (o versiune de date structurate de pe Wikipedia), folosesc URI-uri pentru a identifica entităţi. În plus, fiecare sursă foloseste de obicei propria schemă şi idiosincrazii pentru a afirma ceea ce este, în esenţă, acelaşi fapt. Astfel, metodele trebuie să fie clare pentru a reconcilia diferitele reprezentări de obiecte şi scheme. Nivelurile de abstractizare Sursele de date furnizează date la nivele incompatibile de abstractizare sau clasifică datele lor în funcţie de taxonomii pertinente pentru un anumit sector. Din moment ce datele sunt publicate la diferite niveluri de abstractizare (de exemplu, persoană, companie, ţară, sau sector), datele agregate pentru puncte de vedere individuale s-ar putea să nu corespundă datelor, de exemplu, de la birourile de statistică. De asemenea, există diferenţe în agregarea geografică (de exemplu, datele de regiune de la o sursă de date şi de la un nivel de ţară la alta). O problemă conexă este utilizarea monedelor locale (USD vs. EUR), care trebuie să se reconcilieze, în scopul de a obţine date din surse disparate comparabile şi posibile de a fi supuse pentru analiză.
Calitatea datelor Calitatea datelor este o provocare generală, în cazul integrării în mod automat a datelor din surse autonome. Într-un mediu deschis agregatorul de date nu are niciun pic de influenţă asupra editorului de date. Datele sunt de multe ori eronate, şi combinarea datelor agravează adesea problema. Mai ales atunci când efectuează raţionamente (deduce în mod automat noile date din datele existente), datele eronate au un impact potenţial devastator asupra calităţii generale a setului de date rezultat. Prin urmare, o provocare este cum editorii de date pot coordona, în scopul de a rezolva problemele din date sau site-uri pe lista neagră, care nu furnizează date fiabile. Este nevoie de metode şi tehnici pentru: verificarea integrităţii şi a preciziei; evidenţierea, identificarea şi coroborarea înregistrărilor; evaluarea probabilităţii ca o anumită afirmaţie este adevărată; echivalarea diferenţelelor de greutate între sectoare de piaţă sau firme; stabilirea modurilor de compensare pentru creşterea şi soluţionarea litigiilor între furnizorii de date concurenţi (şi, eventual, aflaţi în conflict); şi interacţionarea cu date eronate web de provenienţă şi de calitate potenţial dubioasă. În rezumat, erorile de semnalizare, cantităţi, etichetare şi clasificare, pot împiedica serios utilitatea sistemelor de operare peste astfel de date.
Aspecte arhitecturale ale mashup-urilor Arhitectura unui mashup este împărţit în trei nivele: • • •
Prezentare / interacţiune urilizator: aceasta este interfaţa cu utilizatorul de mashup. Tehnologiile folosite sunt HTML / XHTML, CSS, Javascript, Asynchronous Javascript şi XML (Ajax). Servicii web: funcţionalitatea produsului poate fi accesată folosind serviciile API. Tehnologiile folosite sunt XMLHttpRequest, XML-RPC, JSON-RPC, SOAP, REST. Date: manipularea datelor cum ar fi trimiterea, stocarea şi primirea. Tehnologiile folosite sunt XML, JSON, KML.
Arhitectural, există două stiluri de mashup: bazate pe servere, şi bazate pe web.Mashup-urile bazate pe web folosesc de obicei browser-ul web al utilizatorului pentru a combina şi reforma date, iar mashup-urile bazate pe server analizează şi reformatează datele de pe un server de la distanţă şi transmite datele către browser-ul utilizatorului, în forma sa finală. Mashup-urile par a fi o variaţie a unui model de faţadă. Respectiv: un model de design de inginerie software care oferă o interfaţă simplificată pentru o parte mai mare de cod (în acest caz, codul de agregare a diferitelor tipuri de fluxuri cu diferite API-uri). Mashup-urile pot fi utilizate cu software-ul furnizat ca serviciu (SaaS). După mai mulţi ani de dezvoltare a standardelor, companiile majore au început să adopte arhitecturi orientate pe servicii (SOA) pentru a integra date disparate pentru a le face disponibile ca servicii web discrete. Serviciile web oferă protocoale deschise, standardizate, pentru a oferi un mijloc unic de acces la informaţii de la un set divers de platforme (sisteme de operare, limbaje de programare, aplicatii). Aceste servicii Web pot fi refolosite pentru a oferi servicii şi aplicaţii complet noi în interiorul şi între organizaţii, oferind flexibilitate în afaceri.
Mashup sau portal? Mashup-urile şi portalurile sunt ambele tehnologii de agregare de conţinut. Portalurile sunt o tehnologie mai veche proiectată ca o extensie a aplicaţiilor tradiţionale Web dinamice, în care procesul de conversie a conţinutului de date în pagini web este împărţit în două faze: generarea "fragmente" de marcare, şi agregarea fragmentelor în pagini. Fiecare fragment de markare este generat de un "portlet", iar portalul le combină într-o singură pagină Web. Portlet-urile pot fi găzduite la nivel local pe serverul portalului, sau de la distanţă pe un server separat. Tehnologia portalului defineşte un model de evenimente complet acoperind citirile şi actualizările. O cerere pentru o pagină agregată pe un portal este tradusă în operaţii de citire individuale pe toate portlet-urile care formează pagina (operaţiuni render la nivel local, portleturi JSR 168 sau operaţiuni "getMarkup" pe portlet-uri WSRP la distanţă). În cazul în care un buton de trimitere este apăsat pe orice portlet pe o pagină de portal, se traduce printr-o operaţie de actualizare pe acel portlet singur (processAction pe un portlet local sau performBlockingInteraction pe un portlet WSRP la distanţă). Actualizarea este urmată imediat de o citire pe toate portlet-urile de pe pagină. Tehnologia de portal este pe parte de server, cu agregare cu argitectură multi-tier. Ea nu poate fi folosită pentru a conduce forme mai eficace de integrare a aplicaţiilor, cum ar fi operarea în două faze. Mashup-urile diferă de portaluri în următoarele aspecte: • o o
•
•
•
•
•
Portal Mashup Clasificare o Tehnologie mai veche, extinderea modelului server Web tradiţional folosind abordare bine definită o Utilizeaza tehnici noi "Web 2.0", definite vag Filozofie / abordare o Abordări agregare prin divizarea rolului de server Web în două etape: generarea de marcare şi agregarea de fragmente de marcare o Utilizează API-uri oferite de diferite site-uri de conţinut pentru a agrega şi reutiliza conţinutul într-un alt mod Dependenţe de conţinut o Agregare de fragmente de marcare orientate spre prezentare (HTML, WML, VoiceXML, etc) o Poate opera pe conţinut XML pur şi, de asemenea, pe conţinut orientat spre prezentare (de exemplu, HTML) Dependenţe de locaţie o În mod tradiţional, conţinutul de agregare are loc pe server o Conţinutul de agregare poate avea loc fie pe server fie la client Stil de agregare o Stil "bar de salate": conţinutul agregat este prezentat "unul lângă altul", fără suprapuneri
Stil "creuzet": conţinuturile individuale pot fi combinate în orice mod, rezultând conţinut hibrid structurat arbitrar Model de eveniment o Modelele de evenimente de citire şi actualizare sunt definite printr-un API de portlet specific o Operaţiunile CRUD se bazează pe principii arhitecturale REST, dar nu există API formal Standarde relevante o Comportamentul portlet este reglementat prin standarde JSR 168, JSR 286 şi WSRP, deşi aspectul paginii de portal şi funcţionalitatea portalului sunt nedefinite şi specifice în funcţie de vânzător o Standardele de bază sunt XML interschimbate ca REST sau servicii web. RSS şi Atom sunt utilizate în mod obişnuit. Standarde mashup mai specifice, cum ar fi EMML, sunt în curs de dezvoltare. o
•
•
Modelul portal a durat mai mult, a investit mai mult şi a cercetat ma mult produsul. Tehnologia portal este, prin urmare, mai standardizată şi mai matură. De-a lungul timpului, maturitatea şi standardizarea crescute ale tehnologiei mashup vor face probabil această aplicaţie mai populară decât tehnologia portal, pentru că este mai strâns asociată cu Web 2.0 şi arhitecturi orientate pe servicii (SOA). Este de aşteptat ca noile versiuni ale produselor portal să adauge în cele din urmă suport mashup, în timp ce încă suportă aplicaţii portlet vechi. Tehnologiile mashup, în schimb, este de aşteptat că nu vor oferi suport pentru standardele de portal.
Mashup de afaceri Utilizări mashup se extind în mediul de afaceri. Mashup-urile de afaceri sunt utile pentru integrarea serviciilor de afaceri şi de date, pe măsură ce tehnologiile mashup de afaceri oferă posibilitatea de a dezvolta noi servicii integrate rapid, pentru a combina serviciile interne cu informaţiile externe sau personalizate, şi pentru a face aceste servicii concrete pentru utilizatorul de afaceri prin intermediul interfeţei de browser web prietenoase. Mashup-urile de afaceri diferă de mashup-urile de consum în nivelul de integrare cu medii de afaceri de calcul, caracteristici de securitate şi control al accesului, guvernare, şi gradul de sofisticare a instrumentelor de programare (editori mashup) folosite. O altă diferenţă între mashup-urile de afaceri şi mashup-urile de consum este o tendinţă în creştere în utilizarea mashup-urilor de afaceri în software-ul comercial ca un serviciu (SaaS). Mulţi dintre furnizorii de tehnologii de mashup de afaceri s-au adăugat caracteristicilor SOA.
Foi de stil (Style sheets) O foaie de stil web este o formă de separare între prezentare şi conţinut în web design, în care marcarea (de exemplu, HTML sau XHTML) unei pagini web conţine şi structura semantică a paginii, dar nu defineşte aspectul său vizual (stilul). În schimb, stilul este definit într-un fişier de foaie de stil extern, folosind un limbaj de foaie de stil, cum ar fi CSS sau XSLT. Această abordare de design este identificată ca o "separare", deoarece înlocuieşte în mare măsură metodologia antecedentă în care în marcarea unei pagini este definit atât stilul, cât şi structura.
Beneficii Separarea între stil şi conţinut are avantaje, dar a devenit practică numai după îmbunătăţirean implementării CSS în browsere web populare.
Viteza În general, utilizatorii unui site care utilizează foi de stil vor naviga, în general, mai repede decât în site-urile care nu utilizează tehnologia. Prima pagină, probabil, se va încărca mai lent - pentru că foaia de stil a conţinutului va trebui să fie transferată. Paginile următoare se vor încărca mai repede, deoarece nu mai există informaţii de stil care vor trebui să fie descărcate - fişierul CSS va fi deja în cache-ul browser-ului.
Mentenabilitatea Concentrarea tututror stilurilor de prezentare într-un singur fişier poate reduce timpul de întreţinere şi reduce şansa de eroare, îmbunătăţind astfel prezentarea consistenţă. De exemplu, culoarea fontului asociat cu un tip de element de text poate fi specificată - şi, prin urmare, uşor de modificat - pe toată durata unui site, prin simpla înlocuire a unui şir scurt de caractere într-un singur fişier. Abordarea alternativă, utilizând stiluri încorporate în fiecare pagină în parte, ar consuma timp, şi ar fi predispusă la erori de editare de fiecare fişier.
Accesibilitate Site-urile care folosesc CSS, cu XHTML sau HTML, sunt mai uşor de îmbunătăţit, astfel încât acestea să pară ca fiind similare în diferite browsere (Internet Explorer, Mozilla Firefox, Opera, Safari, etc). Site-urile care folosesc CSS permit "degradarea elegantă" în browserele care nu pot afişa conţinut grafic, cum ar fi Lynx, sau cele care sunt foarte vechi, care nu pot utiliza CSS. Browsere ignoră CSS pe care nu le înţeleg, cum ar fi declaraţiile CSS 3. Acest lucru permite o mare varietate de agenţi de utilizator pentru a putea accesa conţinutul unui site, chiar dacă aceştia nu pot citi foaia de stil sau nu sunt proiectate cu capacitate grafică. De exemplu, un browser cu ajutorul unui afişaj Braille actualizabil la ieşire ar putea ignora complet informaţiile de aspect, iar utilizatorul va avea în continuare acces la întreg conţinutul paginii.
Personalizare În cazul în care informaţiile privind aspectul unei pagini sunt stocate extern, un utilizator poate decide să dezactiveze informaţiile de aspect cu totul, lăsând conţinutul site-ului într-o formă încă uşor de citit. Autorii site-ului pot oferi, de asemenea, mai multe foi de stil, care pot fi folosite pentru a schimba complet aspectul site-ului, fără a modifica conţinutul său. Cele mai multe browsere web moderne, de asemenea, permit utilizatorului să definească propria lor foaie de stil, care poate include norme care suprascriu normele de aspect ale autorului. Acest
lucru permite utilizatorilor, de exemplu, să evidenţieze linkurile pentru fiecare pagină pe care o vizitează.
Coerenţa Deoarece fişierul semantică conţine numai sensurile pe care un autor intenţionează să le transmită, stilul diferitelor elemente de conţinut ale documentului este foarte consistent. De exemplu, poziţiile, textul subliniat, listele şi expresiile matematice, toate primesc proprietăţi de stil aplicate în mod consecvent de la foaia de stil extern. Autorii nu este nevoie să se preocupe de proprietăţile de stil în momentul scrierii. Aceste detalii de prezentare pot fi amânate până la momentul prezentării.
Portabilitate Amânarea detaliilor de prezentare până în momentul prezentării înseamnă că un document poate fi uşor re-procesat pentru un mediu de prezentare cu totul diferit folosind doar aplicarea unei noi foi de stil deja pregătite pentru noul mediu şi în concordanţă cu vocabularul elementar sau structural al documentului semantic. Un document scris special pentru o pagină web poate fi uşor tipărit cu anteturi şi subsoluri, numere de pagină şi un tabel generat de conţinut, pur şi simplu prin aplicarea unei nou foaie de stil.
Dezavantaje practice actuale În prezent, specificaţiile (de exemplu, XHTML, XSL, CSS) şi instrumentele software de punere în aplicare a acestor specificaţii, sunt doar în primele etape de maturitate. Deci, există unele probleme practice cu care se confruntă autorii care doresc să îmbrăţişeze această metodă de separare a conţinut de stil. Adoptarea limitată fără instrumente de analiză şi generare În timp ce specificaţiile de stil sunt destul de mature şi încă se dezvoltă în continuare, instrumentele software s-au adaptat destul de lent. Cele mai multe dintre cele mai importante instrumente de dezvoltare web îmbrăţişează încă un model de prezentare de conţinut mixt. Deci, autorii si designerii care caută instrumente bazate pe GUI pentru munca lor, le este greu să urmeze metoda web semantică. În plus faţă de instrumentele GUI, arhivele partajate pentru foi de stil generalizate, probabil, ar ajuta la adoptarea acestor metode. Limbaje de programare utilizate în cele mai populare site-uri web Cele mai populare (cele mai vizitate) site-uri web au în comun faptul că sunt site-uri web dinamice. Dezvoltarea lor implică, de regulă, codificare pe partea de server, codificare partea de client, şi tehnologie de baze de date. Limbajele de programare folosite pentru a oferi conţinut web dinamic sunt asemănătoare, cu toate acestea variază foarte mult între site-uri.
Optimizarea performanţelor web
Optimizare performanţelor web, sau optimizarea site-ului web, este domeniul care se ocupă cu creşterea vitezei cu care sunt descărcate şi afişate pe browser-ul web al utilizatorului paginile web. Deşi încercările de a îmbunătăţi viteza de descărcare şi de afişare au existat încă de când a fost inventat Internetul în 1993, domeniul nu a fost standardizat, şi nici nu i s-a dat un nume, până în 2004, când expertul în performanţe wen Steve Souders a început să-l numească drept "optimizarea performanţelor web". Cu viteza medie pe Internet acum în creştere la nivel global, este recomandat pentru administratorii site-urilor şi webmasteri să ia în considerare timpul necesar pentru un site web pentru a fi afişat unui vizitator. Viteze mai mari de descărcare a site-ului s-au dovedit a creşte retenţia vizitatorilor şi loialitatea şi satisfacţia utilizatorilor, mai ales pentru utilizatorii cu conexiuni lente la Internet şi cele de pe dispozitive mobile. Performanţa web duce, de asemenea, la apelarea de mai puţine date de către vizitatori, scăzând astfel consumul de energie al unui site web şi impactul asupra mediului. Unele aspecte care pot afecta viteza de încărcare a paginilor includ cache-ul browserului/serverului, optimizarea imaginilor, şi, de asemenea, criptarea (de exemplu SSL), care poate afecta timpul necesar pentru afişarea paginilor.
Cele mai bune practici Există o serie de linii directoare la care dezvoltatorii web pot adera, în scopul de a optimiza performanţele web, precum: •
• •
• •
Steve Souders, care este considerat de mulţi a fi un pionier al domeniului, menţionează 28 de paşi pentru optimizarea performanţei web, de la cele mai mari câştiguri la cele mai mici, în cele două cărţi ale sale pe această temă, High Performance Websites şi Even Faster Websites. Yahoo! are o listă de 35 bune practici împărţite în 7 categorii. În 2009, Google a lansat o iniţiativă de optimizare pentru a oferi dezvoltatorilor web instrumente şi cele mai bune practici pentru a face site-ul mai rapid. Există o secţiune dedicată exclusiv articolelor despre optimizarea performanţelor web. Site-ul WebPlatform include, de asemenea o astfel de listă, ca şi Return On Now. Site-ul Hostiee.com oferă 16 sfaturi de optimizare a vitezei site-urilor web.
Testarea unui site web şi a aplicaţiilor web Testarea Web este numele dat testărilor software care se concentreaza pe aplicaţii web. Testarea completă a unui sistem web înainte de a fi lansat oficial poate ajuta în abordarea unor aspecte înainte ca sistemul să fie deschis publicului. Probleme cum ar fi securitatea aplicaţiei web, funcţionalitatea de bază a site-ului, accesibilitatea pentru persoanele cu handicap şi pentru utilizatorii complet capabili, precum şi disponibilitatea pentru traficul estimat şi numărul de utilizatori, şi capacitatea de a supravieţui unui varf masiv de trafic de utilizatori, ambele fiind legate de testarea la sarcină.
Instrumente pentru testarea performanţelor aplicaţiilor web Instrumentele pentru testarea performanţelor aplicaţiilor web sunt folosite pentru a testa aplicaţii web şi interfeţe legate de web. Aceste instrumente sunt folosite pentru performanţă, sarcină, şi
teste de stres pentru aplicaţii web, site-uri web, servere web şi alte interfeţe web. Instrumentele pentru testarea performanţelor aplicaţiilor web simulează utilizatori virtuali. Astfel, instrumentul este util pentru a verifica strangulării în trafic şi probleme de performanţă ale site-ului sau aplicaţiei web în curs de testare. Un astfel de instrument se confruntă cu diverse provocări în timpul testării şi ar trebui să fie în măsură să efectueze teste pentru: • • •
Compatibilitate browser Compatibilitate sistem de operare Compatibilitate aplicaţie Windows, în cazul în care este necesar
Instrumentul permite unui utilizator să specifice modul în care utilizatorii virtuali sunt implicaţi în mediul de testare, respectiv utilizatori în creştere, în număr constant, sau încărcări periodice de utilizatori. Creşterea sarcinii de utilizatori, pas cu pas, se numeşte RAMP, unde utilizatorii virtuali sunt crescuţi de la 0 la sute. Sarcina constantă de utilizatori menţine sarcina de utilizatori specificată în orice moment. Sarcina de utilizatori periodică tinde să crească şi să scadă sarcina utilizatorilor din timp în timp.
Teste de securitate web Teste de securitate web ne spun dacă cerinţele de aplicaţii web sunt îndeplinite atunci când sunt supuse la date de intrare malware.
Testarea interfeţei cu utilizatorul a aplicaţiilor web Unele şabloane oferă un set de instrumente pentru testarea aplicaţiilor web.
Instrumente de testare web în sursă deschisă • • • •
Apache JMeter: program Java pentru testarea încărcării şi măsurarea performanţei. Curl-loader: instrument puternic scris în C pentru testarea încărcării în diferite scenarii. Selenium: suită de instrumente pentru automatizarea browserelor web. Disponibil in mai multe limbi. Watir: Web Automation Testing In Ruby - pentru automatizarea browserelor web.
Instrumente de testare web pe bază de Windows • • • • • • •
CSE HTML Validator - Testează HTML (inclusiv HTML5), XHTML, CSS (inclusiv CSS3), accesibilitatea - software-ul de la AI Internet Solutions LLC. HP LoadRunner - testează automat performanţe şi sarcina - software de la HP. HP QuickTest Professional - testează automat funcţionalitatea şi regresia - de la HP. IBM Rational Functional Tester NeoLoad - teste de încărcare şi de performanţă - instrument de la Neotys. Soatest - instrument de testare API de la Parasoft Ranorex - testare automată funcţionalitate cross-browser, de la Ranorex.
• • • • •
Silk Performer - instrument de testare performanţă, de la Borland. SilkTest - instrument pentru testarea automată a funcţionalităţii aplicaţiilor de întreprindere. TestComplete - instrument de testare automată, dezvoltat de SmartBear Software Testing Anywhere - instrument de testare automatizat pentru toate tipurile de teste Automation Anywhere. Test Studio - instrument de testare software pentru testarea web a funcţionalităţii, de la Telerik.
Instrumente de testare pe bază de cloud • • •
Blitz: testarea de încărcare şi de performanţă a site-urilor web, aplicaţii web, mobile, şi API-uri REST. Testdroid: testarea compatibilităţii şi funcţionalităţii site-urilor web, şi aplicatii web şi mobile, pe dispozitive reale Android şi iOS. Testize: serviciu simplu de testare сross-dispozitiv şi cross-browser şi servicii de analiză pentru proprietarii de site pentru a identifica problemele de impact ale site-ului.
Dezvoltatori web Dezvoltatorul web este, în mod formal, un dezvoltator de software sau nucleu de program care lucrează în dezvoltarea de aplicaţii de retea (în special internet), folosind protocoale şi servicii specifice. El poate administra site-uri web ca webmaster, proiecta site-uri ca web designer, sau dezvolta aplicaţii. Dezvoltatorul web este angajat la o firmă, sau poate lucra ca freelancer / persoană fizică autorizată. Este important pentru un dezvoltator web să aibă cunoştinţe legate de limbaje de scripting, cum ar fi Python, Perl, PHP, Ruby, VBScript, JScript, etc, sau compilate, precum Java, C, C + +, C #, VB.Net, etc ., pentru a crea aplicaţii web dinamice şi interactive pe server. Pentru a construi aplicaţii web client, un dezvoltator web are nevoie de limbaje de scripting JavaScript (numit şi ECMAScript), de marcare HTML, Cascading Style Sheets, şi DOM pentru browserul web, precum şi tehnologii client: Flash, Java, Curl, XUL, etc Pentru a stoca şi manipula datele, dezvoltatorul web trebuie să aibă cunoştinţe despre sistemele de baze de date relaţionale de management (RDBMS), cum ar fi MySQL, Microsoft SQL Server, baza de date Oracle, PostgreSQL, etc Este foarte util pentru un dezvoltator web să aibă cunoştinţe despre design graficic şi web, să cunoască legile de copywriting pentru diferite ţări, uzabilitate web şi accesibilitate web, precum şi noţiuni de marketing pe Internet, publicitate online şi optimizarea pentru motoarele de căutare. Dezvoltatorii web sunt zeii din lumea virtuală. Ei creează Internetul în fiecare zi şi în fiecare oră, în conformitate cu anumite reguli, standarde şi linii directoare specifice elaborate de către World Wide Web Consortium. Aceste reguli se schimbă din timp în timp în funcţie de evoluţia generală a tehnologiei, de cele mai multe ori autorii acestor schimbări fiind chiar dezvoltatorii web. Profesiunea oficială de dezvoltator web este foarte riguroasă, în conformitate cu standardele şi liniile directoare, şi face o diferenţă foarte clară între această activitate şi cea de design grafic, de ex, considerate ca fiind specifice pentru web designeri, considerate ca o altă profesiune. Dar, din
cauza multitudinii de ghiduri şi informaţii răspândite pe Internet şi accesibile pentru toată lumea, şi a faptului că acest loc de muncă este foarte bine plătit, există astăzi o mulţime de dezvoltatori web începători fără cunoştinţele necesare care, în multe situaţii, nu respectă standardele şi îşi crează propriile lor reguli. O atenţie deosebită trebuie să fie acordată de către dezvoltatorii web securităţii muncii lor, verificării eventualelor erori şi monitorizării practicilor răuvoitoare ale unor utilizatori care încearcă să exploateze vulnerabilităţile sistemelor pentru a obţine informaţii şi a accesa ilegal sistemele. Există o categorie foarte diversificată de locuri de muncă pentru dezvoltatori web, de la simpla introducere a datelor până la funcţii complexe, de management.
Proiectarea, dezvoltarea şi întreţinerea siturilor web Un ghid pentru dezvoltatorii web, cu accent pe HTML, XML, JavaScript, SQL, tehnologii web, software web, software pentru dezvoltare web, aplicaţii web, şabloane pentru aplicaţii web, AJAX, servicii web, sindicalizarea web, web design, situri web, găzduirea web, analiza siturilor web, documente de lucru, şi abordarea unor noţiuni de bază pentru cele mai folosite sisteme de management al conţinutului: Drupal, Joomla, şi WordPress. Dezvoltarea web este un termen larg, care cuprinde orice activitate legată de dezvoltarea unui sit web pentru World Wide Web sau intranet. Aceasta poate include dezvoltarea afacerilor prin comerţ electronic (e-commerce), web design, dezvoltarea de conţinut web, programare specifică, configurarea serverelor web, etc. Dezvoltarea web include atât realizarea unor simple pagini web statice cu text, până la cele mai complexe aplicaţii Internet, afaceri electronice (ebusiness), sau servicii de reţele sociale. Proiectarea paginilor web este un proces de conceptualizare, planificare, modelare şi execuţie a conţinutului media electronic livrat pe Internet într-o formă tehnică (precum limbajele markup) adecvată pentru interpretarea şi afişarea într-un browser web sau altă interfaţă grafică pentru utilizatori (graphical user interface, GUI). Scopul proiectării web este crearea unui sit web (o colecţie de fişiere electronice încărcate pe unul sau mai multe servere) cu conţinut (care poate include caracteristici sau interfeţe interactive) pentru utilizatorul final sub forma paginilor web. Astfel de elemente precum textele, formularele, şi imaginile (GIF, JPG, PNG) pot fi plasate în pagini folosind taguri HTML, XHTML sau XML. Afişarea unor elemente media mai complexe (grafici vectoriale, animaţii, video, sunete) necesită de obicei plugin-uri precum Flash, QuickTime, Java run-time environment, etc. Plugin-urile sunt incluse în paginile web folosind taguri HTML sau XHTML. Ediţia digitală (EPUB, Kindle, PDF): https://www.setthings.com/ro/e-books/proiectareadezvoltarea-si-intretinerea-siturilor-web/
Ediţia tipărită: https://www.createspace.com/5177495 Data publicării: 17 septembrie 2014 ISBN-13: 978-1505584660 ISBN-10: 1505584663 BISAC: Computers / Web / Web Programming Facebook: https://www.facebook.com/Proiectarea-dezvoltarea-%C5%9Fi%C3%AEntre%C5%A3inerea-siturilor-web-193579310993997/
HTML HTML semantic Variaţii HTML HTML5 Atributul alt în HTML şi XHTML Editoare HTML
Limbaje de programare Limbaje de programare folosite în site-urile web cele mai populare*: ASP.NET
XML Structura XML
JavaScript JavaScript în pagini web
JavaScript în HTML
SQL Sintaxa SQL
Report "Proiectarea, dezvoltarea şi întreţinerea siturilor web"