PPTX - Matematikos ir Informatikos fakultetas

Download Report

Transcript PPTX - Matematikos ir Informatikos fakultetas

Donatas Čiukšys
Visorių informacinių technologijų parkas
2010-09-29
Apie pranešėją
 Nuo 1996 m.:
 programuotojas, projektuotojas, architektas UAB
„MitSoft“
 Nuo 2000 m.:
 lektorius Vilniaus universitete, Matematikos ir
informatikos fakultete, Programų sistemų katedroje

http://www.mif.vu.lt
 nuo 2004 m. magistrantams skaitau kursą „Programų
sistemų architektūra ir projektavimas“

http://www.mif.vu.lt/~donatas/
2
Mano supratimą apie architektūrą
formavo:
 Knygos:
 Software Systems Architecture. Working
with Stakeholders Using Viewpoints and
Perspectives, Nick Rozanski, Eoin Woods.
Addison-Wesley, 2005
 Software Architecture in Practice, Second Edition,
Len Bass, Paul Clements, Rick Kazman, 2003
 Software Engineering Institute (SEI) Carnegie
Mellon University (CMU) darbuotojų
straipsniai
 Len Bass, Paul Clements, Rick Kazman
 Daugiau šaltinių:
http://www.mif.vu.lt/~donatas/PSArchitektura
Projektavimas/Teorija.html
3
Architektūros kaip tyrimų krypties
raida
(Pagal straipsnį: “The Golden Age of Software Architecture”)
4
Apžvalga
Teorija
Procesas
Archetipai, architektūros stiliai
Modeliai, struktūros ir vaizdai
Požiūriai (viewpoints)
Kokybinės charakteristikos
Taikomoji architektūra (application architecture),
Dalykinė architektūra (domain-specific architecture)
...
Krioklio/iteratyvus
RUP, UP, Iconix, XP, Scrum, ...
Dalykinės srities modelis (domain model),
scenarijai, reikalavimų specifikacija,
architektūros dokumentacija,
projektinė dokumentacija, testavimo scenarijai,
išeities tekstai, ...
Socialiniai aspektai
Programų sistemų
architektūra
Diplomatija
Konfliktų sprendimas
Lyderio vaidmuo (team leader)
...
Technologijos (software)
Technologijos (hardware)
UI kūrimo platformos: NetBeans platform, Eclipse RCP
(rich client platform)
Karkasai: Web karkasai, programų sistemų kūrimo
karkasai, ...
Java EE: (JSF, EJB, JPA, JMS, Web Services, ...)
.NET: (ASP.NET MVC, WCF, EntityFramework, Messaging,
Web Services, ...)
DBVS: reliacinės, objektinės, objektinės-reliacinės, XML, …
...
Tinklo įranga: ugniasienės, maršrutizatoriai,
load-balancers, ...
Serverinė įranga: serveriai, Network
attached storage (NAS), Storage area
network (SAN), ...
Virtualizacija (VMWare, Xen, VirtualPC, ...)
...
5
Architektai kuria architektūrą
Socialiniai
aspektai
architects
(žmonės)
Programų sistemų
kūrimo proceso
aspektai
architect
(procesas)
UML, našumas, saugumas,
pasiekiamumas,
technologijos, ...
architectures
(architektūra)
6
Specialybė - architektas
 Karjera IT kompanijoje:
 Tinklų prižiūrėtojas , programuotojas, ...,
projektuotojas, ..., architektas, ..., projekto vadovas, ...
 Architekto atsakomybė (supaprastintai): žinant
reikalavimus sistemai, nuspręsti:
 kaip ir į kokias dalis sistemą skaidyti,
 kokias technologijas/įrankius parinkti dalių realizacijai
 kaip dalys bus jungiamos tarpusavyje

išskirstyta sistema ar ne, kokie komunikavimo protokolai
7
Specialybė - architektas
 Kas įtakoja šiuos sprendimus?
 Funkciniai reikalavimai (akivaizdu)
 Nefunkciniai (kokybiniai) reikalavimai

Našumas, saugumas, pasiekiamumas, modifikuojamumas, ...
 Integracijos su egzistuojančiomis sistemomis poreikis
 IT kompanijos vidaus standartai
 Dirbant su kokiomis technologijomis/įrankiais yra sukaupta
daugiausia patirties?
 Biudžetas ir sistemos sukūrimo terminai
 Dažnai prieštarauja užsakovų išsakytiems reikalavimams
