Upload
buinhan
View
213
Download
0
Embed Size (px)
Citation preview
Rossano Pablo Pinto - 02/2013
Revisão de conceitosTópicos Avançados em TIProf. Rossano Pablo Pinto
Fevereiro/2013 - v0.1
Rossano Pablo Pinto - 02/2013
Orientação a objetos
● Classe● Métodos
– Visibilidade– Tipo de retorno– Tipo dos parâmetros
● Atributos– Tipo– Visibilidade
● Interface● Tipo de retorno● Tipo dos parâmetros
● Visibilidade● public● private● package
Rossano Pablo Pinto - 02/2013
Orientação a objetos
● Exceções● Blocos try / catch
– finally● Throw
● Herança● Simples● Múltipla● Simulando múltipla
em Java (interfaces)
● Polimorfismo● Override● Modificadores
● final, static
● Cast● Upcast● Downcast
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Definição OMG:“Uma parte modular de um sistema que encapsula seu conteúdo e cuja manifestação é substituível em seu ambiente. Um componente define seu comportamento em termos de interfaces providas e requeridas. Dessa forma, um componente serve como um tipo, cuja conformidade é definida por estas interfaces providas e requeridas (que inclui tanto sua semântica estática quanto dinâmica).”
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Definição Szyperski:“Um componente de software é uma unidade de composição com interfaces contratualmente especificadas e apenas dependęncias de contexto explícitas. Um componente de software pode ser instalado independentemente e está sujeita a composição por terceiros.”
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Explorando a definição de Szyperski (Völter):● Uma unidade de composição ● Interfaces contratualmente especificadas● Apenas dependências de contexto explícitas● Pode ser instalado independentemente● Terceiros
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Elementos: Componente
Facetas (interface/porta provida)
Receptáculos (interface/porta requerida)(Especificação das dependências explícitas)
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Elementos: Portas● Tipos: sinal, operacional, fluxo contínuo
– Faceta– Receptáculo
● Chamadas bloqueantes x não-bloqueantes
Facetas (interface/porta provida)
Receptáculos (interface/porta requerida)(Especificação das dependências explícitas)
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Conexão entre componentes (pode existir um port connection)● Portas equivalentes
A Z
B
CY
Z W
Y
X F
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Conexão entre componentes● Portas equivalentes
A Z
B
CY
ZW
Y
XF
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Elemento: Contêiner● Requisitos funcionais x não-funcionais (separation
of concerns)
A Z
B
CY
ZW
Y
XF
Contêiner
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Comentário sobre requisitos● Requisitos funcionais x não-funcionais
– Aplicação do conceito separation of concerns● AOP - Aspect-oriented programming
– Paradigma de programação que possui “crosscutting expressions” que encapsulam cada “concern” em apenas um lugar.
– Exemplo: AspectJ (poderia virar um tema de seminário...)
http://www.eclipse.org/aspectj/doc/released/progguide/index.html
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Elementos● Contêiner
– Componente● Porta requerida (receptáculo)● Porta provida (faceta)● Conexão de portas equivalentes (portas de mesmo tipo e
opostas)
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Elementos● Contêiner - proporciona requisitos não-funcionais
– Componente - proporciona requisitos funcionais● Porta requerida (receptáculo) - necessita do serviço● Porta provida (faceta) - oferece o serviço● Conexão de portas equivalentes (portas de mesmo tipo e
opostas)
Rossano Pablo Pinto - 02/2013
Componentes de Software
● Exemplo de Modelo de componentes - stack● CCM (CORBA Component Model)
– Servidor de aplicação CCM; ORB; POA; Contêineres: Entidade, Serviço, Processo, Sessão; Componentes
● EJB– Servidor de Aplicação EJB; RMI; Contêineres: Entidade,
Serviço, Sessão; Componentes● Modelo de componentes “Leve”
– Contêiner único; Componentes
Rossano Pablo Pinto - 02/2013
CCM
● Entidade - elementos persistentes● Serviço - não-persistentes● Processo - Processos de longa duração● Sessão - Processos de curta duração
Rossano Pablo Pinto - 02/2013
EJB
● Entidade - elementos que fazem persistência.● Serviço - estado transiente (não persistente).● Sessão - associados a uma sessão de
interação.
Rossano Pablo Pinto - 02/2013
Modelo de componentes “Leve”
● Não precisa de servidor de aplicação● Apenas um contêiner
Rossano Pablo Pinto - 02/2013
Comunicação entre componentes distribuídos
● Sockets● RPC● Sistemas de Middleware
● Middleware de comunicação– CORBA– RMI
● Tecnologias Web● SOAP, HTTP, XML, REST..., etc....
Rossano Pablo Pinto - 02/2013
Reconfiguração dinâmica
● Reconfiguração● estática - com parada● dinâmica - sem parada (non-stop)
– estrutural– não-estrutural (paramétrica/comportamental)
● Autonomia na adaptação● adaptáveis● auto-adaptativos
Rossano Pablo Pinto - 02/2013
Reconfiguração dinâmica
● Sistemas dinâmicos● Comportamento fechado - todas as adaptações são
previstas● Comportamento aberto - novas adaptações não
previstas podem ser feitas– Adaptações não antecipadas
Rossano Pablo Pinto - 02/2013
Camadas de Software
● Aplicação● Framework ● Middleware● Sistema Operacional
Especialização
Rossano Pablo Pinto - 02/2013
Eng. Soft.: Modelos e Metamodelos
Adaptado de Anneke Kleppe, Jos Warner e Wim Bast
Quatro camadas demodelagem da OMG
Rossano Pablo Pinto - 02/2013
Eng. Soft.: Modelos e Metamodelos
● MOF (Meta-object facility)● UML (é especificado via MOF)
∴ Perfil UML– Estereótipo– Valores etiquetados
Rossano Pablo Pinto - 02/2013
Eng. Soft.: Níveis de Maturidade de modelagem
● Segundo Warner et al (MMLs - modeling maturity levels):̶ Nível 0 - sem especificação̶ Nível 1 - Textual̶ Nível 2 - Texto c/ diagramas̶ Nível 3 - Modelos c/ texto̶ Nível 4 - Modelos precisos̶ Nível 5 - Apenas modelos
Rossano Pablo Pinto - 02/2013
Eng. Soft.: Ciclo tradicional
1 - Conceituação e levantamento de requisitos
2 - Análise e descrição funcional
3 - Projeto (design - projeto de baixo nível)
4 - Codificação (coding)
5 - Teste (testing)
6 - Implantação (deployment)