1 desenvolvimento rápido e rigoroso de aplicações, joão pascoal faria, capsi 2004...
Post on 17-Apr-2015
104 Views
Preview:
TRANSCRIPT
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)(jpf@fe.up.pt, www.fe.up.pt/~jpf )
4 de Novembro de 2004
CAPSI 2004Painel "Desenvolvimento Rápido Baseado em
Modelos"
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
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)
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)
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
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
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
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
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
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
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
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?)
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
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
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
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
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
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
top related