1 desenvolvimento rápido e rigoroso de aplicações, joão pascoal faria, capsi 2004...

18
1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 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 CAPSI 2004 Painel "Desenvolvimento Rápido Baseado em Modelos"

Upload: internet

Post on 17-Apr-2015

105 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

1Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004

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

CAPSI 2004Painel "Desenvolvimento Rápido Baseado em

Modelos"

Page 2: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

2Desenvolvimento 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

Page 3: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

3Desenvolvimento 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)

Page 4: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

4Desenvolvimento 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)

Page 5: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

5Desenvolvimento 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ós-condições em OCL

Elaboração de modelos executáveis e traduzíveis em UML executável, X

TUML 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

Page 6: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

6Desenvolvimento 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

complexidade do problema

rapidez de desenvolvime

nto

linguagem genérica(VB, Java, UML, ...)

linguagem especializada

(4GL, PL/SQL, DSLs, ...),

barreira de complexidade

várias linguagens especializadas "em cima" de uma linguagem genérica

Page 7: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

7Desenvolvimento 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

negócio(ex: apólices)

tecnologia(ex: Crystal Reports)

domínio de especialização

especificação

implementação

componentes reutilizáveis

linguagem especializada

Page 8: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

8Desenvolvimento 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

diagramas, esquemas(UML, ...)

propriedades, atributos

(XML, formulários, ...)

expressões,fórmulas,

código(OCL, Java,

C#, ...)

formas de expressão

Page 9: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

9Desenvolvimento 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

Médico

FuncionárioAdministrativo

Marcar Consulta

Admitir Doente

Observar

Doente

Prescrever Terapêutic

a

Carimbar Prescrição

Consulta externa: do pedido até à efectivaçãoManua

lEPRactor

internoSGH

Prescrição

processo de negócio

Registar Dados

Clínicos

documento do negócio

SGH

Médico

Func. Admin.

EPR

Registar Dados Clínicos

Prescrever Terapêutic

a

Marcar Consulta

Admitir Doente

sistema ou sub-sistema

Page 10: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

10Desenvolvimento 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

Actor Grupo de utilizadores / Role

(Sub)Pacote de casos de uso (Sub)Menu

Diagramas de casos de uso Estrutura de menus e permissões de acesso

Caso de uso Opção de menu (se aplicação bem desenhada!)

Actor – caso de uso Permissão de acesso

Page 11: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

11Desenvolvimento 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

Diagrama de navegação, storyboard

(estados da interface, eventos, transições)

Use Case Controller(ex: Apache struts)

Cenários / fluxos de eventos particulares(diagramas de sequência)

Instruções passo a passo no manual do utilizador

Wizards, assistentes inteligentes

Casos de teste

Descrição breve, pré-condições, pós-condições,

pressupostos, ...

Manual do utilizador, ajuda on-line

Imagens / esboços / protótipos da interface com o utilizador

Todos os fluxos de eventos possíveis(diagrama de actividades)

Componentes da interface com o utilizador

Exemplos no manual do utilizador

Page 12: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

12Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004

Representação de conceitos do negócio no modelo de domínioobjectos, entidades, eventos (c/

dados) do negócio

estrutura de documentos do negócio

(podem ser parâmetros de operações)

classes,atributos,relações

tipos de dados(atributos de classes,

parâmetros de operações, ...)

invariantes (OCL)restrições e regras do negócio

transacções/serviços do negócio

operações,pré e pós-condições (OCL)

tipos (classes?)

tipos (classes?),atributos, invariantes

estado interno e comportamento do sistema

inputs e outputsdo sistema,vistas

triggers evento-condição-acção (OCL?)

ciclos de vida

mapear(elementos derivados,

OCL?)

Page 13: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

13Desenvolvimento 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

Page 14: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

14Desenvolvimento 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

Page 15: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

15Desenvolvimento 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

Page 16: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

16Desenvolvimento 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

Page 17: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

17Desenvolvimento 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

Page 18: 1 Desenvolvimento rápido e rigoroso de aplicações, João Pascoal Faria, CAPSI 2004 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios João

18Desenvolvimento 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