Appunti 1 Appunti, concetti base per l\'esame di architettura Software - a.a. 2015/2016 PDF

Title Appunti 1 Appunti, concetti base per l\'esame di architettura Software - a.a. 2015/2016
Course Architetture software
Institution Università degli Studi Roma Tre
Pages 72
File Size 1.3 MB
File Type PDF
Total Downloads 25
Total Views 138

Summary

Appunti, concetti base per l'esame di architettura Software - a.a. 2015/2016...


Description

[120]Concetti:l’ArchitetturaSoftwarediungrandeSistemaSoftware riguardaingenerelesuequalitàes  trutture,lequalipossonoesseredecompostealoro voltainelementi.Inparticolarenelladefinizionediun’architettura sièinteressatiagli elementidelsistema,lelororelazionielerelazionitralestrutture;influisceinoltresul raggiungimentodellequalitàdesideratedallepartiinteressate .  èuninsiemedielementi  architetturali: ● dataelements,contieneleinformazionidagestire ● processingelements,implementanolefunzionalitàeletrasformazionidesiderate ● connectingelements,tieneinsiemeidiversipezzidell’architettura chevengonoutilizzatisecondounaparticolareforma  catturandoilmodoincuiglielementi sonoorganizzatinell’architettura(comesonocompostielerelazioni/interazionitraessi), insiemeadunagiustificazionelogica  checoglielamotivazioneperlasceltadeglielementie dellaforma}  l’architetturasoftwarediunsistemaèl’insiemedellestrutturedelsistema,necessarieper ragionaresudiesso,checomprendonoelementisoftware,ler elazionitradiessieleloro proprietà  ➔ un’architetturasoftwaredefiniscedeglielementi,enfatizzandoquestistessieleloro interazioni;glielementipossonoesseredivarianatura(softwareononsoftware). Alcunecaratteristichediunelementosono:  ll’internodiunconfine(quelloche ◆ uninsiemebendefinitodiresponsabilità a l’elementofa,quellochenon  faecomelofa) ◆ interfacciab  endefinita,specificandoiservizi  chel’elementofornisceo richiedeaglialtrielementi sidistinguonoduetipidielementi: ◆ componenti, elementiresponsabilidell’implementazionedifunzionalitàedella gestionedidati ◆ connettori , elementiresponsabilidelleinterazionitracomponenti  ➔ unastrutturacomprendeuninsiemedielementi e  lerelazionitraquesti.Unav ista è   unadescrizionediunastrutturainterminideisuoielementiedellerelazionitradi essi(ades.undiagrammaUML) un’architetturacomprendepiùstrutture,lequalipossonocontenereosoloelementi software,oanchenonsoftware. Esempio:notareall’internodi ognivistal’usodielementiedelle rispettiverelazioni;notarele relazionitraelementidiviste differenti Ciascunastrutturacomprendesoloalcunielementienedefinisceunaparticolare configurazionediquesti.Strutturedifferenticomunicanoinformazionidifferenti. Ciascunastrutturaaffrontainteressidifferenti. 

➔ questerelazionisonobasateesclusivamentesulcomportamentoall’interfaccia  degli elementi,ovverosulleloroproprietà(visibiliesternamentedaglialtrielementi). L’architetturanonèinteressataall’implementazioneinternadeglielementi(solo esterna).Laproprietàdiunelementoèosservabilearchitetturalmentesoltantose puòessereosservatodaaltrielementi.Cisonoduetipologiediproprietàdiun elemento: ◆ comportamento, definisceleinterazionifunzionalitral’elementoeilsuo ambiente(disolitodescrittoascatolanera),ossiaiservizicheoffre ◆ proprietàdiqualità , leproprietànonfunzionali,ossiacomeunelementofale coseinterminidiprestazioni,sicurezza,affidabilità… 



