Arquitetura de Software

56 %
44 %
Information about Arquitetura de Software
Technology

Published on November 12, 2008

Author: eros.viggiano

Source: slideshare.net

Eros Viggiano http://erosviggiano.com http://dearchitectura.wordpress.com http://pangeanet.org/profile/ErosViggiano

http://erosviggiano.com

http://dearchitectura.wordpress.com

http://pangeanet.org/profile/ErosViggiano

Breve currículo: Arquiteto de Software Squadra Tecnologia. Professor IEC/PUC Minas. Formação: Ciência da Computação - UFMG Especialização em Engenharia de Software - UFMG Uns bons anos de experiência profissional com TI, Java, Engenharia de Software, Arquitetura de Software, etc. Algumas certificações: Sun Certified Enterprise Architect for J2EE IBM Certified Solution Designer – RUP v7.0

Breve currículo:

Arquiteto de Software Squadra Tecnologia.

Professor IEC/PUC Minas.

Formação:

Ciência da Computação - UFMG

Especialização em Engenharia de Software - UFMG

Uns bons anos de experiência profissional com TI, Java, Engenharia de Software, Arquitetura de Software, etc.

Algumas certificações:

Sun Certified Enterprise Architect for J2EE

IBM Certified Solution Designer – RUP v7.0

Agenda Objetivo Definição de Arquitetura de Software Utilidade da Arquitetura de Software Representação da Arquitetura Software Arquitetura e Processos de Desenvolvimento de Software Provas de Conceito Arquiteturais Projetando uma Arquitetura de Software Papel do Arquiteto de Software Algumas Referências Extras Conclusões

Agenda

Objetivo

Definição de Arquitetura de Software

Utilidade da Arquitetura de Software

Representação da Arquitetura Software

Arquitetura e Processos de Desenvolvimento de Software

Provas de Conceito Arquiteturais

Projetando uma Arquitetura de Software

Papel do Arquiteto de Software

Algumas Referências Extras

Conclusões

Objetivo Fornecer uma visão geral das atividades de arquitetura de software bem como da formação do profissional.

Objetivo

Fornecer uma visão geral das atividades de arquitetura de software bem como da formação do profissional.

Antes porém, o que é arquitetura? Grécia, 500 a.C.: Arkhitekton – construtor chefe Arkhi – chefe ou mestre Tekton – trabalhador ou construtor Tekhne – arte ou habilidade Webster: Arte ou habilidade de construir estruturas Produto ou trabalho arquitetônico Um método ou estilo arquitetônico

Antes porém, o que é arquitetura?

Grécia, 500 a.C.:

Arkhitekton – construtor chefe

Arkhi – chefe ou mestre

Tekton – trabalhador ou construtor

Tekhne – arte ou habilidade

Webster:

Arte ou habilidade de construir estruturas

Produto ou trabalho arquitetônico

Um método ou estilo arquitetônico

O que é arquitetura de software? “ Arquitetura de software é o conjunto de decisões que, se incorretas, podem causar o cancelamento do seu projeto.” - Rozanski e Woods em Software Systems Architecture : Working With Stakeholders Using Viewpoints and Perspectives

O que é arquitetura de software?

“ Arquitetura de software é o conjunto de decisões que, se incorretas, podem causar o cancelamento do seu projeto.”

- Rozanski e Woods em Software Systems Architecture : Working With Stakeholders Using Viewpoints and Perspectives

O que é arquitetura de software? “ A arquitetura de software (…) é a estrutura (…) composta por elementos de software com suas propriedades externamente visíveis e o relacionamento entre eles.” – Bass, Clements e Kazman em Software Architecture in Practice

O que é arquitetura de software?

“ A arquitetura de software (…) é a estrutura (…) composta por elementos de software com suas propriedades externamente visíveis e o relacionamento entre eles.”

– Bass, Clements e Kazman em Software Architecture in Practice

Enquanto produto: Modelo abstrato que representa a estrutura de um software. NÃO é o software operacional. NÃO é uma pilha de tecnologias. Enquanto disciplina: Campo da engenharia de software que trata das estruturas de software, procurando reduzir complexidades através de abstrações e separação de interesses.

