Baixe o app para aproveitar ainda mais
Prévia do material em texto
22/02/2019 1 Arquitetura de Software Introdução Prof. Ivan Granja Fac. de Análise de Sistemas – PUC-Campinas Definição de Arquitetura (do grego arché — αρχή — significando "primeiro" ou "principal" e tékton — τέχνη — significando "construção") refere-se à arte ou a técnica de projetar e edificar o ambiente habitado pelo ser humano. Neste sentido, a arquitetura trata destacadamente da organização do espaço e de seus elementos. Em última instância, a arquitetura lidaria com qualquer problema de agenciamento, organização, estética e ordenamento de componentes em qualquer situação de arranjo espacial. Normalmente a arquitetura associa-se diretamente ao problema da organização do homem no espaço (e principalmente no espaço urbano). No caso dos sistemas de software associa-se ao problema de organização dos elementos que compõe um software no espaço onde este efetivamente existe (infra-estrutura de um sistema computacional), com vistas a oferecer soluções eficazes (funcionalidades ou comportamentos) aos problemas de quem usa-o. http://pt.wikipedia.org/wiki/L%C3%ADngua_grega http://pt.wikipedia.org/wiki/Arte http://pt.wikipedia.org/wiki/T%C3%A9cnica http://pt.wikipedia.org/wiki/Ser_humano http://pt.wikipedia.org/w/index.php?title=Agenciamento&action=edit&redlink=1 http://pt.wikipedia.org/wiki/Organiza%C3%A7%C3%A3o http://pt.wikipedia.org/wiki/Est%C3%A9tica http://pt.wikipedia.org/w/index.php?title=Ordenamento&action=edit&redlink=1 http://pt.wikipedia.org/wiki/Urbano 22/02/2019 2 O que é Arquitetura de Software? • Arquitetura de Software é uma área da Engenharia de Software que visa fornecer abordagens, modelos, conceitos e metodologias que fundamentem a tomada de decisão no momento de planejar a estrutura de um software. • A Arquitetura é definida por boas práticas que regem a organização de um sistema, consubstanciado em seus componentes, as relações que mantém entre si e com o ambiente, além de princípio de governança deste design e da evolução que será necessária. ANSI/IEEE Std 1471-2000: Recommended Practice for Architectural Description of Software-Intensive Systems. Arquitetura na perspectiva dos diferentes níveis de Abstração de um Sistema Nível Conceitual Requisitos e Modelos de Análise Nível do Projeto (Design) Estrutura e Design do Sistema Nível da Implementação Construção “Real” do Sistema Programas, Classes, Tabelas, etc... 22/02/2019 3 Arquitetura na perspectiva dos diferentes níveis de Abstração de um Sistema Nível Conceitual Requisitos e Modelos de Análise Nível do Projeto (Design) Estrutura e Design do Sistema Nível da Implementação Construção “Real” do Sistema Programas, Classes, Tabelas, etc... ARQUITETURA DO SISTEMA “Não há uma divisão clara entre design e arquitetura” Martin Fowler Arquitetura do Software • Arquitetura estabelece a base para o projeto e a implementação do produto de software, respeitando o contexto. • Guiam a criação e definição das abstrações de design e do código. Código implementação projeto arquitetura Decisões sobre arquitetura são fundamentais. Mudanças na arquitetura provocam efeitos de grande monta no projeto. 22/02/2019 4 O que está envolvido com Arquitetura de Software? • É uma fundação na qual o resto do sistema precisa ser construído • É a base, o alicerce onde a estrutura do sistema vai ser apoiada. • O que ele quis dizer com resto do sistema? • A arquitetura envolve as peças que são difíceis de mudar • A arquitetura de um sistema de software é a estrutura (ou um grupos de estruturas), que compreende os elementos deste software, as propriedades externamente visíveis destes elementos, e os relacionamentos entre eles. Martin Fowler Bass, Clements, Kazman; 2003 in Software Architecture in Practice (2nd edition), Ed. Addison-Wesley André Faria O que são os elementos e os relacionamentos da arquitetura de um software? • Elemento substantivo masculino 1. Cada um dos corpos que os antigos consideravam partes constituintes do universo: terra, água, ar e fogo. 2. Corpo simples. 3. Substância que se não pode decompor. 4. Meio ou ambiente em que os seres vivem, ou ao qual se está afeito. 5. .Insumo. 6. Tudo o que entra na formação de alguma coisa. 7. Cada parte de um todo. 8. Recurso. • Que elementos são estes em um software? "in Dicionário Priberam da Língua Portuguesa [online], 2008-2013, https://www.priberam.pt/dlpo/relacionamento https://www.priberam.pt/dlpo/relacionamento 22/02/2019 5 O que são os elementos e os relacionamentos da arquitetura de um software? • Elementos são as construções básicas que estão contidas na formação da estrutura do sistema, tais como: • camadas (layers ou tiers). • Pipes e flitros • Componentes, bibliotecas. • Subsistemas • uma API de serviços • etc.. • Elementos podem ser físicos (ex: biblioteca) ou lógicos (ex: layers) • Os nomes dados a estes elementos variam conforme o estilo arquitetural e o modelo usado como referência. O que são os elementos e os relacionamentos da arquitetura de um software? • Relacionamento substantivo masculino 1. Ato de relacionar ou de se relacionar. • Relacionar verbo pronominal 1. Adquirir relações. 2 Entrar na intimidade de. • O relacionamento entre componentes é dado pelo “grau de intimidade” que um componente fornece a outro. "in Dicionário Priberam da Língua Portuguesa [online], 2008- 2013, https://www.priberam.pt/dlpo/relacionamento” https://www.priberam.pt/dlpo/relacionamento 22/02/2019 6 O que são os elementos e os relacionamentos da arquitetura de um software? • Gradue, em ordem crescente, a intimidade entre os seguintes componentes: A) Um classe que oferece um serviço por meio de um método público para outra Classe B) Uma função que chama outra e que compartilham uma var. global C) Um serviço de uma API que é chamado por um APP em celular D) Uma função que chama outra, passa parâmetros e recebe retorno E) Um programa que lê dados gravados em uma tabela do banco de dados por outro programa. Mais sobre arquitetura de um software • A arquitetura de um sistema incorpora informações sobre o comportamento de cada elemento, o meios que este dispõe para relacionar-se e sobre como se dá a relação entre os pares de elementos. • Os elementos devem controlar e/ou ocultar o acesso as informações que mantém, em especial aquelas que não pertencem ao domínio do segundo elemento relacionado. • Todo sistema de software possui uma arquitetura única e particular pois, mesmo que inspire-se em modelos ou estilos arquiteturais, é composta por elementos e relações que fazem sentido no contexto particular ao qual está submetido. 22/02/2019 7 Quem define e mantém a arquitetura de um sistema? • Arquiteto de Software • Antes de uma profissão, é um papel que pode ser de um engenheiro de software, por uma equipe especializada em arquitetura de software ou mesmo por consenso em um time “A imagem de um arquiteto distante do dia-a-dia do desenvolvimento da equipe, sem profundo conhecimento técnico e de implementação e que apenas toma as grandes decisões está a tempo defasada”. • Quais os diferencias de um bom arquiteto? • Profundo conhecimento Técnico e de Tecnologia • Inspirar a tomada de decisão, fazer boas escolhas arquiteturais frente ao contexto dado • Capacidade de comunicação e de trabalho em equipe Paulo Silveira et. al 2012 in Introdução à Arquitetura e Design de Software. Ed. Campus As Decisões de Arquitetura • São escolhas que terão que ser tomadas sobre a estrutura e/ou tecnologias do projeto, cedo ou tarde • Exemplos: • Devo usar um banco relacional ou NoSQL? • Devo usar stored procedures ou separar as regras de negócio do banco de dados? • Qualquer escolha ou decisão arquitetural deve ser feita tendo em perspectiva os bônus e os ônus associados. • Boas decisões de projeto produzem abstrações de design simples e fáceis de refatorar. Software architecture is the set of design decisions which, if made incorrectly, may cause your projectto be cancelled." – Eoin Woods 22/02/2019 8 A governança da arquitetura de software • Conjunto de conceitos, práticas e princípios que norteiam a tomada de decisão e a evolução arquitetural • Alguns princípio e atributos de qualidade de uma arquitetura de software são: • KIS (Keep it simple) • Uso de Padrões • Divisão Conceitual e Separação de Assuntos (separation of concerns) • Restrições de domínio • Encapsulamento e Isolamento • Substitutibilidade (capacidade de substituição) • Escalabilidade • Reusabilidade • Flexibilidade • Extensibilidade
Compartilhar