CAPSI 2004
Painel "Desenvolvimento Rápido Baseado em Modelos"
Desenvolvimento rápido e rigoroso
de aplicações: visão e desafios
João Pascoal Faria
(FEUP / INESC-Porto)
([email protected], www.fe.up.pt/~jpf )
4 de Novembro de 2004
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Desenvolvimento rápido e rigoroso

Especificar e verificar é quase tudo, o resto são detalhes de implementação e
optimização tratados por ferramentas e especialistas sub-contratados

Falar muito da linguagem do negócio e pouco da linguagem da tecnologia

Subir os níveis de abstracção, economia de expressão, rigor e reutilização

Objectivos:
• Combinar modelos visuais, modelos formais, modelos verificáveis, modelos executáveis (DSL’s,
OCL, XT-UML, UML, ...) para suportar um desenvolvimento rápido e rigoroso de aplicações
empresariais (tipicamente)

Áreas de investigação:
•
•
•
•
•
•

Engenharia de Software
Sistemas de Informação
Combinação de métodos formais com métodos tradicionais
Model-driven development
Geração e verificação automática de código
...
Detalhes:
• http://www.fe.up.pt/~jpf/talks/CAPSI2004.ppt
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Background Pessoal (1)

Desenvolvimento e manutenção de ferramenta de
desenvolvimento rápido de aplicações
• SAGA – Sistema Assistido de Geração e Gestão de Aplicações
• INESC – Porto, desde 1989
• Usada no desenvolvimento e manutenção do pacote SIGMA –
Sistema Integrado de Gestão Municipal e Autárquico
• Ambiente integrado de desenvolvimento e execução
• Aplicações a duas camadas, baseadas em tabelas (BD) e vistas
interactivas (formulários e relatórios)
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Background Pessoal (2)

Definição e gestão de vistas interactivas (formulários e
relatórios)
• Definição declarativa, fortemente estruturada e independente de
plataforma, totalmente armazenada em repositório relacional
• Expressões usadas só para definir
-
dados e propriedades calculados, incondicional ou condicionalmente
validações
listas de valores admissíveis
valores por defeito
triggers evento-acção
macro-comandos (associados a botões e/ou opções de menus)
• Gestão automática de vistas interactivas
- mapeamento para a base de dados
- determinação automática de condições de junção
- propagação automática de actualizações
- navegação nas vistas
- relações master-detail
- relações lookup-select
- validações nas vistas (com transacções e undo nas vistas)
- dados calculados nas vistas (paradigma de folha de cálculo)
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Usar modelos visuais, formais,
executáveis e traduzíveis

Modelação visual (semi-formal) em UML

Modelação formal com OCL
• Enriquecimento de modelos visuais em UML com
especificações formais de invariantes, pré-condições e póscondições em OCL

Elaboração de modelos executáveis e traduzíveis
em UML executável, XTUML por exemplo
• Enriquecimento de modelos visuais em UML com
especificações de acções em linguagem de alto nível