➔ ragionare:abbiamoparlatodelleproprietàdeglielementiinternidiunsistema,ma ciòcheinteressasonosoprattuttoleproprietàcomplessivedelsistema.Ladisciplina dell’architetturasoftwareèinteressataacapirecomeglielementiinterniconcerte proprietà,conunacertaorganizzazione(struttura),contribuisconoalleproprietà complessivedelsistema.  iunsistemaèdeterminatodalcomportamento Ilcomportamentocomplessivo d funzionaledeisuoielementi;ciòvaleancheperlequalitàdelsistema  (senonsi progettaopportunamente,laqualitàcomplessivadelsistemacorrispondeallaqualità delsuoelementopeggiore). Unostessoinsiemedielementipuòessereorganizzatoinmodidiversi,ognunodei qualidaràunsostegnodiversoall’architetturadelsistema. Unodegliobiettivifondamentalidelladisciplinadell’architetturasoftwareèlostudio dellerelazionitrastruttura,qualitàinterneedesternediunsistemasoftware, dell’impattodelledecisionidiprogettosullequalitàcomplessivediunsistema software. L’architettodeveessereingradodiidentificarelearchitetturecandidate, comprendereleloroqualità,sceglierel’architettura“migliore”perilparticolare sistemaindiscussione,basandosisugliinteressi. 

[130]VisteePuntidiVistaArchitetturali: l’architetturadiunsistemasoftwareèl’insiemedellestrutturedelsistema,lequalialoro voltacomprendonoelementisoftware,lelororelazionieleloroproprietà. Nelciclodivitadell’architetturaènecessario:progettareperl’architettura,ragionare sull’architetturaecomunicarel’architettura.Questeattivitàpossonoesseresostenuteda un’opportunamodellazione  dell’architettura;unadescrizionearchitetturale(AD)èl’insieme deimodelli(viste)chedocumentanoun’architettura(un’ADdeveesserecomprensibilealle partiinteressateedimostrarechel’architetturasoddisfailorointeressi). Iprogettistiespertisannochelamodellazionehaloscopodifavorirelacomprensione  ela comunicazione (unabuonadescrizioneconsentediconcentrarsieragionarepiùfacilmente suattività,problemiedecisionidiprogettosignificative).Unadescrizionestrutturale dovrebbecoglierelecaratteristichefunzionalielequalitàdelsistema(deveessere comprensibileatuttelepartiinteressate),manonèpossibileragionaresuun’architettura softwaremedianteunsingolomodello;l’architetturadiunsistemacomplessoèdescritto moltopiùefficacementetramiteuninsiemediviste,separatemacorrelate , ciascunadelle qualidescriveunaspettodiversodell’architettura. Levistedescrivonol’interosistemaedimostranocomeilsistemapuòraggiungereisuoi obiettivi;ciascunavistahaloscopodidescrivereunastruttura,ossiauninsiemedielementi delsistemaedirelazionitradiessichesonorilevantirispettoauncertointeresse(conviene operareunadecomposizionediunsistemacomplessoinuninsiemedivisteseparate, considerandoanchelecorrelazionitraleparti). Unpuntodivistaèunatipologiastandarddivistachepuòessereusatainun’AD;lascelta dellevisteperunsistemavienespessoeffettuatacomeselezionedauncatalogodipuntidi vista,scegliendoinbaseagliinteressirilevantiperunsistemaeagliinteressicheciascun puntodivistaèingradodiaffrontare.Sitrattadiun’applicazionedeipatternalleAD, orientataalriusodiconoscenzarelativaallasoluzioneesemplarediproblemisignificativie ricorrenti.

PuntidivistadiSSA:organizzareun’ADsullabasediuncatalogodisettepuntidi vista:

