Beruflich Dokumente
Kultur Dokumente
Universidade Federal de Pernambuco
Vinicius
Cardoso
Garcia
vcg@cin.ufpe.br
::
@vinicius3w
::
yabit.wordpress.com
Março,
2011
©
2011
–
Vinicius
Cardoso
Garcia
• O
que
é
reuso?
Por
que
e
Quando?
Mas
e
aí?
• Maturidade
e
capacidade
em
reuso
• Componentes
de
SoPware
• Geradores
de
Código/Aplicações
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
2
©
2011
–
Vinicius
Cardoso
Garcia
• REUSE:
a
key
factor
in
maintaining
and
improving
produc-vity
and
compe--veness
in
the
acquisi-on
and
development
of
soPware
(SWEBOK,
2007)
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
3
©
2011
–
Vinicius
Cardoso
Garcia
• Implemen,ng
systema-c
reuse
involves
risk
and
not
doing
it
is
also
risky
(Frakes
and
Isoda,
1994)
• SoPware
Product
Line
approach
is
a
way
to
achieve
a
systema,c
reuse
performance
– high
capability
level
of
a
set
of:
knowledge,
culture,
infrastructure,
development
techniques,
methods,
processes,
tools…
• System‐by‐system
‐>
full
SPL
organiza-on
– dras-c
conceptual
and
intellectual
shiP
– Crucial
but
necessary
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
4
©
2011
–
Vinicius
Cardoso
Garcia
• Organiza-ons
see
benefits
of
reuse
but
don't
know
how
to
introduce
it.
– a
lot
of
investments
+
risks
=>
don't
do
it!
• Solu-on
– Provide
an
incremental
path
towards
reuse
adop-on
in
prac-ce
• Benefits
– lower
risks;
– quicker
benefits;
• It
is
a
guide
for
process
improvement.
– smaller
jumps
of
investments.
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
5
©
2011
–
Vinicius
Cardoso
Garcia
Garcia,
Vinicius
Cardoso.
RiSE
Reference
Model
for
So<ware
Reuse
Adop,on
in
Brazilian
Companies.
D.Sc.
Thesis
at
Federal
University
of
Pernambuco
(UFPE),
2010.
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
6
©
2011
–
Vinicius
Cardoso
Garcia
CloudCamp
Recife
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
7
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
8
©
2011
–
Vinicius
Cardoso
Garcia
Garcia,
Vinicius
Cardoso.
RiSE
Reference
Model
for
So<ware
Reuse
Adop,on
in
Brazilian
Companies.
D.Sc.
Thesis
at
Federal
University
of
Pernambuco
(UFPE),
2010.
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
9
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
10
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
11
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
12
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
13
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
14
©
2011
–
Vinicius
Cardoso
Garcia
CloudCamp
Recife
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
15
©
2011
–
Vinicius
Cardoso
Garcia
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
16
©
2011
–
Vinicius
Cardoso
Garcia
CloudCamp
Recife
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
17
©
2011
–
Vinicius
Cardoso
Garcia
©
2011
–
Vinicius
Cardoso
Garcia
CloudCamp
Recife
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
18
©
2011
–
Vinicius
Cardoso
Garcia
©
2011
–
Vinicius
Cardoso
Garcia
CloudCamp
Recife
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
19
©
2011
–
Vinicius
Cardoso
Garcia
©
2011
–
Vinicius
Cardoso
Garcia
CloudCamp
Recife
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
20
©
2011
–
Vinicius
Cardoso
Garcia
©
2011
–
Vinicius
Cardoso
Garcia
Garcia,
Vinicius
Cardoso.
RiSE
Reference
Model
for
So<ware
Reuse
Adop,on
in
Brazilian
Companies.
D.Sc.
Thesis
at
Federal
University
of
Pernambuco
(UFPE),
2010.
CloudCamp
Recife
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
21
©
2011
–
Vinicius
Cardoso
Garcia
• Tradi-onal
SoPware
Development
• Reuse
prac-ces
are
sporadically
used
or
not
used
at
all
• Individual
ini-a-ve
– External
dependencies
• Project
Planning
Process
and
Requirements
Iden-fica-on;
Evalua-on
and
Agreement
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
22
©
2011
–
Vinicius
Cardoso
Garcia
• At
this
level,
the
company
will
have
the
first
contact
with
introductory
techniques
and
methods
of
soPware
reuse
and
build
its
first
reusable
ar,facts.
• Basic Reuse Techniques and
Methods (BRT)
External Dependencies to the ISO/IEC 12207:2008
[6.3.1] Project Planning Process
• Reusable Artifacts
[6.3.2] Project Assessment and Control Process
Implementation (RAI)
[6.3.5] Configuration Management Process
[6.3.6] Information Management Process
• Reuse of Open Source
[6.3.7] Measurement Process
Solutions (ROS)
[7.2.3] Software Quality Assurance Process
[7.2.7] Software Audit Process
• Reuse of Graphical User
[7.2.8] Software Problem Resolution Process
Interfaces (RIF)
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
23
©
2011
–
Vinicius
Cardoso
Garcia
• Basic
Reuse
Techniques
and
Methods
(BRT)
– UML
Components
• Iden-fica-on
and
Specifica-on
– Design
and
architectural
paverns
• Reusable
Ar-facts
Implementa-on
(RAI)
– SOA,
OSGi,
AOSD…
– (Code
|
applica-on)
generators
• Reuse
of
Open
Source
Solu-ons
(ROS)
– Frameworks
• Reuse
of
Graphical
User
Interfaces
(RIF)
– Templates
with
generators
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
24
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
25
©
2011
–
Vinicius
Cardoso
Garcia
CloudCamp
Recife
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
26
©
2011
–
Vinicius
Cardoso
Garcia
©
2011
–
Vinicius
Cardoso
Garcia
• Abstração
– “Não
consegue
resolver
um
problema?
Abstraia
um
nível
acima”
• Análise
– Divisão
em
partes
menores
facilita
o
entedimento/
análise.
• Disputa
– Diferentes
fornecedores
de
componentes
VS
falha
no
sistema
• Gerenciamento
de
Configuração
• Deployment
• Manutenção
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
27
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
28
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
29
©
2011
–
Vinicius
Cardoso
Garcia
• Representa
o
uso
do
contrato
• Representa
a
realização
dos
• Provê
uma
lista
de
operações
contratos
• Define
um
modelo
específico
• Fornece
uma
lista
de
interfaces
informação
lógica
subjacente
à
suportadas
interface
• Define
a
unidade
de
tempo
de
• Especifica
a
forma
como
as
execução
operações
afetam,
ou
"confiam"
• Define
as
relações
entre
os
no
modelo
de
informações
modelos
de
informação
de
• Descreve
apenas
os
efeitos
locais
diferentes
interfaces
• Especifica
como
as
operações
devem
ser
implementadas
em
termos
de
u-lização
de
outras
interfaces
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
30
©
2011
–
Vinicius
Cardoso
Garcia
• Modelos
de
Componentes
definem
um
conjunto
de
padrões
para
implementação
de
componentes,
interoperabilidade,
customização,
composição,
evolução
e
implantação
– Enterprise
JavaBeans
(EJB)
– CORBA
Component
Model
(CCM)
– MicrosoP
.NET
– OSGi
– SOA
(Web
services)
• Implementação
de
um
modelo
de
componentes
‐
dedicado
conjunto
de
elementos
de
soPware
executáveis,
necessários
para
suportar
a
execução
dos
componentes
segundo
um
modelo
de
compoentes
bem
definido
– Servidores
de
Aplicação
• Exemplos:
JBoss,
Web4J,
Frameworks
(Struts
&
Hibernate)
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
31
©
2011
–
Vinicius
Cardoso
Garcia
• Execu-on
Environment
– Ambiente
padronizado
para
aplicações
chamadas
de
bundles
– J2SE,
CDC
(JSR
232:
Mobile
Opera-onal
Management),
CLDC,
MIDP
– hvp://www.osgi.org
• Modules
– Polí-cas
de
carregamento
de
classes
– Classes
privadas
para
módulos,
bem
como
links
controlados
entre
módulos
• Life
Cycle
– Estados
para
os
bundles
‐
installed,
started,
stopped,
updated
and
uninstalled
• Service
Registry
– Provê
cooperação
entre
os
bundles
– Compar-lhamento
de
objetos
entre
bundles
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
32
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
33
©
2011
–
Vinicius
Cardoso
Garcia
• Bem
focado
na
especificação
de
componentes
• Simples
(baseado
em
estereó,pos)
• Uso
de
UML
e
estrutura
RUP
• Workflow
– Definição
de
requisitos
– Especificação
de
componentes
• Iden-ficação
• Interação
• Especificação
• Adequação
• Codificação
Cheesman,
J.
and
Daniels,
J.
“UML
Component
A
Simple
Process
for
Specifying
Component‐
• Testes
Based
SoPware”,
Addison‐Wesley,
2000
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
34
©
2011
–
Vinicius
Cardoso
Garcia
• Estereó-pos
– <<type>>.
Usado
para
representar
uma
classe
no
modelo
de
negócios
de
um
componente
em
nível
de
especificação.
– <<datatype>>.
Possui
a
mesma
representação
de
Type,
mas
é
usado
para
classes
que
u-lizam
persistência.
– <<interface type>>. Representa uma interface em nível de especificação.
– <<comp spec>>. Usado para indicar uma especificação de um componente.
– <<offers>>. Liga uma especificação de um componente à sua interface.
– <<core>>. O “core” subentende um “type” sem ocorrência de dependências.
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
35
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
36
©
2011
–
Vinicius
Cardoso
Garcia
Entradas:
• Modelo
de
casos
de
uso
• Modelo
conceitual
do
negócio
Saídas
• Arquitetura
• Especificação
de
componentes
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
37
©
2011
–
Vinicius
Cardoso
Garcia
“Um
sistema
de
reserva
para
hotéis
que
permita
que
a
reserva
seja
feita
para
qualquer
hotel
da
cadeia.
O
sistema
deve
oferecer
quartos
alterna:vos
se
o
hotel
desejado
es:ver
lotado.
Cada
hotel
tem
um
administrador
de
reservas
responsável
por
controlar
as
reservas.
O
tempo
para
conseguir
realizar
uma
reserva
por
telefone
ou
mesmo
pessoalmente
é,
em
média,
três
minutos.
Para
acelerar
o
processo,
detalhes
sobre
clientes
an:gos
serão
armazenados
e
estarão
disponíveis.”
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
38
©
2011
–
Vinicius
Cardoso
Garcia
• Workflow
de
requisitos
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
39
©
2011
–
Vinicius
Cardoso
Garcia
• Fase
1
–
Inde-ficação
de
componentes
– Iden-ficar
interfaces
e
operações
do
sistema
• Modelos
de
casos
de
uso
u-lizado
para
descoberta
de
operações
• Formalizaçao
do
modelo
conceitual
do
negócio
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
40
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
41
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
42
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
43
©
2011
–
Vinicius
Cardoso
Garcia
• Iden-ficação
de
componentes
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
44
©
2011
–
Vinicius
Cardoso
Garcia
• Iden-ficar
as
interfaces
e
operações
do
sistema
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
45
©
2011
–
Vinicius
Cardoso
Garcia
• Fase
1
–
Inden-ficação
de
componentes
– Iden-ficar
interfaces
de
negócio
• Abstrações
da
informação
manipulada
pelo
sistema
• Refinamento
do
modelo
conceitual
gerando
o
modelo
de
,pos
de
negócio
Não há
cadeia de Simplificação
hotéis
Não dá suporte a
operações de
pagamentos e
contas
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
46
©
2011
–
Vinicius
Cardoso
Garcia
• Fase
1
–
Inden-ficação
de
componentes
– Iden-ficar
interfaces
de
negócio
• Diagrama
inicial
de
,pos
de
negócio
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
47
©
2011
–
Vinicius
Cardoso
Garcia
• Fase
1
–
Inde-ficação
de
componentes
– Iden-ficar
interfaces
de
negócio
• A
par-r
do
Diagrama
inicial
de
-pos
de
negócio,
fazemos
a
iden,ficação
dos
,pos
<<core>>
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
48
©
2011
–
Vinicius
Cardoso
Garcia
• Fase
1
–
Inde-ficação
de
componentes
– Iden-ficar
interfaces
de
negócio
• Iden-ficados
os
-pos
<<core>>,
criamos
a
especificação
inicial
de
interfaces
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
49
©
2011
–
Vinicius
Cardoso
Garcia
• Fase
1
–
Inde-ficação
de
componentes
– Especificar
arquitetura
de
componentes
• Uma
vez
que
as
interfaces
foram
iden-ficadas
e
inicialmente
especificadas,
montamos
a
arquitetura
de
componentes.
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
50
©
2011
–
Vinicius
Cardoso
Garcia
• Fase
2
–
Interação
de
componentes
– Obje-vo:
refinar
especificação
inicial
de
interfaces
para
obter
assinaturas
das
operações
– Passos
• Desenvolver
modelos
de
interação
para
cada
operação
do
sistema
– Diagramas
de
sequência
• Descobrir
operações
das
interfaces
do
sistema
e
suas
assinaturas
– Assinaturas
dos
métodos
• Refinar
responsabilidades
– Atores
atuantes
nos
diagramas
de
sequência
• Definir
restrições
necessárias
– Regras
de
negócio
que
impõem
restrições
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
51
©
2011
–
Vinicius
Cardoso
Garcia
• Fase
3
–
Especificação
de
componentes
– Obje-vo:
obter
a
especificação
completa
dos
componentes
e
suas
interfaces
bem
como
os
contratos
de
uso
e
realização.
– Passos
• Especificar
o
modelo
de
informação
da
interface
– A
par-r
das
assinaturas
das
operações
da
fase
2
• Definir
pré
e
pós‐condições
– Restrições
aplicadas
às
operações
• Montar
especificação
do
componente
– Visão
geral
do
diagrama
de
componentes
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
52
©
2011
–
Vinicius
Cardoso
Garcia
• Fase
3
–
Especificação
de
componentes
– Modelo
de
informação
da
interfaces
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
53
©
2011
–
Vinicius
Cardoso
Garcia
• Fase
3
–
Especificação
de
componentes
– Diagrama
de
especificação
de
componentes
(refinamentos
poderiam
ter
sido
aplicados
de
acordo
com
a
descoberta
de
operações
durante
a
fase
de
interação
de
componentes)
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
54
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
55
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
56
©
2011
–
Vinicius
Cardoso
Garcia
• Processos
de
reuso
(linhas
de
produto
ou
eng.
de
domínio
levam
em
consideração
várias
outras
questões
além
de
implementarem
princípios
de
DBC:
– Features
– Model
Driven
Development
– DSL
e
geradores
– Variabilidade
– Serviços
– Métricas
– Repositórios
– Busca
de
componentes
– Ambientes
de
reuso
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
57
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
58
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
59
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
60
©
2011
–
Vinicius
Cardoso
Garcia
• Um
framework
open‐source
para
aplicações
web
que
segue
o
paradigma
de
“codificação
por
convenção”,
proporcionando
um
ambiente
autônomo
de
desenvolvimento
e
escondendo
muitos
detalhes
de
configuração
do
desenvolvedor.
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
61
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
62
©
2011
–
Vinicius
Cardoso
Garcia
• Oracle
– hvp://www.oracle.com/technology/pub/ar-cles/
grall‐grails.html
• BEA
– hvp://dev2dev.bea.com/pub/a/2006/10/
introduc-on‐groovy‐grails.html
• SAP
– hvps://www.sdn.sap.com/irj/sdn/wiki?path=/
display/Community/Composi-on+on+Rails
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
63
©
2011
–
Vinicius
Cardoso
Garcia
• grails.org
– Downloads
• Latest
release
(1.3.7)
– User
guide,
tutorials,
screencasts,
etc.
– Mailing
lists
(grails.org/mailing+lists)
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
64
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
65
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
66
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
67
©
2011
–
Vinicius
Cardoso
Garcia
• Full
stack
– Grails
comes
with
a
full
development
environment
• Web
server
(Jevy
/
Tomcat)
• Database
(HSQLDB)
• Tes-ng
(JUnit)
• Command
line
shell
• Grails
console
• Conven-on
/
Configura-on
– Sensible
defaults
based
on
source
code
– Defaults
can
be
overriden
with
no
XML
• Exis-ng
XML
configura-ons
can
s-ll
be
used
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
68
©
2011
–
Vinicius
Cardoso
Garcia
• Agile
philosophy
– Development
is
an
interac-ve
process
• Add
/
modify
Controllers,
Domains
and
Views
while
applica-on
is
running
• Refresh
view
to
test
results
– Zero
turn‐around
• No
deployment
/
server
restart
required
• Rapid
prototyping
– Scaffolding
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
69
©
2011
–
Vinicius
Cardoso
Garcia
• Solid
founda-ons
– Built
on
tested
and
proven
OS
technologies
• Spring
framework
• Hibernate
ORM
• SiteMesh
page
layout
framework
• AJAX
libraries:
script.aculo.us,
Rico,
prototype
• HSQLDB
• Junit
– Minimizes
learning
curve
– Backed
up
by
SpringSource
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
70
©
2011
–
Vinicius
Cardoso
Garcia
• Java
Integra-on
– Groovy
code
is
compiled
to
bytecode
– Java
code
can
be
run
as
Groovy*
– GDK
‐>
Groovy’s
exten-onto
JDK
(~
60
enhanced
classes)
– GroovyClassLoader
• Loads
and
parses
Groovy
classes
to
be
used
in
Java
classes
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
71
©
2011
–
Vinicius
Cardoso
Garcia
• Produc-vity
– Development
is
fun!
– Develop
web
applica-ons
much
quicker
– Concentrate
on
business
model
– Get
instant
feedback
– No
XML
configura-on
– Ready
to
use
development
environment
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
72
©
2011
–
Vinicius
Cardoso
Garcia
• Criada
por
James
Strachan
• É
uma
linguagem
de
programação
orientada
a
objetos,
dinâmica
e
ágil
para
a
Java
Virtual
Machine
• Baseia‐se
nos
pontos
fortes
do
Java,
mas
tem
um
poder
adicional
de
caracterís,cas
inspiradas
em
linguagens
como
Python,
Ruby
e
Smalltalk
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
73
©
2011
–
Vinicius
Cardoso
Garcia
• Ponto
e
vírgula
opcional
– No
caso
de
mais
de
um
comando
na
mesma
linha,
é
necessário
o
‘;’
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
74
©
2011
–
Vinicius
Cardoso
Garcia
• Conceito
de
verdade
– Groovy
considera
qualquer
valor
que
seja
diferente
de
“null”
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
75
©
2011
–
Vinicius
Cardoso
Garcia
• “main
opcional”
– se
es-ver
trabalhando
com
Groovy
na
forma
de
um
script,
pode
considerar
o
seu
arquivo
de
código
fonte
como
um
main.
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
76
©
2011
–
Vinicius
Cardoso
Garcia
• return
opcional
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
77
©
2011
–
Vinicius
Cardoso
Garcia
• Groovy
Beans
– bean
em
Groovy
não
precisa
de
declaração
de
métodos
gets
e
sets
– Groovy
faz
isso
dinamicamente
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
78
©
2011
–
Vinicius
Cardoso
Garcia
• bean
em
Java
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
79
©
2011
–
Vinicius
Cardoso
Garcia
• bean
em
Groovy
– Se
o
escopo
de
uma
variável
é
indefinido,
Groovy
cria
diâmincamente
os
métodos
get
e
set
para
cada
um
dos
atributos
da
classe.
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
80
©
2011
–
Vinicius
Cardoso
Garcia
• Porém
se
quisermos,
podemos
sobrescrever
os
métodos
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
81
©
2011
–
Vinicius
Cardoso
Garcia
• Tipagem
dinâmica
– Para
definir
variável
de
-po
indefinido:
def
[nome
da
variavel]
[especificação
do
valor
opcional]
Ou
simplesmente
[nome
da
variavel]
[especificação
do
valor
opcional]
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
82
©
2011
–
Vinicius
Cardoso
Garcia
• Strings
– Há
3
maneiras
de
declarar
strings
Aspas
simples:
’sou
uma
string
em
aspas
simples’
Aspas
duplas:
“sou
uma
string
com
a
qual
estamos
habituado
em
Java”
Aspas
triplas:
“““agora
estou
em
aspas
triplas,
muito
mais
interessante
de
se
lidar
quando
ocupo
mais
de
uma
linha”””
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
83
©
2011
–
Vinicius
Cardoso
Garcia
• Acoplamento
de
strings:
• Basta apenas ${ objeto ou expressão }
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
84
©
2011
–
Vinicius
Cardoso
Garcia
• Intervalos
Este
0..9
consiste
em
uma
escala,
que
implementa
a
interface
Collec-on
do
Java
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
85
©
2011
–
Vinicius
Cardoso
Garcia
• Intervalos
(métodos
e
funções)
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
86
©
2011
–
Vinicius
Cardoso
Garcia
• Listas
– Declaração:
[
(uma
série
de
objetos
separdos
por
vígula)
]
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
87
©
2011
–
Vinicius
Cardoso
Garcia
• Operação
com
listas
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
88
©
2011
–
Vinicius
Cardoso
Garcia
• Mapas
(hashes)
– Já
embu-do
na
linguagem
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
89
©
2011
–
Vinicius
Cardoso
Garcia
• Mapas
e
construtores
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
90
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
91
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
92
©
2011
–
Vinicius
Cardoso
Garcia
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
93
©
2011
–
Vinicius
Cardoso
Garcia
• [Same-nger,
1997]
Same-nger,
J.
"SoPware
Engineering
with
Reusable
Components",
Springer‐
Verlag,
1997,
pp.275.
• [D’Souza
and
Wills,
1998]
D’Souza,
D.
F.
and
Wills,
A.
C.
"Objects,
Components
and
Frameworks
with
UML:
The
Catalysis
Approach",
Addison‐Wesley,
1998,
pp.
816.
• [Bachmann
et
al.,
2000]
Bachmann,
F.,
Bass,
L.,
Buhman,
C.,
Buhman,
C.,
Comella‐Dorda,
S.,
Long,
F.,
Robert,
J.,
Seacord,
R.
and
Wallnau,
K.
"Volume
II:
Technical
Concepts
of
Component‐Based
SoPware
Engineering",
SoPware
Engineering
Ins-tute
(SEI),
Technical
Report,
May,
2000,
pp.
65.
• [Cheesman
and
Daniels,
2000]
Cheesman,
J.
and
Daniels,
J.
"UML
Component
A
Simple
Process
for
Specifying
Component‐Based
SoPware,
Addison‐Wesley,
2000,
pp.
208.
• [Council
and
Heineman,
2001]
Councill,
B.
and
Heineman,
G.
T.
"Defini-on
of
a
SoPware
Component
and
its
Elements",
in
G.
T.
Heineman,
W.
T.
Councill,
Component‐Based
SoPware
Engineering,
Addison‐Wesley,
2001,
pp.
818.
• [Heineman
and
Councill,
2001]
Heineman,
G.
T.
and
Councill,
B.
"Component‐Based
SoPware
Engineering",
Addison‐Wesley,
2001,
pp.
818.
• [Williams,
2001]
Williams,
J.
"The
Business
Case
for
Components"
in
G.
T.
Heineman,
W.
T.
Councill,
Component‐Based
SoPware
Engineering,
Addison‐Wesley,
2001,
pp.
818.
• [Weinreich,
2001]
Weinreich,
R.
and
Same-nger,
J.
"Component
Models
and
Component
Services:
Concepts
and
Principles"
in
G.
T.
Heineman,
W.
T.
Councill,
Component‐Based
SoPware
Engineering,
Addison‐Wesley,
2001,
pp.
818.
• [Szyperski,
2002]
Szyperski,
C.
"Component
SoPware:
Beyond
Object‐Oriented
Programming",
Addison‐Wesley,
2002,
pp.
588.
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
94
©
2011
–
Vinicius
Cardoso
Garcia
• [PECOS,
2005]
Pervasive
Component
Systems
‐
PECOS
Project.
Disponível
em
hvp://www.pecos‐
project.org/,
Junho
2005.
• [Almeida
et
al.,
2005]
E.
S.
Almeida,
A.
Alvaro,
D.
Lucredio,
V.
C.
Garcia,
S.
R.
L.
Meira,
A
Survey
on
SoPware
Reuse
Processes,
IEEE
Interna-onal
Conference
on
Informa-on
Reuse
and
Integra-on
(IRI),
Las
Vegas,
Nevada,
USA,
2005.
• [Traas
&
Hillegersberg,
2000]
Traas,
V.;
Hillegersberg,
J.
V.
The
soPware
component
market
on
the
internet
current
status
and
condi-ons
for
growth.
In:
ACM
SIGSOFT
SoPware
Engineering
Notes,
Vol.
25
No.
1,
January,
2000.
• [Neighbors,
1980]
J.
M.
Neighbors,
SoPware
Construc-on
Using
Components,
PhD
Thesis,
University
of
California,
Irvine,
Department
of
Informa-on
and
Computer
Science,
USA,
April,
1980,
pp.217.
• [Simos
et
al.,
1996]
M.
Simos,
D.
Creps,
C.
Klingler,
L.
Levine,
D.
Allemang,
Organiza-on
Domain
Modeling
(ODM)
Guidebook,
Version
2.0,
Technical
Report,
June,
1996,
pp.
509.
• [Jacobson
et
al.,
1997]
I.
Jacobson,
M.
L.
Griss,
P.
Jonsson,
Making
the
Reuse
Business
Work,
IEEE
Computer,
Vol.
30,
No.
10,
October,
1997,
pp.
36‐42.
• [Kang
et
al.,
1998]
K.
C.
Kang,
S.
Kim,
J.
Lee,
K.
Kim,
E.
Shin,
M.
Huh,
FORM:
A
Feature‐Oriented
Reuse
Method
with
domain‐specific
reference
architectures,
Annals
of
SoPware
Engineering
Notes,
Vol.
05,
No.
00,
Janeiro,
1998,
pp.
143‐168.
• [Villela,
2000]
R.
M.
M.
B.
Villela,
Search
and
Recovery
of
Components
in
SoPware
Reuse
Environments
(in
portuguese),
Ph.D.
Thesis,
Federal
University
of
Rio
de
Janeiro,
December,
2000,
pp.
264.
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
95
©
2011
–
Vinicius
Cardoso
Garcia
• [Kang
et
al.,
1990]
K.
C.
Kang,
S.
G.
Cohen,
J.
A.
Hess,
W.
E.
Novak,
A.
S.
Peterson,
Feature‐Oriented
Domain
Analysis
(FODA)
Feasibility
Study,
SoPware
Engineering
Ins-tute
(SEI),
Technical
Report,
November,
1990,
pp.
161.
• [Clements
&
Northrop,
2001]
P.
Clements,
L.
Northrop,
SoPware
Product
Lines:
Prac-ces
and
Paverns,
Addison‐
Wesley,
2001,
pp.
608.
• [Pase‘
&
Pree,
2000]
A.
Pase‘,
W.
Pree,
Two
Novel
Concepts
for
Systema-c
Product
Line
Development,
SoPware
Product
Line
Conference
(SPLC),
Denver,
Colorado,
USA,
August,
2000,
pp.
249‐270.
• [Rombach,
2000]
D.
Rombach,
Fraunhofer:
The
German
Model
for
Applied
Research
and
Technology
Transfer,
22nd
Interna-onal
Conference
on
SoPware
Engineering
[ICSE],
Limerick,
Ireland,
May,
2000,
pp.
25‐34.
• [Batory
&
O’Malley,
1992]
D.
Batory,
S.
O’Malley,
The
Design
and
Implementa-on
of
Hierarchical
SoPware
Systems
with
Reusable
Components,
ACM
TOSEM,
October,
1992.
• [Batory
et
al.,
2000]
D.
S.
Batory,
R.
Cardone,
Y.
Smaragdakis,
Object‐oriented
frameworks
and
product
lines,
SoPware
Product
Line
Conference
(SPLC),
Denver,
Colorado,
USA,
August,
2000,
pp.
227‐248.
• [Bayer
et
al.,
1999]
J.
Bayer,
O.
Flege,
P.
Knauber,
R.
Laqua,
D.
Muthig,
K.
Schmid,
T.
Widen,
J.
DeBaud,
PuLSE:
A
Methodology
to
Develop
SoPware
Product
Lines,
Symposium
on
SoPware
Reusability
(SSR),
Los
Angeles,
USA,
May,
1999,
pp.
122‐131.
• [Weiss
&
Lai,
1999]
D.
M.
Weiss,
C.
T.
R.
Lai,
SoPware
Product‐Line
Engineering:
A
Family‐Based
SoPware
Development
Process,
Addison‐Wesley,
1999,
pp.
426.
• [Atkinson
et
al.,
2000]
C.
Atkinson,
J.
Bayer,
D.
Muthig,
Component‐Based
Product
Line
Development:
The
KobrA
Approach,
First
SoPware
Product
Line
Conference
[SPLC],
Kluwer
Interna-onal
Series
in
SoPware
Engineering
and
Computer
Science,
Denver,
Colorado,
USA,
August,
2000,
pp.19.
• [America
et
al.,
2000]
P.
America,
H.
Obbink,
R.
V.
Ommering,
F.
V.
D.
Linden,
CoPAM:
A
Component‐Oriented
Pla“orm
Architec-ng
Method
Family
for
Product
Family
Engineering,
First
SoPware
Product
Line
Conference
(SPLC),
Kluwer
Interna-onal
Series
in
SoPware
Engineering
and
Computer
Science,
Denver,
Colorado,
USA,
August,
2000,
pp.
15.
• [Kang
et
al.,
2002]
K.
C.
Kang,
J.
Lee,
P.
Donohoe,
Feature‐Oriented
Product
Line
Engineering,
IEEE
SoPware,
Vol.
19,
No.
04,
July/August,
2002,
pp.58‐65.
• [Gomaa,
2005]
H.
Gomaa,
Designing
SoPware
Product
Lines
with
UML:
From
Use
Cases
to
Pavern‐Based
SoPware
Architectures,
Addison‐Wesley,
2005,
pp.
701.
In953
Engenharia
de
SoPware
Reuso
de
SoPware
em
Fábricas
Distribuídas
e
Ágeis
96
©
2011
–
Vinicius
Cardoso
Garcia