Verificação e validação baseada em modelos
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Combinar linguagens genéricas com linguagens
especializadas para vencer a barreira de complexidade
rapidez de
desenvolvimento
linguagem
genérica
várias linguagens
especializadas "em
cima" de uma
linguagem genérica
(VB, Java,
UML, ...)
linguagem
especializada
(4GL, PL/SQL, DSLs,
...),
barreira de
complexidade
complexidade
do problema
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Combinar linguagens genéricas com linguagens
especializadas para vencer a barreira de complexidade
linguagem
especializada
tecnologia
(ex: Crystal Reports)
domínio de
especialização
especificação
implementação
negócio
(ex: apólices)
componentes
reutilizáveis
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Combinar linguagens genéricas com linguagens
especializadas para vencer a barreira de complexidade
linguagem
especializada
formas de expressão
propriedades,
atributos
(XML, formulários,
...)
expressões,
fórmulas, código
(OCL, Java, C#, ...)
diagramas,
esquemas
(UML, ...)
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Dos modelos de processos de negócio aos
modelos de casos de utilização do sistema
documento
do negócio
Consulta externa: do pedido até à efectivação
Médico
Marcar
Consulta
Funcionário
Administrativo
sistema ou
sub-sistema
Manual
SGH
actor interno
Observar
Doente
EPR
Registar
Dados
Clínicos
Prescrever
Terapêutica
Admitir
Doente
Carimbar
Prescrição
EPR
SGH
Registar Dados
Clínicos
Marcar
Consulta
Prescrever
Terapêutica
Prescrição
Médico
processo de
negócio
Admitir
Doente
Func. Admin.
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Como mapear os diagramas de casos
de utilização para a implementação
Diagramas de casos de uso
Actor
(Sub)Pacote de casos de uso
Caso de uso
Actor – caso de uso
Estrutura de menus e permissões de acesso
Grupo de utilizadores / Role
(Sub)Menu
Opção de menu (se aplicação bem desenhada!)
Permissão de acesso
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Como mapear a descrição detalhada
de um caso de utilização
Descrição breve, pré-condições, póscondições, pressupostos, ...
Cenários / fluxos de eventos particulares
(diagramas de sequência)
Manual do utilizador, ajuda on-line
Instruções passo a passo no manual do utilizador
Wizards, assistentes inteligentes
Casos de teste
Todos os fluxos de eventos possíveis
(diagrama de actividades)
Use Case Controller
(ex: Apache struts)
Diagrama de navegação, storyboard
(estados da interface, eventos, transições)
Imagens / esboços / protótipos da
interface com o utilizador
Componentes da interface com o utilizador
Exemplos no manual do utilizador
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Representação de conceitos do
negócio no modelo de domínio
objectos, entidades, eventos (c/ dados)
do negócio
classes,
atributos,
relações
ciclos de vida
restrições e regras do negócio
transacções/serviços do negócio
estado interno e
comportamento
do sistema
invariantes (OCL)
operações,
pré e pós-condições (OCL)
triggers evento-condição-acção
(OCL?)
tipos de dados
(atributos de classes,
parâmetros de operações, ...)
estrutura de documentos do
negócio
(podem ser parâmetros de operações)
mapear
tipos (classes?)
tipos (classes?),
atributos,
invariantes
(elementos derivados,
OCL?)
inputs e
outputs
do sistema,
vistas
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Relação entre modelo de domínio e
modelo de casos de uso





Formalizar pré e pós-condições de casos de uso com base no
modelo de domínio (parte que modela estado do sistema)
Relacionar casos de uso com transacções/serviços no
modelo de domínio
Acrescentar ao modelo de domínio operações de ajuda à
interface (após desenho mais detalhado)
Relacionar componentes da interface com documentos do
negócio cuja estrutura é descrita no modelo de domínio
Execuções de casos de utilização são eventos nos ciclos de
vida dos objectos do negócio
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Do modelo de domínio (parte de estado do
sistema) à implementação

Desenho: refinar modelo de domínio com especificações executáveis do
corpo/algoritmo de operações e acções, em linguagem de acções de alto nível
(UML action language)
• Resulta modelo de domínio executável

Teste: testar o modelo de domínio executável antes de gerar código final

Implementação: mapeamento automático objecto-relacional

Implementação: gerar código automaticamente a partir do modelo de domínio


Implementação: manutenção automática de restrições, dados derivados e
triggers
Implementação: exposição automática em API ou web services
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Implementação de documentos do
negócio e componentes de interface


Documentos: especificação da estrutura e restrições em XML
Scheme
Componentes de interface: especificação declarativa e altamente
estruturada em linguagem de descrição de interfaces baseada em
XML (UIML, XUL, etc.)
• linguagem específica de domínio
• estrutura, comportamento, estilo, layout, mapeamento para objectos visuais
da plataforma, mapeamento para fontes de dados, ...
• frequentemente para edição ou visualização de documentos do negócio
(formulários, relatórios, folhas de cálculo, documentos semi-
estruturados)

Edição off-line automática

Geração automática de ajudas ao utilizador

Mapeamentos automáticos
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Especificar por exemplos


Exemplo = caso particular = caso de teste = cenário
Obter conjunto suficiente de exemplos que permitem
inferir a regra geral
• 1, 4, ... (o que vem a seguir?)

Generalizar

Verificar consistência entre exemplos e a generalização


Verificar se os exemplos cobrem a especificação e, se
necessário, acrescentar outros
Apoiar por ferramentas
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Especificar por regras gerais

Colocação de professores (no final da colocação):
• Um professor não pode ficar por colocar quando uma escola por ele
pretendida tem vaga
• Um professor não pode ficar por colocar numa escola por ele pretendida
(ficando por colocar, ou ficando colocado numa escola em posição inferior na
sua lista de preferências), tendo sido colocado nessa escola um professor em
posição inferior no "ranking"
• Um professor que já tinha ligar assegurado numa escola e pretende mudar de
escola, não pode ficar por colocar (nem que seja na escola original)

São regras do negócio

Apoio de ferramentas:
• exprimir as regras formalmente (OCL?)
• analisar as regras: detectar conflitos e ambiguidade (determinam uma e uma
só solução?)
• analisar algoritmo: demonstrar que satisfaz as regras gerais
• analisar implementação: demonstrar que implementa o algoritmo
• testar o algoritmo (usando especificação executável): gerar e executar casos
de teste
• testar a implementação: gerar e executar casos de teste
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Referências


"SAGA - Uma ferramenta interactiva para o desenvolvimento expedito e fácil
manutenção de aplicações de bases de dados", João Pascoal Faria e João Vasco
Ranito, Proceedings do ENDIEL’91, ST2 - Indústrias do Software e da Informação,
páginas 33-40, Lisboa, Portugal, Junho de 1991
"Aspectos Tecnológicos do SIGMA e do Projecto de Informatização Municipal", João
Pascoal Faria, Mário Jorge Leitão, José Manuel Moreira, António Vilela Bouça,
Informação e Informática - Revista do Instituto de Informática, Ministério das
Finanças (15), páginas 40-46, 1995
Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004
‹#›
Download

Desenvolvimento rápido e rigoroso de aplicações