1. puntodivistadelContesto:descrivelerelazioni,ledipendenzeeleinterazionitrail sistemaeilsuoambiente;ilContestoèimportanteperchéaiutalepartiinteressatea comprenderelaportataeleresponsabilitàdelsistema(ecomeessosirelazionacon

ilsuoambiente)  2. puntodivistaFunzionale(organizzazionefondamentaledelsistema):descrivegli elementifunzionalidelsistema,lelororesponsabilità,interfacceeinterazioni principali;lavistaFunzionaleèlapietraangolaredell’AD(guidalaformadialtre struttureeviste,haunimpattosignificativosualcunequalitàdelsistemacome modificabilità,sicurezza…).L’interesseprincipalesonolefunzionalitàdelsistemae lastrutturafunzionaleinternadelsistema;glielementidiunavistafunzionalesono componentieconnettoriacuisonoassegnateresponsabilitàfunzionali 3. puntodivistadelleInformazioni(organizzazionefondamentaledelsistema): descriveilmodoincuil’architetturamemorizza,manipola,gestisceedistribuisce informazioni;importanteperchéloscopodeisistemiinformaticiègestireinformazioni 4. puntodivistadellaConcorrenza(organizzazionefondamentaledelsistema): descrivel’organizzazionedellaconcorrenzaemappaglielementifunzionalisuunità   diconcorrenza 5. puntodivistadelloSviluppo(sostenerelacostruzionedelsistema):descrive l’architetturachesupportailprocessodisviluppo;diinteresseperchisviluppa, verifica,mantieneemigliorailsistema 6. puntodivistadelDeployment(caratterizzal’ambientediesecuzione):descrive l’ambientediesecuzioneincuisaràrilasciatoilsistema,compreseledipendenze dall’ambienteruntime 7. puntodivistaOperational(caratterizzal’ambientediesecuzione):haachefarecon l’amministrazionedelsistemaedellasuainfrastrutturadiesecuzione,inmodocheil sistemapossaessereeffettivamentefruitodaisuoiutenti;descrivecomeilsistema saràamministratoesupportatoquandosaràinesecuzionenell’ambientedi produzione Laseparazionedegliinteressièunprincipioimportante:separagliinteressiinareediverse, inmodocheciascunaareaabbiaunoscopocoeso(cercandodidividereilprogetto sovrapponendolecaratteristicheilmenopossibile).Lamodellazionecondescrizioni separatemacorrelatefavorisceiprocessidianalisieprogettazione(permettendodi concentrarsisuciascuninteresse).Ibeneficichederivanodall’utilizzodivisteepuntidivista sono: ● Gestionedellacomplessità:gliinteressipossonoesseregestitiseparatamente ● MiglioramentodellaFocalizzazione:ciascunmodellopuòesserefocalizzatosuun interessee/osuunaparteinteressata ● ComunicazioneconlePartiInteressate:ciascunaparteinteressataèprobabilmente interessatasoloaunsottoinsiemedell’AD,ilqualedevesostenerelacomunicazione traarchitettoeteamdisviluppo Iproblemiprincipalinell’usodellevistesono: ● incoerenza:l’usodipiùvistesollevailproblemadicoerenzatraviste ● gestionediinteressitrasversali:alcuniinteressipossonoesseregestiticon riferimentoaunasingolavista;altrequalitàperòpossonocorrispondereainteressi trasversaliallevarieviste(es.lasicurezza) ● frammentazione:l’usodiunnumeroeccessivodivistepuòcomplicarela comprensionedell’AD;èmeglioconcentrarsisuvistecheaffrontanosolointeressi veramenteimportanti



selezionediuninsiemesbagliatodiviste:nonsempreèovviocapirequanteequali visteusareperdescrivereuncertosistema unapproccioefficaceperlagestionediinteressitrasversaliapiùvisteèl’applicazionedi scenari;perscenariosiintendeunasituazionecheilsistemadovràprobabilmente affrontare,insiemeaunadefinizionedellarispostarichiestadalsistema

Ilmodelloa4+1Viste

 ● vistalogica:modelloaoggettidelprogetto,chesostieneirequisitifunzionali ● vistadeiprocessi:cogliegliaspettidiconcorrenzaesincronizzazionedelprogetto ● vistafisica:descrivelecorrispondenzetrasoftwareedhardware ● vistadisviluppo:descrivel’organizzazionestaticadelsoftwarenelsuoambientedi sviluppo ● vistadegliscenari(+1):consentediragionaresullerelazionitraviste innovativo(1995)poichéintroducelaseparazionedelladescrizionearchitetturaleinpiùviste (ciascunavistaèfocalizzatasualcunepartiinteressateesualcuniinteressi);lavistadegli scenarièdiversadallealtre,èbasatasull’applicazionediscenari,consentendodiragionare sulsistemainmodounificato