Enquanto produto:

Modelo abstrato que representa a estrutura de um software.

NÃO é o software operacional.

NÃO é uma pilha de tecnologias.

Enquanto disciplina:

Campo da engenharia de software que trata das estruturas de software, procurando reduzir complexidades através de abstrações e separação de interesses.

Para que serve arquitetura de software? A arquitetura permite: Analisar a eficácia do design em resolver os requisitos. Considerar alternativas arquitetônicas em estágios iniciais. Reduzir os riscos associados com a construção do software.

Para que serve arquitetura de software?

A arquitetura permite:

Analisar a eficácia do design em resolver os requisitos.

Considerar alternativas arquitetônicas em estágios iniciais.

Reduzir os riscos associados com a construção do software.

Qual a importância da arquitetura de software? A arquitetura de software fornece a visão geral ( big picture ) para garantir que se está no caminho correto. Habilita a comunicação entre os interessados sobre como o software vai ser construído. Logo no início do ciclo de vida, ressalta decisões de design que têm profundo impacto em todo trabalho. Constitui um modelo simples e intelectualmente compreensível dos componentes do software. Como construir uma casa sem as plantas?

Qual a importância da arquitetura de software?

A arquitetura de software fornece a visão geral ( big picture ) para garantir que se está no caminho correto.

Habilita a comunicação entre os interessados sobre como o software vai ser construído.

Logo no início do ciclo de vida, ressalta decisões de design que têm profundo impacto em todo trabalho.

Constitui um modelo simples e intelectualmente compreensível dos componentes do software.

Como construir uma casa sem as plantas?

Alguns Processos de Desenvolvimento de Software : RUP – Rational Unified Process XP – Extreme Programming OpenUP – Versão “magra” do RUP com filosofia ágil

Alguns Processos de Desenvolvimento de Software :

RUP – Rational Unified Process

XP – Extreme Programming

OpenUP – Versão “magra” do RUP com filosofia ágil

Rational Unified Process – RUP Clássico Fase de Concepção: compreensão do escopo e arquitetura candidata. Fase de Elaboração: arquitetura estável e provada Representação: Modelo de Visualização 4+1, Krutchen Algumas tarefas sugeridas pelo RUP 7.2: Análise arquitetural Análise de recurso existente Construir prova de conceito arquitetural (POC: Proof-of-Concept) Avaliar viabilidade de POC Descrever a arquitetura em tempo de execução Descrever a distribuição Identificar mecanismos de design Identificar elementos de design Estruturar o modelo de implementação Priorizar casos de uso.

Rational Unified Process – RUP Clássico

Fase de Concepção: compreensão do escopo e arquitetura candidata.

Fase de Elaboração: arquitetura estável e provada

Representação: Modelo de Visualização 4+1, Krutchen

Algumas tarefas sugeridas pelo RUP 7.2:

Análise arquitetural

Análise de recurso existente

Construir prova de conceito arquitetural (POC: Proof-of-Concept)

Avaliar viabilidade de POC

Descrever a arquitetura em tempo de execução

Descrever a distribuição

Identificar mecanismos de design

Identificar elementos de design

Estruturar o modelo de implementação

Priorizar casos de uso.

XP – Extreme Programming Na fase de exploração: metáfora do sistema YAGNI (You Aren’t Gonna Need It) Arquitetura dirigida pelos valores de Simplicidade e Coragem .

XP – Extreme Programming

Na fase de exploração: metáfora do sistema

YAGNI (You Aren’t Gonna Need It)

Arquitetura dirigida pelos valores de Simplicidade e Coragem .

OpenUP Fase de Concepção: compreensão do escopo e arquitetura candidata. Fase de Elaboração: arquitetura estável e provada Representação: Modelo de Visualização 4+1, Krutchen Algumas tarefas sugeridas pelo OpenUP 1.5: Esboçar Arquitetura Refinar Arquitetura

OpenUP

Fase de Concepção: compreensão do escopo e arquitetura candidata.

Fase de Elaboração: arquitetura estável e provada

Representação: Modelo de Visualização 4+1, Krutchen

Algumas tarefas sugeridas pelo OpenUP 1.5:

Esboçar Arquitetura