(ypač nefunkciniams) – nori gerai, greitai ir pigiai 
8
Specialybė - architektas
 Projektuotojai paprastai atsakingi už projektinius
sprendimus, kurie įtakoja vieną ar kelis sistemos
modulius/posistemius
 Architektas atsakingas už projektinius sprendimus, kurie
įtakoja visą sistemą
 Būtinos žinios iš praktiškai visų informatikos sričių – tiek apie
vartotojo interfeiso kūrimą, tiek apie DBVS (ir ne tik
reliacines), tiek apie OOAP (objektiškai orientuotą analizę ir
projektavimą),

galima tęsti toliau: karkasai, portalai, duomenų saugyklos
(warehouse), verslo procesai ir jų automatizavimas, klasteriai, diskų
masyvai, ...
 Būtina nuolat sekti technologines naujienas ir gebėti jas
palyginti su jau egzistuojančiomis
9
Architektas ir kiti projekto dalyviai
Užsakovas
Sisteminis
analitikas
Projekto
vadovas
Architektas
Projektuotojai/
programuotojai
Dalykiniai/techniniai
ekspertai/architektai
10
Užsakovas, sisteminis analitikas ir
architektas
 Nors yra svarbu suprasti santykinę reikalavimų vertę įmonės
verslui (tą išmano sisteminis analitikas), tačiau ne mažiau
svarbu atsižvelgti ir į reikalavimų įgyvendinimo kaštus ir
rizikas
 Ypač nefunkcinių reikalavimų
 Nefunkcinių reikalavimų įgyvendinimo kaštus ir rizikas gali
būti sunku įvertinti dėl sisteminio analitiko žemo ar
neadekvataus technologinių žinių lygio
 Aišku, yra sisteminių analitikų, kurie ir profesionaliai atlieka
(nefunkcinių) reikalavimų analizę, ir puikiai išmano
technologijas, tačiau tai dažniau išimtis, nei taisyklė
 Architektas ir yra tas technologijas išmanantis specialistas,
kuris gali įvertinti nefunkcinių reikalavimų įgyvendinimo
parinktomis technologijomis kaštus bei laiko sąnaudas
11
Architektas ir projektuotojas
 Kaip aprėpti visą sistemą – taikyti “skaldyk ir valdyk” principą
 Kaip smulkiai skaldyti?
 Klasė (OOP prasme), komponentas
 ...
 Tipinis projektavimo sprendimas
(angl. design pattern)
Projektuotojo
 ...
atsakomybė
 Karkasas (angl. framework)
 ...
 Posistemis, modulis
Architekto
 ...
atsakomybė
 Archetipai, architektūriniai stiliai
 ...
 Architektūra
12
Architektas ir projekto vadovas
 Architektas projekto vadovui teikia nefunkcinių
reikalavimų įgyvendinimo kaštų ir rizikų įverčius
 Jei kliento pageidaujamas sistemos pakeitimas (change
request) įtakoja didelę sistemos dalį, architektas
gali/turi įvertinti pasekmes/kaštus/rizikas
13
Architektas ir ekspertai
 Architektas turi turėti akiračio platumą, bet nebūtinai
gilumą
 Turi apimti visą sistemą
 Jei specifinėse srityse architektui trūksta
kompetencijos, jis konsultuojasi su tos srities
ekspertais/architektais, pvz.:
 saugumo ekspertai,
 duomenų architektai (darbo su dideliais duomenų
kiekiais organizavimas/optimizavimas),
 ir pan.
14
Pvz.: duomenų
architekto sritis
 Data
Management
Body of
Knowledge
 http://www.dama.or
g/i4a/pages/index.cf
m?pageid=3364
15
Sąvokų sistema
Architektūrinis
elem entas
2..*
riša
1..*
Tarpelem entis
ryšys
1..*
1..*
susideda
susideda
Architektūros
kūrim o
procesas
pasako,
kaip projektuoti
Architektūra
Program ų
sistem a
turi
1
1
vykdo
projektuoja
tenkina poreikius
gali būti dokumentuota
0..*
Architektas
sukuria
1..*
dokumentuoja
architektūrą
Architektūrinis
aprašas
1..*
išsiaiškina interesus
Suinteresuotas
asm uo
1..*
1..*
turi
susideda
1..*
1..*
Požiūris
atitinka
Vaizdas
0..*
1
atsižvelgia
1..*
0..*
Interesas
1..*
1..*
yra įtakojamas
Sinonimas:
kokybinė
charakteristika
0..*
atsižvelgia
Perspektyva
1..*
16
Požiūriai: 4+1 vaizdo modelis (1995)
17
Dažniausiai naudojami požiūriai
 Praėjus 10 metų po 4+1 vaizdo modelio sukūrimo (1995m.),
