Documente Academic
Documente Profesional
Documente Cultură
Tehnologii Web
Henri Coand
Aplicaii Web
mobil laptop
PC
Realitate
de la coninut (hiper)textual
la aplicaii Web sociale + interaciune natural
Realitate
Realitate
Realitate
Realitate
interaciune funcionaliti
controale
tehnologii
limbi naturale
algoritmi
indexare
structurare
meta-date
instrumente
metodologii
stimuli
utilizatori
interfa
software
coninut creatori
scopuri
psihologie
comportament
Necesiti
inginerie Web
Necesiti
modelare
avansat
Robert Baxley
funcionalitate
+
informaii oferite
Jesse Garrett, The Elements of User Experience (2nd Edition), New Riders, 2011
aplicaie Web
Methodologies
(produs software)
Cerine (requirements)
Analiz & proiectare (software design)
Implementare (build)
Testare (testing)
Exploatare (deployment)
Mentenan (maintenance)
Evoluie (evolution)
creare/adaptare
de coninut
testare
arhitectura info
+ navigare
mentenan
avansat
avansat
users
context
cerine
cerine
Documentare
cerine
cerine
cerine: exemple
cerine: exemple
Privitoare la coninut
audiena e.g., internaionalizare
context de navigare
preferine
disponibilitate permanent (7 zile, 24 de ore/zi)
recurgerea la surse eterogene de date
cutare, filtrare, recomandare
etc.
Calitative
funcionalitate
fiabilitate
utilizabilitate
eficien (performan)
mentenabilitate
independena de platform
Referitoare la evoluie
utilizatorul final exploateaz aplicaia Web
fr a trebui s-o (re)instaleze pe calculator
iniial:
oferirea funcionalitilor eseniale (less is more)
iniial:
oferirea funcionalitilor eseniale (less is more)
versiuni ulterioare:
extinderea aplicaiei Web
pe baza unei interfee de programare (API) publice
ce ncurajeaz dezvoltarea de soluii date de utilizatori
arhitecturi
cerine funcionale
impuse de clieni,
vizitatori,
concuren,
factori decizionali (management),
evoluie social/tehnologic,
arhitecturi
factori calitativi
utilizabilitate
performan
securitate
refolosire a datelor/codului
etc.
arhitecturi
aspecte tehn(olog)ice
platforma hardware/software (sistem de operare)
infrastructura middleware
servicii disponibile e.g., via API-uri publice
limbaj(e) de programare
sisteme tradiionale (legacy)
arhitecturi
experiena
recurgerea la arhitecturi i platforme existente
abloane de proiectare (design patterns)
folosirea unor soluii la cheie: biblioteci, framework-uri
management de proiecte
etc.
arhitecturi
client(i)
firewall
proxy
middleware
server(e) Web
server(e) de aplicaii
framework-uri, biblioteci, alte componente
server(e) de stocare persistent e.g., baze de date
server(e) de coninut multimedia
server(e) de management al coninutului (CMS)
aplicaii/sisteme tradiionale
arhitecturi web
proiectare
proiectare
Pattern (ablon)
regul ce exprim o relaie
dintre un context, o problem i o soluie
iniial, cu utilizare n arhitectur
Christopher Alexander, 1979
proiectare
Pattern (ablon)
regul ce exprim o relaie
dintre un context, o problem i o soluie
context
problem
soluie
proiectare
lucrarea de referin:
E. Gamma et al., Design Patterns, Addison-Wesley, 1995
proiectare
avansat
proiectare
proiectare
proiectare
proiectare
proiectare
proiectare
proiectare
proiectare
structurale
Adapter, Bridge, Decorator, Faade, Flyweight, Proxy
comportamentale
Command, Iterator, Mediator, Observer, State, Visitor
proiectare
Web Patterns
Model View Controller
Page Controller
Front Controller
Template View
Transform View
Application Controller
M. Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley (2003)
proiectare
avansat
proiectare
avansat
proiectare
Internet
(Web)
Client
(interface)
Server de aplicaii
Stocare
(application) (persistence)
Cream / Markup
Sponge / Database
Fruit / Presentation
Cream / Markup
Sponge / Database
Fruit / Presentation
arhitecturi web
Modelul de structurare a datelor este separat
de maniera de procesare (controlul aplicaiei) i
de modul de prezentare a acestora (interfaa Web)
arhitecturi web
Modelul de structurare a datelor este separat
de maniera de procesare (controlul aplicaiei) i
de modul de prezentare a acestora (interfaa Web)
ablon arhitectural
descris n premier n 1979 n contextul interaciunii
dintre om i calculator Smalltalk (Xerox PARC)
View
Model
(prezentare + interaciune)
(structura datelor)
Controller
(procesare)
View
Model
stocare persistent
Controller
aplicaie (server i/sau client)
(No)SQL, JSON,
XML (XQuery), RDF (SPARQL),
View
Model
stocare persistent
Controller
aplicaie (server i/sau client)
exemplificri diverse:
ASP.NET MVC (C# et al.), Catalyst (Perl), ColdBox (ColdFusion),
Django (Python), FuelPHP, Grails (Groovy), Laravel (PHP),
Lift (Scala), Rails (Ruby), Sails (Node.js), TurboGears (Python),
Yesod (Haskell), Wicket (Java), Wt (C++), Zikula (PHP), ZK (Java)
Controller
Model
resursele gestionate de software utilizatori, mesaje,
produse etc. au modele specifice
desemneaz datele i regulile (i.e. restriciile)
referitoare la dateconcepte viznd aplicaia Web
ofer controller-ului o reprezentare a datelor solicitate
i e responsabil cu validarea datelor menite a fi stocate
View
furnizeaz diverse maniere de prezentare a datelor
furnizate de model via controller
pot exista view-uri multiple,
alegerea lor fiind realizat de controller
etape tipice:
(1) cerere trimis de client e.g., navigator Web,
(2) dirijare (routing) a cererii ctre controller,
(3) recurgerea la un model, (4) furnizare reprezentare,
(5) selectare a unui view, (6) prezentare coninut la client
avansat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/
app
assets
images
javascripts
stylesheets
controllers
helpers
mailers
models
views
layouts
config
db
doc
lib
log
public
script
test
fixtures
functional
integration
performance
unit
tmp
vendor
plugins
avansat
structura de directoare
n cazul unei aplicaii Web
folosind framework-ul
CakePHP
http://cakephp.org/
app
Config
Console
Controller
Lib
Locale
Model
Behavior
Datasource
Plugin
Test
tmp
Vendor
View
Elements
Errors
Helper
Layouts
Pages
Scaffolds
webroot
css
files
img
js
lib
plugins
vendors
avansat
app
assets
javascripts
stylesheets
apps
libs
main
controllers
models
views
conf
project
public
images
icons
javascripts
avansat
avansat
Variante derivate:
MVVM (Model View ViewModel)
MVP (Model View Presenter)
Passive View
Supervising Controller
PAC (Presentation Abstraction Control)
avansat
implementare
implementare
implementare
implementare
client prostu
(dumb)
browser
frontend
server gras
(fat)
pagini <Web/>
HTML, CSS,
prezentare
procesare
abstractizare
date
backend
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
browser
frontend
server gras
(fat)
pagini <Web/>
HTML, CSS,
prezentare
procesare
abstractizare
date
backend
frecvent, aplicaie monolitic
(e.g., un WAR: 2.2 M linii de cod, 418 .jar-uri,
startare n 12 min. conform plainoldobjects.com)
www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/
avansat
implementare
limbaj(e) de programare
API-ul de baz
stocare persistent a modelelor de date (relaionale, XML)
interaciune Web
cookie-uri i sesiuni
medii de dezvoltare + cadre de lucru
caracteristici particulare
implementare
implementare
implementare
securitate, consisten,
acces la resursele mediului de operare/rulare,
asigurarea independenei de platform
implementare
implementare
implementare
implementare
avansat
implementare
implementare
implementare
exemplificri:
ASP.NET (<asp:control> e.g., FileUpload, ListBox, Table,...)
framework-ul PRADO (PHP)
formidable, form-data, forms module Node.js
similar, pentru platforma Java: e.g., JSF (JavaServer Faces)
implementare
implementare
avansat
implementare
avansat
implementare
implementare
avansat
implementare
avansat
implementare
avansat
implementare
avansat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/
implementare
Exemple de framework-uri care faciliteaz dezvoltarea de
aplicaii Web la nivel de server
avansat
implementare
avansat
implementare
Serviciu Web
implementare
detalii n
cursurile viitoare
Serviciu Web
implementare
avansat
implementare
avansat
implementare
avansat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/
privire pragmatica
avansat
Web component
parte a unei aplicaii Web
ce ncapsuleaz o suit de funcii nrudite
e.g., calendar, cititor de fluxuri de tiri,
buton de partajare a URL-ului n alt aplicaie
implementare
avansat
Web component
dezvoltare bazat pe o bibliotec/framework
soluii uzual, la nivel de client (browser Web):
Dojo Toolkit, jQuery UI, React,
implementare
Widget
aplicaie de sine-stttoare sau
inclus ntr-un container (e.g., un document HTML)
ce ofer o funcionalitate specific
ruleaz la nivel de client (platform pus la dispoziie
de sistemul de operare i/sau de navigatorul Web)
implementare
(Web) app
o aplicaie (Web) instalabil
care folosete API-urile oferite de o platform:
browser, server de aplicaii, sistem de operare,
implementare
(Web) app
a distributed computer software application designed for
optimal use on specific screen sizes and
with particular interface technologies
Robert Shilston, 2013
implementare
(Web) app
uzual, se poate obine via un app store
(centralizat sau descentralizat)
exemple notabile:
Chrome Apps
aplicaii Windows dezvoltate n JavaScript
aplicaii Web mobile pentru Firefox, Kindle Fire,...
implementare
avansat
native
app
Web browser
HTTP
WebSockets
single
page
app
aplicaii
Web
i
servicii
(API-uri)
app store
platform
(OS + device)
Add-on
denumire generic a aplicaiilor asociate unui browser
(extensii, teme vizuale, dicionare,
maniere de cutare pe Web, plug-in-uri etc.)
exemplificare: addons.mozilla.org
implementare
dezvoltare
mediu de execuie
(runtime environment)
rulare
dezvoltare
cod-surs stocat
(code repositories)
instrumente de
dezvoltare (IDE)
Development as a Service
avansat
mediu de execuie
(runtime environment)
rulare
dezvoltare
cod-surs stocat
(code repositories)
instrumente de
dezvoltare (IDE)
BitBucket,
GitHub
avansat
dezvoltare
dezvoltare
Soluii distribuite:
Git (implementat n bash, C i Perl)
http://git-scm.com/
Mercurial (dezvoltat n Python)
http://mercurial.selenic.com/
Rational Team Concert (oferit de IBM)
jazz.net/products/rational-team-concert/
Instrumente client/server:
Apache Subversion SVN
Microsoft Team Foundation Server TFS
ncurajarea/impunerea
unui stil de redactare a codului-surs
exemple:
C# https://github.com/dennisdoomen/csharpguidelines
Java http://checkstyle.sourceforge.net/
JavaScript https://github.com/rwaldron/idiomatic.js/
Perl http://perldoc.perl.org/perlstyle.html
PHP http://pear.php.net/manual/en/standards.php
Python https://www.python.org/dev/peps/
Ruby https://github.com/styleguide/ruby
Scala http://docs.scala-lang.org/style/
dezvoltare
dezvoltare
exemplificri:
Ant, Grunt, Gulp, make, Mimoza, Rake, tup, Yeoman
dezvoltare
de vizitat i http://xunitpatterns.com/
testare
testare
testare
testare
Publicarea sitului
server dedicat
vs.
furnizor de gzduire Web (hosting)
soluie gratuit vs. comercial
timp de rspuns, scalabilitate, securitate, suport tehnic,...
fr Under construction ori 404 Not found nicieri!
exploatare
exploatare
avansat
La nivel organizaional:
planificarea resurselor
(ERP Enterprise Resource Planning)
managementul workflow-urilor + business rules
integrarea aplicaiilor (EAI Enterprise App Integration)
exploatare: management
avansat
La nivel tehnic:
exploatare: management
avansat
Privind utilizatorul:
interaciune Web e.g., utilizabilitate
http://profs.info.uaic.ro/~busaco/teach/courses/hci/
exploatare: management
http://www.slideshare.net/busaco/hci-2015-610-design-patterns-social-interaction
avansat
Usage analysis
metode explicite
bazate pe date oferite de utilizator
e.g., chestionare i monitorizare (user testing),
analiza mesajelor de e-mail, reacii pe reele sociale etc.
avansat
Usage analysis
construirea profilului utilizatorilor: Web usage mining
analiza fiierelor de jurnalizare a accesului
(e.g., access.log la Apache, AWStats,)
msurarea popularitii sitului: vitez de ncrcare,
numrul de accesri, timpul de vizitare etc.
servicii de monitorizare/raportare
exemple: Google Analytics, WordPress Statistics
obiectiv principal
durat
cost
abordare
tehnologii
procese
rezultat
resurse umane
profilul echipei
management
Web Project
Manager
funcionalitate
coninut (date)
Software
Engineer(s)
Domain
Expert
Multimedia
Designer(s)
Business
Expert
Cteva exemplificri
privind arhitectura unor aplicaii Web?
Scop:
partajare on-line a coninutului grafic (fotografii)
aplicatie reprezentativ a Web-ului social
agregare de comuniti imaginea ca obiect social
suport pentru adnotari via termeni de continut (tagging)
+ comentarii
avansat
backend developers
frontend developers
mobile developers
designers
system administrators
business operations
avansat
programare Webinginerie Web
dezvoltarea aplicaiilor Web aspecte eseniale
rezumat
cerere HTTP
(GET, POST,...)
Client
Web
rspuns
(reprezentare)
HTML, PNG, PDF,
SVG, Atom, ZIP,...
server de
aplicaii
PHP
procesor
(engine)
Zend
programe
.php
resurse (externe)
episodul viitor:
dezvoltarea de aplicaii Web n PHP
Server Web