Escolar Documentos
Profissional Documentos
Cultura Documentos
Serviços
Por
Dissertação de Mestrado
RECIFE, AGOSTO/2011
UNIVERSIDADE FEDERAL DE PERNAMBUCO
CENTRO DE INFORMÁTICA
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
RECIFE, AGOSTO/2011
iii
AGRADECIMENTOS
Dedico este trabalho a minha maravilhosa família que sempre me apoiou em todos
os momentos da minha vida. Em especial ao meu pai, minha mãe e minha irmã, por
serem exemplos de dignidade, honestidade e perseverança que modelaram o meu
caráter e foram os responsáveis pelo homem que me tornei. Vocês são meus únicos e
verdadeiros heróis.
A minha namorada Juliana por ter sido compreensiva, atenciosa e ter me suportado
durante esses últimos anos. Perdoe-me pelos vários compromissos desmarcados,
prometo que vou recompensar.
Ao meu orientador Augusto Sampaio por sempre ter acreditado no meu potencial e,
desde o inicio, confiado no meu trabalho. Muito obrigado pelo tempo dedicado e
paciência. Foi um privilégio ter convivido de perto durante esses anos, nossa
universidade precisa de mais professores como você.
Aos meus parceiros da MobilIT, hoje Comment Lab, Farley, Paulo e Firma por
terem sido amigos com os quais sempre pude contar e compartilhar os sucessos,
fracassos e angustias.
iv
Resumo
v
Abstract
vi
Índice
Capítulo 1 - Introdução............................................................................... 1
1.1 Contexto ............................................................................................................. 1
1.2 Principais Contribuições ................................................................................... 4
1.3 Fora do Escopo.................................................................................................. 5
1.4 Organização da Dissertação ............................................................................. 6
2.5 SoaML............................................................................................................... 19
2.5.1 Simple Interfaces 21
2.5.2 Service Interface 22
2.5.1 Service Contract 24
2.5.1 Service Architecture 25
Capítulo 3 - O Processo............................................................................. 27
3.1 Introdução ........................................................................................................ 27
3.2 Especificar Modelo de Negócio ...................................................................... 28
3.3 Analisar Serviços............................................................................................. 33
3.4 Projetar Serviços ............................................................................................. 42
vii
4.3 Especificar Modelo de Negócios .................................................................... 49
4.4 Analisar Serviços............................................................................................. 52
4.5 Projetar Serviços ............................................................................................. 56
Bibliografia ………………………………………………………………81
Apêndice A ………………………………………………………………87
Apêndice B ………………………………………………………………95
viii
Lista de Tabelas
ix
Lista de Figuras
x
Figura 3.17–Modelos da fase Projetar Serviços .......................................................... 47
Figura 4.1–Casos de Uso do QIB................................................................................ 49
Figura 4.2–Modelo de Informação de Negócio do QIB................................................ 50
Figura 4.3–Modelo de Funcionalidades do QIB. ......................................................... 51
Figura 4.4–Modelo Navegacional do QIB.................................................................... 51
Figura 4.5–Protótipo de Interface Gráfica do QIB da tela login. .................................. 52
Figura 4.6–Passo a passo para elaboração da Arquitetura de Serviços do QIB. ........ 53
Figura 4.7–Serviços de Entidade do QIB. ................................................................... 54
Figura 4.8–Modelo de Interação de Serviço do QIB. ................................................... 54
Figura 4.9–MIN Refinado do QIB. ............................................................................... 55
Figura 4.10–Modelo de Componentes dos Serviços do QIB. ...................................... 55
Figura 4.11–Arquitetura do Sistema. ........................................................................... 58
Figura 4.12–Diagrama de classes do componente ControleAcesso............................ 59
Figura 4.13–Diagrama de Seqüência de Efetuar Login. .............................................. 59
Figura 4.14–Construção da Interface Gráfica Desktop do QIB.................................... 60
Figura 4.15–Diagrama de Classe e seqüência do Desktop. ........................................ 60
Figura 5.1–Framework de medição............................................................................. 62
Figura 5.2 - Gráfico de avaliação da dificuldade do processo. .................................... 71
Figura 5.3 - Gráfico da avaliação do alinhamento entre os stakeholders. ................... 72
Figura 5.4 - Avaliação do desacoplamento entre front-end e back-end. ...................... 72
xi
Capítulo 1 - Introdução
1.1 Contexto
O relatório anual publicado pelo The Standish Group [1], chamado curiosamente de
The Chaos Report, mostra alguns números interessantes sobre o cenário da indústria
de software [2]. Aproximadamente 24% dos projetos são cancelados por atrasos e
orçamento estourados. Cerca de 40% dos projetos estouram o orçamento e/ou o
prazo. Aproximadamente 32% de todos os projetos de TI atingem seus objetivos
dentro do prazo e custo estimados.
Claramente, a taxa de insucesso em projetos de software é alta, não há
comparação com outros tipos de indústria e os motivos já foram descritos em vários
livros e artigos disponíveis na literatura [3,4,5]. Várias abordagens em engenharia de
software sugiram justamente para tentar amenizar estes números: Desenvolvimento
Baseado em Componentes, Linhas de Produtos de Software, Desenvolvimento
Orientado a Aspectos, Arquitetura Orientada a Serviço e Desenvolvimento Dirigido a
Modelos.
Atualmente, a maioria dos softwares existentes no mercado foi desenvolvida
baseada em blocos monolíticos, formados por partes relacionadas com alto grau de
acoplamento [63]. Por isso, o Desenvolvimento Baseado em Componentes (DBC)
surgiu como um novo modelo de desenvolvimento de software para transformar esses
blocos monolíticos em componentes, diminuindo a complexidade e o custo de
desenvolvimento, onde os componentes podem ser usados em outras aplicações [64].
Linhas de Produtos de Software (LPS) é um conjunto de sistemas de software que
possuem funcionalidades em comum e que atendem as necessidades de um domínio
especifico. As abordagens LPS exploram as semelhanças e variabilidades desses
produtos, guiando o desenvolvimento de artefatos fundamentais (core assets)
customizáveis e reusáveis [65]. Reutilizando esses artefatos é possível construir
sistemas em larga escala e de acordo com requisitos específicos dos clientes.
1
O Desenvolvimento de Sistemas Orientados a Aspectos (DSOA) é uma abordagem
cujo objetivo principal é separar requisitos transversais das classes da aplicação.
Utilizando orientação a aspectos, requisitos como registro de operações, controle de
sincronização e comunicação podem ser implementados de forma simples, elegante e
favorecendo a reutilização de código [66].
Arquitetura Orientada a Serviço, do inglês Service Oriented Architecture (SOA), tem
como principal objetivo o reúso intenso de serviços, para que em médio prazo, a tarefa
do desenvolvimento de uma aplicação seja, primordialmente, a composição e
coordenação dos serviços já implementados, aumentando o reúso e diminuindo o
dispêndio de recursos. Para atingir esses objetivos, SOA segue ―boas práticas‖ e
―princípios de projeto‖ para facilitar a tarefa de definir, encontrar e gerenciar os
serviços [22]. Alguns trabalhos consideram SOA como uma evolução do
Desenvolvimento Baseado em Componentes [47].
Já o Desenvolvimento Dirigido por Modelos (Model Driven Development - MDD) [8]
utiliza modelos para especificar e implementar toda e qualquer parte dos sistemas.
Utilizando MDD, os sistemas são modelados em vários níveis de abstração e sob
diferentes perspectivas. Diferentemente das outras abordagens de desenvolvimento
de software, os modelos são os artefatos centrais para a construção das aplicações, e
não o código.
Neste sentido, analisando as abordagens de desenvolvimento apresentadas
anteriormente, a combinação de conceitos e fundamentos existentes em um processo
integrado e sistematizado pode oferecer contribuições tanto para a academia como
para a indústria [54], segundo palavras de Jim Neighbors: “organizações
acadêmicas em ciência da computação parecem preferir o trabalho em novas
teorias. Porém, alguns dos mais bem-sucedidos trabalhos acadêmicos são
uma fusão e formalização de técnicas de sucesso.”
Nos últimos anos, MDD tem se posicionado como uma tendência na prática e na
pesquisa em engenharia de software. Embora o uso de modelos não seja novidade, o
seu sucesso vem da possibilidade de construir sistemas de software completos a partir
de transformações automáticas de modelos. Propostas como Software Factories1 da
1 http://msdn.microsoft.com/en-us/library/ms954811.aspx
2
Microsoft, MDA2 (Model-Driven Architectue) da OMG e EMF3 (Eclipse Model
Framework) da IBM estão entre as abordagens de desenvolvimento orientadas a
modelos mais conhecidas na literatura. Em particular, MDA vem ganhando bastante
atenção na academia e indústria, pois sugere a separação dos modelos em vários
níveis de abstração (CIM, PIM e PSM) e incentiva a evolução dos modelos através da
definição de regras de transformação.
Apesar de MDA ser reconhecida como uma abordagem promissora, ainda existem
lacunas importantes que precisam ser preenchidas [68]. Uma delas é o papel da
Arquitetura no processo de desenvolvimento para determinar quais elementos devem
ser incluídos dentro dos modelos e quais modelos devem ser gerados em cada nível
de abstração.
Além disso, outro problema comum é vincular a arquitetura final do sistema às
transformações dos modelos [53]. Idealmente, transformações de modelo devem ser
configuráveis e fazer cumprir as decisões de arquitetura. No entanto, algumas
metodologias pesquisadas [68, 69, 70, 72, 73] não se preocupam em incorporar
decisões arquiteturais às transformações, a fim de garantir uma arquitetura flexível e
que segue as decisões e regras definidas pelos arquitetos.
Por outro lado, SOA é um estilo de arquitetura de software que permite o
desenvolvimento de sistemas alinhado com os objetivos de Service Oriented
Computing (SOC) [52]. Por isso, o desenvolvimento de software orientado a serviços
também se tornou uma tendência e vem chamando atenção tanto da indústria quanto
da academia, pois possibilita o desenvolvimento de aplicações mais flexíveis,
modulares e reutilizáveis. Mas, apesar dessas vantagens, a maioria dos processos e
metodologias SOA disponível na literatura apresentam limitações que dificultam sua
adoção na prática. Entre elas, podemos destacar [53]:
2 www.omg.og/mda
3 www.eclipse.org/emf
3
Delegar importantes decisões arquiteturais aos programadores ou
ferramentas de automação: na prática, são os arquitetos que identificam os
principais problemas e definem a arquitetura final do sistema, isso não é algo
simples que pode ser delegado a analistas de negócios, progamadores, ou
mesmo embutido em ferramentas de automação.
4
o Modularidade: Com os artefatos gerados pelo processo é possível
projetar uma arquitetura desacoplada, tornando possível projetar os
componentes de forma independente.
2. Avaliação do processo através de um estudo experimental: Foi conduzido
um estudo experimental com 19 alunos de graduação da UFPE na disciplina de
Analise e Projeto de Sistemas para avaliar atributos qualitativos e quantitativos
do processo.
3. Alinhamento no entendimento entre os stakeholders: A prototipação do
sistema é realizada na primeira fase do processo para que todos os envolvidos
possam ter um entendimento uniforme das funcionalidades do sistema antes
que o sistema comece a ser projetado.
4. Praticidade e facilidade de uso: Foi feita uma instanciação do processo para
o contexto da disciplina na qual foi executada o experimento, mostrando assim
que o processo é flexível, fácil de usar e pode ser utilizado em outros
contextos. Para isso, o processo utiliza conceitos, fundamentos e artefatos
bastante utilizados tanto na indústria como na academia.
Uma fez que o processo arquitetural proposto faz parte de um contexto mais amplo,
algumas questões importantes não foram abordadas nesse trabalho. Entretanto, essas
questões foram pensadas desde o início e constituem tópicos de pesquisa a serem
explorados em trabalhos futuros:
5
3. Reengenharia: O processo proposto não aborda metodologia e técnicas de
refactoring e reengenharia.
4. Ferramentas: Neste trabalho não foram desenvolvidas ferramentas
especificas para dar suporte e/ou automatizar as atividades do processo.
Capítulo 2: Este capítulo apresenta uma breve introdução sobre SOA e MDD,
detalhando os principais conceitos, definições, métodos e práticas sobre cada
abordagem.
Capítulo 3: Neste capítulo são mostrados em detalhes todas as fases,
atividades e artefatos gerados pelo processo proposto.
Capítulo 4: Neste capítulo é mostrada uma instanciação do processo com um
estudo de caso para ilustrar todas as etapas e artefatos gerados pelo processo
na prática.
Capítulo 5: Neste capítulo é apresentado o estudo experimental feito para
avaliação do processo. Todas as fases da abordagem Goal Question Metric
são mostradas em detalhes.
Capítulo 6: Neste capítulo é apresentado um resumo de todo o trabalho,
mostrando o relacionamento com outros trabalhos disponíveis na literatura.
Por fim, são mencionadas as limitações e oportunidades a serem feitas em
trabalhos futuros.
6
Capítulo 2
Capítulo 1
Motiva e Contextualiza Conceitos e
Introdução
Fundamentos
É usado por
Capítulo 4 Motiva
É instanciado por
Exemplo de uso
Capítulo 6
Motiva
Conclusão
7
Capítulo 2 - Conceitos e Fundamentos
2.1 Introdução
8
A idéia por trás de MDD é que é possível criar modelos com alto nível de abstração
que possam ser, através de diversas transformações, traduzidos em componentes
executáveis [21]. Model Driven Architecture (MDA) é a abordagem definida pela OMG
(Object Management Group) que descreve um processo básico, padronizado e
extensível para o desenvolvimento de software dirigido a modelos.
Neste contexto, este capítulo apresenta uma introdução sobre SOA e MDE que são
a base para o desenvolvimento do processo proposto neste trabalho. A Seção 2.2
mostra uma visão geral sobre MDD e os conceitos básicos da abordagem MDA. A
Seção 2.3 mostra os conceitos básicos, objetivos e vantagens relativos a SOA.
9
Figura 2.1 – Processo MDD genérico [54].
A Figura 2.1 ilustra a ideologia por trás de MDD: “model once, run everywhere”. A
idéia é que construindo modelos de alto nível, independente de tecnologia e focados
exclusivamente no domínio do problema, mecanismos poderão transformar esses
modelos em códigos para diversas plataformas. Com isso, não será mais necessária a
implementação de código manualmente.
10
Comunicação: os profissionais envolvidos no projeto poderão se comunicar de
forma mais efetiva, pois os modelos são mais abstratos e fáceis de entender do
que o código, não exigindo conhecimento técnico de uma tecnologia
específica. Por isso, especialistas poderão participar ativamente e utilizar
diretamente os modelos para identificar os conceitos relativos ao problema.
Corretude: os geradores de código não introduzem erros banais como erros
de digitação, portanto a identificação de erros conceituais acontece em um
nível de abstração mais alto, tornando-se, teoricamente, mais fáceis de
resolver.
11
Especificar transformações de modelos.
12
Figura 2.2 – Processo MDA Básico [30].
13
Figura 2.3 – Processo de transformação de Modelos MDA [30].
14
Class
instace of instance of
instace of
Video
instance of
title: string
instace of
a:Video
2.4 SOA
Devido ao não esclarecimento dos termos e conceitos, SOA tem sido utilizado em
diferentes contextos e com diferentes propósitos. Por isso, dependendo do
interlocutor, arquitetura orientada a serviços pode ter diferentes interpretações,
conforme mostra a Figura 2.5:
15
Figura 2.5 – Diferentes pontos de vistas de SOA [56].
Essa confusão ocorre porque o termo “service oriented architecture” é muitas vezes
confundido com “service oriented computing”. Por isso, é muito importante deixar claro
a distinção entre termos e conceitos relacionados a SOA. Service Oriented
Computing (SOC) [7], segundo Thomas Erl, é um conceito bastante amplo que
representa uma nova geração de plataforma de computação distribuída. Engloba
vários elementos como princípios de design, padrões de projeto, linguagens de
programação, hardware, frameworks, processos e estratégias organizacionais. SOA é,
basicamente, um modelo de arquitetura de software que beneficia a eficiência,
agilidade e produtividade no desenvolvimento de aplicações e está alinhada com os
objetivos de “service oriented computing”.
Uma arquitetura de software é um conceito abstrato que dá margem a uma série de
definições. Este trabalho utiliza a definição da IEEE: uma arquitetura de software
trata basicamente de como os componentes fundamentais de um sistema se
relacionam intrinsecamente e extrinsecamente [45]. Ou seja, SOA é um modelo de
arquitetura onde as funcionalidades das aplicações são modeladas como serviços.
Serviço é um componente que atende a uma função de negócio (business function)
específica. Ele pode receber e responder requisições ocultando completamente os
detalhes de sua implementação. Portanto, um serviço pode ser considerado um
16
conjunto de capacidades associadas a um propósito comum (ou contexto funcional).
Essas capacidades estão expressas em um contrato de serviço.
Baseando-se na natureza da lógica do negócio, no potencial de reutilização dessa
lógica e como a lógica implementada se relaciona com o domínio da aplicação, os
serviços podem ser classificados em três tipos [7]:
17
intermediária. Já os serviços de utilidade ficam na camada inferior e são utilizados
frequentemente pelos serviços das camadas superiores, pois possuem um alto
potencial de reuso.
Seguem alguns benefícios em utilizar uma arquitetura orientada a serviços [46] [47]
[7]:
18
Serviços com granularidade grossa: dependendo do tamanho e
complexidade das aplicações, testar e validar todas as combinações de todas
as condições de um serviço complexo pode se tornar impossível. Se um
serviço altamente genérico for utilizado por dezenas de outros, a sua
otimização pode ser uma tarefa muito difícil.
Acoplamento fraco: é o sonho de todo arquiteto projetar um sistema
distribuído altamente desacoplado, mas adicionar novas funcionalidades com
um alto nível de complexidade pode se tornar um pesadelo.
Integração: integração de serviços pode ser uma tarefa complexa,
especialmente quando há uma falta de pessoas qualificadas para
trabalhar com tecnologias SOA.
Diversidade de tecnologias e fabricantes: leva-se tempo para aprender e
usar novas tecnologias. Existem muitas tecnologias e ferramentas SOA
disponíveis no mercado que são atualizadas constantemente. Portanto, custa
tempo e dinheiro treinar e manter uma equipe atualizada.
2.5 SoaML
19
participante que atua como o provedor para ser utilzados por outros participantes
consumidores.
Participantes oferecem serviços através de portas via o estereótipo <<Service>> e
requisitam serviços através de portas com o estereótipo <<Request>> Essas portas
representam os pontos onde os serviços são consumidos ou oferecidos. A Figura 2.7
mostra um exemplo de uso de serviços e participantes.
20
2.5.1 Simple Interfaces
A Figura 2.8 mostra um exemplo de uma Interface Simples que define o serviço
―Shipment status”. Essa interface pode ser usada como uma porta do tipo <<Service>>
ou <<Request>>.
Figura 2.9 – Uso de Interface Simples como portas dos participantes [26].
A Figura 2.9 mostra o uso da Interface Simples “Shipment Status” como portas dos
tipos <<Service>> e <<Request>>. Quando usada como << Request >> a interface é
21
consumidora. Quando usada como << Service >> a interface é provedora e deve
―entregar‖ a resposta em uma porta compatível.
22
Figura 2.10 – Definição de uma Interface de Serviço [26].
23
Figura 2.11 – Coreografia do Serviço [26].
24
(como provedor ou consumidor) e as interfaces que implementam para desempenhar
esse papel. Essas interfaces são as portas que obrigam os participantes a
desempenhar o seu papel definido no Contrato de Serviço.
O Contrato de Serviço representa o acordo entre os participantes de como o serviço
será consumido e fornecido. Este acordo deve incluir todas as interfaces, coreografia e
quaisquer outras informações. Se provedor e consumidor suportam contratos de
serviços diferentes, deve haver um acordo ou determinação de que seus contratos de
serviço são compatíveis e coerentes com outros compromissos do mesmo
participante. Contratos de serviços podem fazer parte de uma ou mais arquiteturas de
serviços (define como um conjunto de participantes fornece e consume os serviços
para um objetivo ou processo de negócio).
Normalmente, Contratos de Serviço são inseridos "no meio" dos participantes e as
extremidades (os participantes) concordam com a sua parte no contrato ou se
adaptam a ele. Na seção a seguir será mostrado o exemplo de uso de Contratos de
Serviços na Arquitetura de Serviço.
25
domínio é definida utilizando diagrama de comunicação UML, e Arquitetura de
Serviços de um participante pode ser modelada como um diagrama de classe ou
componentes.
A Figura 2.12 mostra um exemplo de Arquitetura de Serviço.
26
Capítulo 3 - O Processo
3.1 Introdução
27
Negócios são construídos os modelos independentes de computação (CIM), pois os
artefatos gerados não são modelos de software e podem ser compreendidos por
diferentes stakeholders e elaborados por especialistas de domínio. No workflow
Analisar Serviços são gerados modelos com alto grau de abstração e independentes
de plataforma e tecnologia (PIM) utilizando SoaML(um profile UML para projetar
sistemas SOA). Por fim, no workflow Projetar Serviços são gerados modelos mais
detalhados levando-se em consideração as tecnologias, plataformas e linguagens de
programação (PSM) utilizadas para a implantação, execução e codificação das
aplicações.
28
Figura 3.2 –Especificar Modelo de Negócio.
29
documentos de entrada. O MIN pode ser comparado com o modelo de tipos de
negócios que ajuda a identificar os conceitos de negócio que o sistema deverá
manipular. O MIN é representado como um diagrama de classes UML sem atributos e
operações contendo as ―classes conceituais‖ do sistema. Neste modelo a
especificação da multiplicidade é opcional.
O MF é, basicamente, um modelo de casos de uso, agrupados em pacotes, com as
funcionalidades (representados pelos casos de uso) e os usuários (representados
pelos atores) da aplicação. Da mesma forma que o MIN, o MF é construído a partir do
conhecimento do negócio e dos documentos de entrada. Com isso, as
funcionalidades, os usuários e os sistemas externos são representados em um modelo
de casos de uso.
30
arquivo (<<fileChooser>>), frames (<<frameSets>> e <<frame>>) e a navegabilidade
entre as telas (<<links>>).
O MN também pode ser projetado como um site map [27] (bastante usado em
aplicações web) ou User interface flow [61] (bastante usado em metodologias ágeis).
A última atividade do workflow Especificar Modelo de Negócios é Elaborar
Protótipo de Interface. Esta atividade tem como entrada os artefatos gerados
anteriormente e gera como saída o Protótipo da Interface Gráfica (PIG). O PIG é,
basicamente, um layout completo do sistema que contem todas as funcionalidades,
telas, conteúdo e mensagens do sistema. A Figura 3.5 mostra o PIG correspondente à
tela apresentada na Figura 3.4.
31
Figura 3.5 – Exemplo do Protótipo de Interface Gráfica [30].
O PIG também pode ser projetado como um wireframe [27] completo do sistema
que contém todas as funcionalidades, telas, conteúdo e mensagens. Wireframes são
muito utilizados na indústria para validar funcionalidades e aplicar testes de
usabilidades antes que o sistema comece a ser codificado. O PIG é um artefato muito
útil para entender, visualizar e avaliar claramente o que será desenvolvido antes que o
sistema comece a ser projetado.
32
conforms To
MOF
conforms To
conforms To
instance Of
instance Of
instance Of instance Of
MF MIN MN PIG
33
Figura 3.7– Fluxo de atividades da fase Analisar Serviços.
34
provedores e consumidores de serviços quanto às informações que serão trocadas
entre eles.
A partir do Modelo de Funcionalidades pode se gerar a Arquitetura de Serviço
automaticamente utilizando as seguintes regras:
35
Pacote 2
UC 5
UC3
UC 4
Pacote 1
UC 1 Ator 2
Ator 1
UC2
<<Service Contract>>
<<Service Contract>> UC5-Ator2
Pacote1
provide consume
consume provide
<<Participant>> <<Participant>>
<<Participant>> consume <<Service Contract>> Sistema Ator2
Ator1 Pacote2
provide
consume
provide
<<Service Contract>>
UC5
36
A segunda atividade de Analisar Serviços é Refinar Serviços, que recebe como
entrada a AS, o MIN e tem como saída o Modelo de Interação dos Serviços (MIS) e
o MIN refinado. Esta atividade tem como principal objetivo identificar as capacidades
dos serviços (services capabilities) [7]. As capacidades dos serviços representam
funções específicas através das quais os serviços podem ser invocados. Elas são as
―operações‖ das interfaces dos serviços.
Para construir o MIS é necessário identificar os serviços de entidades [7], um tipo
de serviço que é derivado de uma ou mais entidades de negócio relacionadas e
possuem alto grau de reutilização: serviços que fazem operações CRUD (Create,
Read, Update, Delete), por exemplo. Pode-se obter os contratos de serviços de
entidades marcando as entidades do MIN com o estereótipo <<Entity Service>>. A
Figura 2.8 ilustra esse processo.
MIN marcado
37
3. Para cada contrato de serviço é criado automaticamente um MIS
contendo:
a. a interface com o nome do participante consumidor do contrato de
serviço;
b. a interface com o nome do contrato de serviço e
c. as interfaces dos serviços de entidade.
operacao1() operacao1()
retorno
operacao1()
retorno
retorno
operacao2()
retorno
Com a elaboração dos Modelos de Interação dos Serviços podem surgir novas
entidades que não foram identificadas previamente e identificar entidades não
utilizadas ou modeladas incorretamente, portanto, o MIN deverá ser atualizado. Após a
construção dos Modelos de Interação dos Serviços a Arquitetura de Serviço é
revisada levando-se em consideração as seguintes questões:
38
Empacotamento das funcionalidades foi feito de forma correta?
As funcionalidades ―isoladas‖ poderiam fazer parte de algum contrato de
serviço existente?
Todas as funcionalidades foram contempladas?
39
<<Service Contract>>
Pacote1 <<Service Contract>>
UC5-Ator2
consume
provide
<<Service Contract>>
UC5
Arquitetura de Serviços
<<Service Contract>>
Service E1
Serviço de Entidade
Componente 1 ComponenteE1
IServiceE1
IService1
Compoente A Componente 2
IServicec2
Componente 4 Componente 3
IServicec4 IService3
40
<<Service Contract>> UC5-Ator2 deu origem ao IService3 e Componente3
Modelo Informação
Transformação do Negócio
CIM-PIM
Modelo de
Arquitetura de
Transformação Interação de
Serviços
PIM-PIM Serviços (Template)
Modelo Informação
do Negócio
Refinado Transformação
PIM-PIM
Modelo de
Transformação Interação de
PIM-PIM Serviços (completo)
Modelo de
Componenes de
Serviços
41
conforms To
MOF
conforms To
conforms To
UML2 MM SoaMLProfile MM
extends
instance Of
instance Of instance Of
instance Of instance Of
MF AS MIS MCS
MIN
42
A Figura 3.14 apresenta o fluxo de atividades desta fase.
43
Podemos agrupar contratos de serviços semelhantes?
Como será a integração entre o front-end e back-end? Como será feita a
comunicação com sistemas externos?
É possível reutilizar, adaptar ou comprar componentes existentes?
Com isso, a atividade Definir Arquitetura do Sistema tem como saída a
Arquitetura do Sistema que é, basicamente, uma evolução da Arquitetura de
Componentes de Serviços com todos os elementos necessários para modelar os
componentes internamente e os componentes de front-end marcados com o
estereótipo <<Front-end>>. Com os modelos devidamente refinados, são definidos os
padrões, tecnologias e frameworks que serão utilizados no projeto do sistema.
Portanto, devem-se levar em consideração os seguintes aspectos:
<<Front-end>> <<Front-end>>
Desktop Mobile
ICommunication
Communication
IServiceContrac4 IServiceContrac1
IServiceContrac2
44
Com a Arquitetura do Sistema definida, as atividades Projetar Front-end e
Projetar Fack-end podem ser feitas em paralelo. É importante destacar que o
processo induz, de forma sistemática, como ilustrado, à definição de uma interface
entre o front-end e o back-end (conforme ilustrado na Figura 3.15).
Para a atividade Projetar Back-end, deve-se seguir o seguinte fluxo de trabalho:
45
Padrões de
Transformação PIM- Restrições
Arquitetura
PIM
Protótipo Interface
Gráfica
Tranformação
PIM-PIM
Modelo de
Transformação Transformação
Plataforma
(PIM -PSM) (PIM-PSM)
46
conforms To
MOF
conforms To
UML2 MM
instace Of
47
Capítulo 4 - Instanciação e Execução do
Processo
4.1 Introdução
O exemplo utilizado neste capitulo é o sistema Qualiti Internet Banking (QIB). Este
exemplo foi o mesmo utilizado no treinamento dos participantes do experimento que
será mostrado no próximo capitulo. O QIB é, basicamente, um sistema de internet
banking com os casos de uso mostrados na Figura 4.1. Mais detalhes sobre o sistema
podem ser encontrados em [30].
48
Consultar Saldo
Realizar Transferência
Consultar Extrato
Consultar Cartão
Alterar Senha
Efetuar Pagamento Cartão
ClienteAtor
Efetuar Login
Operadora de Cartão
49
Figura 4.2–Modelo de Informação de Negócio do QIB.
50
Consultar Saldo
Realizar Transferência
Consultar Extrato
Consultar Cartão
Alterar Senha
Efetuar Pagamento Cartão
ClienteAtor
Efetuar Login
Casos de Uso
Operadora de Cartão
Modelo de Funcionalidades
51
Para construção do MN em aplicações web recomenda-se o uso da ferramenta
Axure RP [28]. Em aplicações para dispositivos móveis recomenda-se o uso da
ferramenta Netbeans (versão completa com o Visual Mobile Designer) [50]. Se a
aplicação for simples até mesmo o PowerPoint ou o Visio pode ser utilizado para fazer
o MN.
O próximo workflow do processo é Analisar Serviços que tem como objetivo gerar
a primeira arquitetura do sistema. Para isso, são construídos os artefatos: Arquitetura
de Serviços, Modelo de Interação de Serviços, Modelo de Componentes dos
Serviços e o Modelo de Informação Refinado.
Para construir a Arquitetura de Serviço é necessário empacotar os casos de uso.
No exemplo do QIB, mostrado na Figura 4.6, os casos de uso Efetuar Login e Alterar
Senha foram agrupados no pacote Controle Acesso, Consultar Cartão e Efetuar
Pagamento Cartão no pacote Controle QualitCard, e os demais em Controle Conta.
52
Controle Qualit Card
Controle Conta
Modelo de Funcionalidades
provider consumer
consumer provider
Arquitetura de Serviços
53
necessário identificar os serviços de entidades, um tipo de serviço que é derivado de
uma ou mais entidades de negócio relacionadas e possuem alto grau de reutilização:
serviços que fazem operações CRUD (Create, Read, Update, Delete), por exemplo. As
Figuras 4.7 e 4.8 mostram os serviços de entidades e um dos MIS do QIB.
logar(login,senha)
existe(login, senha)
sessão ContaInternet
alterar(login,antiga, nova)
existe(login,senha)
ContaInternet
atualizar(ContaInternet)
sessão Conta Internet
54
Após a construção dos modelos de interação dos serviços foi verificado que a
entidade PagamentoCartão era na verdade uma Transação e surgiram os atributos
das entidades, por isso, o MIN foi atualizado. A Figura 4.9 mostra o MIN atualizado.
Transacao
ContaBancaria ContaintInternet
+numero da fatura
+numero +login +data
+saldo +senha +valor
+numero da conta
<<Front-end>>
Cliente Front-end
IOperadoraCartão
IContaInternet ITransação
IContaBancaria
OperadoraCartão
ContaInternet ContaBancaria Transação
55
―ControleQualitiCard‖ - Figura 4.6) e suas interfaces (IControleAcesso,
IControleConta e IControleQualitiCard – e Figura 4.10).
3. os serviços de entidades (ContaInternet, ContaBancaria, Transação na
Figura 4.7) foram transformados em componentes (―ContaInternet’,
―ContaBancaria‖ e ―Transação‖ – Figura 4.10) e suas interfaces (IContaInternet,
IContaBancaria e ITransacao – Figura 4.10).
4 https://www.magicdraw.com/
5 https://www.magicdraw.com/cameo_soa
6 http://www.ibm.com/developerworks/rational/products/rsa/
7 http://astah.net/editions/community
8 http://staruml.sourceforge.net/en/
56
Resposta: Todos os casos de uso foram empacotados seguindo critérios de
coesão e acoplamento e, pelo sistema ser simples, nenhuma funcionalidade
ficou isolada.
Todos os componentes de front-end foram identificados?
Resposta: Não. Por isso, foram identificados três novos componentes que
representam as aplicações Front-end do sistema (mobile, web e desktop).
Podemos agrupar contratos de serviços semelhantes?
Resposta: Não. Todos os serviços identificados possuem granularidade fina.
Todas as funcionalidades foram contempladas?
Resposta: Sim. Todos os casos de uso foram realizados.
Como será a integração entre o front-end e back-end? Como será feita a
comunicação com sistemas externos?
Resposta: A integração será feita utilizando web services.
É possível reutilizar ou comprar componentes existentes?
Resposta: Não. Todos os componentes serão implementados devido a
restrição do cliente.
Portanto, a Figura 4.11 mostra a Arquitetura do Sistema do QIB levando-se
em consideração as questões acima.
57
Front-end Iphone
Front-end Web Front-end Desktop
IFachadaWebSercice
WebService
Transação OperadoraCartão
ContaInternet ContaBancaria
58
Após a construção da Arquitetura do Sistema e a descrição dos padrões a serem
utilizados, são elaborados os diagramas de classes e sequência de cada componente
do sistema. A Figura 4.12 mostra o diagrama de classe do componente
ControleAcesso. Na Figura 4.13 é mostrado o diagrama de sequência para a operação
EfetuarLogin.
ControladorControleAcesso ContaintInternet
IControleAcesso
+logar(login, senha)
+alterarSenha(login, senhaAtual, SenhaNova)
IContaInternet
+inserir(ContaInternet)
+remover(ContaInternet)
+atualizar(ContaInternet)
+existe(login, senha)
1 : logar() 2 : existe()
3 : true
4 : session
59
interface gráfica do sistema. Os diagramas de classe e sequência, simplificado, do
front-end desktop do QIB são mostrados na Figura 4.15.
ComunicacaoWebService
TelaLogin
+efeturarLoginr()
: TelaLogin : ComunicacaoWebService
: ClienteAtor
1 : efeturarLogin()
2 : logar()
3 : chamarWebService()
60
Capítulo 5 - Avaliação do Processo
5.1 Introdução
5.2 Definição
61
a interpretação dos dados que serão coletados [38]. Por isso, este trabalho utilizou um
framework de medição baseado nas métricas definidas e refinadas em [22]. A Figura
5.1 mostra o framework de medição utilizado.
Framework de Medição
Variável de
resposta
Qualidade de
Projeto
Qualidades
Reusabilidade Manutenibilidade
Fatores
62
Questão 1: O processo de desenvolvimento gera serviços e componentes de baixa
complexidade?
Dependências estruturais entre os serviços e componentes
(relações cliente-consumidor) têm influência considerável sobre a complexidade dos
sistemas. Por isso, a métrica a seguir foi utilizada para ajudar a responder a questão 1:
Esta métrica indica que operações com muitos parâmetros formais são mais
complexas do que operações que exigem menos parâmetros. Neste sentido, a
complexidade da operação On pode ser definida da seguinte forma: cn = α + 1,
onde α denota o número de parâmetros formais de On. De acordo com [39],
valores até 10 são considerados aceitáveis para aplicação simples.
63
Métrica 2 (M2): Instability Metric for Service or Component (IMSC). O IMSC é
uma métrica para medir a instabilidade dos componentes ou serviços de uma
aplicação baseada no fan.in e fan.out.
O fan.in de uma função A é o número de funções que chamam a função A. O
fan.out de uma função A é o número de funções que a função A chama. Ou
seja, as funções com um fan.out alto são mais difíceis de manter. E funções
com fan.in grande são bastante utilizadas. O fan-in e fan.out são métricas
utilizadas para estimar a complexidade de manutenção de softwares [40].
Baseado nestas métricas, Perepletchikov definiu uma nova métrica para
medir a interação entre um serviço ou componente por meio do envio e
recebimento de mensagens [41]. Ele definiu que o fan.in de um serviço S é o
número de mensagens que S recebe. E fan.out é o número de mensagens que
ele envia. Com isso, ele propos a seguinte formula:
64
Seja n o número de serviços da aplicação, então se o serviço não
está conectado ao serviço , caso contrário . Para um serviço A
quanto maior o CBCS, maior o acoplamento com outros serviços. Está métrica
foi utilizada em [22]. Valores maiores que seis indicam alto grau de
acoplamento [41].
65
M6. Desacoplamento entre front-end e back-end: Porcentagem dos
participantes que concordaram que o processo ajuda no desacoplamento entre
front-end e back-end.
5.3 Planejamento
66
H0f: μ Desacoplamento entre front-end e back-end <=70 %
67
Motivação dos participantes. Os participantes poderiam escolher os seus
grupos e, em se tratando de alunos de graduação, poderia ser o caso de nem
todos participarem efetivamente do projeto. Para tratar essa ameaça, todos os
alunos tinham que apresentar e participar ativamente na apresentação dos
projetos sob pena de perder pontos na nota final da disciplina.
Experiência dos participantes. Os resultados podem ser influenciados pela
falta de conhecimento e experiência prática dos participantes, pois todos eram
alunos de graduação e a maioria não tinha experiência profissional no
desenvolvimento de software. Para contornar essa ameaça foram ministradas
aulas práticas para auxiliar e treinar os participantes no desenvolvimento dos
projetos.
Complexidade e formato dos projetos. Os projetos foram propostos pelos
participantes e não chegaram a ser implementados. Isso pode influenciar
negativamente as métricas M1,M2 e M3. Para mitigar essa ameaça foram
definidos requisitos mínimos (número de casos de uso, interação com sistemas
externos, por exemplo) para a elaboração dos projetos.
5.4 Operação
68
Projetos Componentes analisados Participantes
Projeto 1 11 4
Projeto 2 14 4
Projeto 3 10 4
Projeto 4 6 4
Projeto 5 10 3
Total 51 19
Tabela 5.1. Dados dos Projetos.
Após a divisão das equipes foram ministradas 24 horas de aulas práticas e teóricas14
(8 horas para cada fase do processo), para mostrar todas as atividades e artefatos
produzidos pelo processo.
No final da disciplina, os grupos apresentaram os artefatos gerados pelo processo e
disponibilizaram todos os modelos construídos (arquivos de ferramentas CASE) no
projeto. No final da disciplina foi aplicado um formulário de avaliação sobre o
processo15.
69
Projetos CBCS
A análise estatística dos dados mostra que a média CBCS (2,69) rejeitou
fortemente a hipótese nula. Isto indica que o processo colabora para o
desenvolvimento de componentes e serviços com baixo acoplamento, pois valores
abaixo de 6 são considerados aceitáveis para aplicações simples [22]. Outro ponto
importante é que nenhum projeto apresentou média CBCS próxima de 6 (máxima foi
3,3). A Tabela 5.3 mostra os resultados obtidos para a métrica de complexidade
(WOCS).
Projetos WOCS
Como podemos observar na Tabela 5.3, a média WOCS foi de 9,12 (valores até 10
são aceitáveis para aplicações simples [22]) e rejeitou a hipótese nula, mostrando que
70
o processo contribui significantemente para a redução da complexidade dos
componentes e serviços desenvolvidos.
A Tabela 5.4 mostra os resultados obtidos, levando-se em consideração a
instabilidade dos componentes e serviços projetados.
Projetos IMSC
média min max
Projeto 1 0,25 0 0,8
Projeto 2 0,38 0 0,66
Projeto 3 0,37 0 0,8
Projeto 4 0,44 0 0,66
Projeto 5 0,25 0 0,57
Total 0,34 0 0,8
Resultado: H0: IMSC >= 0,5 (rejeitada)
Tabela 5.4. Resultados da métrica IMSC.
A análise dos dados da Tabela 5.4 mostra que a média IMSC foi 0,34 e rejeitou
fortemente a hipótese nula. Isto é um forte indício que o processo colabora para o
desenvolvimento de componentes e serviços estáveis, pois valores mais próximos de
zero indicam estabilidade alta. Outro ponto importante é que nenhum projeto
apresentou média IMSC próxima de 1 (máxima foi 0,44).
Os gráficos das Figuras 5.2, 5.3 e 5.4 mostram os resultados obtidos com o
questionário de avaliação do processo.
71
Os dados da Figura 5.2 apontam que o processo de desenvolvimento não é difícil,
apenas 14% acharam o processo difícil, rejeitando a hipótese nula H0d (μ Dificuldade
em utilizar o processo >=30 %).
O gráfico da Figura 5.3 mostra que 100% dos participantes concordaram que o
processo ajuda no alinhamento entre os stakeholders, rejeitando fortemente a hipótese
nula H0e (μAlinhamento entre os stakeholders <=70 %).
A análise do gráfico da Figura 5.4 mostra que 100% dos participantes responderam
que concordam que o processo contribui para o desacoplamento entre o front-end e
back-end, rejeitando fortemente a hipótese nula H0f (μ Desacoplamento entre front-
end e back-end <= 70%).
72
Portanto, os dados obtidos no experimento indicam que o processo cumpre com
seus principais objetivos, além de colaborar para o desenvolvimento de uma
arquitetura com serviços e componentes estáveis, com baixo grau de acoplamento e
complexidade.
Apesar da maioria dos participantes não ter experiência em projetos reais (90%
nunca tinham participado de projetos envolvendo clientes reais) todos os projetos
apresentaram serviços com granularidade fina e sem problemas graves na arquitetura.
Um fato interessante é que apesar das limitações de tempo e escopo da disciplina
em que foi aplicado o experimento, os participantes se mostraram motivados e com
vontade de aprender novos paradigmas de desenvolvimento de software e faziam
perguntas relevantes contribuindo ativamente para a melhoria do processo. Como
prova disso, 84% marcaram no questionário que tinham interesse em aprender mais
sobre o processo em outra disciplina.
Outro fato interessante é que com a resposta dos questionários os participantes
sugeriram mais detalhes e guias para as atividades do workflow Projetar Serviços.
Com essas respostas foi possível identificar as deficiências e melhorar os detalhes das
atividades do processo.
73
Dificuldades na fase Projetar Serviços: 32% dos participantes do
experimento acharam a fase Projetar Serviço difícil e 36% tiveram dificuldade
em produzir os artefatos. Estes dados indicam que a fase pode estar complexa
e ou o material de treinamento não foi adequado.
Comparação com outras abordagens: Para melhorar a avaliação do
processo, os participantes poderiam ter sido expostos aos dois processos e ao
final poderia ter sido feita uma análise mais completa com a comparação dos
resultados. Também poderiam ter sido expostos a outros processos SOA/MDD
e não o RUP. Isso não foi feito devido às restrições de tempo e escopo da
disciplina.
Avaliação da métrica M5: Para avaliar o alinhamento de entendimento entre
os stakeholders, os participantes das outras equipes foram incentivados a fazer
perguntas e questionamento aos outros grupos, para de fato compreender
como iria funcionar os projetos das outras equipes. Contornando assim o fato
de todos os participantes estarem na mesma ―ponta‖ do alinhamento.
Validade do questionário e das métricas M4: A métrica M4 é altamente
dependente da experiência dos participantes do experimento e do tamanho do
projeto das equipes, por isso os resultados obtidos possuem pouco valor para
se tecer análises que o generalizem.
74
Capítulo 6 - Conclusão
75
o Aumento na reutilização de software: Nas primeiras fases do
processo é possível identificar oportunidades de reuso. Como forte
indício para comprovar o aumento no reuso, em todos os projetos do
experimento foram identificados um ou mais serviços com alto grau de
reutilização (serviços utilitários).
o Projeto de arquiteturas modulares e estáveis: Seguindo as
atividades do projeto é possível projetar uma arquitetura modular e com
componentes desacoplados. Como forte indício para comprovar isso, a
média CBCS nos projetos foi 2,69 (indica baixo grau de acoplamento
entre os componentes) e a média IMSC foi 0,34 (indica estabilidade).
o Alinhamento no entendimento entre os stakeholders. Os dados
obtidos no estudo experimental indicam que o processo ajuda a alinhar
as expectativas entre os envolvidos no projeto, pois 100% dos
participantes responderam um questionário concordando que o
processo contribui para o alinhamento do entendimento entre todos os
stakeholders.
o Praticidade e facilidade de uso: A maioria dos participantes
concordou que, no geral, o processo é fácil (27%) ou razoável (59%) e
apenas 14% considerou o processo difícil. Além disso, o processo
utiliza conceitos, fundamentos, artefatos e modelos bastante utilizados
tanto na indústria como na academia.
o Avaliação através de um estudo experimental. O processo foi
avaliado em um estudo experimental envolvendo 19 alunos de
graduação da UFPE e executado em cinco projetos distintos.
76
web services são construídos a partir de modelos de negócios de alto
nível, facilitando o alinhamento dos processos comerciais de alto nível com as
tecnologias disponíveis, seguindo o paradigma SOC (Service Oriented Computing).
Marzullo et al. [68] apresentou uma metodologia para construção de protótipos de
arquitetura com o objetivo de acelerar o processo de desenvolvimento de software. A
arquitetura é construída utilizando MDA e SOA. O trabalho mostra que a abordagem
utilizada pode promover um ambiente de desenvolvimento mais eficiente, e que a
arquitetura pode se adaptar continuamente às mudanças no ambiente de negócios. O
estudo de caso apresentado foi baseado em um projeto real reaizado no NALIM
(Núcleo de Apoio Logístico Integrado da Marinha).
Em [70] é apresentado uma abordagem de desenvolvimento orientada a modelos
para construção de serviços de telecomunicações para dispositivos móveis. Nesse
trabalho foi desenvolvido um profile UML para construção das aplicações portáveis
para diversas plataformas.
Em [71] é mostrado o MINERVA, um framework dirigido a modelos e orientado a
serviços para melhoria continua de processos de negócio. O framework foi definido em
três dimensões: conceitual, metodológica e suporte ferramental. O trabalho mostra que
utilizando o framework é possível obter automaticamente os modelos de serviços
(modelos SoaML) a partir de modelos de negócios (modelos BPMN).
Em [67] é apresentada uma abordagem orientada a modelos para aplicar estilos
arquiteturais em modelos SOA. A abordagem define templates arquiteturais que
servem de entradas para as transformações dos modelos dos serviços. Em [73] é
apresentado o SOSA, uma abordagem orientada a modelos para projetar arquitetura
de software orientada a serviços independente de plataforma (no nível do PIM). A
abordagem faz parte da metodologia MIDAS [24], um framework para o
desenvolvimento de sistemas de informação baseado em MDA.
A fim de obter uma melhor compreensão quanto às vantagens e limitações
expostas neste trabalho, foi realizada uma análise comparativa do processo proposto
e dos trabalhos relacionados mencionados anteriormente. A Tabela 6.1 mostra o
resultado dessa análise.
77
Precisão Cobertura do Arquitetura Independente Suporte a
Domínio
do ciclo de vida vinculada às de ferramentas decicões
restrito
Processo genérico transformações e tecnologias arquiteturais
A análise mostrada na Tabela 6.1 foi feita de acordo com os critérios apresentados
em [74], adicionando as limitações e deficiências encontradas em algumas
metodologias mostradas na introdução:
78
6.3 Limitações e Trabalhos Futuros
79
descrição das regras de transformação e detalhar os artefatos gerados nas atividades.
Além disso, o processo foi testado em cinco projetos diferentes.
80
Bibliografia
81
15. L. Bass, P. Clements, and R. Kazman, Software Architecture in Practice,
second ed. Addison-Wesley, 2003.
16. B. Hailpern and P. Tarr, ―Model-Driven Development: The Good, the Bad,
and the Ugly,‖ IBM Systems J., vol. 45, pp. 451-461, 2006.
17. P. Baker, L. Shiou, and F. Weil, Model-Driven Engineering in a Large
Industrial Context—Motorola Case Study,‖ Proc. Eighth Int’l Conf. Model
Driven Eng. Languages and Systems, pp. 476-491, 2005.
18. Staron, M. Adopting Model Driven Software Development in Industry—A
Case Study at Two Companies. Ninth Int’l Conf. Model Driven Eng.
Languages and Systems, pp. 57-72, 2006.
19. Pfadenhauer, K. Dustdar, S. Kittl, B. Challenges and Solutions for Model
Driven Web Service Composition. 4th IEEE International Workshops on
Enabling Technologies: Infrastructure for Collaborative Enterprise, 2005.
20. Castro, v. Mesa J. M. V. Herrmann, E. Marcos, E. A Model Driven Approach
for the Alignment of Business and Information Systems Models. Mexican
International Conference on Computer Science, 2008.
21. Stephen J. Mellor, Anthony N. Clark, Takao Futagami, "Guest Editors'
Introduction: Model-Driven Development," IEEE Software, vol. 20, no. 5, pp.
14-18, September/October, 2003.
22. RIBEIRO, Heberth Braga Gonçalves; ALVES, V.; Garcia, C. Vinicius; Álvaro,
Alexandre ; Lucrédio, Daniel; Almeida, S. Eduardo; Meira, L. R. Silvio. An
Assessment on Technologies for Implementing Core Assets in Service-
Oriented Product Lines. In: IV Simpósio Brasileiro de Componentes,
Arquiteturas e Reutilização de Software (SBCARS), 2010, Salvador.
23. Anneke Kleppe, Jos Warmer, Wim Bast, ―MDA Explained, The Model Driven
Architecture:Practise and Promise‖, 2003, Addison-Wesley
24. Päivi Parviainen, Juha Takalo, Susanna Teppola & Maarit Tihinen. Model-
Driven Development Process and Practices. VTT Technical Research
Centre of Finland, 2009.
25. USUF, L.; CHESSELL, M.; GARDNER, D. T. Implement model-driven
development to increase the business value of your IT system. v. 2008.
Disponível em: http://www.ibm.com/developerworks/library/ar-mdd1/ .
26. Nora Koch, Hubert Baumeister, Rolf Hennicker, and Luis Mandel. Extending
UML for Modeling Navigation and Presentation in Web Applications. In Geri
Winters and Jason Winters, editors, In Modeling Web Applications in the
UML Workshop, UML´2000, York, England, October 2000.
27. Wireframe. Disponível em http://en.wikipedia.org/wiki/Website_wireframe,
março 2011.
82
28. Axure- Sample Projects. Disponível em
http://www.axure.com/sampleProjects.aspx, março 2011.
29. Service oriented architecture Modeling Language (SoaML). Disponível
http://www.omg.org/spec/SoaML/1.0/Beta2/PDF, março 2011.
30. Luiz Francisco Lacerda Jr.. Um profile UML 2 e um processo de modelagem
para engenharia de interfaces gráficas dirigida a modelos e baseada em
componentes. 2005. Dissertação de Mestrado Universidade Federal de
Pernambuco.
31. NHibernate for .NeT. Disponivel em
http://community.jboss.org/wiki/NHibernateforNET, março 2011.
32. Java Persistebce API. Disponivel em
http://pt.wikipedia.org/wiki/Java_Persistence_API, março 2011.
33. Building an N-Tier Application in .NET. Disponivel em
http://msdn.microsoft.com/en-us/library/ms973279.aspx, março 2011.
34. MVC. Disponivel em http://pt.wikipedia.org/wiki/MVC, março 2011.
35. Model Driven SOA. Disponivel em
http://searchsoa.techtarget.com/tip/Model-driven-SOA, março 2011.
36. Wireframe completo do QIB. Disponível em
http://www.cin.ufpe.br/~vtb/qib/pig, maio 2011.
37. Basili, V. R., ―The Role of Experimentation in Software Engineering: Past,
Present, Future‖, Proceedings of the 18th International Conference on
Software Engineering, 1(2), PP. 133-164, 1996.
38. Sant’anna, C., Garcia, A., Chavez, C., Lucena, C., and von Staa, A. v.
(2003). On the reuse and maintenance of aspect-oriented software: An
assessment framework. In Proceedings of the 7th Brazilian Symposium on
Software Engineering.
39. Chidamber, S. R. and Kemerer, C. F. (1994). A metrics suite for object
oriented design. IEEE Transactions on Software Engineering, 20(6), 476–
493.
40. CDAC (2009). Metric advisor. http://www.cdac.in/html/ssdgblr/metric.asp.
Last access on November/2009.
41. Perepletchikov, M., Ryan, C., Frampton, K., and Tari, Z. (2007). Coupling
metrics for predicting maintainability in service-oriented designs. In
Proceedings of the 2007 Australian Software Engineering Conference
(ASWEC ’07), pages 329–340, Washington, DC, USA. IEEE Computer
Society Press.
42. Mahmood, Z. The Promise and Limitations of Service Oriented Architecture.
INTERNATIONAL JOURNAL OF COMPUTERS, Issue 3, Volume 1, 2007.
83
43. D. Overall, ―Have we been there before?‖, Opinions, Computer Weekly, UK,
11 April 2006.
44. M. Fowler, ―Patterns of enterprise application architecture‖, Addison Wesley,
2002.
45. Recommended Practice for Architectural Description of Software-Intensive
Systems; ANSI/IEEE Std 1471-2000.
46. Thomas, E. Service-Oriented Architecture: Concepts, Technology, and
Design, Prentice Hall, 2005.
47. Machado, João. Um estudo sobre o desenvolvimento orientado a serviços.
Rio de Janeiro, 2004. 89p. Dissertação de Mestrado - Departamento de
Informática, Pontifícia Universidade Católica do Rio de Janeiro.
48. Derek Miers, Stephen A. White. BPMN Modeling and Reference Guide.
Future Strategies Inc., Agosto 2008
49. OpenUp. Disponível em http://epf.eclipse.org/wikis/openup/, julho 2011.
50. Netbeans. Disponivel em http://netbeans.org/index.html, jullho 2011.
51. O'Reilly, T. 2005. What is Web 2.0: design patterns and business models for
the next generation of software. Disponível em:
http://oreilly.com/web2/archive/what-is-web-20.html, julho: 2009.
52. Qing Gu , Patricia Lago, A stakeholder-driven service life cycle model for
SOA, 2nd international workshop on Service oriented software engineering:
in conjunction with the 6th ESEC/FSE joint meeting, September 03-03,
2007, Dubrovnik, Croatia.
53. Rafael Capilla and Muhammad Ali Babar, On the Role of Architectural
Design Decisions in Software Product Line Engineering, Second European
Conference, ECSA 2008 Paphos, Cyprus, September -October, 2008
Proceedings.
54. Lucrédio, Daniel. Uma abordagem orientada a modelos para reutilização de
software, Tese de Doutorado, Universidade de São Paulo, USP, Brasil,
2009.
55. MOF.The Meta-Object Facility. Disponível em http://www.omg.org/mof/,
julho 2011.
56. Arquitetura Orientada a Serviços – SOA Infraestrutura para a Inovação.
Disponível em http://www.scribd.com/doc/46068179/Introducao-Ao-SOA-
31574, julho 2011.
57. DEURSEN, A. van; KLINT, P. Little languages: little maintenance. Journal of
Software Maintenance, John Wiley & Sons, Inc., New York, NY, USA, v. 10,
n. 2, p. 75–92, 1998. ISSN 1040-550X.
58. MERNIK, M.; HEERING, J.; SLOANE, A. M. When and how to develop
domain-specific languages. ACM Computing Surveys, v. 37, n. 4, p. 316–
344, dez. 2005. ISSN 0360-0300.
59. BAHNOT, V. et al. Using domain-specific modeling to develop software
defined radio components and applications. In: The 5th OOPSLA Workshop
on Domain-Specific Modeling, San Diego USA. [S.l.: s.n.], 2005. p. 33–42.
84
60. Soley, R. (2000, 11 27). Model Driven Architecture. Retrieved from Object
Management Group: http://www.omg.org/mda
61. ORMSC, A. B. (2001, 07 09). Model Driven Architecture - A Technical
Perspective. Retrieved from Object Management Group:
http://www.omg.org/mda
62. Agile Modeling: User Interface Flow. Disponível em
http://www.agilemodeling.com/artifacts/uiFlowDiagram.htm, julho 2011.
63. Alvaro, Alexandre. Software component certification: a component quality
model. Recife, 2005. 124p. Dissertação de Mestrado – Centro de
Informática, Universidade Federal de Pernambuco.
64. J. Sametinger, Software Engineering with Reusable Components, Springer-
Verlag, USA,1997.
65. Clements, P. and Northrop, L. Software Product Lines: Practices and
Patterns, volume 0201703327. Addison-Wesley Longman Publishing,
Boston, MA, USA. 2001
66. Fabio Tirelo; Roberto da Silva Bigonha; Mariza Andrade da Silva Bigonha;
Marco Tulio de Oliveira Valente. Desenvolvimento de Software Orientado
por Aspectos. Mini-curso apresentado na XXIII Jornada de Atualização em
Informática (JAI), 2004
67. López-Sanz, M.; Vara, J.; Cuesta, C.: A Model-Driven Approach to Weave
Architectural Styles into Service-Oriented Architectures Proceeding of the
first international workshop on Model driven service engineering and data
quality and security, 2009
68. Fabio Perez Marzullo, Jano Moreira de Souza, José Roberto Blaschek: A
Study Case on Domain-Driven Development, Using MDA, SOA and Web
Services. SERVICES I 2008:93-94
69. Valeria de Castro, Esperanza Marcos, Roel Wieringa: Towards a Service-
Oriented MDA-Based Approach to the Alignment of Business Processes
with IT Systems: from the Business Model to a Web Service Composition
Model. Int. J. Cooperative Inf. Syst. (IJCIS) 18(2):225-260 (2009)
70. Mariano Belaunde, Paolo Falcarin: Realizing an MDA and SOA Marriage for
the Development of Mobile Services. ECMDA-FA 2008:393-405
71. Delgado, A.; Ruiz, F., García-Rodríguez de Guzmán, I.; Piattini, M.:
―MINERVA: Model drIveN and service oriented framework for the continuous
business processes improvement & related tools‖,5th Int. Workshop on
Engineering SO Applications (WESOA’09),Nov. 2009
72. Haeng-Kon Kim, Roger Y. Lee: MS2Web: Applying MDA and SOA to Web
Services. Software Engineering, Artificial Intelligence, Networking and
Parallel/Distributed Computing 2008:163-180
73. López-Sanz, M.; Acuña, C,J..; Cuesta, C.;Marcos, E.: Defining Service-
Oriented Software Architecture Models for a MDA-based Development
Process at the PIM level Proceeding WICSA '08 Proceedings of the Seventh
Working IEEE/IFIP Conference on Software Architecture (WICSA 2008).
85
74. Chitforoush, F; Yazdandoost, M; Ramsin, R; Methodology Support for the
Model Driven Architecture. 14th Asia-Pacific Software Engineering
Conference (APSEC 2007).
75. Eclipse Process Framework. Disponível em http://www.eclipse.org/epf/,
julho 2011.
86
Apêndice A
Data:__/__/____
Período atual:___
Login: _____
Curso:
( ) Ciência da Computação
( ) Engenharia da Computação
( ) Sistemas de Informação
( ) Outros _________________
87
Em quantos projetos você já atuou como líder técnico (responsável pela
arquitetura)?
( ) Nenhuma
( ) Baixa
( ) Média
( ) Alta
( ) Nenhuma
( ) Baixa
( ) Média
( ) Alta
88
PARTE 2 – SOBRE O PROCESSO (30 MINUTOS)
( ) muito fácil
( ) fácil
( ) razoável
( ) difícil
( ) muito difícil
( ) Nenhuma
( ) Especificação do modelo de negocio
( ) Projetar Serviços
( ) Analisar serviços
( ) Todas
( ) muito fácil
( ) fácil
( ) razoável
( ) difícil
( ) muito difícil
89
Na fase de Especificação do Modelo de Negócio, teve dificuldade em entender as
atividades e os artefatos gerados?
( ) Não
( ) Sim. Por favor, indique os artefatos e justifique?
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
____________________________________________________________________
( ) Não
( ) Sim. Por favor, indique os artefatos e justifique?
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
____________________________________________________________________
( ) Sim
( ) Não. Por favor, indique os artefatos e justifique?
_____________________________________________________________________
_____________________________________________________________________
____________________________________________________________________
90
Como você classificaria a fase de Analisar Serviço?
( ) muito fácil
( ) fácil
( ) razoável
( ) difícil
( ) muito difícil
( ) Não
( ) Sim. Por favor, indique os artefatos e justifique?
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
____________________________________________________________________
( ) Sim
( ) Não. Por favor, indique os artefatos e justifique?
_____________________________________________________________________
_____________________________________________________________________
91
_____________________________________________________________________
_____________________________________________________________________
____________________________________________________________________
( ) muito fácil
( ) fácil
( ) razoável
( ) difícil
( ) muito difícil
( ) Não
( ) Sim. Por favor, indique os artefatos e justifique?
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
____________________________________________________________________
( ) Não
( ) Sim. Por favor, indique os artefatos e justifique?
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
92
Na fase de Projetar Serviço, achou os artefatos gerados úteis?
( ) Sim
( ) Não. Por favor, indique os artefatos e justifique?
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
____________________________________________________________________
( ) Discordo totalmente
( ) Discordo
( ) Não sei responder
( ) Concordo
( ) Concordo totalmente
( ) Discordo totalmente
( ) Discordo
( ) Não sei responder
( ) Concordo
( ) Concordo totalmente
( ) Muito ruim
93
( ) Ruim
( ) Satisfatória
( ) Bom
( ) Muito Bom
( ) Sim
( ) Não
94
Apêndice B
Pré-condição: nenhuma
Fluxo principal
Fluxos secundários
95
Caso de Uso: Alterar Senha
Fluxo principal:
Fluxos secundários
96
Caso de Uso: Realizar Transferência
Descrição: Este caso de uso é responsável por realizar transferência entre duas
contas bancárias.
Fluxo principal:
Fluxos secundários
97
Caso de Uso: Efetuar Pagamento Qualiti Card
Descrição Este caso de uso é responsável por realizar o pagamento do Qualiti Card
com a operadora de cartão de crédito. Cada cliente possui apenas um cartão como
titular, estando vinculado a apenas uma operadora.
Fluxo Principal:
Fluxos Secundários: 98
Descrição: Este caso de uso é responsável por consultar o saldo da conta bancária
do cliente.
Pós-condição: nenhuma.
Fluxo principal
Fluxos secundários
- Não tem.
99
Caso de uso: Consultar Cheques
Descrição: Este caso de uso é responsável por consultar os cheques emitidos pelo
cliente.
Pós-condição: nenhuma.
Fluxo principal
3. O sistema exibe uma lista com a data, hora e o valor de cada cheque
compensado
Fluxos secundários
100
Caso de uso: Consultar Extrato
Pós-condição: nenhuma.
Fluxo principal
3. O sistema exibe uma lista com a data, hora e o valor de cada transação
Fluxos secundários
101