Nick Rozanski ir Eon Woods pasiūlė tokį požiūrių rinkinį:
Funkcinis požiūris
Informacinis požiūris
Lygiagrečių procesų požiūris
Konstravimo požiūris
Dislokavimo požiūris
Operacinis požiūris
18
Dažniausiai reikalaujamos kokybinės
charakteristikos (perspektyvos)
 Saugumas – užtikrina priėjimo prie sistemos resursų
kontrolę,
 Našumas ir skaliuojamumas – padeda pasiekti
reikiamą sistemos našumą ir užtikrina, kad sistema
tinkamai reaguos į didėjantį apkrovimą,
 Pasiekiamumas ir patikimumas/stabilumas – užtikrina
sistemos pasiekiamumą reikiamu laiku reikiamam
naudotojų skaičiui bei apibrėžia, kaip sistema tvarkysis
su gedimais,
 Evoliucija (=modifikuojamumas) – užtikrina, kad
sistemoje bus galima nesunkiai padaryti pakeitimus
19
Priėmimas
Integracija
Kodavimas/
testavimas
Projektavimas
Reikalavimų analizė
Architekto įtraukimo
į projektą laipsnis
Architekto užimtumas projekte
Laikas
20
Architektui reikalingi įgūdžiai
 Žemiau išvardinti pagrindiniai įgūdžiai, kuriais turi
pasižymėti žmogus, ketinantis tapti architektu:
 Bent paviršutinis visų šiuolaikinių technologijų
išmanymas
 Patirtis projektuojant ir kuriant programų sistemas
 Gebėjimas greitai perprasti naujas žinias, susijusias su
nepažįstamomis dalykinėmis sritimis
 Komunikabilumas, gebėjimas susišnekėti su įvairų
techninį išsilavinimą turinčiais žmonėmis, gebėjimas
išreikšti mintis jų sąvokų sistema, o ne savo
21
Architekto atsakomybės
 Užtikrinti, kad programų sistemos apimtis (angl. scope) ir







ribojimai yra dokumentuoti ir pripažinti suinteresuotų asmenų
Identifikuoti ir įtraukti į projektą svarbius suinteresuotus
asmenis
Padėti priimti sistemos lygio projektinius sprendimus,
užtikrinant, kad jų priėmimui yra turima visa reikalinga
informacija ir kad šie sprendimai atitinka suinteresuotų asmenų
poreikius
Apibrėžti ir dokumentuoti programų sistemos architektūrą
Prižiūrėti architektūros aprašą, bei būti už jį atsakingu
Užtikrinti, kad programų sistemos architektūra atitinka sistemai
keliamas kokybines charakteristikas
Padėti užtikrinti, kad sutarti architektūriniai principai ir
standartai iš tiesų įgyvendinti sukurtoje programų sistemoje
Užimti techninio lyderio vaidmenį komandoje
22
The role of a software architect
 http://www.codingthearchitecture.com/pages/book/role.html
23
Apibendrinimas
 Klasikinis/dažnas architekto pareigybės įsivaizdavimas:
 Išmanyti technologijas, projektavimą, gebėti sistemą skaidyti
į dalis ir joms parinkti technologijas
 Visus reikalavimus išsiaiškina sisteminis analitikas
 Architektas projekto pradžioje sukuria architektūrą ir
projektą palieka
 Realybė:
 Reikia viso projekto eigoje susitikinėti su suinteresuotais
asmenimis ir derinti prieštaringus (nefunkcinius)
reikalavimus
 Reikia išmanyti kokybinių charakteristikų realizavimo
technikas/taktikas, gebėti įvertinti nefunkcinių reikalavimų
poveikį sistemos struktūrai
 Dirbti reikia viso projekto metu, darbas įtraukia ir
programavimo veiklas (integracija; nefunkcinių reikalavimų
įgyvendinimas)
24
Apibendrinimas
 Tam, kad sukurti architektūrą, reikės projektuoti:
 Funkcinius reikalavimus; tam mes turime požiūrius:



Funkcinis, informacinis, lygiagrečių procesų, konstravimo,
dislokavimo, operacinis
Dažniausiai pasitelkiama UML notacija
Šito studentai mokinami klasikiniuose programų sistemų
inžinerijos kursuose
 Nefunkcinius reikalavimus; tam mes turime kokybines
charakteristikas:



Saugumas, našumas, pasiekiamumas, modifikuojamumas, ...
Šito studentai mokinti buvo pradėti visai neseniai!
UML čia nepadeda; kiekviena kokybinė charakteristika įtakoja
daugumą UML diagramų, sukurtų projektuojant funkcinius
reikalavimus
25
“Smoke break” 
 Aptarėme teorinius architektūros kūrimo aspektus
 Toliau žvilgsnis į kai kuriuos praktinius aspektus:
 Saugumo kokybinė charakteristika
 Skaliuojamumo kokybinė charakteristika
 Technologinės platformos (Java EE ir .Net)
26
Saugumo eksperto akiratis
 Knyga, duodanti akiračio platumą:
 Architecting secure software systems, Asoke K. Talukder, Manish
Chaitanya, 2009
 Turinys
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Security in Software Systems
Architecting Secure Software Systems
Constructing Secured and Safe C/UNIX Programs
Constructing Secured Systems in .NET
Networking and SOA-Based Security
Java Client-Side Security
Security in Mobile Applications
Security in Web-Facing Applications
Server-Side Java Security
Constructing Secured Web Services
27
Saugumo eksperto akiratis: vienas iš „aisbergų“:
8. Security in Web-Facing Applications
 Vulnerabilities in Web
 Threat Modeling for Web
Applications
 Security Development
Lifecycle for Web
Applications
 Identity Management




Single Sign-On
Identity Federation
Identity Security
Directory Services
 Public Key Infrastructure
 Identity-Based







Cryptosystem
Forward Secure Signature
Code Injection
Parameter Tampering
Cross-Site Scripting
File Disclosure
Next Generation Web
Security
Security Review and Testing
of Web Applications
28
Skaliuojamumo kokybinė
charakteristika
 Gera apžvalga „į plotį“ (pateikia „aisbergų viršūnėles“):
 http://www.slideshare.net/jboner/scalability-availabilitystability-patterns
 Našumo problemą turime, jei sistema lėtai veikia su mažu
naudotojų skaičiumi
 Skaliuojamumo problemą turime, jei su mažu naudotojų
skaičiumi sistema veikia greitai, bet su dideliu – lėtai
 Sistema skaliuojasi 100% (is scalable), jei du kartus
padidinus naudotojų skaičių, atsako laiką galima išlaikyti
tą patį, jei sistemoje du kartus padidiname resursų kiekį
(CPU/RAM)
29
Skaliuojamumo kokybinė
charakteristika: „aisbergų viršūnėlės“
 State/data perspective:
 Caching and Distributed
caching
 Data grids
 Service of Record
 Behaviour perspective:
 Parallel Computing
 Load-balancing
 Event-Driven Architecture

NoSQL
RDBMS

 CAP theorem

 Partitioning

 Replication




Messaging
Enterprise Service Bus
Domain Events
Event Stream Processing
Event Sourcing
Command & Query
Responsibility Segregation
(CQRS)
30
CAP teorema
 CAP teorema (Brewer‘io teorema) teigia, kad
programų sistemai neįmanoma vienu metu teikti visų
šių garantijų:
 Consistency (visi klientai visada mato vienodus
duomenis)
 Availability (dalies mazgų gedimas nesutrikdo likusių
mazgų darbo – klientai naudojasi pilnu funkcionalumu)
 Partition Tolerance (sistemos išskirstymo galimybė;
kiekviena išskirstyta dalis turi tuos pačius
duomenis/funkcionalumą)
31
32
Architektai ir judrūs (agile) procesai
 Tom Hollander patirtis, dirbant architektu judriame procese
 http://www.infoq.com/news/2010/09/Tips-Architect-Agile-Team
 a Solutions Architect at Microsoft Australia
 Projekto struktūra:
 PjM – Project Manager, similar to a Scrum
PjM
Release
PdM
Team
UX
Arch
Test
Dev






