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 | |
Total Downloads | 25 |
Total Views | 138 |
Appunti, concetti base per l'esame di architettura Software - a.a. 2015/2016...
[120]Concetti:l’ArchitetturaSoftwarediungrandeSistemaSoftware riguardaingenerelesuequalitàes trutture,lequalipossonoesseredecompostealoro voltainelementi.Inparticolarenelladefinizionediun’architettura sièinteressatiagli elementidelsistema,lelororelazionielerelazionitralestrutture;influisceinoltresul raggiungimentodellequalitàdesideratedallepartiinteressate . èuninsiemedielementi architetturali: ● dataelements,contieneleinformazionidagestire ● processingelements,implementanolefunzionalitàeletrasformazionidesiderate ● connectingelements,tieneinsiemeidiversipezzidell’architettura chevengonoutilizzatisecondounaparticolareforma catturandoilmodoincuiglielementi sonoorganizzatinell’architettura(comesonocompostielerelazioni/interazionitraessi), insiemeadunagiustificazionelogica checoglielamotivazioneperlasceltadeglielementie dellaforma} l’architetturasoftwarediunsistemaèl’insiemedellestrutturedelsistema,necessarieper ragionaresudiesso,checomprendonoelementisoftware,ler elazionitradiessieleloro proprietà ➔ un’architetturasoftwaredefiniscedeglielementi,enfatizzandoquestistessieleloro interazioni;glielementipossonoesseredivarianatura(softwareononsoftware). Alcunecaratteristichediunelementosono: ll’internodiunconfine(quelloche ◆ uninsiemebendefinitodiresponsabilità a l’elementofa,quellochenon faecomelofa) ◆ interfacciab endefinita,specificandoiservizi chel’elementofornisceo richiedeaglialtrielementi sidistinguonoduetipidielementi: ◆ componenti, elementiresponsabilidell’implementazionedifunzionalitàedella gestionedidati ◆ connettori , elementiresponsabilidelleinterazionitracomponenti ➔ unastrutturacomprendeuninsiemedielementi e lerelazionitraquesti.Unav ista è unadescrizionediunastrutturainterminideisuoielementiedellerelazionitradi essi(ades.undiagrammaUML) un’architetturacomprendepiùstrutture,lequalipossonocontenereosoloelementi software,oanchenonsoftware. Esempio:notareall’internodi ognivistal’usodielementiedelle rispettiverelazioni;notarele relazionitraelementidiviste differenti Ciascunastrutturacomprendesoloalcunielementienedefinisceunaparticolare configurazionediquesti.Strutturedifferenticomunicanoinformazionidifferenti. Ciascunastrutturaaffrontainteressidifferenti.
➔ questerelazionisonobasateesclusivamentesulcomportamentoall’interfaccia degli elementi,ovverosulleloroproprietà(visibiliesternamentedaglialtrielementi). L’architetturanonèinteressataall’implementazioneinternadeglielementi(solo esterna).Laproprietàdiunelementoèosservabilearchitetturalmentesoltantose puòessereosservatodaaltrielementi.Cisonoduetipologiediproprietàdiun elemento: ◆ comportamento, definisceleinterazionifunzionalitral’elementoeilsuo ambiente(disolitodescrittoascatolanera),ossiaiservizicheoffre ◆ proprietàdiqualità , leproprietànonfunzionali,ossiacomeunelementofale coseinterminidiprestazioni,sicurezza,affidabilità…
➔ ragionare:abbiamoparlatodelleproprietàdeglielementiinternidiunsistema,ma ciòcheinteressasonosoprattuttoleproprietàcomplessivedelsistema.Ladisciplina dell’architetturasoftwareèinteressataacapirecomeglielementiinterniconcerte proprietà,conunacertaorganizzazione(struttura),contribuisconoalleproprietà complessivedelsistema. iunsistemaèdeterminatodalcomportamento Ilcomportamentocomplessivo d funzionaledeisuoielementi;ciòvaleancheperlequalitàdelsistema (senonsi progettaopportunamente,laqualitàcomplessivadelsistemacorrispondeallaqualità delsuoelementopeggiore). Unostessoinsiemedielementipuòessereorganizzatoinmodidiversi,ognunodei qualidaràunsostegnodiversoall’architetturadelsistema. Unodegliobiettivifondamentalidelladisciplinadell’architetturasoftwareèlostudio dellerelazionitrastruttura,qualitàinterneedesternediunsistemasoftware, dell’impattodelledecisionidiprogettosullequalitàcomplessivediunsistema software. L’architettodeveessereingradodiidentificarelearchitetturecandidate, comprendereleloroqualità,sceglierel’architettura“migliore”perilparticolare sistemaindiscussione,basandosisugliinteressi.
[130]VisteePuntidiVistaArchitetturali: l’architetturadiunsistemasoftwareèl’insiemedellestrutturedelsistema,lequalialoro voltacomprendonoelementisoftware,lelororelazionieleloroproprietà. Nelciclodivitadell’architetturaènecessario:progettareperl’architettura,ragionare sull’architetturaecomunicarel’architettura.Questeattivitàpossonoesseresostenuteda un’opportunamodellazione dell’architettura;unadescrizionearchitetturale(AD)èl’insieme deimodelli(viste)chedocumentanoun’architettura(un’ADdeveesserecomprensibilealle partiinteressateedimostrarechel’architetturasoddisfailorointeressi). Iprogettistiespertisannochelamodellazionehaloscopodifavorirelacomprensione ela comunicazione (unabuonadescrizioneconsentediconcentrarsieragionarepiùfacilmente suattività,problemiedecisionidiprogettosignificative).Unadescrizionestrutturale dovrebbecoglierelecaratteristichefunzionalielequalitàdelsistema(deveessere comprensibileatuttelepartiinteressate),manonèpossibileragionaresuun’architettura softwaremedianteunsingolomodello;l’architetturadiunsistemacomplessoèdescritto moltopiùefficacementetramiteuninsiemediviste,separatemacorrelate , ciascunadelle qualidescriveunaspettodiversodell’architettura. Levistedescrivonol’interosistemaedimostranocomeilsistemapuòraggiungereisuoi obiettivi;ciascunavistahaloscopodidescrivereunastruttura,ossiauninsiemedielementi delsistemaedirelazionitradiessichesonorilevantirispettoauncertointeresse(conviene operareunadecomposizionediunsistemacomplessoinuninsiemedivisteseparate, considerandoanchelecorrelazionitraleparti). Unpuntodivistaèunatipologiastandarddivistachepuòessereusatainun’AD;lascelta dellevisteperunsistemavienespessoeffettuatacomeselezionedauncatalogodipuntidi vista,scegliendoinbaseagliinteressirilevantiperunsistemaeagliinteressicheciascun puntodivistaèingradodiaffrontare.Sitrattadiun’applicazionedeipatternalleAD, orientataalriusodiconoscenzarelativaallasoluzioneesemplarediproblemisignificativie ricorrenti.
PuntidivistadiSSA:organizzareun’ADsullabasediuncatalogodisettepuntidi vista:
1. puntodivistadelContesto:descrivelerelazioni,ledipendenzeeleinterazionitrail sistemaeilsuoambiente;ilContestoèimportanteperchéaiutalepartiinteressatea comprenderelaportataeleresponsabilitàdelsistema(ecomeessosirelazionacon
ilsuoambiente) 2. puntodivistaFunzionale(organizzazionefondamentaledelsistema):descrivegli elementifunzionalidelsistema,lelororesponsabilità,interfacceeinterazioni principali;lavistaFunzionaleèlapietraangolaredell’AD(guidalaformadialtre struttureeviste,haunimpattosignificativosualcunequalitàdelsistemacome modificabilità,sicurezza…).L’interesseprincipalesonolefunzionalitàdelsistemae lastrutturafunzionaleinternadelsistema;glielementidiunavistafunzionalesono componentieconnettoriacuisonoassegnateresponsabilitàfunzionali 3. puntodivistadelleInformazioni(organizzazionefondamentaledelsistema): descriveilmodoincuil’architetturamemorizza,manipola,gestisceedistribuisce informazioni;importanteperchéloscopodeisistemiinformaticiègestireinformazioni 4. puntodivistadellaConcorrenza(organizzazionefondamentaledelsistema): descrivel’organizzazionedellaconcorrenzaemappaglielementifunzionalisuunità diconcorrenza 5. puntodivistadelloSviluppo(sostenerelacostruzionedelsistema):descrive l’architetturachesupportailprocessodisviluppo;diinteresseperchisviluppa, verifica,mantieneemigliorailsistema 6. puntodivistadelDeployment(caratterizzal’ambientediesecuzione):descrive l’ambientediesecuzioneincuisaràrilasciatoilsistema,compreseledipendenze dall’ambienteruntime 7. puntodivistaOperational(caratterizzal’ambientediesecuzione):haachefarecon l’amministrazionedelsistemaedellasuainfrastrutturadiesecuzione,inmodocheil sistemapossaessereeffettivamentefruitodaisuoiutenti;descrivecomeilsistema saràamministratoesupportatoquandosaràinesecuzionenell’ambientedi produzione Laseparazionedegliinteressièunprincipioimportante:separagliinteressiinareediverse, inmodocheciascunaareaabbiaunoscopocoeso(cercandodidividereilprogetto sovrapponendolecaratteristicheilmenopossibile).Lamodellazionecondescrizioni separatemacorrelatefavorisceiprocessidianalisieprogettazione(permettendodi concentrarsisuciascuninteresse).Ibeneficichederivanodall’utilizzodivisteepuntidivista sono: ● Gestionedellacomplessità:gliinteressipossonoesseregestitiseparatamente ● MiglioramentodellaFocalizzazione:ciascunmodellopuòesserefocalizzatosuun interessee/osuunaparteinteressata ● ComunicazioneconlePartiInteressate:ciascunaparteinteressataèprobabilmente interessatasoloaunsottoinsiemedell’AD,ilqualedevesostenerelacomunicazione traarchitettoeteamdisviluppo Iproblemiprincipalinell’usodellevistesono: ● incoerenza:l’usodipiùvistesollevailproblemadicoerenzatraviste ● gestionediinteressitrasversali:alcuniinteressipossonoesseregestiticon riferimentoaunasingolavista;altrequalitàperòpossonocorrispondereainteressi trasversaliallevarieviste(es.lasicurezza) ● frammentazione:l’usodiunnumeroeccessivodivistepuòcomplicarela comprensionedell’AD;èmeglioconcentrarsisuvistecheaffrontanosolointeressi veramenteimportanti
●
selezionediuninsiemesbagliatodiviste:nonsempreèovviocapirequanteequali visteusareperdescrivereuncertosistema unapproccioefficaceperlagestionediinteressitrasversaliapiùvisteèl’applicazionedi scenari;perscenariosiintendeunasituazionecheilsistemadovràprobabilmente affrontare,insiemeaunadefinizionedellarispostarichiestadalsistema
Ilmodelloa4+1Viste
● vistalogica:modelloaoggettidelprogetto,chesostieneirequisitifunzionali ● vistadeiprocessi:cogliegliaspettidiconcorrenzaesincronizzazionedelprogetto ● vistafisica:descrivelecorrispondenzetrasoftwareedhardware ● vistadisviluppo:descrivel’organizzazionestaticadelsoftwarenelsuoambientedi sviluppo ● vistadegliscenari(+1):consentediragionaresullerelazionitraviste innovativo(1995)poichéintroducelaseparazionedelladescrizionearchitetturaleinpiùviste (ciascunavistaèfocalizzatasualcunepartiinteressateesualcuniinteressi);lavistadegli scenarièdiversadallealtre,èbasatasull’applicazionediscenari,consentendodiragionare sulsistemainmodounificato
PuntidivistadiSAP3+1:esisteunaclassificazionedivistearchitetturaliintre categorieprincipalichiamatitipidivista(sullabasedellanaturadeglielementiche contengono): 1. visteamoduli:glielementisonomoduli(unitàdiimplementazione);aimoduli vengonoassegnateresponsabilitàfunzionali,menointeressesulcomportamentoa tempodiesecuzione 2. visteacomponentieconnettori:glielementisonocomponentiruntime(processi)e connettori(meccanismidiinterazioneecomunicazionetracomponenti);lerelazioni sonoconnessionitracomponentieconnettori 3. vistediallocazione:glielementisonoinpartesoftwareeinparteelementiin ambientiesterniincuiilsoftwarevienevienesviluppatooeseguito(lerelazionisono diallocazione) questetretipologiedivisteconsentonodiaffrontaremoltiinteressi;masecertequalitàsono diparticolareimportanzainunsistemapotrebberoessereinadeguatearagionareinmodo efficacesutaliqualità;intalcasosiusanolevisteperqualità,dedicateadaffrontaredegli specificiinteressidiqualità
[140]OttenereQualità:l’architetturadiunsistemasoftwareha unruolofondamentalenelraggiungimentodegliattributidiqualitàdelsistema:Prestazioni, Scalabilità,Modificabilità,Verificabilità,Sicurezza,Disponibilità,Resilienza,Interoperabilità, Usabilità,Timetomarket. Ladefinizionedell’architetturasoftwareèlaprimafasenellacreazionediunsistemaincui vengonopresiinconsiderazionegliattributidiqualità.gliattributidiqualitànonpossono essereraggiuntiinisolamento:ottenereunaqualitàpuòavereuneffettonegativo(o positivo)suun’altra[...]
[300]TatticheperleQualità [320]PRESTAZIONI:capacitàdelsistemadieseguireinmodoprevedibile entroilprofilodiprestazionirichiesto;leprestazionimisuranoquantovelocementeun sistemapossacompierecertiprocessi. Visonoduetipologiediprocessi: ● transazionionline(interattivo):iltempodirisposta èiltemporichiestoperterminare l’esecuzionediunprocesso ● job(noninterattivo):ilthroughputèilnumerodijobcheilsistemariesceacompiere nell’unitàditempo Cisonoduecontributiprincipalialtempodirisposta : ● tempodielaborazione,èiltemponecessariopergenerareilrisultatodelprocesso (incuivengonoconsumaterisorsedicalcolo) ● tempodiattesa,èiltempoincuilacomputazioneèbloccataacausadell’attesadi qualcherisorsa(succedeadesempioincomunicazionisincrone) Leprestazionidipendonodallerisorsedicalcolodisponibili(hardware,lasuacapacitàe quantità)edalloroutilizzo(caricodilavoro,chevarianonlinearmente) dueprincipalicategorieditattiche perleprestazioni ● tattichepercontrollarelarichiestadirisorseControlResourceDemand ○ IncreaseResourceEfficiency l’elaborazionediunprocessorichiedel’esecuzionediunalgoritmo,unsuo miglioramentodiefficienzadiminuisceiltempodirisposta;sipuòanche migliorarel’efficienzatemporale,scambiandoiltempoconaltrerisorse(come larisorsaspaziool’introduzionediunbuffer…) ○ ReduceOverhead l’usodiintermediaririchiedeunamaggiorquantitàdirisorsedicalcolo, l’eliminazionediqualcheintermediariopuòridurreiltempodirisposta(ma certiintermediarisonoimportantiperaltrequalità,quindiènecessariotrovare uncompromesso) ● tattichepergestirelerisorseManageResources ○ IncreaseResources risorseinpiùomaggiormenteperformantipossonoridurreiltempodirisposta (comportandoperòunaumentodeicosti) ○ IntroduceConcurrency suddividerel’elaborazionediunsingoloprocessoindiversicompiti,inmodo taledapoterlisvolgereinparalleloedinmodoconcorrente(poichéciascun compitorichiedeunaminorquantitàdirisorserispettoall’interoprocesso, riducendocosìiltempodiattesa) ○ Maintainmultiplecopiesof ■ computations,moltiplicarerisorsecomputazionali ■ data,moltiplicaredati,favorendounaccessoconcorrente
[330]MODIFICABILITÀ:capacitàdiunsistemadiessereflessibileafrontedi cambiamentiinevitabilidopoilrilascio;riguardaicambiamenti edilcostoperrealizzarli, misurandolafacilitàconcuisipossonoeffettuare. Vannoidentificatiicambiamentiattesi almomentodellaprogettazione(quantomenoipiù significativiepiùprobabili),ossiaipuntiincuicisiaspettachepossaavvenireun cambiamentoediconseguenzaprogettareperlamodificabilità. Unaresponsabilità èunimpegnocheunoggettoètenutoarispettare;siipotizzachel’unità dimodificariguardilasingolaresponsabilità:ilcostopermodificareunaresponsabilitàR dipendedalcostodellamodificadell’elementoERcheimplementalaresponsabilitàR,piùil costodellemodificheRiallequalivapropagataaglielementidipendentidaER. Lamodificabilitàdiunsistemaèinfunzionedi: ● coesione: misuradellaprobabilitàcheunoscenariodicambiamentodiuna responsabilitàdelmodulopossaesseresoddisfattasolodallamodificadiquel modulo ● accoppiamento: dipendedirettamentedallaprobabilitàcheuncambiamentocheha impattosuunaresponsabilitàrichiedaancheilcambiamentodiresponsabilità differenti ● dimensionedeglielementi: decomporreunmoduloinpiùpartipuòridurreilcostodei cambiamenti,nellamisuraincuiaumentilacoesioneediminuiscal’accoppiamento Lecategorieprincipaliditatticheperlamodificabilitàsono: ● ReduceSizeofaModule separareleresponsabilitàinbaseaicambiamentiprevisti ○ SplitModule datounoscenariodimodificabilitàelarelativaresponsabilitàR,correlataal moduloMacuièassegnata;seMcomprendemoltefunzionalitàilcostodi modificasaràalto;seperòlamodificahaimpattosolosuunaporzionediM, èpossibilediminuireilcostodellamodificabilitàdecomponendoMinmoduli piùpiccoli,aciascunodeiqualivaassegnataunadelletanteresponsabilitàdi M(ciòrisultaefficientesequestipiccolimodulipossonoesseremodificati separatamente) ● IncreaseCohesion assegnareresponsabilitàamoduliinmodocheciascunodeicambiamentiprevisti abbiaunaportalimitata ○ IncreaseSemanticCoherence siriferiscearelazionitraresponsabilità assegnateadunmodulo(con riferimentoaduninsiemedicambiamentiattesi),garantendochequeste responsabilitàlavorinoinsieme. Scegliereedassegnareresponsabilitàcheabbianocoerenzasemantica ● ReduceCoupling ridurreilnumerodimodulisuiqualiuncertocambiamentoattesosiripercuota ○ Encapsulate sceglierechiamateprivatetraelementierenderlepubblichetramite un’interfaccia,inmodotalechemodificheaquestoelementoincapsulatonon siripercuotanosualtri.
●
Incapsulareciascuncambiamentoattesoinunsingolomodulo,perprevenire lapropagazionedeicambiamentisualtrimoduli ○ UseanIntermediary unintermediariopuòrompereladipendenzatradueelementi(iltipodi intermediariodausaredipendedaltipodidipendenzadarompere)es.proxy, facade,adapter... ○ RestrictDependencies casospecificodiintroduceanintermediary , rimuovendounadipendenza relativaadunacomunicazione,incanalandolainunintermediario ○ Refactor ridurreduplicazionedelcodice,estraendoresponsabilitàtrapiùmodulie mettendoleafattorcomunetraquesti ○ AbstractCommonServices sostenereilriusorealizzandomodulispecializzatichefornisconoservizi comuniadaltrimoduli,astraendoquestoservizioeparametrizzandolesue attività(molticambiamentipossonoesseregestitianchesemplicemente cambiandolasceltadeiparametri);sostienelamodificabilitàinquanto modificheaservizicomunivannorealizzateunavoltasola DeferBinding rimandal’attivazionediunamodificailpiùtardipossibile ○ ParametrizzareiModuli ○ Polimorfismo ○ ProgrammazioneOrientataagliAspetti(AOP)
[340]DISPONIBILITÀ: Disponibilità:capacitàdiessereparzialmente ocompletamente funzionantequando richiesto,ancheafrontediguasti ● Resilienza:capacitàdirecuperodopounfallimento,ossiaditornarenuovamente operativoentrotempiaccettabili ● Altadisponibilità:disponibilitàeresilienza capacitàdiunsistemadiessereprontoasvolgerelefunzionialuirichiesto;riguardail ...