rapid application development
DESCRIPTION
Rapid Application Development. EDM Solution. ISEL, Outubro 2010. Ricardo Neto (#26657) - Nuno Sousa (#31923) - Paulo Pires (#32223). Agenda. Introdução Caso Prático Arquitectura da Solução Codificação e Geração Observação de Resultados Utilização Conclusões - PowerPoint PPT PresentationTRANSCRIPT
Rapid Application Development
EDM Solution
ISEL, Outubro 2010Ricardo Neto (#26657) - Nuno Sousa (#31923) - Paulo Pires (#32223)
1. Introdução2. Caso Prático3. Arquitectura da Solução4. Codificação e Geração5. Observação de Resultados6. Utilização7. Conclusões8. Trabalhos Futuros
Agenda
Identificação do Problema
• Software houses focadas na quantidade e rapidez de produção em detrimento da qualidade do produto final
1
• Aparecimento crescente de software mais barato
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . . .
• Compromisso crescente das software houses com os seguintes factores:
PRAZO
QUALIDADE RECURSOS
1Redução dos custos associados ao desenvolvimento de soluções, permitindo permanência em mercado competitivo.
Solução?
Análise do Problema
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . . .
Identificação da Solução• Opções disponíveis para conseguir redução de custos de desenvolvimento
1
• Diminuir exigência com recursos utilizados
• Automatização de processos de trabalho rotineiros
Menor qualidade no produto finalûMaior probabilidade de gastos com manutençãoû
Utilização de metodologia consistenteüDesenvolvimento estável, repetivel e previsivelü
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . . .
• Automatização de tarefas repetitivas na fase de implementação do ciclo de desenvolvimento:
1
• Caracterização de tipos de dados e restrições de domínio
• Identificação e definição de entidades
• Relações entre entidades
• Especificação de processos
• Definição de mecanismos de persistência
• Esquema de segurança
Definição do Âmbito
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . . .
• Definição de Dicionário de Dados (3D)
1
Objectivos Gerais
3DTipos de Domínio
Objectos de Domínio
Serviços Externos
Processos de Negócio
• Agregador dos outputs da análise do problema, estruturando-os em secções próprias
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . . .
• Criação de template Visual Studio (Solução EDM)
1
Objectivos Gerais
• Possibilidade de sincronização com o dicionário de dados dando origem à geração de código fonte a ser distribuído por cada projecto da Solução EDM
•Possibilidade de geração do modelo físico de suporte à persistência
• Estrutura necessária à representação da solução, dividida em projectos com “especialidades” distintas
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . . .
Objectivos Gerais
1
3D
•Tipos de domínio
Rtti•Obj
ectos de domínio e acesso a dados
Entity
•Primitivas de CRUD; processos de negócio; permissões de execução
Services
•Publicação de implementações do projecto Services na forma de webservices
Ws
•Verificação, através de testes unitários, das operações implementadas no projecto Services
UnitTest
• Estrutura da Solução EDM
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . . .
• FutureView opera no sector do retalho e adquire lojas físicas em zonas de elevada concentração populacional
2
Loja ALoja BLoja CLoja D
FutureView
• Especificidade do negócio implica investimento inicial elevado na expansão do negócio
Problema
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . .
Administração
Registo
VendaProcessos
• Com vista à redução de custos, a FutureView passou a operar também em regime de parcerias num modelo e-commerce
2
Problema
Parceiro A
Parceiro n
InternetFutureView ...
• Opção por solução que dê suporte aos seus processos de negócio
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . .
2
Modelo Entidade Associação
Customer
Individual Business
IS-A
LastPasswords Contacts
ContactLastPassword
OrderHeader OrderItem
Orders
Items
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . .
Category SKU
Has
2
Modelo Entidade Associação
Contact
Address
Billing Shipping Customer Address
Phone
Fax Mobile Landline
• Modelação da hierarquia da entidade Contact
IS-A IS-A
IS-A
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . .
3
Sincronização
Base de Dados
Internet
Gerador
EDM.FoundationClasses.dll
Validação Segurança ORM Excepções
Serviços Testes Unitários Entidades TiposWeb
ServicesModelo
Físico
…NHibernate
SGBD
Solução EDM
.NET Framework 3.5
3D(Dicionário de Dados)
Transformação 1
Transformação n
Pipeline de geração
Arquitectura
. . . . > Caso Prático > Arquitectura > Codificação e Geração > Observação > . . . . .
4
Demo• Codificação no dicionário de dados de:• Tipos de domínio• Suporte à persistência• Entidades e seus campos• Processos de negócio
. . . . > Arquitectura > Codificação e Geração > Observação de Resultados > . . . . . .
4
Processos de Negócio• Protótipo de operação a ser exposta pela solução
Validação de parâmetros
Execução do processo
Validação do retorno
Component A
Process A1
Process A2
Component B
Process B1
Process B2
Business ProcessParâmetros Retorno
• Garantia de validação de parâmetros e retorno respeitando as restrições de domínio
. . . . > Arquitectura > Codificação e Geração > Observação de Resultados > . . . . . .
4
Modelo de Segurança• Exigência de permissão na execução de processos de negócio e operações CRUD sobre entidades com base em RBAC
. . . . > Arquitectura > Codificação e Geração > Observação de Resultados > . . . . . .
Component X
Process A1
Process A2
Entity Y
Create
Read
Update
Delete
Internet
Acesso a A1Acesso a
Create de Y
Exigência da permissão “XA1”
Exigência da permissão “YCreate”
4
Relações 1 - 1• Relações de herança entre as entidades
A
B C
D
<entity type=“abstract" name=“A"> <fields> . . . </fields></entity>
<entity type=“dependent” name=“B“ baseEntity=“A"> <fields> . . . </fields></entity>
<entity type=“abstractdependent" name=“C“ baseEntity=“A"> <fields> . . . </fields></entity>
<entity type=“dependent" name=“D“ baseEntity=“C"> <fields> . . . </fields></entity>
E
<entity type=“base" name=“E"> <fields> . . . </fields></entity>
. . . . > Arquitectura > Codificação e Geração > Observação de Resultados > . . . . . .
Relações 1 - 1• Representação em object model corresponde à herança entre classes
• Em modelo relacional representam-se numa única relação
TabelaA ( a1, a2, b1, b2, c1, c2, d1, d2 )
Campos de A
Campos de B
Campos de C
Campos de D
4. . . . > Arquitectura > Codificação e Geração > Observação de Resultados > . . . . . .
Relações 1 – n e n - 1• Diferentes materializações em object model e modelo relacional
BA
relA
…
A
…
B*_relA
<relation type=“OneToMany" name=“relA" oneEntity=“A" manyEntity=“B“ inverse=“false” minOccurs=“1" maxOccurs =“unbounded" nillable=“false"></relation>
“true“
1
A…
A
…
B
Object Model Modelo Relacional
4. . . . > Arquitectura > Codificação e Geração > Observação de Resultados > . . . . . .
Relações n – n• Necessária a criação de uma entidade associativa
<relation type=“ManyToMany" entityName=“AB“ minOccurs=“1" maxOccurs =“unbounded“> <entity name=“A" nillable=“false“ inverse=“false" relationName =“As“> <entity name=“B" nillable=“false“ inverse=“false" relationName =“Bs“></relation>
…
A
…
B
Object Model Modelo Relacional
BA AB
11
** …
B
_Bs
B
…
A
_As
A
…
AB
AB
“true““true“
4. . . . > Arquitectura > Codificação e Geração > Observação de Resultados > . . . . . .
Demo• Codificação no dicionário de dados de:• Relações entre entidades
• Sincronização do 3D com a Solução EDM• Geração do script de construção do modelo físico
4. . . . > Arquitectura > Codificação e Geração > Observação de Resultados > . . . . . .
5
Sincronização
Base de Dados
Internet
Gerador
EDM.FoundationClasses.dll
Validação Segurança ORM Excepções
Serviços Testes Unitários Entidades TiposWeb
ServicesModelo
Físico
…NHibernate
SGBD
Solução EDM
.NET Framework 3.5
3D(Dicionário de Dados)
Transformação 1
Transformação n
Pipeline de geração
Arquitectura
Observação de Resultados
Administração
Registo
Venda
Processos
6
ProblemaParceiro A
Parceiro n
InternetFutureView ...
Conclusões
Modelo Entidade AssociaçãoCustomer
Individual Business
IS-A
LastPasswords Contacts
LastPassword
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . .
Contact
Address
Billing Shipping Customer Address
Phone
Fax Mobile Landline
IS-A IS-A
IS-A
6
2
Modelo Entidade Associação
Contact
Address
Billing Shipping Customer Address
Phone
Fax Mobile Landline
• Modelação da hierarquia da entidade Contact
IS-A IS-A
IS-A
Introdução > Caso Prático > Arquitectura > Codificação e Geração > . . . . . .
7Conclusões
1. É sustentável ter um desenvolvimento baseado em dicionário de dados.
2. Há um efectivo ganho de eficiência e eficácia no processo de desenvolvimento
3. O EDM não é apropriado a todo tipo de projectos.