Master, making sure the team is following the
process.
PdM – is the Product Manager, also known as
the Customer or the Product Owner,
determining what the product is supposed to
be
Architect – a solution/application architect
Dev – the development team
Test – the test team
UX – the User Experience team
Release – the Build and Release role taking
care of the building process
33
Architektai ir judrūs (agile) procesai
 Hollander has come up with a top 10 list of things for a
solution architect to be successful in an agile team:
1.
2.
3.
4.
“Just enough” upfront design – a certain amount of upfront design – 1-
2 weeks - is absolutely needed based on what type of application it is
Start with a vertical slice – means starting with a small piece of
functionality which cuts as many vertical layers as possible in order to tie
together all the technology pieces decided during the previous phase.
Just-in-time design each iteration – At the middle of a 4-week
iteration, the project manager, the product manager and the architect should
meet to discuss the requirements to be addressed during the following
iteration, to make sure they all agree on them, what is more important is put
up in front, and everything is understood.
Trust your team… but be there for them – this has to do with the
relationship architect-developer. The architect needs to make sure he does
not overstep his role, making the developer’s job boring by taking all the fun
of decision making. In the same time, the architect needs to be a mentor for
the team, solving difficult problems that might bog down the developers..
34
Architektai ir judrūs (agile) procesai
5.
6.
7.
8.
9.
Write code! – The architect should know what’s in the code in order to have a
better idea on the impact of his decisions. He can also figure out when a refactoring is
needed. A code writing architect has better credibility with the development team.
Be involved in everything – It is good for the architect to be involved in all
meetings related to his project: design, development, code reviews, requirements
planning, etc., because he can have a larger and more clear perspective on what is
going on, and he can help the product manager to avoid making wrong decisions in an
early stage by informing him/her on their possible outcome.
Drive a culture of quality
Know when changes are required – The architect should be very flexible
and ready to make design changes when they are required. It may be that an early
solution is no longer appropriate, or new requirements demand a different approach.
Shield the team from external randomization – While this is usually
the job of a project manager/Scrum master, the architect can get involved in
protecting the team from external requests that tend to divert the team’s focus and
take time from actual work.
10. Write docs … but only if someone needs to read them
35
Trumpai apie technologijas
 Java EE
 Dirbu nuo 1998 m., dėstau studentams kaip kurso
„Programų sistemų architektūra“ technologinę dalį
 http://www.mif.vu.lt/~donatas
 .Net
 Stebiu viena akimi 
36
Java EE evoliucija
37
Java EE 6 apžvalga
38
Java EE technologijos daugelio
lygmenų architektūroje
Serveris
Klientas
Naršyklė
Vartotojo
interfeiso
paruošimo
lygmuo
Dalykinio
funkcionalumo
lygmuo
Servlets,
JSP, JSF
Esybių
lygmuo
DBVS
lygmuo
(verslo logika)
(duomenų
pavaizdavimas
objektais)
(duomenų
saugojimas)
EJB
JPA
RDBVS
CDI (Contexts and dependency injection)
39
.Net technologijos daugelio
lygmenų architektūroje
Serveris
Klientas
Vartotojo
interfeiso
paruošimo
lygmuo
Naršyklė
ASP.NET
MVC
Dalykinio
funkcionalumo
lygmuo
(verslo logika)
WCF
Transactions,
...
Esybių
lygmuo
(duomenų
pavaizdavimas
objektais)
ADO.NET
Entity
Framework
DBVS
lygmuo
(duomenų
saugojimas)
RDBVS
40
Kas įdomu architektui
(nesvarbu kokia technologinė platforma, Java EE ar .Net)
Presentation Tier
View
Template language
Expression language
Drag-and-drop
Preview in browser
Controller
Declarative page flow
Declarative form validation
Page composition
Form resubmition prevention
Inversion of Control (IoC)
Dependency Injection
Action-based controller
Component-oriented
controller
Request, session contexts
Conversation context
Business Logic Tier
Stateful components
Stateless components
Memory management
(pooling)
Distribution transparency
Declarative transactions
Declarative security
Declarative persistency
Dependency injection
Declarative scope/context
management
Data Tier
Object/Relational Mapping (ORM)
CRUD SQL generation
Many-to-many relationships
Primary key generation
Lazy resolution of queries
n+1 select problem
Inheritance/polymorphic queries
Query caching
Disconnected operation mode
...
RDBMS vendor independence
41
Ačiū už dėmesį
 Klausimai, pastabos, prieštaravimai , diskusija...
42