Por Sérgio Crespo Email: screspo@id.uff.br http://www.professores.uff.br/screspo Twitter: @screspo



Documentos relacionados
Definição de Padrões. Padrões Arquiteturais. Padrões Arquiteturais. Arquiteturas de Referência. Da arquitetura a implementação. Elementos de um Padrão

FORMULÁRIO PARA CRIAÇÃO DE DISCIPLINA

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Arquitetura de Software

UFG - Instituto de Informática

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Requisitos de Software

Documento de Arquitetura

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Arquitetura de Software. Silvia Regina Vergilio

Relatório do GPES. Arquitetura Geral do Framework

Agenda da Aula. Resumo dos Padrões (Aula 4) Padrões Arquiteturais. Arquitetura Cliente-Servidor. Arquitetura Cliente-Servidor

ENGENHARIA DE SOFTWARE I

ARQUITETURA DE SOFTWARE

Fase 1: Engenharia de Produto

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Um Framework para Desenvolvimento de Aplicações Móveis Orientadas a Serviços

Projeto de Arquitetura

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Arquitetura de Software

UML Components - A Simple Process for Specifying

Feature-Driven Development

Padrões de Interação com o Usuário

Engenharia de Requisitos

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Projeto de Arquitetura

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Padrões Arquiteturais e de Integração - Parte 1

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Objetivos. Requisitos de Software. Tipos de Requisitos. O que é um requisito? Requisitos Funcionais e Não- Funcionais. Requisitos Funcionais

Processos de Desenvolvimento de Software

ARQUITETURA DE SISTEMAS. Cleviton Monteiro

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Sloan School of Management

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Engenharia de Software

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

do grego: arkhé (chefe ou mestre) + tékton (trabalhador ou construtor); tekhne arte ou habilidade;

Uma Arquitetura de Linha de Produto Baseada em Componentes para Sistemas de Gerenciamento de Workflow

ENG1000 Introdução à Engenharia

UML - Unified Modeling Language

A contribuição da Análise para Arquitetura de Software

Estilos Arquiteturais. Estilos Arquiteturais. Exemplos de Estilos Arquiteturais. Estilo: Pipe e Filtros

ENGENHARIA DE SOFTWARE DESENVOLVIMENTO EM CAMADAS

Introdução à Engenharia de Software

MVC e Camadas - Fragmental Bliki

Processo de Desenvolvimento Unificado

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

O que é a UML? Introdução a UML. Objetivos da Modelagem. Modelos. A UML não é. Princípios da Modelagem. O que é um modelo?


Engenharia de Software I: Análise e Projeto de Software Usando UML

Tarciane Andrade.

Uma Abordagem usando PU

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

1 Introdução. Componentes Usuários. Provedor de Serviços. Figura 1.1 Ambiente de oferecimento de serviços

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

TI Aplicada. Aula 02 Áreas e Profissionais de TI. Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com

Gerência e Planejamento de Projeto. SCE Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestre de 2002

Requisitos de Software

Engenharia de Software II

Reuso. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior

Processos de Software

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

1 UML (UNIFIED MODELING LANGUAGE)

Sistemas Distribuídos

Requisitos de Software

Conceitos de Banco de Dados

Introdução ao Design

Sistemas Distribuídos

Introdução a Computação

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE SERGIPE - FANESE CURSO SUPERIOR DE TECNOLOGIA em Gestão da Tecnologia da Informação

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

Persistência e Banco de Dados em Jogos Digitais

Requisitos. Professor Gabriel Baptista ( gabriel.baptista@uninove.br ) ( )

Introdução ao Tableau Server 7.0

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Arquitetura de Sistemas Distribuídos

Model-Driven Engineering Geração de modelos de software e especificações usando a plataforma IBM

Como conduzir com sucesso um projeto de melhoria da qualidade

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

Planejando o aplicativo

Introdução ao OpenUP (Open Unified Process)

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Serviços Web: Arquitetura

Sistemas de Informação I

ESTUDO DE CASO WINDOWS VISTA

build UNIP Sistemas de Informação Análise Essencial de Sistemas 3 Prof.Marcelo Nogueira A produção de Software é uma atividade build and fix.

Análise e Projeto Orientados a Objeto

3. Fase de Planejamento dos Ciclos de Construção do Software

Sistemas Operacionais. Conceitos de um Sistema Operacional

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Integração dos Modelos de Gestão de TI

Project and Portfolio Management [PPM] Sustainable value creation.

Transcrição:

Por Sérgio Crespo Email: screspo@id.uff.br http://www.professores.uff.br/screspo Twitter: @screspo

Objetivos Esta disciplina tem por objetivo estudar a teoria que envolve a criação de arquiteturas de software, enfatizando modelos, artefatos e linguagens de descrição de arquiteturas e fazer experimentos teóricos usando a UML- Components como forma de representação de arquiteturas.

Ementa Conceitos e modelos de arquitetura de software, revisão de UML, reuso de software, pipes and filters, layers, blackboards, broker, model-view-controller, visões de arquitetura, pipelines, componentes, Linguagens de descrição de arquiteturas, model drive archtecture, service oriented architecture, sistemas móveis, agentes, interpretadores, Agile Software Architecture e arquiteturas baseadas em ontologias.

