Arquitetura de Software

50
jairobjunior {@gmail, slideshare, linkedin e twitter}

description

Apresentação do mini curso de arquitetura de software proferido na Desenvolve - Maceió/AL

Transcript of Arquitetura de Software

Page 1: Arquitetura de Software

jairobjunior {@gmail, slideshare, linkedin e twitter}

Page 2: Arquitetura de Software

Arquitetura é um conjunto de estruturação de princípios que possibilita um sistema de ser composto por

outro conjunto mais simples, onde cada um possui seu próprio contexto independente, não podendo ser

incompatível com todo o sistema.

Sun Microsystem, Inc.

Page 3: Arquitetura de Software

Costumo dizer aos estudantes de Arquitetura que não basta sair da escola para ser bom profissional. O sujeito tem de se abrir para o mundo e não ficar atrás da visão estreita

dos especialistas.

Oscar Niemeyer

Page 4: Arquitetura de Software

Consultor Java – BlendIT / Indra Company;

Pós-Graduação em Gerência de Projetos;

Graduado em Sistema de Informação;

Sook – Empresa pré-incubada na IET;

Certificações: SCJP & SCWCD;

Page 5: Arquitetura de Software
Page 6: Arquitetura de Software

1. Compreender a importância da arquitetura de software

em projetos;

2. Entender qual é o papel de um arquiteto de software;

3. Como os "grandes" funcionam?

4. Aplicar uma arquitetura de software a um estudo de

caso, utilizando o Drumon - Framework;

Page 7: Arquitetura de Software

Final da década de 60 e início da década de 70

Estrutura de software;

Encapsulamento de informação;

Separação de interface gráfica e implementação;

Década de 90

Orientação a objetos;

Componentes;

Internet;

*Fator crítico de sucesso no desenvolvimento de software.

Page 8: Arquitetura de Software

Supremo Tribunal Federal / Congresso Nacional / Palácio do Planalto

Quanto maior e mais complexo, mais relevante se

torna a definição de sua arquitetura;

Mudanças no projeto podem causar impactos

significativos na arquitetura;

Page 9: Arquitetura de Software

Arquitetura são os principais elementos do

sistema, as peças que são difíceis de mudar (Martin)

Arquitetura é toda decisão que impactam em grandes trade-offs e que podem ou não

serem difíceis de mudar. (Paulo Silveira)

Arquitetura são as decisões que

gostaríamos de ter tomado no começo do

projeto. (Ralph)

Page 10: Arquitetura de Software
Page 11: Arquitetura de Software

Se cria uma arquitetura para suportar diversos níveis de serviços, como: disponibilidade, confiança e

escalabilidade, que são requisitos de um sistema.

Page 12: Arquitetura de Software
Page 13: Arquitetura de Software

O arquiteto ideal deve ser uma pessoa erudita, um matemático, familiarizado com estudos históricos,

um estudioso aplicado de filosofia, conhecedor de música, que não desconheça medicina, detentor de

saber jurídico e familiarizado com astronomia e cálculos astronômicos." - Vitruvius, circa 25 BC

Page 14: Arquitetura de Software

O desenvolvedor estar concentrado no que ocorre quando um usuário pressiona um botão, enquanto um arquiteto estar concentrado o que ocorre quando dez

mil usuário pressionam um botão.

Paul R. Allen, Joseph J. Bambara - SCEA

Page 15: Arquitetura de Software

Liderança;

Visão estratégia;

Gestão de relações humanas;

Boa Comunicação;

Page 16: Arquitetura de Software

Cabe ao arquiteto as tomadas de decisões e assumir estas decisões, em muitas vezes não são

simples.

Page 17: Arquitetura de Software

Deve conseguir observar as coisas como um todo e fazer escolhas que maximizem ROI.

Page 18: Arquitetura de Software

Lida com pessoas de negócio, precisa compreender implicações políticas para as

decisões e deve ser acessível.

Page 19: Arquitetura de Software

Deve saber utilizar um vocabulário próprio para cada situação e deve ser capaz de explicar

modelos para a área de negócios, as necessidades à gerenência e a arquitetura aos

técnicos;

Page 20: Arquitetura de Software
Page 21: Arquitetura de Software

Smarty templating; PEAR for XML and Email parsing; Mysql; ImageMagick;