Refinar Arquitetura

POC = Proof of Concept O que é um POC arquitetural? É uma solução, mesmo que conceitual, para satisfazer um requisito de qualidade. Pode apresentar-se em alguma das formas: Lista de tecnologias conhecidas. Esboço de modelo conceitual (ex: usando UML). Simulação de solução. Um protótipo executável. O POC deve ter critérios de avaliação Critério de sucesso deve ser definido antes da execução da prova. O arquiteto deve ser capaz de analisar se os objetivos foram atingidos.

POC = Proof of Concept

O que é um POC arquitetural?

É uma solução, mesmo que conceitual, para satisfazer um requisito de qualidade.

Pode apresentar-se em alguma das formas:

Lista de tecnologias conhecidas.

Esboço de modelo conceitual (ex: usando UML).

Simulação de solução.

Um protótipo executável.

O POC deve ter critérios de avaliação

Critério de sucesso deve ser definido antes da execução da prova.

O arquiteto deve ser capaz de analisar se os objetivos foram atingidos.

Franco padrão:Modelo de Visualização 4+1 de Philippe Kruchten

Nosso exemplo: Sistema para uma rede de hotéis

Nosso exemplo:

Sistema para uma rede de hotéis

Nosso processo didático (e simplicista): Identificar requisitos relevantes à arquitetura Classificar e priorizar requisitos relevantes à arquitetura Identificar riscos e restrições Atacar maiores riscos técnicos Desenvolver visão geral da arquitetura Definir organização de alto nível Identificar mecanismos de análise Promover o reuso Avaliar a arquitetura Este processo foi criado somente para esta apresentação. Dificilmente poderá ser aplicado em situações reais a não ser para softwares muito simples.

Nosso processo didático (e simplicista):

Identificar requisitos relevantes à arquitetura

Classificar e priorizar requisitos relevantes à arquitetura

Identificar riscos e restrições

Atacar maiores riscos técnicos

Desenvolver visão geral da arquitetura

Definir organização de alto nível

Identificar mecanismos de análise

Promover o reuso

Avaliar a arquitetura

Este processo foi criado somente para esta apresentação. Dificilmente poderá ser aplicado em situações reais a não ser para softwares muito simples.

Requisitos funcionais – Casos de Uso: Reserva self-service Reserva Pagamento Login Check-in Check-out Cadastro de hóspede Registro de serviços

Requisitos funcionais – Casos de Uso:

Reserva self-service

Reserva

Pagamento

Login

Check-in

Check-out

Cadastro de hóspede

Registro de serviços

 

Principais requisitos de qualidade (não-funcionais): O hóspede pode fazer sua reserva remotamente (WWW) e de forma segura. Pico de 1000 acessos simultâneos em alta temporada. Tempo de resposta para reserva pelo hóspede: 6 seg. Tempo de resposta para reserva por funcionário: 2 seg. A interface para o funcionário deve ser rica (gráfica, drag-n-drop ,etc) e acessível pela intranet. Disponibilidade do sistema de 99,9%. Estimativa de crescimento de 20% ao ano.

Principais requisitos de qualidade (não-funcionais):

O hóspede pode fazer sua reserva remotamente (WWW) e de forma segura.

Pico de 1000 acessos simultâneos em alta temporada.

Tempo de resposta para reserva pelo hóspede: 6 seg.

Tempo de resposta para reserva por funcionário: 2 seg.

A interface para o funcionário deve ser rica (gráfica, drag-n-drop ,etc) e acessível pela intranet.

Disponibilidade do sistema de 99,9%.

Estimativa de crescimento de 20% ao ano.

Identificação dos casos de uso críticos Reserva self-service Reserva Pagamento Login Check-in Check-out Cadastro de hóspede Registro de serviços Casos de uso críticos são também conhecidos como arquiteturalmente significativos.

Identificação dos casos de uso críticos

Reserva self-service

Reserva

Pagamento

Login

Check-in

Check-out

Cadastro de hóspede

Registro de serviços

Casos de uso críticos são também conhecidos como arquiteturalmente significativos.

