Arquitetura de Software: Introdução -...

Preview:

Citation preview

ArquiteturadeSoftware:Introdução

Prof.FellipeAleixo(fellipe.aleixo@ifrn.edu.br)

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)...

Recommended