1. Definição Como fazer determinada tarefa. Flexibiliza o "fazer". É um tipo de tópico composto por uma rotina de programação independente descrita em LDC. Para pessoas: definição de rotinas Para equipamentos: programas, scripts etc Um componente é um tópico, podendo ser consultado com as mesmas características. Objetivo: utilizar o mínimo de componentes para o máximo de possibilidades Qualquer solução pode ser constituída por diversos componentes, que já são construídos para serem utilizados em diversas soluções. Componentes são, preferencialmente, desenvolvidos em oficinas. Cada componente é documentado e tem interface para testar em ambiente WEB, onde possa ser indicado que entradas deve utilizar e que saídas deve gerar. Um componente pode ser constituído por vários componentes. Um componente pode ser visto por diversos profissionais de formas diferentes 2. Níveis de detalhamento Pode ser visto em diversos níveis de detalhamento. Um componente é um tópico, podendo ser consultado da mesma forma. Em cada componente temos os seguintes elementos: Entrada- EntrarDados (telas, evento, autorização) => sistema recebe dados Saída- ConsultarDados (opções de escolha, autorização) => usuário recebe resultado da consulta Processamento- Usuário conhece o que é feito, como é feito é invisível neste nívelProcessarArmazenarDados (evento, regras, autorização) =>transformações nos dados,dados armazenados no sistema 3. Entrada, Saída e Processamento Detalhando estes elementos temos para cada um deles: Entrada Saída Processamento Dados do sistemaEm níveis mais externos: definidosEm níveis mais internos: como são tratadosExemplos de detalhamento: definir telas definir eventos atribuir autorização definir opções de escolha (definir menus e outros) definir consulta definir regras 4. Componentes Internos Criar Índice (diretórios, filtros, minutas) => mapa do sítio, índce Exibir links (diretórios, filtro) => links existentes componente (SQL) => XML componente (CSV) => XML componente (XML) => CSV componente (XML, XSL, CSS) => HTML 5. Componentes Externos Componentes do Google: como inseri-los em uma página Agenda Yahoo! Design Pattern Library 6. Abordagem Um componente transforma um ou mais textos em outro(s) texto(s) transformar (texto1, texto2) => texto3O componente transformar tem como entrada "texto1, texto2" e como saída "texto3" Envia texto (atualizar bd= envia SQL, consultar BD= envia SQL) Recebe texto Textos utilizados para entrada, saída e componente são strings, podendo ser scripts: JavaScript, Shell, AWK, SQL, XML, XSL, CSS, CSV, HTML etc. 7. Ações envolvidas (5w2h) Ações O que Como Quem Onde Quando preparar componente gerar código ou texto executável | programar | gerar código | programador, | especialista | gerador de componente | editor de textos | servidor | navegador antes de executar componente executar componente | código | LDC | matriz de transições e ações executar Sistema operacional | servidor | navegador quando algum gatilho disparar interpretar Interpretador | simular | emular Simulador preparar > gatilho > executar 8. Fábrica de componentes A partir de algorítmos bem definidos contruir componente em linguagem específica. Componentes simples Componentes agregados Interfaces entrada de dados consulta conhecimento Analista de negócios TI (parametrização e configurações) usabilidade (facilitar uso de quem opera parte específica) componentes gráficos - AlgoritmoProlog (texto) => desenho(vetorial) um aplicativo pode ser usado como componente. Às vezes será necessário desenvolver ou adaptar interfaces para importar e exportar dados. 9. Achar, melhorar ou desenvolver Componentes necessários (achar, melhorar ou desenvolver) * shell: Consultar (QUERY_STRING, RegraSQL.csv) => resultado consulta 1. URLEncode2ASCII (QUERY_STRING) => entrada 2. Dado2MaiusculaSemAcento (entrada) => entrada * formato: "nome1=dado1&nome2=dado2" * transformar dados em maiúsculas * tirar acentos e Ç 3. AWK: MontarTexto (entrada, RegraSQL.csv) => SQL 4. ASCII2URLEncode (SQL) => SQLWeb # necessário? 5. ConsultarBD (SQLWeb) => Resultado.xml * ambiente Apache + Java + Apache * JSP: # está funcionando http://10.32.0.18/prod/cvm/run/runSql.jsp?query=sql&tit=titulo * consultar com SQL grande (> 4kB) 6. Exibir (Resultado.xml, ...xsl, ...csv) => resultado consulta * Transformações desejáveis: 1. desenhar (texto genérico) => desenho simples (retângulos ou elipses com texto e setas entre figuras) 2. desenhar (BNF) => Diagrama Sintático - Diagrama de Sintaxe (gráfico) 3. desenhar (BNF) => Autômatos Finitos (gráfico, sem semântica) 4. desenhar (Matriz de Transições, Matriz de Acoes) => Autômato Finito (gráfico) 5. transformar (expressao regular) => BNF 6. transformar (BNF) => expressao regular 7. transformar (BNF) => Matriz de Transições 8. transformar (Matriz de Transições) => BNF 9. NaoDeterministico2Deterministico (Matriz de Transições, Matriz de Acoes) => (Matriz de Transições, Matriz de Acoes) - (transformar Autômato Finito não determinístico em determinístico) 10. simplificar (Matriz de Transições, Matriz de Acoes) => (Matriz de Transições, Matriz de Ações) * browser (menu.xml, menu.xsl) => menu.htm # menu.xml=ok menu.xsl= falta consertar * CSV2HTML.cgi (.csv) => tabela.html * browser (.xml, .xsl) => tabelas.html (definir .xsl) * xalan (arq.xml, .xsl) => arq.csv * analisador sintático: .html, .xml, .xsl, .css * mapa do site (inclusive parcial, a partir de determinada página) feito automaticamente. 10. Site w - serviço Webb - baixar e instalarc - cadastrar Existentes ConverterPdf2Doc - comparar Editar Imagem Salvar arquivo Obter índice - títulos das páginas em ordem alfabética com link para a página relacionamentos entre páginas - para cada página: quais ela chama, quais a chamam buscar palavras em arquivos em conjunto de diretórios Interface para conhecimento