Arquitetura de Software

Description

superior Programação Avançada Mind Map on Arquitetura de Software, created by mozoemoza on 09/20/2014.
mozoemoza
Mind Map by mozoemoza, updated more than 1 year ago
mozoemoza
Created by mozoemoza over 10 years ago
18
1

Resource summary

Arquitetura de Software
  1. o que é?
    1. Pode ser vista como uma organização fundamental de um sistema, incorporada em seus componentes, seus relacionamentos com o ambiente, os princípios que conduzem seu design e evolução (ISO/IEEE 1471-2000). Ela define o modo de integração e interação com os demais sistemas necessários para que os requisitos definidos sejam atendidos.
    2. como selecionar?
      1. A escolha por uma arquitetura ou outra depende da nossa necessidade e das características do sistema que estamos tentando desenvolver. É importante que você escolha uma boa arquitetura, pois fazendo isso você obterá vários benefícios
      2. quais os benefícios?
        1. Possibilidade de divisão do sistema de informações em várias partes, cada uma com suas respectivas funções e responsabilidades, facilitando o gerenciamento.
          1. Melhor flexibilidade – novos requisitos do negócio podem ser satisfeitos rapidamente.
            1. Melhor adaptabilidade – possibilidade de customização de uma aplicação para vários usuários, usando várias alternativas de entrega dos serviços da aplicação com impacto mínimo ao núcleo da aplicação.
              1. Melhor manutenabilidade – possibilitando de atualização de uma aplicação, minimizando o impacto da maioria das mudanças.
                1. Melhor reusabilidade – possibilidade montagem rapidamente de aplicações únicas e dinâmicas.
                  1. Melhor aproveitamento do legado – possibilidade de reusar a funcionalidade de sistemas legados em novas aplicações.
                    1. Melhor interoperabilidade – possibilidade de integrar duas aplicações executando em plataformas diferentes.
                      1. Melhor escalabilidade – possibilidade de distribuir e configurar a execução da aplicação para satisfazer vários volumes de transação.
                        1. Menor tempo de desenvolvimento – possibilidade de melhoria da produtividade e com baixo orçamento.
                          1. Melhor robustez – possibilidade de ter soluções com menos defeitos, com mais confiabilidade e disponibilidade.
                          2. Padrão em Camadas
                            1. como se caracteriza?
                              1. Uma arquitetura em camadas se caracteriza pela separação de seus artefatos de softwares constituintes em partes distintas (camadas) e pela restrição de conexão imposta por essa divisão.
                                1. divisão
                                  1. A divisão em camadas representa um agrupamento ordenado dos componentes e recursos, sendo que cada camada de um sistema repousa sobre a outra e a camada mais baixa ignora a existência da camada mais alta. O número e a composição das camadas dependem da complexidade do domínio do projeto e do espaço de solução.
                              2. Vantagens
                                1. Você pode compreender uma única camada como um todo coerente sem saber muito sobre as outras camadas.
                                  1. Podemos substituir camadas por implementações alternativas dos mesmos serviços básicos.
                                    1. Você minimiza as dependências entre as camadas.
                                      1. O uso de camadas pode facilitar a padronização.
                                        1. Podemos fazer reuso de camadas.
                                        2. Desvantagens
                                          1. Às vezes resultam em alteração em cascata.
                                            1. Camadas extras podem prejudicar o desempenho. Em cada camada os dados precisam, tipicamente, ser transformados de uma representação para outra.
                                            2. Tipos de Camadas
                                              1. Uma Camada (Single-Tier)
                                                1. Inicialmente os aplicativos eram monolíticos: não havia uma separação clara entre a linguagem de programação e o acesso ao banco de dados.
                                                  1. XBase, Cobol, Tabelas Paradox (Delphi)
                                                2. Duas Camadas (Two- Tier)
                                                  1. Essa arquitetura é a Cliente/Servidor. Nela existe uma divisão clara entre o aplicativo e o acesso ao banco de dados. Para resolver os problemas da arquitetura de uma camada, foram criados os servidores de bancos de dados. A ideia é criar um programa ("servidor de banco de dados"), que é o único com permissão para acessar os arquivos de dados. Todas as consultas e atualizações devem ser pedidas para este programa. Isto resolve diversos problemas, pois o servidor de banco de dados pode:
                                                    1. Efetuar verificações adicionais de segurança (validar usuários, por exemplo).
                                                      1. Garantir que as atualizações sejam realmente efetuadas completamente ou então descartadas.
                                                    2. Três Camadas (Three-Tier)
                                                      1. Consiste em separar as funcionalidades em camadas: uma camada para a lógica de apresentação; outra para a lógica de negócio; e outra para a lógica de acesso a dados.
                                                        1. A separação em três camadas torna o sistema mais flexível, de modo que partes podem ser alteradas independentemente. Com o emprego de arquitetura em três camadas, qualquer alteração em uma determinada camada não influi nas demais, desde que o mecanismo de comunicação entre elas permanece inalterado. Isto permite substituir uma camada inteira por outra, independente de qual camada seja, ou que um projeto desenvolvido para web possa abranger também dispositivos móveis ou standalone, a partir da inclusão de uma nova camada de apresentação.
                                                      2. N Camadas (N-Tier)
                                                        1. Nesta arquitetura, retiramos a apresentação do cliente e a centralizamos em um servidor Web. Dessa forma, não temos mais o cliente como um programa que precisa ser instalado em cada computador da rede, pois o acesso à aplicação é feito por meio de um navegador. Ainda, com o deslocamento da camada de apresentação para um Servidor Web, resolvemos o problema de termos que atualizar a aplicação em centenas ou milhares de computadores cada vez que a interface for alterada, o que torna a atualização das aplicações, uma tarefa mais gerenciável.
                                                    3. Padrão MVC
                                                      1. A ideia desse padrão é separar a lógica de negócio da interface com o usuário, fazendo com que a segunda seja mudada sem que seja necessária qualquer mudança na primeira. Para tanto, separamos a aplicação em três partes distintas: Model, que está relacionada à tarefa administrada pela aplicação; View, que está relacionada à exibição dos dados ou informação dessa aplicação; e Controller, que é a responsável pela coordenação das duas anteriores.
                                                        1. Model - representa as regras de negócio.
                                                          1. PADRÃO OBSERVER
                                                          2. View - apresenta os dados representados pelo modelo, acessando-os por meio do modelo e especifica como o dados serão apresentados.
                                                            1. PADRÃO COMPOSITE
                                                            2. Controller - traduz a interação do usuário com a visão em ações a serem executadas pelo modelo.
                                                              1. PADRÃO STRATEGY
                                                              2. Utiliza os padrões de projeto:
                                                                1. Observer- separar objetos de maneira que mudanças ocorridas em um possam afetar um número qualquer de outros objetos, sem exigir que o objeto alterado conheça detalhes dos outros.
                                                                  1. Composite-ocorre sempre que queremos agrupar objetos e tratar o grupo com um objeto individual e outras classes definem objetos compostos.
                                                                    1. Strategy-o relacionamento view-controller é um exemplo desse padrão. Ele é útil quando você quer substituir o algoritmo tanto estático como dinamicamente.
                                                                  Show full summary Hide full summary

                                                                  Similar

                                                                  Eng. de Software
                                                                  Rodolfo Cerrone
                                                                  Arquitetura de Software
                                                                  Yara Candida Borges De Castro
                                                                  AO01_MapaMental_MateusMendanha
                                                                  Mateus Mendanha
                                                                  CONSTRUÇÃO DO PROGRAMA (SOFTWARE)
                                                                  Rodolfo Silva
                                                                  AO01_MapaMental_MariaLídiaMachado
                                                                  Maria Lídia Machado
                                                                  AO01_MapaMental_GustavoLageFrancelino
                                                                  Gustavo Lage Francelino
                                                                  AO01_MapaMental_Túlio_Leandro_Alves_Souza
                                                                  Tulio Leandro
                                                                  Design de software & arquitetura de software
                                                                  Antonio N Marques
                                                                  Atividade arquitetura de software
                                                                  Vitor Silvestre
                                                                  (Software)
                                                                  Marcos Vinícius
                                                                  AO01_MapaMental_Adriel Hugor Salviano Sousa
                                                                  Adriel Hugor