Você está na página 1de 96

Centro
de
Informá-ca


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


Você também pode gostar