intro du zar quite tura

44
Arquitetura de Software Silvia Regina Vergilio

Upload: fagner-brilhante

Post on 28-Sep-2015

221 views

Category:

Documents


0 download

DESCRIPTION

intro

TRANSCRIPT

  • Arquitetura de Software

    Silvia Regina Vergilio

  • Atividades de Projeto Projeto Geral ou Preliminar: fase que traduz a especificao

    do sistema em termos da arquitetura de dados e de mdulos. Descreve a organizao fundamental do sistema, identificando seus diversos mdulos (e sua relaes entre si e com o ambiente) para que se alcancem os objetivos propostos pelo cliente Projeto da arquitetura do software.

    Projeto Detalhado: descrio detalhada/ refinamento de cada mdulo, visando codificao e especificao dos programas

  • Projeto da Arquitetura de Software

    Arranjo do sistema para fazer corresponder os requisitos tanto funcionais quanto no funcionais - aos subsistemas e componentes.

  • Arquitetura

    Toda obra da humanidade apresenta um projeto arquitetural. O projeto arquitetural precede a etapa de construo da obra. O projeto arquitetural determina as partes de uma construo e como estas devem interagir. A arquitetura garante a unidade da obra, ou seja, a consistncia entre as suas partes.

  • O que arquitetura de software?

    O que arquitetura? do grego: arkh (chefe ou mestre) + tkton

    (trabalhador ou construtor) tekhne arte ou habilidade

    do dicionrio: 1. Arte de projetar e construir prdios, edifcios ou outras estruturas; arquitetnica. 2 Constituio do edifcio. 3 Contextura de um todo. 4 Inteno, projeto.

  • O que arquitetura de Software? O conceito de Arquitetura de Software surgiu nos anos 60

    (com Dijkstra), mas se tornou popular nos anos 90. Perry e Wolf (92) Arquitetura = {Elementos, Organizao,

    Decises} um conjunto de elementos arquiteturais (de dados, de

    processamento, de conexo) que possuem alguma organizao. Os elementos e sua organizao so definidos por decises tomadas para satisfazer objetivos e restries.

    D.E. Perry and A. L. Wolf. Foundations for the study of software architecture. SIGSOFT Software Engineering

    Notes, 17(4):408211;52, October 1992.

  • O que arquitetura de Software? Shaw e Garlan (96) a arquitetura define o que o

    sistema em termos de componentes computacionais e, os relacionamentos entre estes componentes, os padres que guiam a sua composio e restries.

    Alm da escolha dos algoritmos e estruturas de dados, a arquitetura envolve: decises sobre as estruturas que formaro o sistema, controle, protocolos de comunicao, sincronizao e acesso a dados, atribuio de funcionalidade a elementos do sistema, distribuio fsica dos elementos escalabilidade e desempenho e outros atibutos de qualidade; e seleo de alternativas de projeto.

    M. Shaw, D. Garlan; Software Architecture. Perspectives on an Emerging Discipline, Prentice Hall, 1996.

    D. Garlan and Mary Shaw. An introduction to software architecture. Technical Report- CMU-CS-94166,Carnegie Mellon University, January 1994.

  • O que arquitetura de Software? Bass (98) 2003: a estrutura (ou estruturas) do

    sistema, a qual composta de elementos de software, das propriedades externamente visveis desses elementos, e dos relacionamentos entre eles; a abstrao do sistema.

    Len Bass, Paul Clements, and Rick Kazman. Software Architecture in Practice. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1998., 2nd edition, April 2003.

  • Arquitetura de Software outras definies.

    Astudillo (1998): a interface entre o problema do negcio e a soluo tcnica.

    Jazayere et al (2000): conjunto de componentes e seus relacionamentos, que deve satisfazer os requisitos funcionais e no funcionais do sistema.

    ISO/IEEE 1471-2000 - Arquitetura a organizao fundamental de um sistema incorporada em seus componentes, seus relacionamentos com o ambiente, e os princpios que conduzem seu design e evoluo.

  • Uma Viso da Arquitetura de Software

    uma representao da informao (ou parte dela) contida na arquitetura de forma que se adque s necessidades de um ou mais interessados.

    Ela facilita o entendimento por parte do interessado, uma vez que vai filtrar e formatar a informao. Por exemplo, a viso fornecida pelos casos de uso do

    sistema, pode interessar ao cliente/usurio. A viso de implementao aos programadores, etc.

    O arquiteto pode usar as diferentes vises para lidar com complexidade.

  • Arquitetura de Software

    O termo arquitetura de software usado para designar processo e produto. Produto representao da estrutura de software

    rea da engenharia de software que trata de produzir as estruturas de software, visando a reduzir complexidade.

  • O Processo de Arquitetura de Software

    Elaborao do modelo de negcio envolve analisar custo, tempo de desenvolvimento, restries de mercado, interfaces com outros sistemas, etc

    Entendimento dos requisitos: levantamento de requisitos e modelo do domnio

    Criao ou seleo de uma arquitetura: identificao dos componentes e suas interaes, das dependncias de construo e tecnologias que apoiam a implementao.

  • O Processo de Arquitetura de Software

    Representao da arquitetura e divulgao: para permitir aos desenvolvedores e testadores o entendimento da arquitetura

    Implementao da arquitetura, seguindo seus protocolos e estruturas.

    Anlise e avaliao: verificar a adequao da arquitetura, registrando impactos, riscos e dificuldades, o que servir para evoluao da arquitetura.

  • O Processo de Arquitetura de Software - Stakeholders

    Participantes (interessados) - Analista de requisitos identifica os requisitos- Arquiteto de software cria a arquitetura - pode ser

    um time com um arquiteto lder.- Projetista ou Desenvolvedor implementa os

    componentes

    Outros: cliente/usurio, testador, gerente de projeto, programador, secretrios, etc.

  • O Arquiteto de Software

    ser capaz de reconhecer estruturas comuns em sistemas j desenvolvidos

    usar o conhecimento sobre arquiteturas existentes para tomar decises de projeto em novos sistemas

    ser capaz de realizar uma descrio formal da arquitetura de um sistema a fim de analisar as propriedades do sistema

    apresentar a arquitetura para outras pessoas

  • O Arquiteto de Software

    Habilidades: compreender profundamente o domnio e as

    tecnologias pertinentes dominar tcnicas de modelagem e metodologias

    de desenvolvimento entender as estratgias de negcios da instituio

    onde atua conhecer produtos, processos e estratgias de

    concorrentes

  • O Arquiteto de Software

    Tarefas: Especificao da arquitetura do software e das

    bases para o sistema de acordo com os requisitos do cliente.

    modelagem anlise de trade-offs e viabilidade prototipao, simulao e realizao de

    experimentos anlise de tendncias tecnolgicas atuao como mentor de arquitetos novatos

  • Importncia da ArquiteturaComo construir uma casa sem a planta?- Atua como uma estrutura a fim de checar o atendimento aos

    requisitos do sistema- Suporte na estimao de custos e gerncia da complexidade

    do sistema- Suporte ao reso- Reduz o intervalo entre especificao e implementao- Permite considerar alternativas arquitetnicas em estgios

    iniciais do desenvolvimento- Reduz riscos associados construo do software

  • Importncia da Arquitetura- A arquitetura abstrao que serve como

    base para criar um entendimento mtuo, para comunicao entre os participantes.

    - Sua representao serve como guia para o projeto de sua implementao, teste e implantao do sistema.

  • A Definio da Arquitetura

    Para o arquiteto, a fase de engenharia de requisitos subsdio para a definio da arquitetura da qual se obtm:

    - processo de negcio modelado - planejamento estratgico das verses - requisitos de cada verso, etc.

  • A Definio da Arquitetura - Deve facilitar reso em diferentes nveis.

    necessrio que o sistema possa sofrer alteraes de forma localizada, sem afetar outras partes.

    necessrio que novas funcionalidades sejam adicionadas sem causar impacto nas j existentes.

    A vida til do sistema depende de uma boa arquitetura que facilite modificaes, e permita sua evoluo.

  • A Definio da Arquitetura A definio est baseada na escolha de

    alternativas mais adequadas ao domnio da aplicao.

    importante reutilizar e adotar estratgias previamente validadas.

    Utilizam-se frameworks, estilos, padres e linguagens de descrio de componentes, previamente definidos.

  • Arquitetura: frameworks, padres e estilos arquiteturais.

  • Conceito de Padro- Um template (formulrio) de soluo para um

    problema recorrente que seja comprovadamente til em um determinado contexto.

    - Um padro de software instanciado atravs da vinculao de valores a seus parmetros.

    - Os padres podem existir em vrias escalas e nveis de abstrao; por exemplo, como padres de arquitetura, padres de anlise, padres de projeto, padres de teste e idiomas ou padres de implementao.

  • Histrico

    Arquiteto ->Christopher Alexander.

    Linguagem de padres em arquitetura.

    Christopher Alexander --> catlogo com 253 padres para edificaes ligadas a regies, cidades, transportes, casas, escritrios, paredes, jardins, etc.

  • Definio um padro expressa uma soluo reutilizvel descrita

    atravs de trs partes: um contexto, um problema e uma soluo. (GAMMA et al., 1995).

    Contexto: estende o problema a ser solucionado, apresentando situaes de ocorrncia desses problemas.

    Problema: determinado por um sistema de foras, onde estas foras estabelecem os aspectos do problema que devem ser considerados.

    Soluo: mostra como resolver o problema recorrente e como balancear as foras associadas a ele.

  • Padres em ES

    padres em ES permitem que desenvolvedores possam recorrer a solues j existentes para solucionar problemas que normalmente ocorrem em desenvolvimento de software;

    Surgimento: incio dos anos 90;

    Padres capturam experincia existente e comprovada em desenvolvimento de software, ajudando a promover boa prtica de projeto.

  • Categorias de Padres Padres Arquiteturais: expressam um esquema de organizao estrutural fundamental para sistemas de software. (BUSCHMANN et al., 1996)

    Padres de Projeto: disponibilizam um esquema para refinamento de subsistemas ou componentes de um sistema de software (GAMMA et al., 1995)

    Idiomas: descrevem como implementar aspectos particulares de componentes ou de relacionamentos entre eles, usando as caractersticas de uma dada linguagem

    public void runServer(){ ServerSocket server; Socket connection;try { connection = server = new ServerSocket(7000, 100); ......... server.accept();.......................}

  • Padres de arquiteturas (ou arquiteturais)

    - So templates prontos que solucionam problemas arquiteturais recorrentes

    - Expressam um esquema fundamental de organizao estrutural para sistemas de software.

    - Fornecem um conjunto de subsistemas pr-definidos, especificando suas responsabilidades e incluindo regras e diretrizes para organizar as relaes entre eles.

  • Padres de arquiteturas

    Os templates contm as seguintes informaes: Nome do padro Contexto Problema

    Impe a descrio de vrios aspectos problemticos que devem ser considerados

    Soluo Fundamentos Contexto resultante Exemplos

  • Nome doPadro Broker

    ContextoAmbiente distribuido

    ProblemaComo os componentes do sistema devem se comunicar entre si.

    Soluo

    Crie um intermediri entre um componente-cliente e um componente servidor, o broker. Um cilente envia uma mensaem parao Broker contendo todas as informaes apropriads para que a comunicao seja efetuada. O Broker responsvel por completar a conexo

  • Vantagens e Benefcios

    Padres reduzem a complexidade da soluo

    Padres promovem o reso Padres facilitam a gerao de

    alternativas Padres facilitam a comunicao

  • Estilos de Arquitetura

    Uma arquitetura de software, ou somente uma viso de arquitetura, pode ter um atributo chamado estilo de arquitetura, que reduz o conjunto de formulrios que podem ser escolhidos e impe um determinado grau de uniformidade arquitetura.

    O estilo pode ser definido por um conjunto de padres, ou pela escolha de componentes ou conectores especficos que funcionaro como os tijolos bsicos da construo.

  • Estilos de Arquitetura

    Expressam esquemas de organizao estrutural de sistemas, fornecendo um conjunto de componentes do sistema, suas responsabilidades e a forma de interao entre eles.

    Cada estilo de arquitetura lida com diferentes tipos de atributos de qualidade. Para obter a definio de uma arquitetura a partir dos estilos existentes, basta saber quais os atributos mais relevantes para a soluo e confront-los com os atributos que o estilo atende.

  • Estilos Arquiteturais

    A arquitetura de um sistema pode aderir a um ou mais estilos arquiteturais. Um estilo define os tipos de elementos que podem aparecer

    em uma arquitetura e as regras que regem a interconexo entre estes elementos.

    Esses estilos podem simplificar o problema de definio de arquiteturas de sistema.

    A maioria dos sistemas de grande porte adere a vrios estilos

    Estilos arquiteturais = modelos arquiteturais

  • Exemplos de Estilos Arquiteturais

    Cliente-Servidor Camadas Filtros e dutos (pipes and filters) Repositrio Orientado a eventos (publisher/subscriber) Objetos distribudos, etc

  • Estilos Arquiteturais e Escolhas de Projeto

    Um estilo arquitetural representa um conjunto de escolhas de projeto Conjunto de caractersticas comuns a diversos sistemas nos

    quais as mesmas escolhas foram feitas Padres arquiteturais

    Um sistema aderente a determinado estilo ganha" as caractersticas a ele inerentes

    Estilos podem ser usados para descrever uma determinada arquitetura Foco nas solues de projeto e no em sua documentao

  • Organizao de sistema

    Reflete a estratgia bsica que usada para estruturar um sistema.

    Exemplos: O estilo de repositrio de dados compartilhados Estilo de servios e servidores compartilhados Estilo de mquina virtual ou em camadas Orientado a objetos (ou Objetos Distribudos) Pipes and Filters ou Pipelining

  • Modelo de referncia da Arquitetura

    Consiste na decomposio padronizada do problema em partes conhecidas que cooperam entre si em prol de uma soluo.

    Geralmente, estes problemas so de domnio bastante amadurecido e trazem a experincia de analistas de negcio em conjunto com desenvolvedores [Bass98].

    O modelo de referncia de um determinado domnio surge durante o processo de amadurecimento da soluo em funo da necessidade de representaes mais abstratas que caracterizam o domnio.

  • Arquitetura de Referncia Consiste em componentes de software e nos

    relacionamentos entre eles que implementam funcionalidades relativas s partes definidas no modelo de referncia.

    Cada uma destas partes pode ser implementada em apenas um ou vrios componentes de software, ou seja, o mapeamento das funcionalidades do modelo de referncia em componentes da arquitetura de referncia nem sempre um para um.

    As arquiteturas de referncia so aplicveis a um domnio particular.

  • Arquiteturas de Referncia

    Derivadas de um estudo de domnio de aplicao, ao invs de sistemas existentes.

    Podem ser usadas como base para a implementao de sistemas ou comparao de sistemas diferentes. Atuam como um padro com relao ao qual os sistemas

    podem ser avaliados. Exs.

    Modelo OSI para sistemas de comunicao Organizao tradicional de compiladores em vanguarda e

    retaguarda (e seus elementos internos)

  • Modelo de referncia OSI

  • Frameworks de Arquitetura

    Um framework de arquitetura ou uma infra-estrutura de arquitetura um conjunto de componentes com os quais pode-se criar um determinado tipo de arquitetura.

    Vrias das maiores dificuldades arquiteturais devem ser resolvidas no framework ou na infra-estrutura, geralmente, direcionadas a um domnio especfico: comando e controle, sistema de controle, etc.

  • Relacionamento entre eles

    Modelode Referncia

    Arquiteturade Referncia

    Arquiteturade software

    Estilos dearquitetura

    Padres de arquitetura

    Arquiteturado sistema

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Slide 41Slide 42Slide 43Slide 44