A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvimento rápido e rigoroso de aplicações: visão e desafios

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento rápido e rigoroso de aplicações: visão e desafios"— Transcrição da apresentação:

1 Desenvolvimento rápido e rigoroso de aplicações: visão e desafios
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) ) 4 de Novembro de 2004

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

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

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

5 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, 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

6 rapidez de desenvolvimento
Combinar linguagens genéricas com linguagens especializadas para vencer a barreira de complexidade linguagem especializada (4GL, PL/SQL, DSLs, ...), barreira de complexidade complexidade do problema rapidez de desenvolvimento linguagem genérica (VB, Java, UML, ...) várias linguagens especializadas "em cima" de uma linguagem genérica

7 domínio de especialização
Combinar linguagens genéricas com linguagens especializadas para vencer a barreira de complexidade linguagem especializada negócio (ex: apólices) tecnologia (ex: Crystal Reports) domínio de especialização especificação implementação componentes reutilizáveis

8 linguagem especializada
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

9 Consulta externa: do pedido até à efectivação
Dos modelos de processos de negócio aos modelos de casos de utilização do sistema Médico Funcionário Administrativo Marcar Consulta Admitir Doente Observar Doente Prescrever Terapêutica Carimbar Prescrição Consulta externa: do pedido até à efectivação Manual EPR actor interno SGH 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êutica Marcar Consulta Admitir Doente sistema ou sub-sistema

10 Como mapear os diagramas de casos de utilização para a implementação
Diagramas de casos de uso Estrutura de menus e permissões de acesso Actor Grupo de utilizadores / Role (Sub)Pacote de casos de uso (Sub)Menu Caso de uso Opção de menu (se aplicação bem desenhada!) Actor – caso de uso Permissão de acesso

11 Como mapear a descrição detalhada de um caso de utilização
Descrição breve, pré-condições, pós-condições, pressupostos, ... Manual do utilizador, ajuda on-line Instruções passo a passo no manual do utilizador Wizards, assistentes inteligentes Casos de teste Cenários / fluxos de eventos particulares (diagramas de sequência) 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

12 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 invariantes (OCL) estado interno e comportamento do sistema transacções/serviços do negócio operações, pré e pós-condições (OCL) triggers evento-condição-acção (OCL?) mapear (elementos derivados, OCL?) tipos de dados (atributos de classes, parâmetros de operações, ...) tipos (classes?) estrutura de documentos do negócio (podem ser parâmetros de operações) tipos (classes?), atributos, invariantes inputs e outputs do sistema, vistas

13 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

14 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

15 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

16 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

17 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

18 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


Carregar ppt "Desenvolvimento rápido e rigoroso de aplicações: visão e desafios"

Apresentações semelhantes


Anúncios Google