Bibliografia An Introduction to Software Architecture, David Garlan and Mary Shaw, 1994. (http://www.cs.cmu.edu/afs/cs/project/able/ftp/intro_softarch/intro_softarch.pdf) Architecting for Large Scale Agile Software Development: A Risk-Driven Approach, Ipek Ozkaya, Michael Gagliardi, Robert L. Nord, 2013. (http://resources.sei.cmu.edu/asset_files/article/2013_101_001_87865.pdf) Quality Attributes and Service-Oriented Architectures, Liam O Brien,Len Bass and Paulo Merson, 2005. (http://resources.sei.cmu.edu/asset_files/technicalnote/2005_004_001_14489.pdf)

Bibliografia Evaluating a Service-Oriented Architecture, Software Engineering Institute, 2007. (http://resources.sei.cmu.edu/asset_files/technicalreport/2007_005_001_1 4894.pdf) Agile at Scale (AAS) - SPRUCE / SEI (https://www.csiac.org/spruce/resources/ref_documents/agile-scale-aasspruce-sei) Making Architecture Visible to Improve Flow Management in Lean Software Development, Robert L. Nord and Ipek, zkaya, Raghvinder S. Sangwan, 2012. (http://resources.sei.cmu.edu/asset_files/article/2012_101_001_58828.pdf)

Bibliografia JOHN Chessman, John Daniels. UML Components A Simple Process For Specifyng Component-Based Software, Addison-Wesley, 2000. MENDES, Antônio. Arquitetura de Software. Campus-Elsevier, 2002, (ISBN 853521013X) BASS, Len; CLEMENTS, Paul. Software Architecture in Practice. 2ed., 2003. (ISBN 0321154959) SHANK, Mary; GULAN, David. Software Architecture. 1996. (ISBN 0131829572)

MOTIVAÇÃO Motivação http://resources.sei.cmu.edu/asset_files/technicalreport/1996_005_001_16457.pdf

Em realidade http://resources.sei.cmu.edu/asset_files/technicalreport/1996_005_001_16457.pdf

Arquitetura

No passado

http://resources.sei.cmu.edu/asset_files/technicalreport/1996_005_001_16457.pdf

Fases

Fases

Fases

Fases

Fases

Fases

Fases

Resumo: Fases http://resources.sei.cmu.ed

Why Is Software Architecture Important? If a project has not achieved a system architecture, including its rationale, the project should not proceed to full-scale system development. Specifying the architecture as a deliverable enables its use throughout the development and maintenance process. Barry Boehm [Boehm 95]

Sistemas existentes Subsistemas 1 Subsistemas 2 Subsistemas n Domínios de Problemas

Sistemas existentes?? Subsistemas 1 Subsistemas 2 Subsistemas n Domínios de Problemas

Sistemas existentes Subsistemas 1 Subsistemas 2 Subsistemas n Domínios de Problemas

Sistemas existentes Subsistemas 1 Subsistemas 2 Subsistemas n Domínios de Problemas

Tempo Tecnologia SOA Tecnologia CORBA Tecnologia

Tempo Tecnologia SOA Tecnologia CORBA Tecnologia Atualizar com SOA

O que e o seu cliente entendem por isso?

O que você e seu cliente entendem por isso?

Papéis Apesar de existirem numerosas definições sobre arquitetura do software, no núcleo de tudo está a noção de que a arquitetura de um sistema descreve sua estrutura bruta. Esta estrutura ilumina as decisões de projeto de alto nível, incluindo coisas como: o sistema é composto das peças de interação, onde estão os principais caminhos de interação Adicionalmente, uma descrição arquitetural inclui informação suficiente para permitir a análise de alto nível e crítica do sistema.

Papéis A arquitetura do software desempenha tipicamente um papel chave como uma ponte entre requisitos e código.

Papéis Fornecendo uma descrição abstrata do sistema, a arquitetura expõe determinadas propriedades, ao mesmo tempo que esconde outras. Idealmente, esta representação fornece um guia de entendimento intelectual do sistema como um todo, permitindo aos projetistas raciocinar sobre a possibilidade do sistema satisfazer a determinadas exigências, e sugere um blueprint para a construção do sistema e a sua composição.

Papéis Por exemplo: uma arquitetura para um aplicação de processamento de sinal, pôde ser construída como uma rede do fluxo de dados em que os nós lêem vetores de entrada dos dados, transformam esses dados, e os escrevem aos vetores da saída. E aqui, os projetistas devem pensar em estruturas para este tipo de processamento.

Papéis Na elaboração da Arquitetura de um software, 6 papéis são desempenhados: Compreensão, Reuso, Construção, Evolução, Análise e Gerência.

Papéis: Compreensão A arquitetura do software simplifica nossa habilidade de entender grandes sistemas apresentando-os em um alto nível do abstração de forma a ser facilmente compreendido. Além disso, expõe as principais restrições do projeto do sistema, tanto quanto o aspecto racional para fazer escolhas arquiteturais específicas.

Papéis: Reuso Descrições de arquiteturas suportam reuso em múltiplos níveis. Trabalhos correntes focam geralmente em bibliotecas de componentes. Projetos de Arquiteturas, promovem reuso em grandes componentes e em Frameworks, onde seus componentes possam ser integrados.

Papéis: Construção A Construção de uma arquiterua oferece um norte para os desenvolvedores, indicando ou apresentando os maiors componentes e suas dependências. Por exemplo: as camadas de uma arquitetura tipicamente documentam as fronteiras da implementação, expondo os maiores componentes e suas interfaces, bem como as suas principais restrições.

Papéis: Evolução A arquitetura do software pode expor as dimensões na linha do tempo da possível evolução de um sistema. Deixa explícito "as paredes internas" de um sistema, os desenvolvedores do sistema podem melhor compreender as ramificações das mudanças, e estimar desse modo mais preciso o custo das modificações. Além disso, as descrições arquiteturais separam interesses sobre as funcionalidade de um componente da forma com que esse componente é conectado (interage) a outros componentes. Esta separação permite mais facilmente aos mecanismos da conexão obter um maior reuso e interoperabilidade.

Papéis: Análise As descrições arquiteturais fornecem novas facilidades para a tarefa de análise tais como: a consistência do sistema, o conformidade dos atributos da qualidade, a análise da dependência e A análises específicas de domínio para identificar arquiteturas semelhantes.

Papéis: Gerência A avaliação crítica de uma arquitetura conduz tipicamente a uma grande compreensão das exigências, das estratégias da execução, e de riscos potenciais a serem enfrentados na implementação de um sistema de software.

Mas o que é e não é Arquitetura de software? Arquitetura define elementos de software: Foco no comportamento externamente observável e interações Responsabilidades das partes Abstrações de elementos de software Todo sistema tem uma arquitetura Indica como requisitos são satisfeitos Detalhes de implementação não entram Algoritmos normalmente não afetam a arquitetura Tudo que está lá tem uma razão! http://twiki.cin.ufpe.br/twiki/bin/viewfile/taes/arquiteturapos200902?rev=2;filename=01_introducao_arq_sw.pdf

Arquitetura de Software Lida com?

Lida com A arquitetura de software lida com os requisitos do sistema! http://twiki.cin.ufpe.br/twiki/bin/viewfile/taes/arquiteturapos200902?rev=2;filename=01_introducao_arq_sw.pdf

Lida com requisitos Com ênfase em?

Ênfase nos Grande ênfase nos não-funcionais! http://twiki.cin.ufpe.br/twiki/bin/viewfile/taes/arquiteturapos200902?rev=2;filename=01_introducao_arq_sw.pdf

Questões que uma arquitetura pode responder Como representar o mapa em um sistema que traça rotas percorridas por ônibus de modo a minimizar o trabalho da equipe? Como garantir a confiabilidade de um servidor a um baixo custo? Qual a maneira mais eficiente de se construir uma grade de horários levando-se em conta as várias restrições impostas por professores, diretores e regras departamentais? Como tornar o sistema capaz de lidar com 1.000.000 de usuários simultâneos sem sobrecarregar a rede? http://twiki.cin.ufpe.br/twiki/bin/viewfile/taes/arquiteturapos200902?rev=2;filename=01_introducao_arq_sw.pdf

Arquitetura de referência Alguns autores utilizam os termos estilos arquiteturais e arquitetura de referência como sinônimos. Contudo, arquitetura de referência é: Uma estrutura que provê uma caracterização das funcionalidades dos sistemas de software de um dado domínio de aplicação. Dra. Elisa Yumi Nakagawa

Estilos Arquiteturais Capturam conjuntos de escolhas de projeto comuns a vários sistemas Podem representar interações como elementos de primeira ordem Conectores Exemplos comuns: Decomposição Modular Cliente/Servidor Camadas Associados à representação da arquitetura http://twiki.cin.ufpe.br/twiki/bin/viewfile/taes/arquiteturapos200902?rev=2;filename=01_introducao_arq_sw.pdf

Estilo Arquitetural Dra. Elisa Yumi Nakagawa

Para a proxima aula. Fazer uma apresentação de 3 estilos arquiteturais. A apresentaçaõ deve ter: PPT, prós e contra do uso da arquitetura, de onde foi criada esta arquitetura, para que propósito é mais aconselhavel o seu uso, exemplos, referencias e pesquisas em termos de artigos padrao IEEE e ACM falam desta arquitetura. (isto configura o mínimo de detalhes que a apresentação deve ter). Deve-se entregar um documento impresso em formato de artigo descrevendo as três arquiteturas selecionadas. 1. Layered 2. Pipes and filters 3. Message Bus Architecture 4. Component Based Architecture 5. Blackboard 6. Data-centric 7. Microkernel 8. Domain specific languages 9. Client-server (2-tier, 3-tier, n-tier exhibit this style) 10. MVC 11. Peer-to-peer 12. Service-oriented 13. Repository Style