Arquitetura de Software

Post on 04-Jul-2015

724 views 0 download

description

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

Transcript of Arquitetura de Software

jairobjunior {@gmail, slideshare, linkedin e twitter}

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.

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

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;

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;

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.

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;

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)

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.

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

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

Liderança;

Visão estratégia;

Gestão de relações humanas;

Boa Comunicação;

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

simples.

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

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

decisões e deve ser acessível.

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;

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

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

WWW

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

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

Segurança e Performance

Disponibilidade, Escalabilidade, Gerenciamento e Manutenabilidade

Confiança

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

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

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;

Ó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.

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

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

FAYAD e SCHMIDT

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;

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