Requisito de Qualidade Classificação Reserva remota segura. Segurança Usuários identificados. Segurança Pico de 1000 acessos simultâneos Performance Confirmação de reserva por email. Interoperabilidade Tempo de resposta reserva hóspede 8 seg. Performance Tempo de resposta reserva funcionário 5 seg. Performance A interface para o funcionário deve ser rica. Usabilidade Disponibilidade do sistema de 99,9%. Disponibilidade Estimativa de crescimento de 20% ao ano. Escalabilidade

Confirmação de reserva por email.

Tempo de resposta reserva funcionário 5 seg.

Disponibilidade do sistema de 99,9%.

Estimativa de crescimento de 20% ao ano.

Priorização dos casos de uso arquiteturalmente significativos. Rastreabilidade entre Requisitos funcionais e não-funcionais. Ordem Caso de Uso Requisitos Suplementares 1 Reserva self-service Segurança, Performance, Interoperabilidade, Disponibilidade 2 Reserva Usabilidade 3 Pagamento Interoperabilidade, Segurança

Priorização dos casos de uso arquiteturalmente significativos.

Rastreabilidade entre Requisitos funcionais e não-funcionais.

Principais restrições identificadas: O sistema de autorização de cartões de crédito (SACC) é provido por terceiros e as transações serão realizadas através de webservices. O servidor de aplicações deve ser o Sun GlassFish. O SGBD deve ser o Oracle 10G. A aplicação web deve ser compatível com IE 6 e Firefox 2 ou versões superiores. Principais riscos identificados: Apesar de ser compatível com J2EE, o servidor de aplicações não é conhecido pelos desenvolvedores.

Principais restrições identificadas:

O sistema de autorização de cartões de crédito (SACC) é provido por terceiros e as transações serão realizadas através de webservices.

O servidor de aplicações deve ser o Sun GlassFish.

O SGBD deve ser o Oracle 10G.

A aplicação web deve ser compatível com IE 6 e Firefox 2 ou versões superiores.

Principais riscos identificados:

Apesar de ser compatível com J2EE, o servidor de aplicações não é conhecido pelos desenvolvedores.

Ações de mitigação a riscos e aos requisitos de qualidade mais severos. Risco ou Requisito severo Mitigação Performance Teste de stress sobre UC Reserva self-service Disponibilidade Teste de maturidade Disponibilidade email POC Email – Componentes assíncronos Interoperabilidade POC Integração com Sistema de Cartão de Crédito Escalabilidade POC Cluster Avaliação servidor de aplicação POC Avaliação, Capacitação da Equipe

Ações de mitigação a riscos e aos requisitos de qualidade mais severos.

Explorar e avaliar opções arquiteturais de alto-nível. Prover um entendimento da estrutura para os patrocinadores e demais stakeholders. Levar em consideração: design da rede pré-existente bancos de dados pré-existentes ambiente web configuração dos servidores uso de padrões Produto típico: modelo de implantação preliminar Considerar o uso de uma arquitetura de referência e/ou padrões arquiteturais Patterns of Enterprise Application Architecture de Martin Fowler Pattern-Oriented Software Architecture Volume 4 de Buschmann, Henney, Schmidt

Explorar e avaliar opções arquiteturais de alto-nível.

Prover um entendimento da estrutura para os patrocinadores e demais stakeholders.

Levar em consideração:

design da rede pré-existente

bancos de dados pré-existentes

ambiente web

configuração dos servidores

uso de padrões

Produto típico: modelo de implantação preliminar

Considerar o uso de uma arquitetura de referência e/ou padrões arquiteturais

Patterns of Enterprise Application Architecture de Martin Fowler

Pattern-Oriented Software Architecture Volume 4 de Buschmann, Henney, Schmidt

 

Criar uma estrutura inicial para o modelo de design. Mostrar pacotes de desenho arquiteturalmente significativos. Considerar o uso de padrões arquiteturais. Patterns of Enterprise Application Architecture de Martin Fowler POSA4

Criar uma estrutura inicial para o modelo de design.

Mostrar pacotes de desenho arquiteturalmente significativos.

Considerar o uso de padrões arquiteturais.

Patterns of Enterprise Application Architecture de Martin Fowler

POSA4

