Buscar

Arquitetura de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 222 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 222 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 222 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Centro de Computação e Tecnologia da 
Informação
Arquitetura de Software
Projeto de Software
Prof. Daniel Luis Notari
Agosto - 2012
Sumário
• Arquitetura lógica
• Arquitetura física
• Artefatos de diagramação
3
Introdução
• Questões relacionadas à arquitetura de um 
sistema:
– Como um sistema é decomposto em subsistemas,
e como as suas classes são dispostas pelos
diversos subsistemas?
– Como subsistemas devem ser dispostos
fisicamente quando o sistema tiver de ser
implantado?
4
Introdução
• Arquitetura de software é a estrutura 
organizacional do software.
• Uma arquitetura pode ser recursivamente 
decomposta em partes que interagem através 
de interfaces.
• As decisões tomadas para a definição da 
arquitetura de software influenciam 
diretamente PARA atender a seus requisitos 
não-funcionais.
5
Arquitetura lógica
• Chamamos de arquitetura lógica à organização 
das classes em subsistemas, que 
correspondem a aglomerados de classes. 
• Um subsistema provê serviços para outros 
através de sua interface.
• A interface de um subsistema corresponde ao
conjunto de serviços que ele provê.
– Cada subsistema provê ou utiliza serviços de 
outros subsistemas. 
Princípios de Análise e Projeto 
de Sistemas com UML - 2ª 
edição
6
Diagrama de subsistemas
– Um diagrama de susbistemas é um diagrama
de pacotes, onde cada pacote representa um 
subsistema
– Cada subsistema é rotulado com o estereótipo 
<<subsystem>>.
• Exemplo de susbsistema:
7
Alocação de classes a subsistemas
• Cada classe do sistema é, então, alocada 
aos subsistemas. 
• Uma vez feito isso, esses subsistemas 
podem ser desenvolvidos quase que de 
forma independente uns dos outros.
8
Alocação classes a subsistemas
• Modelo de classes de domínio: 
– Classes devem ser agrupadas segundo algum critério para formar 
subsistemas.
• Um critério de agrupamento possível: 
• considerar as classes mais importantes do modelo de classes de 
domínio.
– Para cada uma dessas classes, um subsistema é criado.
– Outras classes menos importantes e relacionadas a uma classe 
considerada importante são posicionadas no subsistema desta última.
9
Alocação classes a subsistemas
• Por outro lado, na fase de projeto:
– Algumas das classes do modelo de domínio podem sofrer 
decomposições adicionais, o que resulta em novas classes.
– Pode ser que uma classe de domínio seja ela própria um 
subsistema.
• Quando essas classes forem criadas, elas são adicionadas aos 
subsistemas pré-definidos.
10
Alocação classes a subsistemas
• Subsistemas devem ser
• minimamente acoplados.
• maximamente coesivos.
• Dependências cíclicas entre subsistemas devem ser evitadas.
• Uma classe deve ser definida em um único subsistema:
– O subsistema que define a classe deve mostrar todas as 
propriedades da mesma.
– Outros subsistemas que fazem referência a essa classe podem 
utilizar a notação simplificada da mesma.
Exercício
• De acordo com o modelo de classes do 
próximo slide, defina:
– Possíveis subsistemas
– Faça um diagrama dos subsistemas
– Aloque as classes a cada subsistema
13
Camadas de software
• Diz-se que dois subsistemas interagem quando um 
precisa dos serviços do outro.
• Há basicamente duas formas de interação entre 
subsistemas: 
– ponto a ponto: na arquitetura ponto a ponto, a 
comunicação pode acontecer em duas vias. 
– cliente-servidor: há a comunicação somente em uma via 
entre dois subsistemas, do cliente para o servidor. Nessa
arquitetura, chamamos de camadas os subsistemas
envolvidos. 
• Essas formas de interação entre subsistemas 
influenciam a o modo pelo qual os subsistemas são 
distribuídos fisicamente pelos nós de processamento. 
14
Camadas de software
• Arquiteturas cliente-servidor e ponto a ponto
15
Camadas de software
• As camadas podem ter uma arquitetura aberta
ou uma arquitetura fechada. 
– Em uma arquitetura fechada, um componente de uma 
camada de certo nível somente pode utilizar os 
serviços de componentes da sua própria camada ou 
da imediatamente inferior. 
– Em uma arquitetura aberta, uma camada em certo 
nível pode utilizar os serviços de qualquer camada 
inferior.
• Na maioria dos casos práticos, encontramos 
sistemas construídos através do uso de uma 
arquitetura aberta.
16
Camadas de software
• Arquiteturas abertas e fechadas
17
Camadas de software
• Uma divisão tipicamente encontrada para 
as camadas lógicas é a que separa o sistema 
nas seguintes camadas: 
– apresentação, aplicação, domínio e serviços 
técnicos. 
• Da esquerda para a direita, temos camadas 
cada vez mais genéricas. 
• Também da esquerda para a direita, temos a 
ordem de dependência entre as camadas; 
– por exemplo a camada da apresentação 
depende (requisita serviços) da camada de 
aplicação, mas não o contrário. 
18
Camadas de software
• Princípio básico: camadas mais altas devem depender das 
camadas mais baixas, e não o contrário. 
– Essa disposição ajuda a gerenciar a complexidade através 
da divisão do sistema em partes menos complexas que o 
todo.
– Também incentiva o reuso, porque as camadas inferiores 
são projetadas para serem independentes das camadas 
superiores. 
– O acoplamento entre camadas é mantido no nível mínimo 
possível. 
– Uma mudança em uma camada mais baixa que não afete a 
sua interface não implicará em mudanças nas camadas 
mais altas.
– E vice-versa, uma mudança em uma camada mais alta que 
não implica na criação de um novo serviço em uma 
camada mais baixa não irá afetar estas últimas.
19
Camadas de software
• É importante notar que uma aplicação típica
normalmente possui diversos subsistemas
(ou pacotes) internamente a cada uma das
camadas.
– Por exemplo, em uma aplicação que forneça
certo serviço que é acessível tanto por um
usuário final, quando por outra aplicação (através
de um serviço WEB), há duas camadas de
aplicação, possivelmente fazendo acesso a
mesma camada da aplicação.
20
Camadas de software
• Uma certa camada pode ser dividida
verticalmente no que costumamos chamar
de partições.
– Por exemplo, em um sistema de vendas pela 
WEB, a camada de domínio pode ser 
decomposta nos seguintes subsistemas 
(partições): Clientes, Pedidos e Entregas.
Implantação física
22
Arquitetura de implantação
• Representa a disposição física do sistema de software pelo 
hardware disponível. 
• A divisão de um sistema em camadas é independente da 
sua disposição física.
– As camadas de software podem estar fisicamente localizadas 
em uma única máquina, ou podem estar distribuídas por 
diversos processadores.
– Alternativamente, essas camadas podem estar distribuídas 
fisicamente em vários processadores.
23
Arquitetura de implantação
• O modelo que representa a arquitetura física é 
denominado modelo de implementação ou modelo da 
arquitetura física.
• A arquitetura de implantação diz respeito à disposição dos 
subsistemas pelos nós de processamento disponíveis. 
• Para sistemas simples, a arquitetura de implantação não 
tem tanta importância.
24
Arquitetura de implantação
• No entanto, na modelagem de sistemas 
complexos, é fundamental conhecer quais são 
os componentes físicos do sistema, quais são 
as interdependências entre eles e de que 
forma as camadas lógicas do sistema são 
dispostas por esses componentes.
25
Alocação de camadas
• Em um sistema construído segundo a 
arquitetura a cliente-servidor, é comum 
utilizar as definições das camadas lógicas 
como um guia para a alocação física dos 
subsistemas.
• Sendo assim, a cada nó de 
processamentosão alocadas uma ou 
mais camadas lógicas.
26
Alocação de camadas
• Note que o termo camada é normalmente
utilizado com dois sentidos diferentes: 
– para significar uma camada lógica (layer)
– e para significar uma camada física, esta 
última normalmente associada a um nó de 
processamento (tier). 
27
Alocação de camadas
• Vantagens da alocação das camadas lógicas 
a diferentes nós de processamento:
– A divisão dos objetos permite um maior grau de 
manutenção e reutilização, porque sistemas de 
software construídos em camadas podem ser 
mais facilmente estendidos. 
– Sistemas em camadas também são mais 
adaptáveis a uma quantidade maior de usuários. 
• Servidores mais potentes podem ser acrescentados 
para compensar um eventual crescimento no número 
de usuários do sistema. 
28
Alocação de camadas
• No entanto, a divisão do sistema em 
camadas apresenta a desvantagem de 
potencialmente diminuir o desempenho do 
mesmo.
– a cada camada, as representações dos 
objetos sofrem modificações, e essas 
modificações levam tempo para serem 
realizadas.
29
Duas Camadas
• Um sistema que divide a interação com o 
usuário e o acesso aos dados em dois 
subsistemas é denominado sistema cliente-
servidor em duas camadas.
• A construção de sistemas em duas camadas é 
vantajosa quando o número de clientes não é 
tão grande (por exemplo, uma centena de 
clientes interagindo com o servidor através de 
uma rede local). 
30
Duas Camadas
• No entanto, com o surgimento da Internet
causou problemas em relação à estratégia 
cliente-servidor em duas camadas.
– Isso porque a ideia básica da Internet é permitir o 
acesso a variados recursos através de um 
programa navegador (browser).
31
Três Camadas
• A solução encontrada para o 
problema da arquitetura em duas 
camadas foi simplesmente dividir o 
sistemas em mais camadas de 
software.
– Sistemas construídos segundo essa 
estratégia são denominados sistemas 
cliente-servidor em três camadas ou 
sistemas cliente-servidor em quatro 
camadas.
32
Três Camadas
• Entretanto, a ideia básica original 
permanece: dividir o processamento 
do sistema em diversos nós. 
– Em particular, uma disposição bastante 
popular, principalmente em aplicações 
para a WEB, é a arquitetura cliente-
servidor em três camadas.
33
Três Camadas
– A camada lógica de apresentação fica em um 
nó de processamento.
– As camadas lógicas da aplicação e do 
domínio ficam juntas em outro nó :
• A camada física do meio corresponde ao 
servidor da aplicação.
• A camada de apresentação requisita serviços ao 
servidor da aplicação.
• É também possível haver mais de um servidor de 
aplicação, com o objetivo de aumentar a 
disponibilidade e o desempenho da aplicação. 
34
Três Camadas
– A camada física do meio faz acesso a 
outra camada física, onde normalmente se 
encontra um SGBD.
• Esta última camada física é chamada de 
camada de dados.
35
Diagrama de implantação
• Uma vez definidas as alocações das 
camadas lógicas aos nós de 
processamento, pode-se fazer a 
representação gráfica com suporte da
UML, através do diagrama de 
implantação.
• Os elementos desse diagrama são os nós
e as conexões.
36
Diagrama de implantação
• Um nó representa um recurso computacional e
normalmente possui uma memória e alguma
capacidade de processamento.
– Exemplos: processadores, dispositivos, sensores,
roteadores ou qualquer objeto físico de importância
para o sistema de software.
• Os nós são ligados uns aos outros através de
conexões.
– As conexões representam mecanismos de
comunicação: meios físicos (cabo coaxial, fibra ótica
etc.) ou protocolos de comunicação (TCP/IP, HTTP
etc.).
Princípios de Análise e Projeto 
de Sistemas com UML - 2ª 
edição
37
Exemplo de diagrama de implantação
Exercício
• Desenhe o diagrama de implantação para o 
exercício anterior.
39
Alocação de Componentes
• Na arquitetura (alocação) física, devemos
também definir quais os componentes de 
software de cada camada.
• Um componente de software é uma unidade 
que existe a tempo de execução, que pode ser 
utilizada na construção de vários sistemas e 
que pode ser substituída por outra unidade 
que tenha a mesma funcionalidade.
40
Alocação de Componentes
• As tecnologias COM (Microsoft), CORBA 
(OMG) e EJB (Sun) são exemplos de 
tecnologias baseadas em componentes.
• Um componente provê acesso aos seus 
serviços através de uma interface.
– Quando construído segundo o paradigma OO, um 
componente é composto de diversos objetos.
– Nesse caso, a interface do componente é 
constituída de um ou mais serviços que as classes 
dos referidos objetos implementam.
41
Alocação de Componentes
• A UML define uma forma gráfica para 
representar componentes visualmente, o 
diagrama de componentes. 
• Esse diagrama mostra os vários componentes 
de software e suas dependências.
• Os elementos gráficos desse diagrama são 
ilustrados na figura abaixo.
42
Alocação de Componentes
• Exemplo de diagrama de componentes.
43
Alocação de Componentes
• Alternativas para representar interfaces de
componentes.
44
Alocação de Componentes
• Exemplo de diagrama de componentes 
embutido em um diagrama de implantação.
45
Alocação de Componentes
• A atividade de alocação de componentes aos nós 
físicos só tem sentido para sistemas distribuídos.
– Para sistemas que utilizam um único processador, não 
há necessidade desta atividade.
• Um dos principais objetivos: distribuir a carga de 
processamento do sistema para aumentar o 
desempenho.
– No entanto, nem sempre isso aumenta o 
desempenho.
– Isso porque a sobrecarga de comunicação entre os nós 
pode anular os ganhos obtidos com a distribuição do 
processamento.
46
Alocação de Componentes
• Envio de mensagem versus “distância”
– dentro de um processo executando em um nó.
– entre processos no mesmo nó.
– ultrapassa as fronteiras de um nó para ser executada 
em outra máquina.
• Portanto, durante a alocação de componentes, o 
arquiteto de software deve considerar diversos 
fatores.
– muitos desses fatores se sobrepõem ou são 
incompatíveis.
47
Alocação de Componentes
• Fatores relacionados ao desempenho:
– Utilização de dispositivos
– Carga computacional
– Capacidade de processamento dos nós
– Realização de tarefas
– Tempo de resposta
48
Alocação de Componentes
• Outros fatores:
– Outros requisitos não funcionais do sistema
– Segurança
– Diferenças de plataformas
– Características dos usuários do sistema
– Necessidade ou benefícios da distribuição das 
camadas lógicas do sistema
– Redundância
Projeto da arquitetura no 
processo de desenvolvimento 
de software 
50
Projeto de Arquitetura
• A construção dos diagramas de componentes é 
iniciada na fase de elaboração (projeto da 
arquitetura) e refinada na fase de construção 
(projeto detalhado).
• A construção de diagramas de componentes se 
justifica para componentes de execução.
– permite visualizar as dependências entre os 
componentes e a utilização de interfaces a tempo de 
execução do sistema.
– sistema distribuído: representar seus componentes 
utilizando diagramas de implantação.
51
Projeto de Arquitetura
• Não é recomendável usar diagramas de 
componentes para representar dependências de 
compilação entre os elementos do código fonte 
do sistema.
– A maioria dos ambientes de desenvolvimento tem 
capacidade de manter as dependências entre códigos 
fonte, códigos objeto, códigos executáveis e páginas 
de script.
– Só adiciona mais diagramas que terão que ser 
mantidos e que não terãouma real utilidade.
– Há também vários sistemas de gerenciamento de 
configurações e de versões de código (e.g, CVS). 
52
Projeto de Arquitetura
• Em relação ao diagrama de implantação, sua 
construção tem início na fase de elaboração. 
• Na fase de construção, os componentes são 
adicionados aos diversos nós.
• Nem todo sistema necessita de diagramas de 
componentes ou diagramas de implantação.
– Sistemas simples versus sistemas complexos.
Workflow Arquitetura
• Selecionar um tipo de arquitetura para o sistema
• Criar um diagrama de Implantação para casos de 
uso arquiteturalmente significantes
• Refinar o Modelo Arquitetura para satisfazer os 
RNFs (Requisitos Não-Funcionais).
• Criar e testar a linha de base da arquitetura
• Documentar as escolhas tecnológicas em 
camadas de um diagrama de Pacotes
• Criar um template da arquitetura, do diagrama de 
Implantação detalhado.
Visões Arquiteturais
• As visões do Modelo Arquitetura possuem 
muitas formas.
• Alguns elementos são documentados com 
texto. 
• Outros podem ser salvos usando diagramas 
UML:
– Diagramas de Pacotes
– Diagramas de Componentes
– Diagramas de Implantação
Características de um Componente
• Um componente representa qualquer unidade de 
software
• Um componente pode ser grande e abstrato
• Um componente pode ser pequeno
• Um componente pode ter uma interface que 
exporta como um serviço para outros 
componentes
• Um componente pode ser um arquivo, como um 
código fonte, um objeto, um executável 
completo, um arquivo de dados, arquivos HTML 
ou mídia, e assim por diante.
O Objetivo de um Diagrama de 
Implantação
• Um nó do Hardware pode representar 
qualquer tipo de Hardware físico
• Links entre nós do Hardware indicam 
conectividade e podem incluir os protocolos 
de comunicação usados entre os nós.
• Os componentes do Software são colocados 
dentro dos nós do Hardware para mostrar a 
distribuição do Software através da rede.
Selecionando o Tipo de Arquitetura
• A arquitetura que você usa depende de 
muitos fatores, incluindo:
– As restrições da plataforma nos requisitos do 
sistema
– A maneira da interação do usuário
– Mecanismo de persistência
– Dados e integridade transacional
Selecionando o Tipo de Arquitetura
• Há centenas de arquiteturas de Software bem 
sucedidas. Aqui estão alguns tipos mais 
comuns:
– Aplicações StandAlone (Desktop)
– Aplicações Cliente/Servidor (2-camadas)
– Aplicações N-camadas
– Aplicações N- camadas centradas na Web
– Aplicações Corporativas N-camadas
Exercício
• Para o diagrama de classes apresentado no 
primeiro exercício:
1. Elabore um projeto de arquitetura lógica e física para 
que este software seja desenvolvido para a Web.
2. Defina também todos os programas a serem 
desenvolvidos (usando Java ou C#) para a camada de 
negócio.
3. Defina a linguagem da camada de apresentação.
4. Defina o SGBD a ser utilizado.
5. Defina o mecanismo de comunicação entre as 
camadas.
Centro de Computação e Tecnologia da 
Informação
Arquitetura de Software 
Segunda parte
Projeto de Software
Prof. Daniel Luis Notari
Agosto - 2012
Sumário
• Estilos Arquiteturais
• Frameworks
• Padrões de Projeto
• Projeto de classes reutilizáveis
Estilos Arquiteturais
Estilo Arquitetural
• Um estilo (padrão) arquitetural expressa um 
esquema de estrutura organizado para os 
sistemas de software. 
• Um padrão fornece um conjunto de 
subsistemas pré-definidos, específica as suas 
responsabilidades, e inclui regras e normas 
para organizar as relações entre eles.
Estilo Arquitetural
• Um critério importante para o sucesso dos 
padrões é que ele atenda, de maneira 
satisfatória, os objetivos da engenharia de 
software. 
• Os padrões devem suportar o 
desenvolvimento, manutenção e evolução de 
sistemas complexos e em grande escala.
• Eles também devem suportar efetivamente a 
produção industrial de software.
Estilo Arquitetural
• Os padrões tratam de um importante objetivo 
da engenharia de software: 
– a construção de arquiteturas de software 
específicas com propriedades definidas. 
– Usam características de orientação a objetos
• A criação de arquiteturas específicas é ainda 
baseada na intuição e na experiência.
Estilo Arquitetural
• Os níveis de arquiteturas de software de projeto 
são 
– tópicos estruturais que incluem a organização de um 
sistema como uma composição de componentes; 
– o controle global de estruturas;
– os protocolos para comunicação, sincronização e 
acesso aos dados; 
– a distribuição física; 
– o escalonamento e o desempenho; 
– a dimensão da evolução; 
– e a seleção entre projetos alternativos.
Estilo Arquitetural: categorias
• Estrutural :
– Os padrões desta categoria suportam uma
decomposição controlada de uma tarefa de um
sistema inteiro em subtarefas cooperativas.
– Esta categoria inclui os padrões em camadas, pipes e
filtros, e o padrão blackboard.
• Sistemas Distribuídos : 
– Esta categoria inclui somente o padrão broker.
– O padrão broker fornece uma completa infra-
estrutura para aplicações distribuídas.
Estilo Arquitetural: categorias
• Sistemas Interativos : 
– Esta categoria inclui dois padrões: Model-View-
Controller, mais conhecido como MVC, e o padrão 
Controle de apresentação e abstração. 
– Ambos os padrões suportam a estrutura de sistemas 
de software que caracteriza a interação ser humano e 
computador.
• Sistemas Adaptáveis : 
– O padrão reflexão e o padrão micro-kernel suportam 
extensões de aplicações e sua adaptação envolve 
requisitos de tecnologia e mudanças funcionais.
Pipes e Filtros
• Fornece uma estrutura para sistemas que 
processam um fluxo de dados. 
• Cada etapa de processamento é encapsulada 
em um componente do tipo filtro. 
• O dado é passado através dos pipes entre 
filtros adjacentes.
Sistemas em camadas
• Um sistema em camadas é organizado 
hierarquicamente, aonde cada camada 
fornece serviços para a camada superior e 
serve como um cliente para a camada inferior. 
• Passos para a criação de um sistema em 
camadas:
1. Definir os critérios de abstração: 
– Isto deve ser feito para agrupar as tarefas nas 
camadas.
Sistema em camadas
2. Determinar o número de níveis de abstração: 
– Este número é determinado de acordo com o critério de 
abstração.
3. Nomear as camadas e determinar as tarefas de cada 
camada.
4. Especificar os serviços:
– O mais importante princípio de implementação é que as 
camadas sejam cuidadosamente separadas uma da outra.
5. Refinar as camadas:
– Geralmente não é possível definir um critério de abstração 
preciso antes de pensar sobre as camadas envolvidas e seus 
serviços.
Sistema em camadas
6. Especificar a interface de cada camada:
– Definir a assinatura dos métodos a serem 
chamados pelas outras camadas
– Definir o tipo de retorno de cada método
7. Estruturar as camadas individuais
8. Especificar a comunicação entre as camadas 
adjacentes
9. Projetar uma estratégia para manipulação de 
erros
Blackboard
• É útil para problemas, para os quais, 
estratégias de soluções não determinísticas 
são conhecidas. 
Blackboard
Broker
• Usado para estruturar sistemas de software 
distribuídos com componentes separados que 
interagem pela invocação de serviços 
remotos. 
• m componente broker é responsável por 
comunicação coordenada, também como, 
transmitir resultados e exceções.
• É um padrão de projeto.
Broker
MVC (Model View Controller)
 Divide uma aplicação interativa em três 
componentes:
 O modelo (model) contémo núcleo funcional e os 
dados. 
 A visão (view) mostra as informações para o usuário. 
 O controlador (controller) manipula as entradas do 
usuário. 
 As visões e os controladores juntos compreendem 
a interface do usuário. 
 Um mecanismo de propagação de mudanças 
assegura consistência entre a interface do usuário 
e o modelo.
MVC (Model View Controller)
 Fortemente relacionada com padrões de projeto.
 Aplicações web utilizam muito esse modelo.
 O mecanismo de persistência é normalmente encapsulado 
pela camada de modelo.
 A camada de apresentação é dividida entre o Controller e o 
View.
 Exemplos:
 Java Swing
 QT tookit (GIU Linux)
 Microsoft Foundation Classes
 Java server Faces
 Apache Struts
 MVVM (Microsoft)
MVC (Model View Controller)
Frameworks
Frameworks
 Características:
 Projeto em larga escala que descreve como 
um sistema é decomposto em um conjunto de 
objetos que interagem.
 Representado como um conjunto de classes 
abstratas e a maneira como elas interagem
 Utilizam inversão de controle
 Utilizam padrões de projeto e componentes
Framework: Reuso de software
Rotinas Classes Componentes Padrões Frameworks
 Componentes: Primeira visão de reuso
 Padrões de Projeto: Reuso de Projeto
 Frameworks: Reuso de Projeto e Reuso de Código
Framework: Reuso de software
 O uso de componentes visa aumentar o 
grau de reuso no desenvolvimento de 
software 
 Isto é feito através de dois processos:
– Engenharia de domínio
– Desenvolvimento baseado em componentes
Exemplo de framework - FraG
Frameworks
 Estrutura de Classes
 Orientação a Objetos
 Implementação Inacabada
Aplicação OO completamente 
Desenvolvida
Reutilização de Classes
Aplicação baseada em framework
Frameworks
 Frameworks são uma técnica de reuso de 
software OO
 Definição:
 Projeto reutilizável de parte de um sistema, 
representado por um conjunto de classes 
abstratas e seu inter-relacionamento 
(estrutura)
 Esqueleto de uma aplicação que pode ser 
customizado pelo desenvolvedor (propósito)
Componentes
 As tecnologias de reuso ideais provêm 
componentes que podem ser conectados para 
produzir um novo sistema
 O desenvolvedor não precisa saber como o 
componente é implementado. O componente 
provê uma interface para comunicação.
 A especificação do componente é de fácil 
entendimento
 Sistema resultante será eficiente, fácil de manter 
e recuperar
Componentes
Simples,
Inflexíveis,
Pouco Usados
Complexos,
Flexíveis,
Muito Utilizados
Motivações para o uso de 
frameworks e reuso
 Principal: Economizar tempo e dinheiro no 
desenvolvimento de software
 Uniformidade
 Construção de Sistemas Abertos
 Combinação de Softwares Diferentes
 Linguagens OO: Frameworks para 
interfaces gráficas
O que é um Framework?
 Classes Abstratas
 Classes sem instâncias, são usadas como 
superclasses
 Classes abstratas protelam a implementação 
de alguns de seus métodos para suas 
subclasses
 São utilizadas como modelos para a criação de 
classes
 Frameworks utilizam classes abstratas 
como projeto para seus componentes
Classes abstratas
 Classes abstratas definem uma interface 
para suas subclasses
 Clientes das subclasses da classe abstrata 
precisam de uma classe que implemente a 
interface da classes abstrata
 Classes abstratas podem prover parte da 
implementação dos métodos:
 Métodos Template
Métodos Template
 Definem o esqueleto de um algoritmo de 
um método em uma classe abstrata, 
prorrogando passos da implementação, 
delegando-os para as subclasses
 Métodos Hook
 Subclasses concretas devem implementar 
os métodos abstratos providos pela classe 
abstrata
Frameworks
 Projeto em larga escala que descreve como 
um sistema é decomposto em um conjunto 
de objetos que interagem entre si
 Normalmente representado como um 
conjunto de classes abstratas e a maneira 
como elas interagem
 Reuso de interface é mais importante que 
reuso de implementação
Frameworks
 Tiram proveito das seguintes 
características das linguagens OO:
 Abstrações
 Polimorfismo
 Herança
Inversão de controle
 Normalmente usuários de componentes 
chamam os componentes sempre que 
necessário
 sendo responsável pela estrutura e pelo fluxo 
de controle do programa 
 Ao utilizar frameworks o código do usuário 
é chamado pelo framework
 O framework é responsável pela estrutura e 
pelo fluxo de controle do programa 
Frameworks
 Frameworks para vários domínios:
 Interfaces gráficas
 Sistemas Hipermídia
 Editores Gráficos
 Sistemas Operacionais
 Protocolos de Rede
 ...
Frameworks
 Frameworks reutilizam código pq tornam mais 
fácil o desenvolvimento de uma aplicação através 
de uma biblioteca de componentes existentes
 Provêm uma interface padrão para o inter-
relacionamento entre objetos
 Frameworks reutilizam análise
 Modelam um domínio de aplicação
 Generalizam um domínio de aplicações
Alguns problemas com frameworks
 Como são complexos e flexíveis, 
normalmente são difíceis de utilizar
 Requerem melhor documentação
 Requerem melhor treinamento
 São mais difíceis de desenvolver
 Dependentes de linguagem
Padrões de Projeto
Padrões de Projeto
 Difícil construir software reutilizável
 Reutilização de soluções que funcionaram 
no passado
 Resolve problemas específicos
 Tornam o software mais flexível
 Registram experiências no projeto de 
software
 Nomeiam, explicam e avaliam soluções
Padrões de projeto
 Nome do padrão
 Problema
 Solução
 Conseqüências
Definição
 “Descrições de objetos e classes 
comunicantes que são customizados para 
resolver um problema geral de projeto em 
um contexto particular”
Padrões de projeto
 Identificam as classes e instâncias, seus 
papéis, responsabilidades e colaborações
Exemplo de um padrão (Observer)
 Intenção
 Define uma dependência um para muitos 
entre objetos, de modo que quando o objeto 
muda de estado, todos seus dependentes são 
notificados e atualizados
Observer
Observer
 Desafios: 
 Manter a consistência entre visões de forma a 
manter baixo o acoplamento
 Ao modificar uma das visões, as outras tomam 
conhecimento
Observer
 Aplicabilidade:
 Quando a aplicação tem duas preocupações 
dependentes entre si
 Quando uma mudança em um componente 
exige mudança em outros, mesmo que vc não 
saiba quantos objetos necessitam ser 
mudados
Observer (Estrutura)
Participantes
 Subject
 Conhece seus observadores
 Fornece uma interface para acrescentar e 
remover objetos, associando e desassociando 
objetos observers
 Observer
 Define uma interface de atualização para 
objetos que deveriam ser notificados sobre 
mudanças em um subject
Participantes
 ConcreteSubject
 Armazena estados de interesse para objetos 
ConcreteObserver
 Envia uma notificação para seus observadores quando 
seu estado muda
 ConcreteObserver
 Mantém uma referência para o ConcreteSubject
 Armazena estados que devem ser consistentes com o 
subject
 Implementa a interface de atualização de Observer
aConcreteSubject : 
ConcreteSubject
aConcreteObserver 
: ConcreteObserver
anotherConcreteObserver : 
ConcreteObserver
1: SetState( )
2: Notify( )
3: Update( )
4: GetState( )
5: Update( )
6: GetState( )
Benefícios e deficiências do uso do 
padrão Observer
 Acoplamento abstrato entre Subject e 
Observer
 Suporte para comunicações BroadCast
 Atualizações inesperadasProjetando classes reutilizáveis
Introdução
 OO é normalmente lembrada como uma 
técnica que facilita o reuso
 Facilita o desenvolvimento, manutenção ...
 Para isso componentes devem ser 
projetados para serem reutilizáveis
 Existem várias técnicas que tornam isso 
possível
OO
 Provê modularidade e ocultamento de 
informações como tipos de dados 
abstratos
 Duas características que facilitam reuso:
 Herança
 Classes abstratas
 Polimorfismo
 Conjunto de mensagens com mesma assinatura e 
comportamentos diferentes
Polimorfismo
 Operações são realizadas ao enviarmos 
uma mensagem a um objeto
 A mensagem é avaliada de acordo com a 
classe do objeto que a chama
Interfaces
 A especificação da interface de utilização de um 
objeto é dado pelas operações que podem ser 
realizadas por ele
 Conjunto de mensagens que podem ser enviadas
 Objetos com interfaces iguais são intercambiáveis
 Formam vocabulário comum entre 
desenvolvedores
Herança
 Cada classe de um sistema possui uma 
superclasse que define suas operações e 
estruturas de dados
 Uma classe pode adicionar operações ou 
modificar operações definidas nas 
superclasses
Herança
 A herança promove reuso pq o código 
utilizado por um conjunto de classes pode 
ser encapsulado em uma superclasse 
comum
 Subclasses já iniciam com as 
funcionalidades da superclasse
 Programação por diferença
 Mudanças aditivas
Herança
 Possibilita uma maneira de organizar e 
classificar classes
 Encoraja o desenvolvimento de protocolos 
padrões, facilitando o polimorfismo
 Mudanças não invasivas
Classes abstratas
 Interfaces normalmente são expressas através de 
classes abstratas
 Servem como um esqueleto que é reusado pelas 
subclasses
 Muitas vezes é mais vantajoso herdar de uma 
classe abstrata do que de uma classe concreta
 Classes concretas dependem da estrutura de dados 
utilizada
Classes abstratas
 Benefícios da manipulação de objetos somente 
através de interfaces definidas por classes 
abstratas:
 Clientes permanecem sem conhecimento dos tipos 
específicos dos objetos manipulados
 Clientes conhecem apenas as classes abstratas que 
definem a interface
 Programa para uma interface e não para uma 
implementação
 Declare variáveis como instâncias de classes 
abstratas
Regras para projeto OO
 #1 - Eliminar checagem de tipos de classe 
em tempo de execução
 Ex.: 
anObject class == ThisClass 
ifTrue: [anObject foo]
ifFalse: [anObject fee]
Regras para projeto OO
 #2 – Reduzir o número de argumentos de 
métodos
 Quebrar o método em diversos menores
 Criar uma nova classe para representar os 
argumentos
Regras para projeto OO
 #3 – Reduzir o corpo dos métodos
 Manter métodos pequenos permite 
sobrescrever pouco código ao utilizarmos 
subclasses
Regras para projeto OO
• #4 – Hierarquias de classes devem possuir 
vários níveis de profundidade e possuir 
pouca largura
• #5 – O topo de hierarquias de classes deve 
ser abstrato
• #6 – Minimize acesso as variáveis
– Acesso a variáveis somente através de 
mensagens
Regras para projeto OO
 #7 - Quebrar classes grandes
 Uma classe supostamente representa uma 
abstração
 Classes com uma quantidade muito grande de 
métodos (+50) normalmente representam 
várias abstrações
Regras para projeto OO
 #8 – Separar métodos que não se 
comunicam
 Muitas vezes metade dos métodos de uma 
classe acessam metade das variáveis e a outra 
metade o resto das variáveis
 É mais interessante quebrar a classe em duas 
classes independentes
Regras para projeto OO
 #9- Enviar mensagens para componentes e 
não para si próprio
 Delegar responsabilidades entre componentes 
diferentes flexibiliza a estrutura da aplicação
Herança versus composição
 Vantagens da Herança
 Simples de usar
 Definida estaticamente
 Fácil de modificar a implementação q está 
sendo reutilizada
Herança versus composição
 Desvantagens da herança
 Implementações não podem ser mudadas em 
tempo de execução
 Herança pode violar encapsulamento 
amarrando subclasses a uma estrutura 
específica
Herança versus composição
 Vantagens da composição
 Programação para uma interface bem definida
 Comportamento modificado durante execução
 Menos dependências entre classes
 Melhor distribuição de responsabilidades
 Favoreça a composição de objetos em 
relação a herança
Diferenças entre frameworks e 
padrões de projeto
 Padrões de projeto são mais abstratos que 
frameworks
 Padrões de projeto são elementos 
menores na arquitetura de um sistema. 
 Um framework pode conter vários padrões de 
projeto implementados
 Padrões são menos especializados que 
frameworks
Exercícios
1. Defina o que é um estilo arquitetural.
2. Defina o que é um framework.
3. Pesquise na Internet frameworks para as 
situações abaixo e explique o seu uso:
– Modelagem Objeto-Relacional
– Criação de interfaces gráficas
– Geração de código baseado na definição de 
regras de negócio.
Exercícios
4. Pesquise quais são as categorias de padrões de 
projeto existentes. Cite pelo menos seis 
diferentes. Cite os padrões de projeto de cada 
categoria.
5. Explique o que uma empresa deve levar em 
consideração para escolher um framework para 
o desenvolvimento de qualquer parte de um 
software.
6. Explique como os programadores devem usar 
padrões de projeto para solucionar problemas 
específicos.
Exercícios
7. Você acredita em reuso de software. Justifique 
a sua resposta.
8. Você acredita em programação orientada a 
objeto para desenvolver softwares complexos 
para a Web? Justifique a sua resposta.
9. Você acredita no uso de frameworks ou 
geradores de código para desenvolver um 
sistema complexo? Que tipo de controle 
temos sobre estas ferramentas? Justifique a 
sua resposta.
Exercícios
10. Explique o estilo de arquitetura orientada a 
serviços.
11. Explique o estilo de arquitetura utilizado 
para a construção de um Data Warehouse 
componente de um sistema de BI (Business 
Inteligence).
12. Pesquise outros estilos arquiteturais 
utilizados por diferentes tipos de softwares.
Centro de Computação e Tecnologia da 
Informação
Arquitetura de Software 
Terceira parte
Projeto de Software
Prof. Daniel Luis Notari
Agosto - 2012
Sumário
• Framework JEE
• Framework .NET
Introdução
• Java Enterprise Edition
• Voltado ao desenvolvimento de aplicações 
empresariais 
• Foco em componentização para reduzir custos de 
desenvolvimento e manutenção
• Independentes de plataforma
• Provê um modelo de aplicações distribuídas em 
camadas
• Uma aplicação JEE é composta por componentes
Introdução
• A plataforma JEE oferece:
– Modelo de aplicações distribuídas em camadas,
– Componentes reusáveis,
– Modelo de segurança unificado,
– Controle de transações flexível, e
– Troca de dados integrada baseada em XML.
Introdução
• A arquitetura em camadas mais conhecida é a 
baseada em 3 camadas
– Uma camada para lidar com a interface, interface 
executa no computador cliente e no servidor JEE.
– Uma para lidar com a lógica da aplicação, executa 
no servidor JEE.
– Uma para gerenciar acesso a banco de dados, 
executa no EIS (Enterprise Information System).
Introdução
Introdução
• Um componente JEE é uma unidade funcional auto-
contida, 
– que pode ser montada em uma aplicação JEE com suas 
classes e arquivos relacionados, 
– e que se comunica com outros componentes.
• Interface
– Clientes de aplicação e Applets são componentes cliente
– Java Server Pages (JSP) são componentes web• Controle
– Java Servlets são componentes web
• Lógica
– Enterprise JavaBeans (EJB) são componentes lógicos
Introdução
• Applets
– São pequenas aplicações clientes escritas em Java e que 
executam na máquina virtual de um browser
– Applets são obtidos durante o download de uma página
• Java Bean
– Um JavaBean é uma classe em Java, escrita normalmente. 
– JSP fornece formas de utilização automática para um Java Bean.
• Servlets
– Classes que processam pedidos e geram respostas 
dinamicamente
• JSP
– Documentos baseados em texto que executam como servlets
– Fornecem uma maneira mais natural de gerar conteúdo estático
Comunicação com o J2EE Server
Thin Clients
• Interfaces bem simples
• Delegam todas as tarefas mais complexas para 
o servidor JEE
– Acesso a bancos de dados
– Conexão com sistemas legados
Arquitetura de Aplicações J2EE
Arquitetura de Aplicações J2EE
Contêineres e Serviços
• Componentes são instalados em seus contêineres 
durante a implantação
– Contêineres são a interface entre o componente e o 
serviço específico da plataforma que ele provê
• Antes de serem usados, componentes devem ser 
montados numa aplicação JEE e implantado 
(“deployed”) em seu contêiner
• A montagem envolve especificar a configuração:
– de contêiner para cada componente implantado para 
a própria aplicação JEE
Contêineres e Serviços
• As configurações de contêiner customizam o 
suporte fornecido pelo servidor JEE
– Segurança
– Transação
– Servidor de nomes
– Remote Conectivity
Configuração do JEE
• Cada componente dentro de uma mesma 
aplicação pode ter diferentes 
comportamentos
– Função do local de implantação
• Exemplo:
– Um EJB pode ter diferentes permissões de acesso 
em diferentes ambientes de produção
Tipos de Contêiner
• Tipos de contêiner:
– Contêiner Enterprise JavaBeans
– Contêiner Web 
• JSP e Java Servlets
– Contêiner de Clientes da Aplicação
• Executa na máquina cliente
– Contêiner de Applet
• Web browser
Tipos de Contêiner
Empacotamento
• Uma aplicação JEE é 
composta por
– Um ou mais EJB
– Um ou mais módulos 
de componentes web
– Um ou mais módulos 
de componentes 
clientes
Componentes Web
DTO = VO
Framework .NET
Objetivo
• Apresentar os principais componentes do 
framework, bem como as possibilidades de 
desenvolvimento de aplicações
Roteiro
• Introdução ao .NET
• Framework .NET
• Common language runtime
• Tipos de Aplicações
– Interface com o usuário
– Camada de Negócio 
– Acesso a bancos de dados
Serviços de
Infra
Tecnologias MS:
COM, IIS (ASP) e Internet Explorer
Introdução ao .NET
Cenário ~1996
Aplicações empregavam o 
modelo cliente/servidor, com 
páginas ASP acessando 
servidores de dados
Navegadores
Aplicações baseadas em HTML, 
sem interatividade
Servidores
de Dados
Lógica
do Cliente
Lógica 
de Negócio
Componentes sem estado e gerenciamento de 
IP favorecem a escalabilidade.
Com estado
Sem estado
Cliente rico
Introdução ao .NET 
Cenário ~2000 - Escalabilidade
SGBD
Serviços 
básicos
Lógica de 
negócio
Navegadores
Separação das camadas de 
dados e negócios 
aumentam a escalabilidade 
e a performance de acesso a 
dados empresariais.
Serviços do COM+ para maior confiabilidade e 
escalabilidade. Internet Explorer fornece
D/HTML, melhorando interatividade. 
Introdução ao .NET 
Cenário ~2002 - Ubiqüidade
Navegadores
padrão
Clientes
“inteligentes”
Dispositivos
“inteligentes”
Protocolos públicos
de comunicação
(HTTP, SMTP, XML, SOAP) Ferramental mais
rico para o
usuário
Potencial para aplicações 
compostas por web 
services disponíveis 
globalmente
Aplicações podem se tornar Web services
Serviços
básicos
Lógica de
negócio
Lógica de 
negócio e Web 
services
Serviços
básicos
Web Services
públicos
Serviços
auxiliares
Serviços
internos
SGBD
Outros 
serviços
Protocolos de Internet
SOAP,
HTTP, SMTP, XML
Introdução ao .NET 
A Plataforma .NET
Arcabouço
.NET
Windows 
CE, 2000, XP, .NET
S
e
rv
iç
o
s
 
C
O
M
+
Orquestração
Aplicações
usando seus
serviços
Aplicações
para
usuário final
Servidores .NET
Serviços 
básicos .NET 
Web services
de terceiros
Seus serviços
internos
Visual 
Studio .NET
Sua aplicação
e web service
O Framework.NET
O que é?
• Um conjunto de tecnologias que:
– Une aplicações web hoje isoladas
– Torna informação disponível a qualquer hora, em 
qualquer lugar (anytime, anywhere)
– Simplifica desenvolvimento e implantação
O Framework.NET
O que é?
• Como o .NET faz isso?
– Web services
– Informações transitam como ADO.NET DataSets, 
havendo suporte a XML
– Conjunto rico de ferramentas, serviços para execução 
(runtime services) e implantação baseada em XCOPY
O Framework.NET
Web Services baseados em XML
• Ponto focal da arquitetura do .NET
• Trata-se de um componente de aplicação programável, 
acessível através de protocolos web padrão
• Expõe funcionalidade que pode ser acessada a partir de 
sites
– Possui semelhança com programação de componentes para uso 
na web, porém sem as dificuldades impostas pelo DCOM
O Arcabouço .NET
Visual Studio .NET
Base class library
Common language specification
Common language runtime
ADO.NET: Dados e XML
Visual Basic® C++ C#
V
is
u
a
l S
tu
d
io
®
 .N
E
T
ASP.NET: Web services
e Web Forms
JScript® …
Windows
Forms
O Framework .NET
Common Language Runtime
• Simplifica o desenvolvimento
• Implantação via XCOPY
• Potencialmente multi-plataforma
• Múltiplas linguagens (com herança entre 
linguagens)
• Aumenta a produtividade
O Arcabouço .NET
Serviços do Arcabouço
• ASP.NET
– Evolução do ASP (compilado)
• Web Forms
– Código gerenciado (mais elegante)
• Windows Forms
– Para desenvolvimento de interfaces para clientes ricos
• ADO.NET, evolução do ADO
– Novos objetos e maior suporte a trabalho desconectado
• Suporte a XML
Common Language Runtime
Arquitetura
C
o
m
m
o
n
 l
a
n
g
u
a
g
e
 r
u
n
ti
m
e
Class loader
IL para
compiladores
de código
nativo
GC, stack walk, code manager
Segurança
Suporte a 
execução
Common Language Runtime
Objetivos
• Desenvolvimento
– Framework com classes padrão
– Gerenciamento automático de memória
– Tratamento de erros consistente
– Aplicações multi-linguagem
– Múltiplas plataformas
– Execução mais segura
• Implantação
– Não há dependência do registry
– Menos problemas de versionamento
– Fim do “DLL Hell”
Common Language Runtime
Suporte a Múltiplas Linguagens
• Os tipos de dados foram unificados
– Common Type System (CTS)
• Outras linguagens e compiladores devem 
seguir a especificação...
– Common Language Specification (CLS)
Código fonte
C++, C#, Visual 
Basic ou 
qualquer outra 
linguagem .NET
Csc.exe, Vbc.exe,…
Compilador
Assembly
DLL ou EXE
Common Language Runtime
Compilação
Metadados
IL 
(código
gerenciado)
Recursos
MinhaBiblioteca.DLL
Common Language Runtime
Assemblies
Common Language Runtime
Metadados
• Informações de tipos
– Conjunto mais completo do que a IDL (da MS)
– Armazenadas no assembly em formato binário
– Descreve cada classe de tipo
– Usadas pelo IntelliSense® no
Visual Studio .NET
Descrições de tipos
Classes
Classes base
Interfaces Implementadas
Membros
Métodos
Nome
Versão
Cultura
Assembly Manifest
Outros assemblies
Permissões
Tipos exportadosCommon Language Runtime
Metadados em um Assembly
Common Language Runtime
Aplicações
• Um ou mais assemblies
• Resolução de assemblies
– Usando metadados
• local (recomendado)
• Global Assembly Cache (GAC)
• Aplicações diferentes podem usar diferentes 
versões de um assembly
– Mais fácil de atualizar
– Mais fácil de remover
Visual BasicCódigo 
Fonte
Compilador
C++C#
CompiladorCompilador
Assembly
Código em IL
Serviços básicos do SO
Common language runtime
Compilador JIT
Código nativo
Código
Gerenciado
Componente
não
gerenciado
Common Language Runtime
Modelo de Execução
Assembly
Código em IL
Assembly
Código em IL
Tipos de Aplicações
• Interface com o usuário
– Windows Forms
– ASP.NET Web Forms
• Camada de Negócio
– Serviços
– Componentes
• .NET Remoting
• Web Services
• Acesso a dados
– ADO.NET
Interface com o Usuário
Windows Forms
• Framework para implementação de clientes 
ricos
– RAD (rapid application development)
– Interfaces elaboradas
– Fácil integração com web services
– Conjunto extenso de controles
– Controles data-aware
– Compatível com ActiveX
Interface com o Usuário
ASP.NET Web Forms
• ASP.NET X ASP
– Código isolado de interface
– Compilado em DLL
– Escrito em qualquer linguagem que siga a CLS
– Performance melhorada
– Mais produtivo
• Desenvolvimento de interface para Windows Forms e Web 
Forms no mesmo IDE
• Manipulação de estado melhor do que no ASP
• Scripts de execução no cliente em JavaScript ou VBScript
• Extenso conjunto de controles no servidor, inclusive data-
aware
• Executa independentemente do ASP (pode haver integração, 
se desejado)
Camada de Negócio
Serviços
• São aplicações que executam independentemente de 
um usuário estar “logado”
• Desenvolvidos em qualquer linguagem que siga a CLS
• Exemplo: serviço de impressão
Camada de Negócio 
Componentes
• Utilizam-se do .NET Framework ao invés do 
COM
• Podem interoperar com componentes COM
• Podem utilizar os serviços do COM+
• Para sistemas distribuídos, existem dois tipos 
básicos de cenários
– Plataforma Homogênea: .NET Remoting
– Plataforma Heterogênea: Web Services
• Canais de comunicação podem utilizar um formato 
binário sobre TCP/IP ou ainda XML sobre HTTP
• Mensagens que transitam no canal de comunicação 
são codificadas
• Assim como no DCOM, existem proxies que remetem 
as chamadas de métodos ao objeto destino
• Ativação remota e gerenciamento de tempo de vida
– Marshal-by-reference: objetos executam no servidor
– Marshal-by-value: objetos executam em cópia realizada no 
cliente
Camada de Negócio 
.NET Remoting
Camada de Negócio 
Web Services
• São aplicações que disponibilizam funcionalidades 
acessíveis via Internet
– Baseado em SOAP/XML
• O cliente acessa através de URL
• Possui semelhanças com o uso de componentes 
distribuídos via Internet
• Por seguir padrões abertos, independe de plataforma
Acesso a Dados
Evolução do ADO para ADO.NET
• Novos objetos
• Maior suporte a XML
– Lê/escreve em arquivos XML
– Objetos para navegação em XML
– Permite uso de XSL
– Componentes sem estado podem devolver informações em XML
• Melhor isolamento de trabalho conectado ou desconectado
• Acesso a bases de dados
– .NET providers
– OLEDB providers
– ODBC
• Usa os mesmos tipos previstos no CTS
• http://msdn.microsoft.com 
• http://msdn.microsoft.com/howto
• http://www.microsoft.com/net
• http://www.microsoft.com/usa/webcasts
• http://msdn.microsoft.com/xml
• msnews.microsoft.com
– microsoft.public.dotnet.general
– microsoft.public.dotnet.xml
Referências
Exercícios
1. Cite as principais vantagens e desvantagens de 
cada arquitetura.
2. Explique as principais semelhanças e diferenças 
das duas arquiteturas.
3. As duas tecnologias realmente executam suas 
aplicações em diferentes sistemas operacionais.
4. Explique como é o desenvolvimento de software 
para a web usando uma destas arquiteturas.
Exercícios
5. Você foi designado pela sua empresa para 
escolher uma nova tecnologia para 
desenvolvimento da nova versão do software. A 
empresa está entre JEE e .NET. 
– Explique quais os critérios que você irá usar na 
escolha. 
– Explique a sua estratégia de testes nas duas 
plataformas. 
– Explique o impacto disto no desenvolvimento de 
software. 
– Explique o que significa ficar vinculado a uma 
tecnologia nos próximos anos.

Outros materiais