Perl for controlling; Java, for the node service; Apache 2, Redhat

Page 22: Arquitetura de Software
Page 23: Arquitetura de Software
Page 24: Arquitetura de Software
Page 25: Arquitetura de Software
Page 26: Arquitetura de Software
Page 27: Arquitetura de Software
Page 28: Arquitetura de Software
Page 29: Arquitetura de Software

WWW

Page 30: Arquitetura de Software
Page 31: Arquitetura de Software
Page 32: Arquitetura de Software
Page 33: Arquitetura de Software

http://docs.oracle.com/javaee/5/tutorial/doc/figures/overview-multitieredApplications.gif

Page 34: Arquitetura de Software

Cliente = Apresentação + Lógica de negócio Servidor = Banco de dados

Segurança e Performance

Disponibilidade, Escalabilidade, Gerenciamento e Manutenabilidade

Confiança

Page 35: Arquitetura de Software

3-Camadas = web, negócio e recurso; N-Camadas = web, negócio, integração e recurso;

Escalabilidade, Disponibilidade, Extensibilidade, Manutenabilidade e Gerenciamento

Complexidade

Segurança e Performance

Page 36: Arquitetura de Software

Model-view-controller (MVC) é um modelo de desenvolvimento de Software, atualmente considerado uma "arquitetura padrão" utilizada na Engenharia de Software. O modelo isola a "lógica" (A lógica da aplicação) da interface do

usuário (Inserir e exibir dados), permitindo desenvolver, editar e testar separadamente cada parte.

Wikipedia

Page 37: Arquitetura de Software

Model, View e Controller;

Smalltalk-80; por Trygve Reenskaug em 79;

Java’s Swing;

MVC é ideal para desenvolvimento Web com GUI;

Se tornou mais popular com Ruby on Rails;

Bom número de frameworks MVC em PHP foram

inspirados em Rails;

RAD – Reuso;

Page 38: Arquitetura de Software
Page 39: Arquitetura de Software

Ótimo design arquitetural:

O código fica organizado e estruturado;

Um código bem estruturado se torna mais fácil o

entendimento e localização na estrutura de diretórios;

Fácil de manter o código:

A abstração, minimizar a busca por lugares durante

a alteração;

Fácil de estender e aumentar:

Implementações em classes pais, podem ser reutilizadas.

Page 40: Arquitetura de Software

Framework é um conjunto de classes que colaboram para realizar uma responsabilidade

para um domínio de um subsistema da aplicação.

FAYAD e SCHMIDT

Page 41: Arquitetura de Software
Page 42: Arquitetura de Software
Page 43: Arquitetura de Software
Page 44: Arquitetura de Software
Page 45: Arquitetura de Software
Page 46: Arquitetura de Software
Page 47: Arquitetura de Software
Page 48: Arquitetura de Software
Page 49: Arquitetura de Software

Sun Certified Enterprise Architect for Java EE, Study Guide; Marl

Cade and Humphrey Sheil

Sun Certified Enterprise Architect for Java EE, Study Guide; Paul

R. Allen Joseph J. Bambara;

Patterns of Enterprise Application Architecture; Martin Fowler

Core J2EE Patterns; Alur, Crupi and Malks

Arquitetura de Software, Um pouco sobre arquitetura e o

arquiteto – Vinicius Quaiato;

O impacto do design na sua arquitetura – Paulo Silveira;

Page 50: Arquitetura de Software

http://noupe.com/img/ror/authentication.jpg http://themarketingmentor.co.uk/marketing_mentor_blog/wp-

content/uploads/2008/10/istock_000004471659medium.jpg http://t1.gstatic.com/images?q=tbn:ANd9GcRyAE8pM3whLxCTrM

c1c3DlOmufv29Irm0MeGkCgnH9VFHoUmKqMyI3BT-XlA http://www.design-glassware.com/img/cms/paypal__secure.jpg http://media.arstechnica.com/news.media/z890.jpg http://images-

4.findicons.com/files/icons/977/rrze/720/database_mysql.png http://www.nuvemseo.net/wp-content/uploads/2010/02/rss-feed-

assinar-123.png http://www.linhadecodigo.com.br/artigos/img_artigos/vspj/vspj5/fi

g1_vspj5_p95.jpg