VinBR

Reuso de Software 14/03/2012

Mar 14th, 2012
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.20 KB | None | 0 0
  1.  
  2. # # # # # # # # # # # # #
  3. # Reuso de Software #
  4. # Prof Eduardo Figueiredo #
  5. # notasdogarcia.blog.com #
  6. # # # # # # # # # # # # #
  7.  
  8. Arquitetura de Software e Padrões Arquiteturais.
  9.  
  10. Padrões Arquiteturais:
  11. - Arquitetura em Camadas (Layered Architecture) - Nessa aula
  12. - Dutos e Filtros (Pipes & Filters) - Nessa aula
  13. - Repositório Compartilhado (Black Board) - Nessa aula
  14. - Cliente-Servidor
  15. - Modelo-Visão-Controle
  16. - Microkernel
  17.  
  18. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  19.  
  20. Revendo padrões de projeto:
  21. Padrões são descrições de problemas comuns juntamente com descrições de boas e bem planejadas soluções e seus prós e contras.
  22.  
  23. CONCEITO:
  24. Padrões de Arquitetura são um nível de abstração a mais, são padrões de organização de subsistemas de um programa.
  25.  
  26. Pode ser dividido em duas partes:
  27. 1 Projeto de arquitetura:
  28. - Define a estrutura modular do software, é feito usando um diagrama de caixas pretas.
  29. // Os diagramas são bem flexíveis, e podem ser desenhados da forma que parecer mais natural ao projetista.
  30.  
  31. 2 Projeto detalhado:
  32. - Inclui planejar a comunicação e os processamentos de cada caixa preta do diagrama.
  33.  
  34. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  35.  
  36. O projeto é uma atividade criativa e portanto não tem uma solução única.
  37.  
  38. Um projeto arquitetural pode ser pensado também como uma ponte de ligação entre as funções finais do programa e as partes internas dele.
  39. Afinal com o projeto voce consegue aos poucos enchergar onde cada função se integra com o todo, e depois fica fácil programar o código interno de cada uma.
  40.  
  41. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  42.  
  43. Primeiros Passos da criação de um Projeto de Arquitetura é a criação do Diagrama de Componentes:
  44.  
  45. 1° - Pensar "o que é a solução?", intuitivamente nós já sabemos o que é, e devemos partir disso.
  46. 2° - Sair pensando quais peças comporão sua solução, dessa forma voce descobre os modulos (ou Componentes) que formarão seu Diagrama de Componentes.
  47. 3° - Uma vez em mente os quais os modulos deve-se esclarecer quem se comunica com quem e já ir pensando em como.
  48.  
  49. Então já se pode desenhar o diagrama, que representará em mais alto nível seu primeiro esboço do Projeto de Arquitetura.
  50.  
  51. Por fim, voce deve detalhar cada modulo mais e mais até ter uma idéia firme e bem estruturada do que é o seu sistema.
  52.  
  53. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  54.  
  55. Vantagens do Projeto já em forma de Diagrama:
  56.  
  57. - O diagrama pode ser usado como foco de discussão do problema com os clientes e associados.
  58. - Análise do sistema pode ser feita sobre o modelo arquitetural, ou seja é mais fácil criar novas funcionalidades nesse ponto do que mais tarde.
  59. - Reuso em larga escala, um componente bem bolado e modularizado pode ser re-usado inteiramente em outros programas, então é um ponto que deve receber atenção.
  60. - Facilita o desenvolvimento em paralelo (facilita a decisão de dividir a equipe para programar várias partes ao mesmo tempo).
  61.  
  62. Desvantagens:
  63. - Não mostra em detalhe os relacionamentos (a natureza das comunicações dos sub-sistemas).
  64. - Não indica as propriedades internas do sistema.
  65.  
  66. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  67.  
  68. Uma arquitetura pode afetar:
  69.  
  70. - O desempenho do sistema.
  71. - A facilidade de distribuição (tornar o programa multi-plataforma).
  72. - A facilidade de manutenção (crie componentes bem modularizados).
  73.  
  74. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  75.  
  76. A arquitetura deve considerar elementos não funcionais (que seria aquilo de já ir pensando outras partes do sistema):
  77.  
  78. - Desempenho, ou seja evitar gargalos.
  79. - Segurança, já bloqueando pontos de risco.
  80. - Mecanismos anti-falha, como sistemas redundantes.
  81.  
  82. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  83.  
  84. Questões a serem respondidas:
  85.  
  86. - Como a execução do sistema funcionará se for distribuida em diferentes máquinas?
  87. - Como serão decompostas em componentes?
  88. - Como avaliar se a arquitetura atende aos requesitos não funcionais?, ou seja coisas que não tenham a ver diretamente com a solução do problema.
  89. - Existe uma arquitetura genérica que possa ser usada? // Um dos padrões de arquiteturas que estudaremos?
  90.  
  91. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  92.  
  93. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  94.  
  95. Padrões Arquiteturais (ou Estilos Arquiteturais, ou Arquitetura de Referência)
  96. // Falaremos agora de Padrões Arquiteturais, ou seja arquiteturas úteis e comumente utilizadas.
  97.  
  98. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  99.  
  100. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  101.  
  102. Razões para estudarmos os Padrões de Arquitetura:
  103.  
  104. Cada arquitetura é ligeiramente diferente, mas em campos próximos elas costumam ser parecidas.
  105. Isso permite que vários projetos sejam reutilizados ao menos parcialmente em outros projetos.
  106. É útil que uma arquitetura possa partir já de um ponto mais avançado, assim utilizar um padrão de projeto já poupa tempo.
  107.  
  108. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  109.  
  110. Padrões arquiteturais podem ser modelados para aderir a algumas propriedades de um sistema.
  111.  
  112. - Redundancia.
  113. - Velocidade.
  114. - Segurança.
  115. - Etc..
  116.  
  117. O conhecimento de vários destes padrões pode facilitar o projeto da arquitetura de um sistema.
  118. // Note que voce pode utilizar mais de um padrão em um mesmo sistema.
  119.  
  120. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  121.  
  122. Um padrão deve conter:
  123.  
  124. - Um conjunto de sub-sistemas.
  125. - Responsabilidades de cada um.
  126. - Relacionamento entre os componentes.
  127.  
  128. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  129.  
  130. Padrões arquiteturais definem também os padrões a serem seguidos pelos programadores.
  131. ou seja, quais padrões padrões de projetos, e quais "idiomas" de programação utilizar.
  132.  
  133. // Idiomas de programação diz respeito a detalhes como: Como será o formato do comentários?, Que padrões os nomes de variáveis seguirão? etc.
  134.  
  135. Como estes padrões definem uma estrutura fundamental, eles devem prever que as proximas versões devem seguir os mesmos padrões.
  136.  
  137. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  138.  
  139. Padrões Arquiteturais, obviamente não te dão a solução de bandeja, eles precisam ser trabalhados para chegar no sistema especifico.
  140.  
  141. Um padrão deve ser refinado com o tempo, assim a cada revisão do sistema deve-se quebrar componentes maiores em componentes mais detalhados,
  142. Deve assim com o passar do tempo detalhar melhor as comunicações, os idiomas e os padrões de projeto escolhidos.
  143.  
  144. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  145.  
  146. A escolha de um padrão deve prever o tipo de sistema e seus requesitos não-funcionais.
  147.  
  148. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  149.  
  150. Algumas perguntas que devem ser feitas:
  151. - O sistema é interativo?
  152. - Possui muitas variações?
  153. - Quais os requesitos não-funcionais importantes?
  154. - Confiabilidade é importante?
  155. - Adaptabilidade é importante?
  156.  
  157. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  158.  
  159. Cada padrão leva a consequencias um pouco diferentes, mesmo quando os problemas são semelhantes.
  160. Pode ser necessário em um mesmo sistema se utilizar dois Padrões Arquiteturais para atender a todo o sistema.
  161.  
  162. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  163.  
  164. Vantagens de Padrões de Arquitetura:
  165.  
  166. - Favore o modelo de desenvolvimento incremental (voce não tem que pensar em tudo ao mesmo tempo)
  167. - As camadas tornam-se modulares, pode-se substituir se necessário sem muito esforço (requer interfaces estáveis e bem construidas).
  168. - Mudanças em uma camada teoricamente só impactam a camada superior.
  169. - Camadas superiores podem ser indepentes de plataforma/hardware.
  170.  
  171. Desvantagens:
  172.  
  173. - Identificar o que fica em cada camada pode não ser fácil, principalmente os das camadas mais baixas.
  174. - Camadas em excesso podem comprometer o desempenho por excesso de comunicação entre as menssagens.
  175.  
  176. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  177.  
  178. Agora vamos começar a falar em detalhes de cada Padrão de Arquitetura:
  179.  
  180. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  181.  
  182. Padrões de Projeto:
  183.  
  184. Da Desordem à Estrutura:
  185. - Layered Architecture (Arquitetura em Camadas)
  186. - Pipes and Filters (Dutos e Filtros)
  187. - Black board (Repositorio Compartilhados)
  188.  
  189. Sistemas Distribuidos:
  190. - Client-Server (Cliente-Servidor)
  191. - Broker
  192.  
  193. Sistemas Interativos:
  194. - Model View Controller
  195. - Presentation Abstratcion Control
  196.  
  197. Sistemas Adaptaveis:
  198. - Microkernel
  199. - Reflection
  200.  
  201. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  202.  
  203. Arquitetura em Camadas:
  204.  
  205. Cada camada solicita serviços da camada inferior e fornece a camada superior.
  206.  
  207. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  208.  
  209. Dica: Evite criar muitas camadas, isso complica as coisas (entre 3 e 4 camadas é ok).
  210.  
  211. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  212.  
  213. Camadas comuns são:
  214.  
  215. - Camada de Apresentação -> Dados apresentados aos usuários
  216. - Camada de Negócios -> Programa em sí.
  217. - Camada de Dados -> Banco de Dados, Comunicação etc.
  218.  
  219. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  220.  
  221. Dutos e Filtros:
  222.  
  223. Padrão de organização da dinâmica de um sistema.
  224.  
  225. É dividido em dois componentes:
  226. - Dutos: Componentes que conduzem os dados
  227. - Filtros: São os componentes que tratam os dados.
  228.  
  229. Permitem que voce pense no programa como uma linha de produção onde os dados seguem um caminho pelo sistema
  230. e a cada passagem por um filtro são incrementados.
  231.  
  232. Usado em aplicações de processamento de dados.
  233.  
  234. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  235.  
  236. Vantagens:
  237.  
  238. - Os filtros são bem modulares. (é fácil acrescentar um novo filtro entre dois antigos)
  239. - O fluxo de execução parece com o fluxo de trabalho da empresa então é fácil para um cliente compreender.
  240. - Fácilmente extensível com adição de novos filtros.
  241. - Se aplica tanto a sistemas paralelos quanto a sistemas concorrentes.
  242.  
  243. Desvantagens:
  244. - Deve haver um padrão para o formato dos dados trafegados.
  245. - Pode haver um overhead pela padronização dos dados.
  246. - Incompatibilidade na padronização pode prejudicar o re-uso.
  247.  
  248. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  249.  
  250. Repositório Compartilhado (Black Board)
  251.  
  252. Todos os dados ficam contidos no mesmo local então é facil planejar a comunicação e a estruturação das tarefas já que é tudo centralizado.
  253.  
  254. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  255.  
  256. Vantagens:
  257. - Formas de proteção dos dados podem ser melhor implementadas.
  258. - Os sub-sistemas que gravam dados não precisam saber quem os usa e vice-versa (permitindo modularidade, e evitando mta comunicação)
  259. - Fácil integrar novos sub-sistemas.
  260.  
  261. Desvantagens:
  262. - É preciso também padronizar os dados.
  263. - A manutenção desse grande volume de dados pode ser problemática.
  264. - É preciso evitar redundancias e inconsistencias nos dados devido aos acessos de multiplos locais.
  265. - Sub-sistemas diferentes podem ter dados com diferentes requesitos de tratamento (Ex: segurança, disponibilidade, acesso rápido etc)
  266. // Ou seja pode ter um dado que é uma senha, ele deve ficar bem protegido, outro é frequentemente acessado então deve tomar pouco tempo,
  267. // Tudo deve ser programado as vezes tratando um dado ou outro de forma especial,
  268. // o que pode fazer o Modulo de dados virar uma macarronada de fluxo de execução.
  269. // (Esse comentário acima foi interpretação minha: Vinicius Garcia)
  270.  
  271. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  272.  
  273. // Fim da aula.
  274. próxima aula linha de produtos.
  275. Faltou falar de mais um Padrão que ele pretende falar ainda.
Advertisement
Add Comment
Please, Sign In to add comment