Guia Prático para Utilização do Ambiente Odyssey
Transcrição
Guia Prático para Utilização do Ambiente Odyssey
Guia Prático para Utilização do Ambiente Odyssey http://reuse.cos.ufrj.br/odyssey Índice 1. Introdução.......................................................................................................... 4 1.1. Ferramentas de Apoio ................................................................................ 6 2. Acessando o Ambiente..................................................................................... 8 2.1. Página do Odyssey..................................................................................... 8 2.2. Versão demonstração do Odyssey ........................................................... 9 2.3. Odyssey Login .......................................................................................... 10 2.4. Definição do Mecanismo de Armazenamento........................................ 11 2.5. Engenharia de Domínio x Engenharia de Aplicação ............................. 13 3. Engenharia de domínio................................................................................... 14 3.1. Criação de um domínio ............................................................................ 15 3.2. Descrição do Domínio .............................................................................. 17 3.3. Odyssey-Search........................................................................................ 18 3.4. Trabalhando com o Domínio ................................................................... 21 3.5. Visão Geral do Domínio ........................................................................... 22 3.6. Diagramação do Odyssey ........................................................................ 23 3.7. Diagrama de Contexto.............................................................................. 24 3.8. Diagrama de Features .............................................................................. 29 3.9. Diagrama de Negócios ............................................................................. 32 3.10. Diagrama de Casos de Uso.................................................................... 34 3.11. Diagrama Estrutural................................................................................ 35 3.12. Visão de Componente ............................................................................ 36 3.12. Criação de um processo de desenvolvimento de software ................ 43 Modelagem de processo ................................................................................ 43 2 Instanciação do Processo .............................................................................. 47 Acompanhamento do Processo ..................................................................... 50 Monitoramento de Processos......................................................................... 50 4. Engenharia de Aplicação................................................................................ 52 4.1. Criando uma Aplicação ............................................................................ 52 4.2. Instanciação da aplicação........................................................................ 54 4.3. Contextos da Aplicação ........................................................................... 55 4.4. Seleção de Componentes ........................................................................ 56 4.5. Diagramadores.......................................................................................... 57 Diagrama de Contexto ................................................................................... 58 Diagrama de Casos de Uso ........................................................................... 58 Diagrama de Features.................................................................................... 59 Diagrama Estrutural ....................................................................................... 59 Diagrama de Negócios................................................................................... 59 4.6. Component View....................................................................................... 59 5. Considerações Finais ..................................................................................... 62 6. Referências ...................................................................................................... 63 3 1. Introdução O Odyssey é um ambiente de suporte ao desenvolvimento baseado em reutilização a partir de modelos de domínio que pode auxiliar na utilização efetiva de uma estratégia de reutilização durante todo o processo de desenvolvimento de software, fornecendo métodos, ferramentas e procedimentos que são adequados para a especificação de modelos e aplicações de um domínio específico. Chamamos de domínio uma família de sistemas com características semelhantes, pertencentes a uma mesma área de aplicação. O principal objetivo do projeto Odyssey é prover mecanismos baseados em reutilização para o desenvolvimento de software, servindo como um arcabouço onde modelos conceituais, arquiteturas de software, padrões de projeto e modelos de implementação são especificados para domínios de aplicação previamente selecionados. Os modelos de domínio são especificados e posteriormente evoluídos segundo as atividades de um processo de Engenharia de Domínio, denominando Odyssey-DE (Para detalhes sobre o processo veja em [BRAGA,2000]). A partir desses modelos, aplicações específicas podem ser desenvolvidas através de um processo de Engenharia de Aplicação, denominado Odyssey-AE (Para detalhes veja em [MILER, 2000]). As atividades desses processos são apoiadas por um conjunto de ferramentas, dentre elas, ferramentas para aquisição de conhecimento, editor de diagramas UML (Unified Modelling Language), navegador e ferramenta de documentação. Os principais usuários são engenheiros de domínio, especialistas do domínio e engenheiros de aplicação responsáveis pelo desenvolvimento de aplicações no domínio. Os engenheiros de domínio e os especialistas utilizam a infraestrutura para especificar e evoluir os conceitos do domínio. Os engenheiros de aplicação utilizam o ambiente para obter conhecimento sobre o domínio e reutilizar este conhecimento na especificação de suas aplicações. O Odyssey foi desenvolvido na linguagem Java e pode utilizar GOA++, também desenvolvido na COPPE/UFRJ (Detalhes sobre o projeto encontram-se em 4 http://www.cos.ufrj.br/~goa), como uma das possibilidades de servidor de objetos persistentes, além de poder utilizar outros mecanismos de armazenamento como JDO, MOR ou serialização, por exemplo. 5 1.1. Ferramentas de Apoio FERRAMENTAS ESTRUTURAIS: As ferramentas estruturais que fazem parte do Odyssey podem ser assim resumidas: • Editor de Diagramas UML (Modelagem de Domínio e de Aplicações) • Navegador Inteligente (Odyssey-SEARCH) ([BRAGA,2000]) • Gerador de Aplicações MOR: Trata-se de um mecanismo transparente de mapeamento objeto-relacional, baseado nos recursos de reflexão e introspecção da linguagem Java. O mecanismo torna possível o armazenamento dos artefatos criados no Odyssey com suporte a ODBC. ORÁCULO: Trata-se de um sistema de críticas para verificação da consistência dos modelos construídos pelo editor de diagramas, segundo as regras de boa-formação da linguagem UML. Apresenta Estrutura Hierárquica, Armazenamento do conjunto de críticas, Configuração de críticas e regras, Geração de Relatórios. FRAMEDOC: Trata-se de um framework para a documentação de componentes reutilizáveis através do uso de hipermídia e padrões. ARES: A ferramenta ARES auxilia a recuperação de modelos de classes da UML a partir de código Java. O modelo extraído pode ser unificado a um modelo existente e exportando tanto para o ambiente de diagramação, como para uma base de dados em Prolog. 6 CHARON: O desenvolvimento de software necessita de um processo que o sistematize, como também um acompanhamento de sua execução, objetivando, entre outras coisas, fornecer informações que permitam a tomada de decisões gerenciais, de acordo com situações detectadas durante sua execução, e controlar o fluxo de trabalho dos engenheiros através da automação do processo. O software responsável por automatizar a execução de processos é conhecido como máquina de processos. OBS: Detalhes sobre cada uma das ferramentas/mecanismos podem ser encontrados em http://reuse.cos.ufrj.br/odyssey. 7 2. Acessando o Ambiente Para que o usuário tenha acesso ao ambiente Odyssey, basta acessar a página do projeto e baixar uma versão atualizada do ambiente. Os detalhes estão a seguir. 2.1. Página do Odyssey Uma versão demo do Odyssey encontra-se disponível através do site do projeto, que se encontra no seguinte endereço: http://reuse.cos.ufrj.br/odyssey Depois de conectado ao site, deve ser selecionada a distribuição “Odyssey”, indicada em vermelho na figura 1 abaixo. Figura 1 – Página do Projeto Odyssey 8 2.2. Versão demonstração do Odyssey Como mencionado na página, para executar o Odyssey via Web, é necessário que o usuário possua Java Web Start. Caso o usuário não o tenha, este poderá ser encontrado no site: http://java.sun.com/products/javawebstart/ Se o usuário já possui o JDK1.4 ou superior, não é necessária a instalação do Java Web Start. A seguir, deve ser selecionada uma versão disponível do ambiente. As versões disponíveis ficam na página de descrição do Odyssey apresentada na figura 2. Figura 2 – Página de Descrição do Odyssey 9 2.3. Odyssey Login A próxima tela é a de login do Odyssey (figura 3). Conforme mostrados abaixo, três campos devem ser preenchidos e selecionados, da seguinte maneira: Name: odyssey Password: odyssey Database: New Base Figura 3 – Tela de Login do Odyssey Depois de preenchidos os campos, a opção Go deve ser selecionada para a efetivação do login. Obs: Esta tela só aparece para algumas versões disponíveis. Caso não apareça, os campos são automaticamente preenchidos e esta tela não é apresentada ao usuário. 10 2.4. Definição do Mecanismo de Armazenamento Depois da efetivação do login, é mostrada a tela para definição do mecanismo de armazenamento (figura 4a). Neste momento, é possível criar uma nova base ou simplesmente usar uma já existente. Para criação de uma nova base, deve ser selecionada a opção Create a new empty base e em seguida apertar o botão Next para prosseguir com o processo. A figura 4b informa que a base está sendo criada, juntamente com uma conta de usuário administrador, com a senha e login padrão do sistema, sendo possível a sua troca pelo usuário. Para concluir o processo, basta clicar no botão Finish. Figura 4a – Mecanismo de Armazenamento Figura 4b - Confirmação da Criação de Nova Base. 11 Para utilizar uma base já existente, deve ser selecionada a opção Open an existent base from, selecione o banco onde se encontra a base, em seguida clique no botão Next para prosseguir com o processo (figura 5a). Na tela seguinte (figura 5b), preencha os campos Odyssey User Name e Odyssey User Password respectivamente com o login e a senha do usuário no banco. Para concluir o processo, basta clicar no botão Finish. Figura 5a – Mecanismo de Armazenamento Figura 5b – Login e senha do usuário no banco 12 2.5. Engenharia de Domínio x Engenharia de Aplicação A próxima tela a aparecer é a tela inicial do Odyssey (figura 6). É nesse ponto que o usuário deverá escolher em trabalhar na Engenharia de Domínio (Odyssey-ED) ou na Engenharia de Aplicação (Odyssey-EA). No Odyssey, a Engenharia de Domínio (ED) enfoca o desenvolvimento de componentes com ênfase na sua reutilização, disponibilizando a automação necessária às etapas a serem seguidas e auxiliando o engenheiro de domínio na especificação do domínio e na criação de componentes que possam ser utilizados em aplicações do domínio de aplicação em questão. A Engenharia de Aplicação (EA) tem como objetivo construir aplicações em um determinado domínio, reutilizando os componentes genéricos já existentes construídos na ED. Aqui, o engenheiro de aplicação verificará e avaliará um domínio existente para identificar a viabilidade de desenvolvimento da aplicação desejada, a qual deve levar em conta as funcionalidades já disponibilizadas no domínio. Portanto, é na EA que os componentes do domínio são efetivamente utilizados na construção de aplicações reais. Além disso, o engenheiro de aplicação é o responsável pelo processo de adaptação dos componentes de aplicação à arquitetura instanciada e pela adição de outros possíveis componentes tecnológicos que possam ser necessários. Assim, o engenheiro de domínio e o especialista têm a possibilidade de utilizar o Odyssey principalmente para especificar e evoluir os conceitos de domínio, enquanto o engenheiro de aplicação utiliza essa infra-estrutura para obter conhecimentos sobre o domínio da aplicação e reutilizar este conhecimento na especificação de sua aplicação. É importante notar que um domínio pode estar relacionado com diversas aplicações. Nas próximas seções tratamos cada um desses contextos separadamente. 13 3. Engenharia de domínio Esta seção é destinada à engenharia de domínio, ou seja, o usuário aqui considerado exerce o papel de um engenheiro de domínio. Abaixo, é mostrada a tela principal do Odyssey (figura 6), onde, a partir desta, o engenheiro de domínio pode criar novos modelos de domínio, modificá-los, utilizar as ferramentas de suporte do ambiente, enfim, realizar as tarefas de acordo com as suas necessidades. Figura 6 – Tela Inicial do Odyssey 14 3.1. Criação de um domínio Portanto, para prosseguir, o usuário precisa escolher se a atividade desejada é criar um domínio ou criar um processo de desenvolvimento de software. Nesta primeira etapa, seguiremos com a escolha da opção de criação de um domínio. Para criação de um domínio, deve ser selecionada a opção file da barra de ferramentas, em seqüência New Domain..., como apresentado na figura 7. Figura 7 – Novo Domínio Na tela apresentada na Figura 8, deverá ser escolhido o tipo de instanciação, que neste caso não será instanciação de um processo, já que estamos tratando da criação de um novo domínio. Portanto, a opção Do not instanciate a process deverá ser escolhida, como indicado na figura 8. Para prosseguir, o usuário deve escolher a opção Next. 15 Figura 8 – Processo de Instanciação 16 3.2. Descrição do Domínio Depois de criado um novo domínio, visualiza-se duas caixas de texto: Name e Description, conforme a figura 9. O campo Name corresponde ao nome do domínio, e pode ser editado, bastando para isso clicar sobre o campo de texto. Além disso, uma descrição do domínio pode ser inserida na caixa de texto Description. Figura 9 – Descrição do Domínio Em seguida aparece uma tela de questionário, para especificação de algumas características do domínio (relacionado a Odyssey-Search), como mostram as figuras 10 e 11 . 17 3.3. Odyssey-Search A Odyssey-Search é um sistema de múltiplos agentes que realizam o armazenamento e a busca por informações de um dado domínio relevantes para a aplicação sendo especificada, e a busca por informações em domínios correlatos ao domínio em questão, pelo engenheiro de domínio. Foi dividida em quatro módulos básicos: módulo de modelagem do usuário, agente de interface (AI), agente de filtragem de informação (AF) e agente de armazenamento e recuperação de informação (AR). A modelagem do usuário é um processo de criação de um perfil de usuário, baseado em seus interesses e hábitos, que auxilia os outros agentes, e que vai sendo modificado durante a navegação. O AI é responsável pela adaptação da interface, de acordo com o perfil do usuário. O AF é responsável pela filtragem da informação, de acordo com as necessidades de informações por parte do usuário, e o AR é responsável pelo armazenamento e busca das informações nos repositórios de dados, lidando de forma transparente com questões como distribuição e heterogeneidade dos repositórios. Uma interação típica de um usuário com o módulo de modelagem do usuário é realizada da seguinte maneira: primeiro, o usuário de registra como um usuário da infra-estrutura Odyssey, figura 5b, e depois da Odyssey-Search através de um questionário (figura 10), onde o usuário tem a possibilidade de especificar as características do domínio criado, indicando o nível de conhecimento em relação aos termos do domínio e também categorias do domínio que sejam de seu interesse. Figura 10 – Questionário – Domain User 18 • Objectives indica o objetivo que o usuário deseja alcançar com a navegação através da Odyssey-Search. Tem como possibilidades: Domain Understanding – conhecimento do domínio em termos de seus conceitos e funcionalidades – ou Application Development – um detalhamento do domínio é de interesse do usuário, já que deseja desenvolver aplicações no domínio. • Expertise Level indica o nível de conhecimento do usuário em relação ao domínio, que pode ser: Low – o conhecimento é mínimo, Medium – conhecimento básico do domínio, ou High – o usuário é especialista no domínio. • KeyWords são palavras-chaves utilizadas pela Odyssey-Search. • Em Interests pode-se também definir as subáreas do domínio, em SubAreas, com a seleção de contextos que são de interesse do usuário. • Em Applications, também pode-se definir as aplicações relacionadas já desenvolvidas no domínio ou similares à aplicação que o usuário deseja desenvolver. Para prosseguir, basta clicar no botão Ok. Figura 11 – Quentionário - Interests 19 Depois desta intervenção inicial, a Odyssey-Search, através de seus agentes, pode agir de maneira autônoma. Com o questionário respondido, o agente tenta associar o novo usuário a um estereótipo já existente. Assim, baseado no estereótipo e nas palavras-chaves, a Odyssey-Search pode mostrar caminhos de navegação que podem ser adequados para o usuário, utilizando as palavras-chaves especificadas pelo usuário, os contextos e aplicações escolhidas com a descrição textual de cada item do domínio nos caminhos da navegação. Assim, muitas vezes são mostradas opções de navegação ao usuário, que pode segui-la ou não. Um exemplo desta sugestão é mostrado na figura 12. Figura 12 – Sugestão explícita de navegação. 20 3.4. Trabalhando com o Domínio Para trabalhar com o novo domínio criado, basta que o usuário clique com o botão direito do mouse sobre o domínio com o qual deseja trabalhar e escolher a opção Model selected element, ou dar duplo clique sobre o nome do domínio, como mostra a figura 13. Caso o usuário deseje remover algum domínio existente, basta clicar sobre o elemento a ser removido, e com o botão direito escolher a opção Remove selected element. Figura 13 – Modelagem do Domínio. 21 3.5. Visão Geral do Domínio A próxima tela a aparecer é mostrada na figura 14. À direita, são mostradas as características e descrições do domínio, preenchidas anteriormente, mas que também podem ser editadas. À esquerda, aparece a árvore de objetos de modelagem semânticos instanciados, como contexto, features, negócios, casos de uso, estrutural e de componente, sobre as quais o engenheiro de domínio irá trabalhar. Figura 14 – Visão Geral do Domínio 22 3.6. Diagramação do Odyssey Para a criação de diagramas, o Odyssey apresenta editores gráficos, que têm como principal objetivo o suporte à criação dos modelos definidos pelo Odyssey-ED/EA. A notação utilizada é similar ao UML, com algumas construções adicionais para suporte ao desenvolvimento de componentes reutilizáveis. A figura 15 apresenta uma das telas de diagramação do Odyssey. À esquerda (destacado) se localiza a árvore de objetos de modelagem semânticos instanciados. À direita é exibido o painel de edição da categoria que atualmente está selecionada na árvore. Se o objeto selecionado for um nó, são apresentados painéis para exibição e edição das propriedades do nó em questão. Se o objeto for um diagrama, é apresentado o desenho dos nós e das arestas contidos naquele diagrama. Na parte superior da janela há a barra de ferramentas do Odyssey, que auxilia o usuário nas tarefas de modelagem, e é sensível ao contexto, ou seja, muda dinamicamente conforme a categoria do item selecionado na árvore. Além disso, para um maior entendimento e concisão, algumas vezes há a divisão de janelas em diferentes abas, mostradas no canto superior esquerdo da tela, com as informações em uma só janela. Figura 15 - Tela de diagramação 23 3.7. Diagrama de Contexto Um diagrama de contexto situa o domínio em relação ao seu escopo, limites, relacionamentos com outros domínios e principais atores envolvidos. O diagrama de contexto evolui de acordo com as mudanças do domínio, sendo seu objetivo principal dar um panorama geral do domínio no contexto da organização. Para criar um diagrama de contexto, deve-se clicar sobre Context View, na área à esquerda da tela, conforme figura 16. Então, aparecerão ícones na barra de ferramentas e o ícone indicado deverá ser selecionado para abrir o diagrama de contexto, onde o usuário irá trabalhar, tendo acesso a uma barra de ferramentas específicas para a realização das tarefas. Figura 16 – Visão do Contexto 24 Com o Diagrama de Contexto aberto, deve ser selecionada a opção Context Diagram para que a barra de ferramentas apareça e o usuário possa utilizá-la, como mostrado na figura17. Figura 17 – Diagrama de Contexto. Através da barra de ferramentas, o usuário é capaz de construir o seu diagrama de contexto, tendo as seguintes opções: Inserir Pacote Inserir Contexto Inserir Feature Externa Inserir Feature de Entidade Inserir Links de Comunicação e Dependências Mostrar funcionalidades Relacionadas Deletar e editar itens dentre outras que podem ser encontradas na barra, para modelagem do diagrama. 25 Ao clicar sobre um item criado no diagrama de contexto, na tela à direita aparecem as características e descrições do item selecionado, podendo ser alteradas pelo usuário, como nome, estereótipo e descrição (figura 18). Para isso, basta selecionar a descrição do item a ser modificada ou colocar o cursor na caixa de texto correspondente. Além de modificar a descrição, para o item selecionado, também há a possibilidade de importar outros elementos e definir os elementos por ele acessados, como é mostrado na figura 19. Figura 18 – Descrição de um Item. 26 Figura 19 – Elementos Importados. A tela de um diagrama de contexto é mostrada na figura 20, com alguns itens criados como exemplo. É interessante notar que estes não só aparecem no diagrama como também na árvore que compõe o Context View. Os itens podem ser criados na árvore diretamente, com o botão direito do mouse, ou dentro do diagrama. Neste último caso, o item criado aparece automaticamente na árvore, como um nó de Context View. 27 Figura 20 – Diagrama de Contexto. Para a visualização da documentação do diagrama de contexto criado ou selecionado e dos itens criados, deve ser selecionada a aba Document’s Visualization. 28 3.8. Diagrama de Features O diagrama de features corresponde às características essenciais do domínio, e representa uma forma de captura da informação do mesmo. Assim, mostra de forma padronizada todos os elementos do domínio. É também onde são representadas todas as particularidades e restrições dos conceitos e funcionalidades do domínio. No diagrama de features pode-se notar a existência de duas visões: Funcional e Conceitual. O modelo funcional mostra as similaridades e diferenças funcionais no domínio, facilitando a busca dessas funcionalidades por parte do usuário. O modelo conceitual descreve os principais conceitos do domínio e o relacionamento entre estes (veja detalhes em [MILER, 2000]). Para a criação de um diagrama de features, o usuário deve seguir basicamente os mesmos passos da criação de uma diagrama de contextos. Conforme a figura 21, clicando sobre Feature Diagram o usuário tem acesso às barras de ferramentas para a construção do diagrama. A descrição das opções da barra pode ser vista deixando o mouse sobre os ícones da mesma. Assim, o usuário pode criar pacotes, entidades externas, dentre outras funcionalidades do domínio. Figura 21 – Diagrama de Features. 29 Caso o usuário crie os itens dentro do diagrama, estes automaticamente aparecem dentro da árvore que compõe a feature, como mostra a figura 22. Figura 22 – Diagrama de Features Porém, a criação de tais itens também pode ser feita fora do diagrama, como mencionado no diagrama de contexto, bastando clicar com o botão direito do mouse sobre a feature e selecionar a opção desejada, como mostrado na figura 23. Figura 23 – Features View. 30 No exemplo das figuras 22 e 23, criou-se um novo pacote e depois uma Entity Feature. Ao clicar sobre um item criado, as respectivas opções aparecem à direita, conforme a figura 24, dando ao usuário a possibilidade de alterar as opções padrão e escolher as mais adequadas ao seu trabalho. As abas superiores também apresentam opções adicionais ao usuário, onde através delas pode-se visualizar o padrão de domínio de um componente essencial. As características correspondentes a uma Feature selecionada são mostradas na figura 24. É no padrão de domínio onde estão explicitados os relacionamentos entre os componentes, implementando o conceito de rastreabilidade, ou seja, definição de como se dá o relacionamento entre diversos modelos descritos no Odyssey (para mais detalhes ver em [BRAGA, 2000]). Figura 24 – Feature do Item Selecionado. 31 3.9. Diagrama de Negócios Nos Diagramas de Negócios são modeladas as associações, multiplicidades e navegações entre os tipos de negócio, que são usadas na geração dos componentes de negócio (veja detalhes em [TEIXEIRA, 2003]). O processo de criação de um diagrama de negócios é o mesmo dos anteriores. Como mostra a figura 25, clicando sobre Business Type Diagram, a barra de ferramentas aparece para que o usuário construa seu diagrama. Com o botão direito do mouse sobre Business View (que pode ter seu nome alterado caso o usuário deseje) aparece a opção de criar um novo tipo de negócios, como mostrado abaixo. As características do tipo de negócios e de seus atributos podem ser alteradas pela seleção das abas na tela à direita. Um novo tipo de negócios também pode ser criado dentro do diagrama, além de outros itens. Assim, este aparece automaticamente na árvore do Business View. Figura 25 – Tipo de Negócio. 32 A janela de edição (figura 25) de um tipo de negócio possui todos os campos necessários a sua completa especificação. Dentre eles, podemos citar o campo plural, as dependências de identificação única e os parâmetros de criação. Para editarmos os atributos de um tipo de negócio, utilizamos a janela vista na figura 26, onde definimos seu nome e tipo. Além disso, podemos definí-los como chave de negócio ou se eles possuem parâmetros. Figura 26 – Atributos de um tipo de negócio. 33 3.10. Diagrama de Casos de Uso Um diagrama de casos de uso é utilizado para representar o conhecimento no domínio. Sua representação é similar a representação deste tipo de diagramas em UML. Dentro de Use Case View pode-se criar um novo pacote, ator, um novo caso de uso ou um novo diagrama de caso de uso, através dos ícones na barra de ferramentas ou clicando com o botão direito do mouse sobre Use Case View, como mostrado na figura 27. Ao selecionar a opção de criação de um novo diagrama, a barra de tarefas é montada com as funcionalidades específicas para este tipo de diagrama. Figura 27 – Visão de um caso de uso. 34 3.11. Diagrama Estrutural O diagrama estrutural, como o próprio nome já diz, fornece uma visão estrutural do sistema, sendo representado basicamente pelos diagramas de classes, onde as classes detalham seus atributos e métodos. A criação de um diagrama estrutural também segue os modelos anteriores. A criação de um pacote, de uma nova classe ou um diagrama de classes pode ser feita clicando com o botão direito do mouse sobre o nome da Structural View, ou pelos ícones na barra de ferramentas, como mostra a figura 28. A construção do diagrama é feita como nos diagramas anteriores, ou seja, clicando sobre Structural View, a barra de ferramentas com os itens disponíveis aparece para que o usuário construa o diagrama. Figura 28 – Visão Estrutural. 35 3.12. Visão de Componente A visão de componentes é o local onde os componentes de software são especificados e desenvolvidos para montar a arquitetura do software. Um componente existe sob duas formas distintas: • Em forma de Especificação: As especificações de componentes, descritas independentes de tecnologia, representam um conjunto de modelos, documentos e diagramas que explicam como os serviços do componente devem ser atendidos na arquitetura. • Em forma de Implementação: As implementações de componentes são as possíveis realizações para as especificações de componentes, oferecidas em termos de algoritmos e elementos de tecnologias. Todas as informações que entram ou saem de um componente devem passar pelas suas interfaces, as quais são formadas por um conjunto de operações seguidas de suas assinaturas (parâmetros de entrada e o seu retorno). Uma arquitetura de componentes pode ser divida em camadas com diferentes níveis de abstração. A camada mais alta consiste de componentes específicos de negócio que realizam as regras de negócio do domínio. Na camada intermediária encontram-se componentes utilitários que prestam serviços genéricos necessários ao desenvolvimento das aplicações. A última camada inclui os componentes de infra-estrutura que se comunicam com as plataformas de execução do software (ex: sistema operacional, drivers ou dispositivos de hardware). No ambiente Odyssey, é possível gerar os componentes de negócio do software (camada mais superior da arquitetura) utilizando um mecanismo pré-programado que auxilia o arquiteto do software a organizar a distribuição dos serviços e informações pela arquitetura. Esta geração é, na verdade, uma forma de facilitar a criação das especificações de componente para os requisitos modelados pelo usuário na ferramenta. Para tanto, dois estilos arquiteturais específicos para o desenvolvimento de componentes de negócio são 36 permitidos para esta geração: o estilo baseado em tipos (typebased) e o estilo baseado em instâncias (instance-based). Tais estilos necessitam que a Visão de Negócio esteja corretamente montada, com suas devidas associações, atributos, multiplicidades e relacionamentos. Além disso, os casos de uso também precisam estar detalhados passo a passo, utilizando as ações de negócio que informam quando uma informação é criada, alterada, removida ou trocada com o usuário. Estilo Baseado em Tipos Geração dos componentes gerentes de instâncias A geração dos componentes é iniciada com o agrupamento dos tipos de negócio presentes na visão de negócio. Acessando esta funcionalidade através do menu Tools Architecture ► Styles ► Type-based ► ► Component Generate Type Managers, uma janela de agrupamento é aberta (figura 28). Do lado esquerdo, aparece uma árvore com os grupos pré-formados pelas regras, onde são indicados os candidatos recomendados ( ) e os candidatos sugeridos ( ) de cada grupo. Ao clicarmos em um dos grupos na árvore, seus detalhes são apresentados do lado direito da janela. Como as regras de agrupamento são sugestões para o projetista, checkboxes são utilizadas para a seleção dos candidatos desejados. Quando a checkbox é marcada, o candidato passa a fazer parte do grupo que está selecionado, e todos os candidatos que, antes, faziam parte do grupo do candidato, são trazidos, agora, para o grupo em que ele foi inserido (como candidato também, podendo ou não ser selecionado). Considerações: 1. O especialista pode mudar de idéia com relação aos agrupamentos selecionados, assim, se ele retroceder e desfazer qualquer agrupamento, a janela devolve os candidatos inicialmente selecionados e os reagrupa. 2. Um candidato só pode estar em um grupo por vez. 37 (a) Cliente e Hospede permanecem juntos pela aplicação da regra da herança. Quarto é um candidato forte (recomendado) para fazer parte do grupo do hotel. Tipo de Quarto é um candidato fraco para fazer parte do grupo do hotel. (b) Ao escolhermos o Quarto como integrante do grupo do hotel, o Tipo de Quarto passa a fazer parte dos candidatos (fracos) a entrarem neste grupo também. Figura 29 - Janela de agrupamento. Após o agrupamento, uma janela de preferências é aberta, para que o arquiteto escolha algumas opções sobre a arquitetura, como mostrado na figura 29. Escolha do tipo de dado da chave técnica da arquitetura. Pode ser números inteiros ou string. Tratamento de Remoções: opção para criar as interfaces dos componentes que emitem e escutam os eventos de remoção. Tratamento de Remoções: opção para conectar (utilizando as interfaces criadas) os componentes que emitem com aqueles que precisam escutar os eventos de remoção. Figura 30 - Janela de opções sobre a arquitetura. 38 Clicando no botão Next da figura 29, a janela de conclusão da geração de componentes é mostrada (figura 30), em que se define o nome dos pacotes onde os componentes e interfaces serão inseridos. Além disso, é mostrado um relatório com as características da geração, visando documentar o conteúdo destes pacotes, podendo este ser editado pelo arquiteto. Tipo da chave técnica. Tratamento de remoções. Navegabilidades usadas na geração. Figura 31 - Informações sobre os pacotes onde os componentes e as interfaces serão inseridos Após concluir o procedimento, clicando no botão Finish da figura 30, os componentes e as interfaces são gerados, podendo ser vistos em Componente View ►Components ou em Componente View ► Interfaces, mostrados na tela de diagramação, como na figura 32 39 Figura 32 - Componentes e interfaces gerados. Geração dos Componentes de Processo A geração dos componentes de processo utiliza a especificação dos casos de uso como um guia para acessar os componentes gerentes de instância criados. Clicando sobre um componente, a aba Software Component é mostrada, com as características do componente. Em seguida, é necessário definir quais casos de uso um componente realiza, associando-os na aba Use Case Realization, através dos botões Add, Add All, Remove e Remove All, conforme apresentado na figura 32. A geração é iniciada pelo menu Tools ► Component Architecture ► Styles ► Type-based ► Generate Interactions From Use Case Realization, onde um wizard é aberto. Inicialmente, o arquiteto precisa escolher qual componente será especificado pelo algoritmo. Após a escolha do componente de processo desejado, devem-se selecionar quais dos casos de uso associados a ele o usuário está interessado em gerar (figura 33a). O passo seguinte é escolher as interfaces que o algoritmo precisa utilizar (as que possuem métodos para a manipulação das instâncias dos tipos de negócio) (figura 33b). O arquiteto 40 pode escolher quantas interfaces quiser, influenciando apenas o tempo que o algoritmo leva para gerar as seqüências. Figura 33: Passos para a geração de um componente de processo. Ao concluir a geração, o resultado obtido pode ser visto na figura 34, onde o diagrama de interação é gerado dentro do componente de processo. Caso algum erro ocorra durante a geração, este é informado para que o projetista procure uma solução para o problema. 41 Figura 34: Diagrama gerado para o caso de uso “Fazer Reserva”. Estilo baseado em Instâncias Aqui, a geração de componentes de negócio consiste em criar, para cada tipo de negócio, um componente de entidade e um componente-coleção na arquitetura. Para realizar essa geração, o arquiteto deve acessar o menu Tools ► Component Architecture ► Styles ► Instance-based ► Generate Instance Managers e a única informação que deverá ser fornecida é o nome e a descrição dos pacotes onde os componentes serão inseridos. A figura correspondente é a figura 31, só que neste caso, o relatório é montado com os detalhes do estilo baseado em instâncias. 42 3.12. Criação de um processo de desenvolvimento de software Nesta parte, trataremos da criação de um processo de desenvolvimento de software no Odyssey. O desenvolvimento de software necessita de um processo que o sistematize, como também um acompanhamento de sua execução, objetivando, entre outras coisas, fornecer informações que permitam a tomada de decisões gerenciais, de acordo com situações detectadas durante sua execução, e controlar o fluxo de trabalho dos engenheiros através da automação do processo. O software responsável por automatizar a execução de processos é conhecido como máquina de processos. Modelagem de processo Inicialmente, o processo deverá ser modelado. Isso é feito através da escolha Preferences – Environment na janela principal do Odyssey, como na figura 35. Figura 35: Passos para modelagem do processo. 43 Com esses passos, a tela da figura 36 será mostrada. Figura 36: Ambiente Odyssey. Para modelagem do processo, deve-se clicar em Process View, e com o botão direito do mouse ou pela barra de ferramentas que aparece para este caso, o usuário tem a opção de criar um novo processo, novas ferramentas, artefatos ou regras para acompanhamento do processo, como mostra a figura 37. Figura 37 – Modelagem do Processo. 44 O processo modelado deve descrever cada uma das atividades do ciclo de vida, que também devem ser modeladas. Um exemplo está mostrado na figura 38. Figura 38 – Modelagem do processo raiz. Obs: O símbolo indica que determinadas atividades são compostas, contendo um outro fluxo de atividades que descreve as suas sub-atividades. Além de modelar o processo principal, é necessário modelar seus sub-processos. Na máquina de processos, a modelagem permite a separação dos processos de software em primitivos e compostos, onde os processos primitivos são descritos através de roteiros, papéis, ferramentas e artefatos consumidos e produzidos, e os processos compostos são descritos através de um fluxo de atividades de sub-processos. 45 Para a modelagem dos sub-processos, deve-se clicar sobre o sub-processo da árvore que será modelado. Em Type, pode ser escolhida a opção Primitive ou Composite, para a modelagem do sub-processo primitivo ou composto, respectivamente. O processo primitivo, como mostra a figura 39, é descrito através de seu tempo médio de execução, em Average Execution Time; um roteiro, em Script, que descreve o que deve ser feito para que o processo seja executado; uma lista de papéis, em Authorized Roles, que indica quais tipos de desenvolvedor são autorizados a executar esse processo; listas de artefatos consumidos e produzidos, que indicam o que deve ser utilizado para que o roteiro seja cumprido; e a lista de ferramentas, que indica quais ferramentas devem ser utilizadas para que os artefatos consumidos e produzidos possam ser manipulados. Figura 39 – Modelagem de um sub-processo primitivo. Após a modelagem de todos os sub-processos necessários para execução do processo principal, é possível iniciar sua instanciação. 46 Instanciação do Processo A instanciação do processo, que ocorre no momento da criação do domínio ou da aplicação, consiste inicialmente da instanciação do processo raiz, como mostra a figura 40. Figura 40 – Processo de Instanciação. Após a seleção do processo raiz, ocorre o mapeamento do processo e a seleção dos papéis pendentes, para que seja possível informar à máquina de processos quais desenvolvedores estão autorizados a atuar em quais processos, exercendo quais papéis, como mostra a figura 41. 47 Figura 41 – Instanciação do Processo. Em Existing Roles, é selecionado o papel desejado (por exemplo gerente, projetista...), e em Existing Users, os usuários para o papel selecionado são escolhidos. Para isso, deve-se clicar sobre o nome do usuário e através do botão Add, adicioná-lo a Selected Users. Após a instanciação, o processo será simulado para verificar se existem erros de modelagem, que inviabilizem a sua execução. Caso não seja encontrado erro, o processo poderá entrar em execução. Para prosseguir, basta clicar em OK, como mostra a figura 42. Figura 42 – Resultado da simulação. 48 Caso a simulação ocorra por mais do que 5 segundos, o Agente de Simulação notifica ao usuário que pode estar ocorrendo uma repetição infinita, como mostra a figura 43. Figura 43 – Notificação do Agente de Simulação. O usuário então pode optar por continuar a simulação por mais 5 segundos, ou cancelá-la, para corrigir ou reestruturar o processo. O usuário tem ainda as seguintes opções relacionadas aos processos: • monitoramento: acompanhamento ou acesso ao ambiente do monitoramento do processo para uma visão geral; • retrocesso: quando é necessário retroceder a execução do processo quando seu término ou tomada de decisão não ocorrerem em momento oportuno; • reinstanciação: utilizada para melhoria do processo que foi modelado caso seja detectada uma falha e que seja interessante melhorar dentro do projeto que está em execução. Para a escolha destas opções, clicar em Tools, em seguida em Process Wizard e escolher a opção desejada, como mostra a figura 44. 49 Figura 44 – Menu para processos. Acompanhamento do Processo O acompanhamento do processo é útil para indicar as tarefas pendentes e decisões que devem ser tomadas. Quando o desenvolvedor entra pela primeira vez no ambiente de desenvolvimento, este é informado quais atividades estão pendentes para ele. Monitoramento de Processos O ambiente de monitoramento é utilizado para se obter uma visão global do processo em execução. Para selecionar esta opção, deve-se selecionar a aba mostrada na figura 46, abaixo da árvore à esquerda. Através da diferenciação de cores, são mostrados quais processos executaram dentro do tempo previsto (mostrados em verde), os que ainda estão 50 em execução (mostrados em amarelo) e os que tiveram o tempo de execução pior que o previsto (mostrados em vermelho), como aparece na figura 45. Figura 45 – Monitoramento do Processo. 51 4. Engenharia de Aplicação Esta seção é destinada à engenharia de aplicação, ou seja, o usuário aqui considerado exerce o papel de um engenheiro de aplicação. Como já mencionado anteriormente, o processo de Engenharia de Aplicação (EA) atua de forma paralela ao de Engenharia de Domínio (ED). Assim, a EA se dedica ao estudo das melhores técnicas, processos e métodos para a produção de aplicações, no contexto do desenvolvimento baseado em reutilização, utilizando os componentes do domínio previamente criados. 4.1. Criando uma Aplicação A criação de uma nova aplicação na infra-estrutura do Odyssey começa pela seleção de um domínio onde a aplicação será criada. Para escolher o domínio de trabalho basta clicar sobre o mesmo, para que seja selecionado, e então, com o botão direito, escolher a opção Create new application, como mostra a figura 46. Figura 46 – Criação de uma nova aplicação. 52 Depois de escolhida esta opção, a tela de instanciação do processo aparece (figura 47), e a opção Do not instantiate a process deve ser selecionada, no caso onde os usuário não deseje instanciar um processo raiz. Para prosseguir, o usuário deve clicar no botão Next. Figura 47 – Instanciação do Processo. 53 4.2. Instanciação da aplicação A próxima tela para instanciação da aplicação é mostrada (figura 48). Como a aplicação será feita com base no domínio escolhido, a opção Instantiates new application based on domain model deverá ser selecionada e o botão Next, para prosseguir com o processo. Figura 48 – Tipo de Instanciação. A próxima tela mostrada (figura 49) é a tela para escolha e definição das características da aplicação, como nome, estereótipo e descrição da aplicação. Depois de devidamente preenchidos os campos, o botão Next deve ser escolhido para continuação. Figura 49 – Descrição da aplicação. 54 4.3. Contextos da Aplicação O próximo passo agora, é a escolha de contextos e componentes da aplicação por parte do engenheiro de aplicação. A figura 50 mostra a escolha dos contextos da aplicação, do lado esquerdo da janela, são escolhidos os contextos nos quais a aplicação a ser desenvolvida se encaixa. Isto é feito através dos botões Add, Add All, Remove e Remove All que incluem ou retiram contextos do Domínio (campo do lado esquerdo) na Aplicação (lado direito). A escolha destes contextos pré-seleciona, automaticamente, os componentes que serão sugeridos ao especialista. Ou seja, o ambiente só mostrará os componentes relativos aos contextos escolhidos, o que dependerá das ligações realizadas anteriormente nos contextos, features, etc. Figura 50 – Contextos para a Aplicação. Em seguida, o botão Next deverá ser acionado e a tela da figura 52 é apresentada. 55 4.4. Seleção de Componentes Na tela da figura 51, é onde são mostrados os componentes já com o corte inicial proporcionado pela definição do escopo feita na tarefa anterior (seleção de contextos). São mostrados os diferentes tipos de features, com sua natureza opcional ou mandatória, seus relacionamentos e restrições. A seleção é executada através do botão direito do mouse ou através do botão Add, mostrado na tela à esquerda. Para remoção de algum componente, o botão Remove também da tela à esquerda deverá ser usado. Na escolha de cada feature, o engenheiro recebe mensagens mostrando os diferentes componentes relacionados. Figura 51 – Seleção dos Componentes. Para terminar o processo, deve ser selecionado o botão Finish. Terminado o processo, ocorre automaticamente uma verificação do processo de escolha dos componentes da aplicação. Os relacionamentos fora do contexto da aplicação são informados, cabendo ao engenheiro da aplicação avaliar a relevância das informações relatadas. 56 Na versão atual do ambiente, após este processo, os componentes do domínio são copiados para o contexto da aplicação, comportando-se a partir de agora como componentes distintos dos do módulo de domínio, ou seja, qualquer alteração realizada, não se refletirá no modelo de domínio. 4.5. Diagramadores Na engenharia de aplicação, os diagramas presentes na tela de diagramação são basicamente os mesmos que os descritos na seção 3, ou seja, as funcionalidades de cada um são mantidas. Porém, para a engenharia de aplicação, os diagramas são uma forma de extração de dados, conceitos, funcionalidades e características dos componentes dos domínios que serão necessários à aplicação. Enfim, são utilizados como forma de exploração do domínio. É aqui também que se dá a adaptação dos componentes escolhidos na fase de instanciação da aplicação e a especificação de novos componentes. Para ter acesso aos diagramadores da aplicação, depois de sua instanciação, basta dar um duplo clique sobre o nome da aplicação desejada e a figura 52 é mostrada. Como a definição mais completa dos diagramas já foi realizada na sessão referente ao domínio, aqui explicaremos suas funcionalidades no contexto da aplicação, mas sem mostrar novamente as telas de diagramação, que são as mesmas já exibidas anteriormente. 57 Figura 52 – Exemplo de uma Feature. Diagrama de Contexto O diagrama de contexto auxilia o engenheiro de domínio na definição do escopo da aplicação, ou seja, em sua fase de análise da aplicação, porém este não aparece na tela de diagramação, por já ter sido explorado na etapa de instanciação da aplicação (seção 4.2). É através do diagrama de contexto do domínio disponível para reutilização que o engenheiro de aplicação definirá qual escopo a aplicação a ser desenvolvida contemplará. Diagrama de Casos de Uso O diagrama de casos de uso é utilizado no contexto da engenharia de aplicação para capturar o conhecimento sobre o domínio para o desenvolvimento de sua aplicação. É também a partir da definição dos casos de uso do domínio que os componentes de cada função de uma aplicação são descritos. 58 Diagrama de Features O modelo de features contém as características essenciais do domínio, representando de forma padronizada seus componentes. Através deste diagrama serão selecionados os componentes da aplicação segundo suas funcionalidades presentes na visão funcional do diagrama. Diagrama Estrutural Este diagrama representa a visão estrutural dos componentes do domínio, ou seja, é basicamente composto pelo diagrama de classes e objetos dos seus componentes; e pode ajudar ao engenheiro verificar a escolha adequada do componente. Diagrama de Negócios Os diagramas de negócios têm seu foco principal na Engenharia de Aplicação, e como dito anteriormente, descrevem como o software que será construído deve tratar os conceitos (entidades), seus atributos e relacionamentos, descrevendo conceitos que são instanciados pela aplicação. 4.6. Component View Para apoiarmos a decisão do arquiteto durante a escolha dos estilos e tecnologias que podem ser empregadas no desenvolvimento das aplicações precisamos cadastrar todas as tecnologias de componente em que estamos interessados, utilizando a janela vista na figura 53 (menu Tools ► Component Architecture ► Technology ► Add/Remove Component Technologies). 59 Figura 53 – Janela de cadastro de tecnologias de componente. O próximo passo consiste em avaliar as tecnologias disponíveis na geração de componentes. Esta avaliação é feita na janela da figura 54 (menu Tools Architecture ► ► Component NonFunctional Requirements & Technology Evaluation Support), onde os atributos devem ser conceituados separadamente. Para saber qual o estilo e a tecnologia mais indicados para uma aplicação em particular, o arquiteto precisa expor seus desejos para cada um dos onze atributos de qualidade utilizados. Isto é feito indicando-os como Importante, Desejável ou Irrelevante para o software (figura 55). Figura 54 – Janela de avaliação das tecnologias nos estilos arquiteturais. 60 Figura 55 – Atributos de qualidade desejados para o software. Clicando no botão Finish da figura 55, é apresentado então na figura 56 os resultados obtidos segundo as opções escolhidas anteriormente. Para cada linha retornada, temos um valor que indica a distância vetorial da tecnologia e do estilo até o objetivo pretendido. Assim, o arquiteto pode decidir sobre o melhor caminho a ser seguido no desenvolvimento. Figura 56: Resultados obtidos para os desejos do arquiteto. 61 5. Considerações Finais Este manual tem como objetivo apresentar uma breve descrição operacional para aqueles que querem utilizar o protótipo do Odyssey. O objetivo principal aqui é apresentar os passos necessários para criação de domínios e também de aplicações dentro de domínios previamente criados. Dessa forma, o manual foi dividido em duas etapas: uma para os usuários interessados em trabalhar na engenharia de domínio, e outra para os usuários que desejam trabalhar na engenharia de aplicação. O Odyssey está em constante evolução. Notícias sobre as pesquisas em desenvolvimento podem ser obtidas através do site do projeto (http://reuse.cos.ufrj.br/odyssey). 62 6. Referências BRAGA, Regina; "Busca e Recuperação de Componentes em Ambientes de Reutilização de Software", Tese de Doutorado – COPPE/Sistemas, Dezembro 2000. MILER, Nelson; “A Engenharia de Aplicações no Contexto da Reutilização baseada em Modelos de Domínio” , Tese de Mestrado - COPPE/Sistemas, Julho 2000. MURTA, L. G. P., “Charon: Uma Máquina de Processos Extensível Baseada em Agentes Inteligentes”, Tese de Mestrado - COPPE/Sistemas, Março 2002. TEIXEIRA, H. V., “Geração de Componentes de Negócio a partir de Modelos de Análise”, Tese de Mestrado – COPPE/Sistemas, Março 2003. 63