Foi usado um padrão arquitetural conhecido como MVC Alguns padrões arquiteturais: Layers Broker Pipes and Filters Microkernel

Foi usado um padrão arquitetural conhecido como MVC

Alguns padrões arquiteturais:

Layers

Broker

Pipes and Filters

Microkernel

O que é necessário para “dar vida” aos componentes. Alguns mecanismos de análise: Persistência Roteamento de mensagens Gerência de transações Redundância Troca de informações Boas referências: Livro Analysis Patterns de Martin Fowler Artigo Capturing Architectural Requirements de Peter Eeles

O que é necessário para “dar vida” aos componentes.

Alguns mecanismos de análise:

Persistência

Roteamento de mensagens

Gerência de transações

Redundância

Troca de informações

Boas referências:

Livro Analysis Patterns de Martin Fowler

Artigo Capturing Architectural Requirements de Peter Eeles

 

Identificar ativos pré-existentes que possam colaborar para a solução. Realizar uma avaliação preliminar. Redução de custos e riscos. Não reinventar a roda!

Identificar ativos pré-existentes que possam colaborar para a solução.

Realizar uma avaliação preliminar.

Redução de custos e riscos.

Não reinventar a roda!

O objetivo é rever o resultado e analisar alternativas. Avaliação do grau de atendimento dos requisitos de qualidade. Utilização de checklists para validação. Métodos clássicos: ATAM, CBAM, SAAM e ARID (SEI / Carnegie Mellon) F erramentas de análise estrutural e arquitetural podem auxiliar na avaliação arquitetura e conformidade do código. Rational Software Architect SA4J Metrics (plugin do Eclipse) SourceMonitor JDepend

O objetivo é rever o resultado e analisar alternativas.

Avaliação do grau de atendimento dos requisitos de qualidade.

Utilização de checklists para validação.

Métodos clássicos: ATAM, CBAM, SAAM e ARID (SEI / Carnegie Mellon)

F erramentas de análise estrutural e arquitetural podem auxiliar na avaliação arquitetura e conformidade do código.

Rational Software Architect

SA4J

Metrics (plugin do Eclipse)

SourceMonitor

JDepend

Após a primeira análise arquitetural, ao fim da fase de Iniciação , temos a Arquitetura Candidata. E depois? Refinamento da arquitetura na fase seguinte (se o projeto não foi abortado). E ao final da Elaboração A arquitetura do software deve estar Estável.

Após a primeira análise arquitetural, ao fim da fase de Iniciação , temos a Arquitetura Candidata.

E depois?

Refinamento da arquitetura na fase seguinte (se o projeto não foi abortado).

E ao final da Elaboração

A arquitetura do software deve estar Estável.

“ O arquiteto ideal deve ser uma pessoa de letras, um matemático, familiar com estudos históricos, um diligente estudante de filosofia, interessado em música, não ignorante em medicina e proficiente em questões jurídicas, familiar com a astronomia e os cálculos astronômicos.” – Vitruvius, 25 d.C.

“ O arquiteto ideal deve ser uma pessoa de letras,

um matemático,

familiar com estudos históricos,

um diligente estudante de filosofia,

interessado em música,

não ignorante em medicina e proficiente em questões jurídicas,

familiar com a astronomia e os cálculos astronômicos.”

– Vitruvius, 25 d.C.

O arquiteto deve combinar as habilidades: Experiência Liderança Comunicação Orientado a objetivos Pró-atividade Necessita abranger as capacidades de designer (ou projetista), mas: tende a ser mais generalista que especialista; deve tomar decisões técnicas mais abrangentes. Está em constante aprendizado. Arquiteto ou Time de Arquitetura?

O arquiteto deve combinar as habilidades:

Experiência

Liderança

Comunicação

Orientado a objetivos

Pró-atividade

Necessita abranger as capacidades de designer (ou projetista), mas:

tende a ser mais generalista que especialista;

deve tomar decisões técnicas mais abrangentes.

Está em constante aprendizado.

Arquiteto ou Time de Arquitetura?

