Arquitetura de Software Uma Introdução Copyright © 2007 Fábio Nogueira de Lucena [email_address]
Todos os links em um único lugar... http://del.icio.us/kyriosdata/as Links para livros, artigos, projetos, exemplos, métod...
Conteúdo <ul><li>Contexto, História </li></ul><ul><li>Definição </li></ul><ul><li>Processo </li></ul><ul><li>Documentação ...
Contexto
Visão de desenvolvimento de software Desejo (idéia) Requisitos (idéia em papel) Análise e Projeto (como tornar real?) Impl...
História
Fontes The Golden Age of Software Architecture,  Mary Shaw e Paul Clements, IEEE Software, 2006, p. 31-39 The Past, Presen...
Evolução <ul><li>1969: primeira referência a  Arquitetura de Software  (AS) </li></ul><ul><li>Praticamente todos os trabal...
1985-1993 <ul><li>Documentação de uma AS usando box-and-line  e explanações informais </li></ul><ul><li>Estruturas específ...
1992-1996 <ul><li>ADLs (Architectural Description Languages) Alguns não consideram UML uma ADL </li></ul><ul><li>Formaliza...
1995-2000 <ul><li>IEEE  Transactions on Software Engineering  dedica toda uma edição a AS em 1995. </li></ul><ul><li>IEEE/...
1996-2003 <ul><li>Análise e avaliação de arquiteturas de software “crescem” </li></ul><ul><li>Livros acerca de avaliação e...
1998-até hoje <ul><li>UML torna-se a ADL padrão da indústria </li></ul><ul><li>Arquiteturas n-tier client/server  </li></u...
1998-até hoje (continuação) <ul><li>Surge o papel “arquiteto de software”  </li></ul><ul><li>Worldwide Institute of Softwa...
Algumas referências úteis <ul><li>SEI http://www.sei.cmu.edu/architecture </li></ul><ul><li>Gaudí System Architecting http...
Definição
O que é complexo,  partimos...
Em geral,  decompomos  ...
A parte é gerenciável, tratável, ...
Então surgem conexões, interações,...
Na presença do “complexo” <ul><li>Decompomos porque </li></ul><ul><ul><li>A parte é gerenciável, tratável, ... </li></ul><...
Qual a relação com AS? Arquitetura de Software  =  Decomposição de software
Software Engineering, 8 th  edition, Ian Sommerville, Addison-Wesley, 2007 <ul><li>Sistemas são decompostos em subsistemas...
Software Architecture in Practice , 2 nd  Edition,  Bass, Clements, Kazman, Addison-Wesley, 2003 “ A arquitetura de softwa...
Outras definições <ul><li>“ AS é o conjunto de decisões de projeto que, se realizadas incorretamente, podem acarretar o ca...
Qual a diferença de AS e projeto? <ul><li>Arquitetura é projeto </li></ul><ul><li>Nem tudo que é projeto é arquitetura </l...
Diretriz As questões  estruturais  são o foco. São questões de projeto mais abstratas que algoritmos e estruturas de dados...
Perspectivas de uma AS <ul><li>Uma arquitetura de software </li></ul><ul><ul><li>define a estrutura </li></ul></ul><ul><ul...
Importante “ Arquitetura de software é parte da qualidade do produto e não está ligada a um processo, tecnologia, cultura ...
Processo
Software Engineering, 8 th  edition, Ian Sommerville, Addison-Wesley, 2007 (página 240, segundo parágrafo) “ Projeto é um ...
Software Architecture Review and Assessment (SARA) Report Philippe Kruchten et al, 2001 http://philippe.kruchten.com/archi...
Exemplo <ul><ul><li>Modelo do contexto de projeto de arquitetura (universo de discurso) </li></ul></ul>Disponibilidade (PD...
Exemplo de interesse nacional <ul><li>Sistemas de controle de tráfego aéreo </li></ul><ul><ul><li>Qualidade ( concern ) </...
The Visual Architecting Process TM The Visual Architecting Process (VAP) http://www.bredemeyer.com   Subconjunto dos requi...
Architecture Expert (ArchE) Tool <ul><li>Criar especificação mensurável de requisitos não funcionais </li></ul><ul><li>Ava...
Documentação
Problema <ul><li>Uma arquitetura de software precisa ser: </li></ul><ul><ul><li>comunicada </li></ul></ul><ul><ul><li>comp...
Noção comum <ul><li>Arquitetura de Software é composição de: </li></ul><ul><ul><li>Diagramas contendo caixas e linhas </li...
Arquiteto de Software baixo custo, equiparação com concorrentes, facilidade de mudança, usabilidade, confiabilidade, desem...
Software Architecture Review and Assessment (SARA) Report Philippe Kruchten et al, 2001 http://philippe.kruchten.com/archi...
Alguns atributos qualitativos <ul><li>Desempenho </li></ul><ul><li>Escalabilidade (requisições, conexões...) </li></ul><ul...
Disponibilidade <ul><li>Nenhum sistema será executado sem interrupções para sempre </li></ul><ul><li>Situações inesperadas...
Desempenho <ul><li>Quando se requisita um serviço, o usuário espera por resposta rápida </li></ul><ul><li>Desempenho Habil...
Escalabilidade <ul><li>Desempenho para um usuário: ótimo </li></ul><ul><li>Desempenho para 1K usuários: OK </li></ul><ul><...
Segurança <ul><li>Nenhum sistema é 100% seguro </li></ul><ul><li>Nenhum sistema é totalmente aberto </li></ul><ul><li>Segu...
Gerenciabilidade <ul><li>É preciso monitorar para verificar se está tudo ok </li></ul><ul><li>É preciso alterar em tempo d...
Manutenibilidade <ul><li>Todo sistema precisa de atualização </li></ul><ul><li>Todo sistema será corrigido </li></ul><ul><...
Flexibilidade <ul><li>Sistemas passarão por mudanças ao longo do tempo </li></ul><ul><li>Flexibilidade Quão fácil é produz...
Portabilidade <ul><li>Todo sistema é executado em um ambiente </li></ul><ul><li>Ambientes alteram-se com o tempo </li></ul...
Como registrá-los? <ul><li>Cenário de atributo de qualidade </li></ul><ul><ul><li>Fonte de estímulo  </li></ul></ul><ul><u...
Software Architecture Review and Assessment (SARA) Report Philippe Kruchten et al, 2001 http://philippe.kruchten.com/archi...
O que registrar? Ontologia para arquitetura de software Arquitetura de Software
Como registrar uma AS? <ul><li>Box-and line  (registro informal) </li></ul><ul><li>IEEE Recommended Practice for Architect...
Informal Box-and-line (representação) Mecanismo mais comum acompanhado de explicações
Representação usando box-and-line Arquitetura de software cliente/servidor ( three-tier ) http://en.wikipedia.org/wiki/Mul...
Mobile and Wireless Design Essentials, Martyn Mallick, Wiley, 2003
Arquitetura Web usando Ajax (MSDN) http://msdn.microsoft.com/msdnmag/issues/07/09/CuttingEdge/default.aspx?loc=pt
The Java EE 5 Tutorial http://java.sun.com/javaee/5/docs/tutorial/doc/p1.html
Mais um exemplo... <ul><ul><li>Essential Software Architecture , Ian Gorton, Springer-Verlag, 2006 </li></ul></ul>
Qual o problema com  box-and-line ? <ul><li>Em geral não seguem com “legenda” daí </li></ul><ul><li>Não se sabe o que sign...
Cenário atual <ul><li>Software compreende várias estruturas </li></ul><ul><ul><li>Código, decomposição deste, dependências...
The 4+1 View Model of Software Architecture, Phillip Kruchten, IEEE Software, vol. 12, no. 6, 1995 <ul><li>Lógica </li></u...
Exemplos de Documentos de Arquiteturas de Software (múltiplas visões) <ul><li>Toy Air Traffic System (TATS) Philippe Kruch...
IEEE Recommended Practice for Architectural Description of Software-Intensive Systems, IEEE Std 1471-2000 <ul><li>Sugere o...
“ Aquela que melhora a compreensão do sistema e seus atributos” Software Architecture in Practice , 2 nd  Edition,  Bass, ...
Quando?
The Visual Architecting Process TM The Visual Architecting Process (VAP) http://www.bredemeyer.com
Considerações finais
Uma perspectiva adicional... <ul><li>Arquitetura é o conjunto de decisões de projeto que devem ser feitas no começo de um ...
Arquiteto de Software (papel) O arquiteto ideal deveria ser uma pessoa de artes, um matemático familiar com estudos histór...
Projeto de arquitetura é um processo criativo <ul><li>Grady Booch Handbook on Software Architecture (catalogados 1929 padr...
Organização de um sistema <ul><li>Modelo cliente/servidor </li></ul><ul><ul><li>Clientes usufruem de serviços oferecidos p...
Exemplo caseiro
Exemplo caseiro
Exemplo caseiro
Outras questões <ul><li>Arquiteturas para sistemas distribuídos </li></ul><ul><ul><li>Arquiteturas cliente/servidor </li><...
Sucesso a todos!
Upcoming SlideShare
Loading in …5
×

ArquiteturaSoftware

3,893 views
3,749 views

Published on

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,893
On SlideShare
0
From Embeds
0
Number of Embeds
61
Actions
Shares
0
Downloads
0
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

ArquiteturaSoftware

  1. 1. Arquitetura de Software Uma Introdução Copyright © 2007 Fábio Nogueira de Lucena [email_address]
  2. 2. Todos os links em um único lugar... http://del.icio.us/kyriosdata/as Links para livros, artigos, projetos, exemplos, métodos, organizações, ...
  3. 3. Conteúdo <ul><li>Contexto, História </li></ul><ul><li>Definição </li></ul><ul><li>Processo </li></ul><ul><li>Documentação (registro) </li></ul><ul><li>Considerações finais </li></ul>
  4. 4. Contexto
  5. 5. Visão de desenvolvimento de software Desejo (idéia) Requisitos (idéia em papel) Análise e Projeto (como tornar real?) Implementação Tempo PROCESSO Produto Arquitetura de Software desempenha papel relevante neste processo
  6. 6. História
  7. 7. Fontes The Golden Age of Software Architecture, Mary Shaw e Paul Clements, IEEE Software, 2006, p. 31-39 The Past, Present, and Future of Software Architecture , Philippe Kruchten et al, IEEE Software, 2006, p. 22-30
  8. 8. Evolução <ul><li>1969: primeira referência a Arquitetura de Software (AS) </li></ul><ul><li>Praticamente todos os trabalhos que citam “arquitetura de software” são de 1990 ou mais recentes (CiteSeer) </li></ul><ul><li>20 referências mais citadas </li></ul><ul><ul><li>Publicadas de 1991 a 2000 </li></ul></ul><ul><ul><li>5 livros, 4 artigos (surveys), ... </li></ul></ul>
  9. 9. 1985-1993 <ul><li>Documentação de uma AS usando box-and-line e explanações informais </li></ul><ul><li>Estruturas específicas de software foram definidas para domínios específicos (controle de mísseis, ...) </li></ul>
  10. 10. 1992-1996 <ul><li>ADLs (Architectural Description Languages) Alguns não consideram UML uma ADL </li></ul><ul><li>Formalização (análise formal de um modelo de arquitetura) </li></ul><ul><li>Workshops e congressos pelo mundo </li></ul><ul><li>Padrões arquiteturais são catalogados Pattern-Oriented Software Architecture---A System of Patterns, John Wiley & Sons, 1996 (POSA 1) </li></ul>
  11. 11. 1995-2000 <ul><li>IEEE Transactions on Software Engineering dedica toda uma edição a AS em 1995. </li></ul><ul><li>IEEE/IFIP Conference on Software Architecture ( www.wicsa.net ) </li></ul><ul><li>Grupo de trabalho (IFIP) http://www.softwarearchitectureportal.org/ </li></ul>
  12. 12. 1996-2003 <ul><li>Análise e avaliação de arquiteturas de software “crescem” </li></ul><ul><li>Livros acerca de avaliação e documentação de ASs são publicados </li></ul><ul><li>A importância de atributos qualitativos é ressaltada junto com o papel da AS para satisfazê-los </li></ul><ul><li>ArchE (auxiliar de arquiteto) </li></ul>
  13. 13. 1998-até hoje <ul><li>UML torna-se a ADL padrão da indústria </li></ul><ul><li>Arquiteturas n-tier client/server </li></ul><ul><li>Arquiteturas orientadas a serviço (SOA) </li></ul><ul><li>OMG inicia Model Driven Architecture (MDA): “separar negócio e lógica da aplicação da plataforma tecnológica” </li></ul><ul><li>Currículo ACM/IEEE: 20% de projeto de software é dedicado a AS </li></ul>
  14. 14. 1998-até hoje (continuação) <ul><li>Surge o papel “arquiteto de software” </li></ul><ul><li>Worldwide Institute of Software Architects ( http://www.wwisa.org/ ) </li></ul><ul><li>International Association of Software Architects ( http://www.iasahome.org/ ) </li></ul><ul><li>Grady Booch Handbook on Software Architecture (catalogados 1929 padrões) ( http://www.booch.com/architecture ) </li></ul>
  15. 15. Algumas referências úteis <ul><li>SEI http://www.sei.cmu.edu/architecture </li></ul><ul><li>Gaudí System Architecting http://www.gaudisite.nl/ </li></ul><ul><li>Software Architecture (Bredemeyer) http://www.bredemeyer.com/ </li></ul><ul><li>Software Product Lines http://softwareproductlines.com/ </li></ul><ul><li>Software Architectures http://www.softwarearchitectures.com/ </li></ul><ul><li>Grady Booch ( Handbook of SA ) http://www.booch.com/architecture </li></ul><ul><li>Pesquisas e ensino http://sunset.usc.edu/research/software_architecture/ </li></ul>
  16. 16. Definição
  17. 17. O que é complexo, partimos...
  18. 18. Em geral, decompomos ...
  19. 19. A parte é gerenciável, tratável, ...
  20. 20. Então surgem conexões, interações,...
  21. 21. Na presença do “complexo” <ul><li>Decompomos porque </li></ul><ul><ul><li>A parte é gerenciável, tratável, ... </li></ul></ul><ul><ul><li>Consegue-se lidar com o todo pelas partes </li></ul></ul><ul><li>Efeito colateral </li></ul><ul><ul><li>O todo é mais do que a união das partes </li></ul></ul><ul><ul><li>Quando se parte, surgem conexões, interações... </li></ul></ul>
  22. 22. Qual a relação com AS? Arquitetura de Software = Decomposição de software
  23. 23. Software Engineering, 8 th edition, Ian Sommerville, Addison-Wesley, 2007 <ul><li>Sistemas são decompostos em subsistemas </li></ul><ul><li>A identificação dos subsistemas e da estrutura empregada para controle e comunicação destes subsistemas é chamado de projeto arquitetural </li></ul><ul><li>A saída produzida deste processo de projeto é uma descrição da arquitetura de software </li></ul>Interações Partes Processo Produto Estrutura que identifica os principais componentes de um sistema e as comunicações entre eles.
  24. 24. Software Architecture in Practice , 2 nd Edition, Bass, Clements, Kazman, Addison-Wesley, 2003 “ A arquitetura de software de um programa é a estrutura do sistema que compreende elementos de software, as propriedades visíveis externamente destes elementos e os relacionamentos entre eles.” Propriedades: serviços oferecidos, desempenho,...
  25. 25. Outras definições <ul><li>“ AS é o conjunto de decisões de projeto que, se realizadas incorretamente, podem acarretar o cancelamento do projeto.” Eoin Woods, Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives, Addison-Wesley, 2005. </li></ul><ul><li>Outras dezenas de definições http://www.sei.cmu.edu/architecture/definitions.html </li></ul>
  26. 26. Qual a diferença de AS e projeto? <ul><li>Arquitetura é projeto </li></ul><ul><li>Nem tudo que é projeto é arquitetura </li></ul><ul><li>Projeto de granulosidade mais fina e código devem ser produzidos em conformidade com a AS </li></ul>Requisitos Projeto Codificação AS <ul><ul><li>Se a propriedade de um elemento da arquitetura não é visível a outros, então este não é um elemento da arquitetura. </li></ul></ul>
  27. 27. Diretriz As questões estruturais são o foco. São questões de projeto mais abstratas que algoritmos e estruturas de dados. Software Architecture: An Executive Overview Clements & Northrop, CMU/SEI-96-TR-003
  28. 28. Perspectivas de uma AS <ul><li>Uma arquitetura de software </li></ul><ul><ul><li>define a estrutura </li></ul></ul><ul><ul><li>estabelece a comunicação entre componentes </li></ul></ul><ul><ul><li>está voltada para requisitos não funcionais </li></ul></ul><ul><ul><li>é uma abstração (não é preciso consultar código) </li></ul></ul><ul><ul><li>Essential Software Architecture , Ian Gorton, Springer-Verlag, 2006 </li></ul></ul>
  29. 29. Importante “ Arquitetura de software é parte da qualidade do produto e não está ligada a um processo, tecnologia, cultura ou ferramenta particular.” <ul><ul><li>Software Architecture-Centric Methods and Agile Development , Nord & Tomayko, IEEE Software, april/2006 </li></ul></ul>
  30. 30. Processo
  31. 31. Software Engineering, 8 th edition, Ian Sommerville, Addison-Wesley, 2007 (página 240, segundo parágrafo) “ Projeto é um processo criativo. Não há meio certo ou errado. Ninguém pode fornecer uma 'receita' para projeto de software. Aprende-se observando exemplos e discutindo seu projeto com outros.” <ul><ul><li>Não há método amplamente aceito acerca de “como” decompor um software </li></ul></ul>
  32. 32. Software Architecture Review and Assessment (SARA) Report Philippe Kruchten et al, 2001 http://philippe.kruchten.com/architecture/SARAv1.pdf <ul><ul><li>Modelo do contexto de projeto de arquitetura (universo de discurso) </li></ul></ul>
  33. 33. Exemplo <ul><ul><li>Modelo do contexto de projeto de arquitetura (universo de discurso) </li></ul></ul>Disponibilidade (PDV) Para 100 reqs, 1 poderá não ser concluída
  34. 34. Exemplo de interesse nacional <ul><li>Sistemas de controle de tráfego aéreo </li></ul><ul><ul><li>Qualidade ( concern ) </li></ul></ul><ul><ul><ul><li>Alta disponibilidade </li></ul></ul></ul><ul><ul><li>Requisito (versão mais objetiva) </li></ul></ul><ul><ul><ul><li>Indisponibilidade (downtime) inferior a cinco (5) minutos por ano </li></ul></ul></ul>
  35. 35. The Visual Architecting Process TM The Visual Architecting Process (VAP) http://www.bredemeyer.com Subconjunto dos requisitos de um sistema (requisitos não funcionais ou arquiteturalmente relevantes) Quando parar? Exige avaliação!
  36. 36. Architecture Expert (ArchE) Tool <ul><li>Criar especificação mensurável de requisitos não funcionais </li></ul><ul><li>Avaliar se a arquitetura corrente satisfaz os requisitos </li></ul><ul><ul><li>Não: fazer mudanças e repetir o passo acima. </li></ul></ul><ul><ul><li>Sim: processo é terminado. </li></ul></ul>PROBLEMA: o número de possíveis soluções é “grande”, mesmo para um simples problema.
  37. 37. Documentação
  38. 38. Problema <ul><li>Uma arquitetura de software precisa ser: </li></ul><ul><ul><li>comunicada </li></ul></ul><ul><ul><li>compreendida </li></ul></ul><ul><ul><li>analisada </li></ul></ul><ul><li>Ou seja, precisa ser registrada </li></ul>
  39. 39. Noção comum <ul><li>Arquitetura de Software é composição de: </li></ul><ul><ul><li>Diagramas contendo caixas e linhas </li></ul></ul><ul><ul><li>Juntamente com explanações informais </li></ul></ul>Componentes operam sob o controle do Frontend , responsável pela interface gráfica ... Legenda: seta tracejada significa ...
  40. 40. Arquiteto de Software baixo custo, equiparação com concorrentes, facilidade de mudança, usabilidade, confiabilidade, desempenho, ... Perspectiva de documentação Insumos de stakeholders Arquitetura de Software Decisões
  41. 41. Software Architecture Review and Assessment (SARA) Report Philippe Kruchten et al, 2001 http://philippe.kruchten.com/architecture/SARAv1.pdf Insumos de stakeholders <ul><ul><li>Modelo do contexto de projeto de arquitetura (universo de discurso) </li></ul></ul>Como registrar?
  42. 42. Alguns atributos qualitativos <ul><li>Desempenho </li></ul><ul><li>Escalabilidade (requisições, conexões...) </li></ul><ul><li>Quão fácil é alterar o software? </li></ul><ul><li>Segurança </li></ul><ul><li>Disponibilidade </li></ul><ul><li>Quão fácil é a integração? </li></ul><ul><li>Portabilidade, testabilidade, ... </li></ul><ul><ul><li>Essential Software Architecture , Ian Gorton, Springer-Verlag, 2006 </li></ul></ul>
  43. 43. Disponibilidade <ul><li>Nenhum sistema será executado sem interrupções para sempre </li></ul><ul><li>Situações inesperadas e indesejáveis ocorrem </li></ul><ul><li>O sistema será paralisado </li></ul><ul><li>Manutenção será realizada </li></ul><ul><li>Disponibilidade Quanto do tempo o sistema estará disponível? </li></ul>
  44. 44. Desempenho <ul><li>Quando se requisita um serviço, o usuário espera por resposta rápida </li></ul><ul><li>Desempenho Habilidade de produzir a resposta no tempo apropriado </li></ul>
  45. 45. Escalabilidade <ul><li>Desempenho para um usuário: ótimo </li></ul><ul><li>Desempenho para 1K usuários: OK </li></ul><ul><li>EXEMPLO QuickSort recursivo (pode causar stack overflow) </li></ul><ul><li>Escalabilidade Desempenho não cai de forma significativa à medida que o número de requisições aumenta </li></ul>
  46. 46. Segurança <ul><li>Nenhum sistema é 100% seguro </li></ul><ul><li>Nenhum sistema é totalmente aberto </li></ul><ul><li>Segurança Criar “barreiras” para assegurar privacidade e acesso controlado à funcionalidade </li></ul>
  47. 47. Gerenciabilidade <ul><li>É preciso monitorar para verificar se está tudo ok </li></ul><ul><li>É preciso alterar em tempo de execução para corrigir rota </li></ul><ul><li>Gerenciabilidade Capacidade de monitorar e alterar o funcionamento do sistema em tempo de execução </li></ul>
  48. 48. Manutenibilidade <ul><li>Todo sistema precisa de atualização </li></ul><ul><li>Todo sistema será corrigido </li></ul><ul><li>Manutenibilidade Quão fácil é corrigir/atualizar um sistema? </li></ul>
  49. 49. Flexibilidade <ul><li>Sistemas passarão por mudanças ao longo do tempo </li></ul><ul><li>Flexibilidade Quão fácil é produzir novas versões? </li></ul>
  50. 50. Portabilidade <ul><li>Todo sistema é executado em um ambiente </li></ul><ul><li>Ambientes alteram-se com o tempo </li></ul><ul><li>Portabilidade Quão fácil é migrar para um outro ambiente? </li></ul>
  51. 51. Como registrá-los? <ul><li>Cenário de atributo de qualidade </li></ul><ul><ul><li>Fonte de estímulo </li></ul></ul><ul><ul><li>Estímulo </li></ul></ul><ul><ul><li>Ambiente </li></ul></ul><ul><ul><li>Artefato </li></ul></ul><ul><ul><li>Resposta </li></ul></ul><ul><ul><li>Medida da resposta </li></ul></ul><ul><li>Exemplo Desenvolvedor deve alterar a interface para contemplar novo atributo de entidade. Deverá consumir menos de 3 horas para produzir e testar sem efeitos colaterais. </li></ul>Software Architecture in Practice , 2 nd Edition, Bass, Clements, Kazman, Addison-Wesley, 2003
  52. 52. Software Architecture Review and Assessment (SARA) Report Philippe Kruchten et al, 2001 http://philippe.kruchten.com/architecture/SARAv1.pdf Arquitetura de Software <ul><ul><li>Modelo do contexto de projeto de arquitetura (universo de discurso) </li></ul></ul>Atributos qualitativos O que registrar? Como registrar?
  53. 53. O que registrar? Ontologia para arquitetura de software Arquitetura de Software
  54. 54. Como registrar uma AS? <ul><li>Box-and line (registro informal) </li></ul><ul><li>IEEE Recommended Practice for Architectural Description of Software-Intensive Systems IEEE Std 1471-2000 </li></ul><ul><li>The 4+1 View Model of Software Architecture, Phillip Kruchten, IEEE Software, vol. 12, no. 6, 1995 </li></ul><ul><li>Templates, apresentação, ... How to Represent the Architecture of Your Enterprise Application Usin UML 2.0 and More Paulo Merson http://www.sei.cmu.edu/architecture/arch_doc.html </li></ul>Arquitetura de Software
  55. 55. Informal Box-and-line (representação) Mecanismo mais comum acompanhado de explicações
  56. 56. Representação usando box-and-line Arquitetura de software cliente/servidor ( three-tier ) http://en.wikipedia.org/wiki/Multitier_architecture
  57. 57. Mobile and Wireless Design Essentials, Martyn Mallick, Wiley, 2003
  58. 58. Arquitetura Web usando Ajax (MSDN) http://msdn.microsoft.com/msdnmag/issues/07/09/CuttingEdge/default.aspx?loc=pt
  59. 59. The Java EE 5 Tutorial http://java.sun.com/javaee/5/docs/tutorial/doc/p1.html
  60. 60. Mais um exemplo... <ul><ul><li>Essential Software Architecture , Ian Gorton, Springer-Verlag, 2006 </li></ul></ul>
  61. 61. Qual o problema com box-and-line ? <ul><li>Em geral não seguem com “legenda” daí </li></ul><ul><li>Não se sabe o que significa uma caixa </li></ul><ul><ul><li>Processo, thread, ... </li></ul></ul><ul><ul><li>Código fonte, compilado, DLL, Jar file, ... </li></ul></ul><ul><ul><li>Contêiner, biblioteca, ... </li></ul></ul><ul><li>Não se sabe a semântica de uma linha </li></ul><ul><ul><li>Fluxo de controle (em que sentido?) </li></ul></ul><ul><ul><li>Fluxo de dados, dependência (temporal, ...) </li></ul></ul>
  62. 62. Cenário atual <ul><li>Software compreende várias estruturas </li></ul><ul><ul><li>Código, decomposição deste, dependências,... </li></ul></ul><ul><ul><li>Processos e como estes interagem </li></ul></ul><ul><ul><li>A implantação (distribuição) em hardware </li></ul></ul><ul><ul><li>E outras... </li></ul></ul><ul><li>Visão: representação de uma estrutura </li></ul><ul><li>Ou seja, precisamos de várias visões </li></ul>
  63. 63. The 4+1 View Model of Software Architecture, Phillip Kruchten, IEEE Software, vol. 12, no. 6, 1995 <ul><li>Lógica </li></ul><ul><ul><li>Objetos relevantes (quando se usa OO) </li></ul></ul><ul><li>Processo </li></ul><ul><ul><li>Aspectos de concorrência e sincronização </li></ul></ul><ul><li>Física </li></ul><ul><ul><li>Mapeamento de software em hardware </li></ul></ul><ul><li>Desenvolvimento </li></ul><ul><ul><li>Identifica módulos, subsistemas, camadas </li></ul></ul><ul><li>Cenários (integra as visões) </li></ul>
  64. 64. Exemplos de Documentos de Arquiteturas de Software (múltiplas visões) <ul><li>Toy Air Traffic System (TATS) Philippe Kruchten http://philippe.kruchten.com/architecture/SADexample.doc </li></ul><ul><li>Exemplo (documentação de uma AS) http://la.sei.cmu.edu/sad-wiki/index.php/The_Java_Pet_Store_SAD </li></ul>
  65. 65. IEEE Recommended Practice for Architectural Description of Software-Intensive Systems, IEEE Std 1471-2000 <ul><li>Sugere o emprego de visões </li></ul><ul><li>Não informa, contudo, quais as visões? </li></ul>
  66. 66. “ Aquela que melhora a compreensão do sistema e seus atributos” Software Architecture in Practice , 2 nd Edition, Bass, Clements, Kazman, Addison-Wesley, 2003 Que visão é relevante?
  67. 67. Quando?
  68. 68. The Visual Architecting Process TM The Visual Architecting Process (VAP) http://www.bredemeyer.com
  69. 69. Considerações finais
  70. 70. Uma perspectiva adicional... <ul><li>Arquitetura é o conjunto de decisões de projeto que devem ser feitas no começo de um projeto. </li></ul><ul><li>Arquitetura faz referência ao que é importante. O que quer que seja este importante. </li></ul><ul><li>A compreensão comum do projeto de um sistema é a arquitetura deste sistema. </li></ul><ul><li>Decisões de arquitetura são difíceis de serem alteradas. </li></ul>Who needs na Architect? Martin Fowler, IEEE Software, sept/oct, 2003, 11-13. http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
  71. 71. Arquiteto de Software (papel) O arquiteto ideal deveria ser uma pessoa de artes, um matemático familiar com estudos históricos, um estudante diligente de filosofia, conhecedor da música, não ignorante em medicina, capaz de compreender juristas, familiar com a astronomia e cálculos astronômicos. Vitruvius, 25 AC A “visão” do arquiteto de software deve ser HORIZONTAL, AMPLA, em vez daquela vertical, necessária em projetistas de software.
  72. 72. Projeto de arquitetura é um processo criativo <ul><li>Grady Booch Handbook on Software Architecture (catalogados 1929 padrões) ( http://www.booch.com/architecture ) </li></ul><ul><li>O que influi neste processo? </li></ul><ul><ul><li>A experiência do arquiteto </li></ul></ul>
  73. 73. Organização de um sistema <ul><li>Modelo cliente/servidor </li></ul><ul><ul><li>Clientes usufruem de serviços oferecidos por servidores </li></ul></ul><ul><li>Modelo repositório </li></ul><ul><ul><li>Sub-sistemas compartilham dados em repositório compartilhado </li></ul></ul><ul><li>Modelo em camadas </li></ul><ul><ul><li>Camadas oferecem serviços definidos em termos de serviços oferecidos pelas camadas inferiores </li></ul></ul>
  74. 74. Exemplo caseiro
  75. 75. Exemplo caseiro
  76. 76. Exemplo caseiro
  77. 77. Outras questões <ul><li>Arquiteturas para sistemas distribuídos </li></ul><ul><ul><li>Arquiteturas cliente/servidor </li></ul></ul><ul><ul><li>Objetos distribuídos (CORBA, ...) </li></ul></ul><ul><ul><li>Service-Oriented Architecture (SOA) </li></ul></ul><ul><ul><ul><li>Mensagens + Interface pública </li></ul></ul></ul><ul><ul><li>Model-Driven Architecture (MDA) </li></ul></ul><ul><ul><ul><li>Separa aplicação de plataformas e tecnologias </li></ul></ul></ul>
  78. 78. Sucesso a todos!

×