PuntidivistadiSAP3+1:esisteunaclassificazionedivistearchitetturaliintre categorieprincipalichiamatitipidivista(sullabasedellanaturadeglielementiche contengono): 1. visteamoduli:glielementisonomoduli(unitàdiimplementazione);aimoduli vengonoassegnateresponsabilitàfunzionali,menointeressesulcomportamentoa tempodiesecuzione 2. visteacomponentieconnettori:glielementisonocomponentiruntime(processi)e connettori(meccanismidiinterazioneecomunicazionetracomponenti);lerelazioni sonoconnessionitracomponentieconnettori 3. vistediallocazione:glielementisonoinpartesoftwareeinparteelementiin ambientiesterniincuiilsoftwarevienevienesviluppatooeseguito(lerelazionisono diallocazione) questetretipologiedivisteconsentonodiaffrontaremoltiinteressi;masecertequalitàsono diparticolareimportanzainunsistemapotrebberoessereinadeguatearagionareinmodo efficacesutaliqualità;intalcasosiusanolevisteperqualità,dedicateadaffrontaredegli specificiinteressidiqualità  

[140]OttenereQualità:l’architetturadiunsistemasoftwareha unruolofondamentalenelraggiungimentodegliattributidiqualitàdelsistema:Prestazioni, Scalabilità,Modificabilità,Verificabilità,Sicurezza,Disponibilità,Resilienza,Interoperabilità, Usabilità,Timetomarket. Ladefinizionedell’architetturasoftwareèlaprimafasenellacreazionediunsistemaincui vengonopresiinconsiderazionegliattributidiqualità.gliattributidiqualitànonpossono essereraggiuntiinisolamento:ottenereunaqualitàpuòavereuneffettonegativo(o positivo)suun’altra[...]      

[300]TatticheperleQualità [320]PRESTAZIONI:capacitàdelsistemadieseguireinmodoprevedibile  entroilprofilodiprestazionirichiesto;leprestazionimisuranoquantovelocementeun sistemapossacompierecertiprocessi. Visonoduetipologiediprocessi: ● transazionionline(interattivo):iltempodirisposta èiltemporichiestoperterminare l’esecuzionediunprocesso ● job(noninterattivo):ilthroughputèilnumerodijobcheilsistemariesceacompiere nell’unitàditempo Cisonoduecontributiprincipalialtempodirisposta :  ● tempodielaborazione,èiltemponecessariopergenerareilrisultatodelprocesso (incuivengonoconsumaterisorsedicalcolo) ● tempodiattesa,èiltempoincuilacomputazioneèbloccataacausadell’attesadi qualcherisorsa(succedeadesempioincomunicazionisincrone) Leprestazionidipendonodallerisorsedicalcolodisponibili(hardware,lasuacapacitàe quantità)edalloroutilizzo(caricodilavoro,chevarianonlinearmente) dueprincipalicategorieditattiche   perleprestazioni ● tattichepercontrollarelarichiestadirisorseControlResourceDemand ○ IncreaseResourceEfficiency l’elaborazionediunprocessorichiedel’esecuzionediunalgoritmo,unsuo miglioramentodiefficienzadiminuisceiltempodirisposta;sipuòanche migliorarel’efficienzatemporale,scambiandoiltempoconaltrerisorse(come larisorsaspaziool’introduzionediunbuffer…) ○ ReduceOverhead l’usodiintermediaririchiedeunamaggiorquantitàdirisorsedicalcolo, l’eliminazionediqualcheintermediariopuòridurreiltempodirisposta(ma certiintermediarisonoimportantiperaltrequalità,quindiènecessariotrovare uncompromesso) ● tattichepergestirelerisorseManageResources ○ IncreaseResources risorseinpiùomaggiormenteperformantipossonoridurreiltempodirisposta (comportandoperòunaumentodeicosti) ○ IntroduceConcurrency suddividerel’elaborazionediunsingoloprocessoindiversicompiti,inmodo taledapoterlisvolgereinparalleloedinmodoconcorrente(poichéciascun compitorichiedeunaminorquantitàdirisorserispettoall’interoprocesso, riducendocosìiltempodiattesa) ○ Maintainmultiplecopiesof ■ computations,moltiplicarerisorsecomputazionali ■ data,moltiplicaredati,favorendounaccessoconcorrente 