O arquiteto observa o mundo. Mas confia em sua visão interior. Ele permite que as coisas venham e vão. Seu coração é aberto como o céu. Quando o arquiteto lidera, o time dificilmente percebe que ele existe. O segundo melhor é o arquiteto que é amado. Depois, o que é temido. O pior deles é aquele desprezado. O arquiteto não fala, age. Quando o trabalho está pronto, o time diz: “Incrível: nós fizemos tudo sozinhos!"  The Tao of the Software Architect Lao-Tsu, revisited by Philippe Kruchten

O arquiteto observa o mundo.

Mas confia em sua visão interior.

Ele permite que as coisas venham e vão.

Seu coração é aberto como o céu.

Quando o arquiteto lidera, o time

dificilmente percebe que ele existe.

O segundo melhor é o arquiteto que é amado.

Depois, o que é temido.

O pior deles é aquele desprezado.

dearchitectura.wordpress.com pangeanet.org www.sei.cmu.edu/architecture www.ibm.com/developerworks/architecture www.booch.com/architecture www.bredemeyer.com IBM Rational Unified Process OpenUP Arquitetura Ágil – Scott Ambler The “4+1” View Model of Software Architecture - Philippe Kruchten Who Needs an Architect? - Martin Fowler Enterprise Architects Join the Team - Rebecca J. Parsons Software Architecture in Practice – Clements, Bass, Kazman An Introduction to Software Architecture - Garlan, Shaw Software Systems Architecture – Rozanski, Woods

dearchitectura.wordpress.com

pangeanet.org

www.sei.cmu.edu/architecture

www.ibm.com/developerworks/architecture

www.booch.com/architecture

www.bredemeyer.com

IBM Rational Unified Process

OpenUP

Arquitetura Ágil – Scott Ambler

The “4+1” View Model of Software Architecture - Philippe Kruchten

Who Needs an Architect? - Martin Fowler

Enterprise Architects Join the Team - Rebecca J. Parsons

Software Architecture in Practice – Clements, Bass, Kazman

An Introduction to Software Architecture - Garlan, Shaw

Software Systems Architecture – Rozanski, Woods

Definição de arquitetura de software? Importância de arquitetura de software? Perspectiva perante processos de desenvolvimento? Modelo de Visualização 4+1? Ops! Alguma visão faltante? Habilidades do arquiteto?

Definição de arquitetura de software?

Importância de arquitetura de software?

Perspectiva perante processos de desenvolvimento?

Modelo de Visualização 4+1?

Ops! Alguma visão faltante?

Habilidades do arquiteto?

 

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

Arquitetura de software - Biquipédia

La arquitetura de software dun sistema cunsiste na defeniçon de ls cumponentes de software, sues propiadades sternas, i sous relacionamientos cun outros ...
Read more

1 Arquitetura de Software - Paradigmas - YouTube

1 Arquitetura de Software - Paradigmas. ... Reflexões sobre arquitetura de Software por Tiago Sciencia - DevInSantos 2015 - Duration: 39:46.
Read more

Arquitetura de Software - Início | Faculdade de Computação

Por que Arquitetura de Software? Conceito provado na prática, no desenvolvimento de grandes sistemas de software “As the size of software systems ...
Read more

ARQUITETURA DE SOFTWARE by Michely Barbosa on Prezi

Make your likes visible on Facebook? Connect your Facebook account to Prezi and let your likes appear on your timeline. You can change this under Settings ...
Read more

PPT - Arquitetura de Software PowerPoint Presentation

Arquitetura de Software. Definições, Conceitos, o Papel do Arquiteto de Software. Por que Arquitetura de Software?. Conceito provado na prática, no ...
Read more

MIT em Arquitetura de Software - YouTube

Depoimento de Marcio Costa ... This feature is not available right now. Please try again later.
Read more

ARQUITETURA DE SOFTWARE | Renildo Alves - MCTS - MCP ...

ARQUITETURA DE SOFTWARE Renildo Alves - MCTS -... Apple’s blunder and why the tech industry needs to look at itself in the mirror Vivek Wadhwa Influencer
Read more

Arquitetura de Software on Vimeo - Vimeo: Watch, upload ...

Nessa apresentação André Faria fala à equipe Bluesoft sobre arquitetura de software. Ele explica detalhadamente o que é uma arquitetura.…
Read more