Upload
vanhanh
View
229
Download
0
Embed Size (px)
Citation preview
ArquiteturadeSoftware:Introdução
Prof.FellipeAleixo([email protected])
PrimeiraAnalogia:
Oqueé Arquitetura deSoftware?
• Significacoisasdiferentesparapessoasdiferentes...• Paraumdesenvolvedor...estruturadosistemaaserconstruído• Paraocriador deumframework…aformadossistemascriados comoframework• Paraumtestador…aformadosistemaasertestado• Paraosdemaisenvolvidos...estruturadealtonível paraasolução doproblema que ocliente quer ver resolvido
Definição1
“Oconjuntodedecisõessignificativassobreaorganização deumsistemadesoftware,aseleçãode
elementosestruturaisesuasinterfaces quecompõemosistema,juntamentecomoseucomportamento,conformeéespecificadonascolaboraçõesentreoselementos,acomposição
desseselementosestruturaisecomportamentaisemsubsistemasprogressivamentemaioreseoestilodearquiteturaqueorientaessaorganização– esses
elementosesuasinterfaces,suascolaboraçõesesuacomposição.”
(TraduçãodeGrady Booch,JamesRumbaugh,IvarJacobson)
Definição2
“Aarquiteturadesoftwarenãoestárelacionadasomente comaestruturaeocomportamento,mas
tambémcomautilização,funcionalidade,desempenho,flexibilidade,reutilização,abrangência,restrições eajusteseconômicosetecnológicose
questões estéticas.”(TraduçãodeGrady Booch,JamesRumbaugh,IvarJacobson)
Motivação
•Crescentetamanhoecomplexidadedossistemas
•Comoorganizarecontrolar• aestruturadossistemasdesoftware?• osprotocolosdecomunicação,sincronizaçãoeacessoadados?• aatribuiçãodefuncionalidadeàelementosdoprojeto?• adistribuiçãofísica?• acomposiçãodoselementosdeprojeto?• aescalabilidadeeaperformance?• aescolhaentrealternativasdeprojeto?
PrincípiosArquiteturais
•Regrasoupadrõesqueajudamosengenheirosdesoftwareatomarasdecisõescorretas
•Deondesurgemessas“regras”e“padrões”?1. Aplicarção prática depropostas deorganização2. Avaliaçãoempírica(“baseadanaexperiência”)3. Identificarsoluções recorrentemente bem sucedidas4. Catalogar parautilização futura
DefinindoaArquiteturadeSoftware
•Principiacomoentendimento dosrequisitos dosistemaaserdesenvolvidos• Identificação dosrequisitos arquiteturalmentesignificantes – têm impacto na arquitetura• Tomar decisões combasenessesrequisitos
•Asdecisões tomadas durante acriação daarquitetura são fundamentais paraosistema• Pois elas irão embasar todas asdemais decisões seguintes
DefinindoaArquiteturadeSoftware
•Algumasarquiteturasdesoftwaresão melhordescritas como ”grandes bolasdelama”• Difícil deconstruir• Difícil demanter• Podem não atender aos requisitos docliente
ComponentesdeumaArquiteturadeSoftware1. Metas e”filosofia”dosistema2. Premissas edependências arquiteturais3. Requisitos arquiteturalmente significantes4. Instruções deempacotamento paraos subsistemas e
componentes5. Subsistemas e”camadas”críticas6. Referências aos elementos deprojeto
arquiteturalmente significantes7. Interfaces críticas paraosistema8. Cenários chave que descrevem comportamentos
críticos paraosistema
DocumentodeArquitetura
• Todososcomponentesdescritosacimaestarãopresentes dodocumento dearquitetura,incluindo:• Decisões chave que dão formaaarquitetura• Comoaspartes trabalham juntas• Comoosistema será empacotado• Ilustração dasvisões arquiteturais (pontos devista)
Visões Arquiteturais
1. Lógica• Mapeia osistema em classesecomponentes,partes queoferecem asfuncionalidades ou que interagemcomousuário
2. Processos• Explica como aspartes daarquiteturatrabalham juntasepermanecem sincronizadas –mapeia unidades decomputação
3. Física• Explica como osoftwareque implementa osistema é mapeadoem plataformascomputacionais (edistribuídas)
4. Desenvolvimento• Explica comoserá agerência dosoftwareduranteodesenvolvimento domesmo – permite otrabalho em equipe
Visões Arquiteturais
•Modelo4+1paraumaarquitetura:
Visões Arquiteturais
Próximos Encontros
• Identificandoo(s)problema(s)aser(em)resolvido(s)...