[330]MODIFICABILITÀ:capacitàdiunsistemadiessereflessibileafrontedi  cambiamentiinevitabilidopoilrilascio;riguardaicambiamenti  edilcostoperrealizzarli, misurandolafacilitàconcuisipossonoeffettuare. Vannoidentificatiicambiamentiattesi  almomentodellaprogettazione(quantomenoipiù significativiepiùprobabili),ossiaipuntiincuicisiaspettachepossaavvenireun cambiamentoediconseguenzaprogettareperlamodificabilità. Unaresponsabilità  èunimpegnocheunoggettoètenutoarispettare;siipotizzachel’unità dimodificariguardilasingolaresponsabilità:ilcostopermodificareunaresponsabilitàR dipendedalcostodellamodificadell’elementoERcheimplementalaresponsabilitàR,piùil costodellemodificheRiallequalivapropagataaglielementidipendentidaER. Lamodificabilitàdiunsistemaèinfunzionedi: ● coesione: misuradellaprobabilitàcheunoscenariodicambiamentodiuna responsabilitàdelmodulopossaesseresoddisfattasolodallamodificadiquel modulo ● accoppiamento: dipendedirettamentedallaprobabilitàcheuncambiamentocheha impattosuunaresponsabilitàrichiedaancheilcambiamentodiresponsabilità differenti ● dimensionedeglielementi: decomporreunmoduloinpiùpartipuòridurreilcostodei cambiamenti,nellamisuraincuiaumentilacoesioneediminuiscal’accoppiamento Lecategorieprincipaliditatticheperlamodificabilitàsono: ● ReduceSizeofaModule separareleresponsabilitàinbaseaicambiamentiprevisti ○ SplitModule datounoscenariodimodificabilitàelarelativaresponsabilitàR,correlataal moduloMacuièassegnata;seMcomprendemoltefunzionalitàilcostodi modificasaràalto;seperòlamodificahaimpattosolosuunaporzionediM, èpossibilediminuireilcostodellamodificabilitàdecomponendoMinmoduli piùpiccoli,aciascunodeiqualivaassegnataunadelletanteresponsabilitàdi M(ciòrisultaefficientesequestipiccolimodulipossonoesseremodificati separatamente) ● IncreaseCohesion assegnareresponsabilitàamoduliinmodocheciascunodeicambiamentiprevisti abbiaunaportalimitata ○ IncreaseSemanticCoherence siriferiscearelazionitraresponsabilità  assegnateadunmodulo(con  riferimentoaduninsiemedicambiamentiattesi),garantendochequeste responsabilitàlavorinoinsieme. Scegliereedassegnareresponsabilitàcheabbianocoerenzasemantica ● ReduceCoupling ridurreilnumerodimodulisuiqualiuncertocambiamentoattesosiripercuota ○ Encapsulate sceglierechiamateprivatetraelementierenderlepubblichetramite un’interfaccia,inmodotalechemodificheaquestoelementoincapsulatonon siripercuotanosualtri.



 

Incapsulareciascuncambiamentoattesoinunsingolomodulo,perprevenire lapropagazionedeicambiamentisualtrimoduli ○ UseanIntermediary unintermediariopuòrompereladipendenzatradueelementi(iltipodi intermediariodausaredipendedaltipodidipendenzadarompere)es.proxy, facade,adapter... ○ RestrictDependencies casospecificodiintroduceanintermediary , rimuovendounadipendenza relativaadunacomunicazione,incanalandolainunintermediario ○ Refactor ridurreduplicazionedelcodice,estraendoresponsabilitàtrapiùmodulie mettendoleafattorcomunetraquesti ○ AbstractCommonServices sostenereilriusorealizzandomodulispecializzatichefornisconoservizi comuniadaltrimoduli,astraendoquestoservizioeparametrizzandolesue attività(molticambiamentipossonoesseregestitianchesemplicemente cambiandolasceltadeiparametri);sostienelamodificabilitàinquanto modificheaservizicomunivannorealizzateunavoltasola DeferBinding rimandal’attivazionediunamodificailpiùtardipossibile ○ ParametrizzareiModuli ○ Polimorfismo ○ ProgrammazioneOrientataagliAspetti(AOP) 

[340]DISPONIBILITÀ: Disponibilità:capacitàdiessereparzialmente  ocompletamente funzionantequando richiesto,ancheafrontediguasti ● Resilienza:capacitàdirecuperodopounfallimento,ossiaditornarenuovamente operativoentrotempiaccettabili ● Altadisponibilità:disponibilitàeresilienza capacitàdiunsistemadiessereprontoasvolgerelefunzionialuirichiesto;riguardail ...


Similar Free PDFs