Desenvolvimento Baseado em Modelos e Teste de Software

Tamanho: px
Começar a partir da página:

Download "Desenvolvimento Baseado em Modelos e Teste de Software"

Transcrição

1 Desenvolvimento Baseado em Modelos e Teste de Software Paulo Gabriel Gadelha Queiroz 1 Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo (USP) Caixa Postal São Carlos SP Brazil pgabriel@icmc.usp.br Abstract. Model Driven Development (MDD) concentrates on the importance of models in the software life cycle, making them part of the final product. Thus, models are kept as simple as possible, and most of the complexity of the software belongs to the transformations that can be automatically obtained by application generators. This helps to increase the quality of the final product, as well as easing the future evolution of the software, that can be done by changing the high level models and automatically obtaining a new product.even in this context where code is generated automatically, the software testing activity is still needed and is realized in the models and in the transformations rules, once they are hand-made activities done by developers. There is the possibility to automatic generate test code and test cases based on models, through a tecnic know as model driven test. This paper presents an overview of MDD and software testing, addressing the tools and aproaches used in this kind of development and software test. Resumo. O desenvolvimento baseado em modelos (MDD) concentra-se na importância de modelos no ciclo de vida do software, tornando-os parte do produto final. Assim, mantêm-se os modelos simples, e a maioria da complexidade do software pertencerá às transformações que podem ser obtidas automaticamente por geradores de aplicações. Isso ajuda a aumentar a qualidade do produto final, bem como facilitar a futura evolução do software, que poderá ser feita mudando-se os modelos de alto nível e obtendo-se, de forma automática, o novo produto. Mesmo nesse contexto de geração de código automatizada, existe ainda, a necessidade da existência da atividade de teste, a qual é realizada nos modelos e nas regras de transformação, pois são atividades realizadas de forma manual pelo desenvolvedor. Existe ainda a possibilidade de geração automática do código e dos casos de teste com base em modelos, por meio da utilização de teste baseado em modelos (MDT). Esse artigo apresenta uma visão geral do estado da arte de MDD e teste de software, mostrando as abordagens e ferramentas utilizadas nesse tipo de desenvolvimento e teste de software. 1. Introdução Desde que foi criado, o computador vem ocupando cada vez mais espaço na vida das pessoas, as vezes até de forma imperceptível. O software é responsável pela maioria das funcionalidades existentes em um computador, e sua complexidade tem crescido muito ao longo dos anos. Chegou-se a um ponto no qual o software deve ser além de confiável, operar em ambientes computacionais embarcados e distribuídos, comunicar-se utilizando uma grande variedade de paradigmas de comunicação, e se adaptar dinamicamente a

2 mudanças nos ambientes operacionais [France and Rumpe 2007]. Além disso, o tempo de desenvolvimento deve ser reduzido para atender as necessidades de mercado (time-tomarket). Isso se deve às tecnologias utilizadas, que se tornaram significativamente mais complexas nos últimos anos, e ao fato dessas tecnologias mudarem mais rapidamente do que os negócios para os quais elas procuram dar apoio [Kent 2002]. Desse modo, se faz necessário a utilização de uma metodologia de engenharia mais disciplinada. O desenvolvimento baseado em modelos (do inglês Model-Driven Development ou MDD) é uma abordagem de desenvolvimento de software que surgiu para resolver esses problemas. O MDD enfatiza a importância de modelos no processo de desenvolvimento de software [Mellor et al. 2003]. No MDD, os modelos passam a fazer parte do produto final de software, assim como o código. A ideia é aumentar o nível de abstração do desenvolvimento, por meio da utilização de modelos de alto nível para proteger os desenvolvedores das complexidades da plataforma de implementação [France and Rumpe 2007], e ainda, realizar transformações nos modelos até gerar artefatos de implementação automaticamente, de forma a refletir a solução expressa nos modelos [Schmidt 2006]. Uma vez que o código é gerado de forma automatizada por meio das transformações de modelos, pode-se imaginar que realizar testes nesse contexto passa a ser redundante e sem sentido. Contudo, mesmo supondo a corretude dos motores de transformações utilizados, ainda existem artefatos feitos manualmente pelos desenvolvedores e sujeitos a erros, tais como os próprios modelos desenvolvidos e as regras de transformações. Portanto, o objetivo desse artigo é apresentar as técnicas de teste utilizadas no contexto de MDD. Esse artigo está dividido como segue. Na seção 2, são apresentados os conceitos de MDD. Na seção 3, são apresentadas as técnicas de teste utilizadas em MDD. Na seção 3.3, apresenta-se a abordagem de teste baseado em modelos. Por fim, na seção 4, são apresentadas as conclusões desse trabalho. 2. Desenvolvimento baseado em modelos O MDD tem como ideia principal reconhecer a importância dos modelos no processo de software, não apenas como um guia para tarefas de desenvolvimento e manutenção, mas como parte integrante do software. Também é conhecido como MDE (Model- Driven Engineering) [Schmidt 2006] ou MDSD (Model-Driven Software Development) [Völter and Groher 2007]. A proposta do MDD é fazer com que o engenheiro de software não precise interagir manualmente com todo o código-fonte, podendo se concentrar em modelos de mais alto nível, ficando protegido das complexidades requeridas para implementação nas diferentes plataformas. Um mecanismo automático é responsável por gerar automaticamente o código a partir dos modelos. Neste cenário, modelos não são apenas um guia, ou uma referência. Eles fazem parte do software, assim como o código fonte. O MDD surgiu como uma técnica que visa resolver diversos problemas existentes durante o ciclo de desenvolvimento de um software, tais como: evitar que os modelos gerados fiquem desatualizados em relação ao código fonte gerado; facilitar o reúso em níveis mais altos de abstração (modelos); aumentar a produtividade, uma vez que alterar modelos é mais simples do que alterações em códigos fonte; e, facilitar a validação e

3 manutenção do software, entre outros. Com a utilização do MDD pode-se evitar que o desenvolvedor precise executar as tarefas repetitivas necessárias para a transformação de modelos para o código final executável. Isto é alcançado por meio da automação dessas transformações. O tempo gasto nessas tarefas, que no desenvolvimento convencional (não orientado a modelos) inibe a execução do ciclo completo dos requisitos aos testes, é significativamente reduzido, fazendo com que mesmo atividades de urgência, como correção de erros, possam ser executadas sem produzir inconsistência com os modelos, mantendo-os sempre atualizados. Para possibilitar a criação de modelos, é necessária uma ferramenta de modelagem, por meio da qual o engenheiro de software produz modelos que descrevem os conceitos do domínio. Os modelos por ela criados precisam ser semanticamente completos e corretos, uma vez que devem poder ser compreendidos por um computador, e não um ser humano, capaz de corrigir pequenos enganos ou preencher lacunas por si só. O elemento que implementa estas características é normalmente uma linguagem específica de domínio, ou DSL [Lucrédio 2007]. Os modelos servem de entrada para transformações que irão gerar outros modelos ou o código-fonte. Para definir as transformações, é necessária uma ferramenta que permita que o engenheiro de software construa regras de mapeamento de modelo para modelo, ou de modelo para código. Idealmente, essa ferramenta deve possibilitar que as regras de mapeamento sejam construídas da forma mais natural possível, uma vez que a construção de transformadores é uma tarefa complexa. Por fim, é necessário um mecanismo que efetivamente aplique as transformações definidas pelo engenheiro de software. Esse mecanismo deve não só executar as transformações, mas também manter informações de rastreabilidade, possibilitando saber a origem de cada elemento gerado, seja no modelo ou no código-fonte [Lucrédio 2007]. Na Figura 1, apresenta-se um típico processo de desenvolvimento baseado em MDD. Observa-se que o desenvolvedor não mais manipula código fonte na sua IDE favorita, mas utiliza uma ferramenta de modelagem para elaborar os modelos do software em desenvolvimento, define as regras de transformações que devem ser seguidas e utiliza um mecanismo executor de transformações para gerar outros modelos ou mesmo código fonte. Figure 1. Processo de desenvolvimento utilizando MDD.

4 Embora existam diversas abordagens de MDD, a OMG (Object Management Group) definiu uma realização particular e usou, para nomeá-la, o termo Model Driven Architecture (MDA) [OMG 2003]. A seguir serão descritas as principais características do MDA MDA O MDA Introduz os conceitos de CIM (Computation Independet Model), PIM (Plataform Independet Model) e PSM (Platform-Specific Model). Um CIM representa uma visão do sistema de um ponto de vista não computacional, ou seja, ele não apresenta detalhes da estrutura do sistema e é conhecido como modelo de domínio, pois utiliza um vocabulário comum aos profissionais e especialistas no domínio em questão [OMG 2003]. Um PIM representa uma visão do sistema de forma independente da plataforma de implementação. A idéia é que esse modelo seja genérico o suficiente para que possa ser reaproveitado em diferentes plataformas de implementação [OMG 2003]. Um PSM representa uma visão do sistema do ponto de vista de uma plataforma específica. Ele combina as especificações de um PIM com detalhes sobre como o sistema utiliza aquele tipo particular de plataforma [OMG 2003]. A ideia por trás do MDA consiste em se realizar transformações sucessivas entre modelos até que se chegue ao código fonte. Percebe-se que a transformação entre CIM e PIM é menos passível de automação quando comparada a transformação de PSM para código, pois envolve mais decisões e maiores possibilidades de interpretações dos requisitos. O MDA utiliza como base o meta-modelo, chamado MOF (Meta-Object Facility), que serve como base para a definição de todas as linguagens de modelagem. Por meio do MOF permite-se que as ferramentas de modelagem e transformação possam trabalhar em conjunto. Ele consiste de um padrão orientado a objetos que permite a definição de classes com atributos e relacionamentos, de tal forma que é muito semelhante ao diagrama de classes da UML (Unified Modeling Language). O MDA define também o XMI (XML Metadata Interchange), que é um formato para representar modelos em XML e o QVT (Queries/Views/Transformations), que define uma linguagem textual e uma notação para definir consultas e transformações baseadas no MOF. Embora tenha uma proposta de ser genérica, podendo trabalhar com qualquer linguagem de modelagem, o MDA tem grande foco na UML. Por exemplo, perfis UML são o mecanismo preferido para representação de conceitos específicos de plataforma em um PSM. Existem ainda abordagens MDD desenvolvidas pela Sun Microsystems, que foca no MDD por meio da utilização do NetBeans e pela IBM que usa o eclipse como foco para realização de MDD Vantagens e desvantagens do MDD Assim como qualquer outra abordagem de desenvolvimento, a utilização de MDD não só trás benefícios ao longo do desenvolvimento como também pode apresentar pontos

5 negativos em alguns casos. Entre os pontos positivos do uso de MDD destacam-se: aumento de produtividade, pois reduz-se o tempo de desenvolvimento uma vez que a codificação passa a ser feita de forma automatizada; maior portabilidade, pois o desenvolvedor elabora modelos em mais alto nível que podem ser utilizados para gerar código em diferentes ambientes/plataformas; facilidade de prover interoperabilidade, visto que cada parte do modelo pode ser transformado em código para uma plataforma diferente, resultando em um software que executa em um ambiente heterogêneo, porém mantendo a funcionalidade global; facilitação da manutenção e documentação, visto que a manutenção passa a ser feita em modelos de mais alto nível e eles passam a ser parte tanto do software quanto da especificação. maior reutilização, pois segundo [Krueger 1992] a reutilização em mais alto nível, tais como projeto e arquitetura proporciona maiores benefícios em relação a reutilização de artefatos de códigos. facilitação das verificações e otimizações, pois modelos oferecem maior facilidade para verificadores e ainda podem ser realizadas otimizações automáticas específicas de domínio. corretude, pois além do fato de geradores não introduzirem erros acidentais, como erros de digitação, eles permitem que a identificação de erros conceituais aconteça em um nível mais alto de abstração. Conforme foi comentado anteriormente, mesmo que muitas vantagens possam ser enumeradas, todas as abordagens existentes apresentam desvantagens, e dessa forma, pode-se destacar as seguintes desvantagens da utilização de MDD: aumento da rigidez, pois grande parte do código é gerado e fica fora do alcance do desenvolvedor; maior complexidade, pois os artefatos necessários para utilização do MDD, tais como ferramentas de modelagem e geradores de código, introduzem complexidade adicional ao processo, visto que são difíceis de construir e manter; perda de desempenho, pois mesmo que algumas otimizações possam ser realizadas pelos geradores, eles acabam incluindo muito código desnecessário, por conseguinte, o resultado pode não apresentar resultados satisfatórios de desempenho, quando comparado ao código escrito a mão; maior curva de aprendizado, pois o desenvolvimento dos artefatos específicos de MDD exigem habilidade na construção de linguagens, ferramentas de modelagem, transformação e geradores de código; alto investimento inicial, pois é necessário montar uma infraestrutura de reutilização orientada a modelos que requer mais tempo e esforço. No entanto, os ganhos posteriores podem ser significativos e podem compensar esse alto investimento inicial Geradores de Aplicações Geradores de aplicações são ferramentas capazes de gerar artefatos a partir de uma especificação. A especificação descreve o problema ou tarefa a ser feita pelo artefato. Essa especificação pode ter a forma de um diálogo interativo, onde o usuário seleciona

6 as opções desejadas a partir de uma série de menus, pode aparecer de uma forma gráfica, onde o usuário edita um diagrama ou pode ser escrita em alguma linguagem. Os artefatos gerados pelo gerador de aplicações podem ser segmentos de código, sub-rotinas, sistemas de software, entre outros. Geradores de aplicações tem como objetivo maximizar a automação do desenvolvimento de aplicações por meio do uso de software customizado reusável [Cleaveland 1988, Czarnecki et al. 2002]. Pode-se dizer que um gerador de aplicações funciona de forma semelhante a um compilador, traduzindo as informações em alto nível para implementação de baixo nível. Alguns tipos são compiladores para linguagens de programação específicas de domínios (DSLs), esse termo é usado para descrever linguagens de programação para tarefas especializadas. Embora os compiladores possam ser vistos como geradores, a pesquisa e prática em geradores de aplicações foca em diferentes problemas daqueles tratados por compiladores, tais como transformação de programas [Smaragdakis and Batory 2000]. Sempre que for necessário modificar o produto, basta alterar as especificações de entrada e executá-las novamente no gerador de aplicação. Na Figura 2 apresenta-se o processo de desenvolvimento de uma aplicação ou código utilizando um gerador de aplicações típico. Os quadrados representam arquivos e as elipses representam programas executáveis. O processo inicia-se com uma especificação que é submetida ao gerador de aplicação. O gerador transforma essa especificação em um programa ou código por exemplo. Esse programa passa por um compilador de sua linguagem específica, que gera o executável. A aplicação gerada recebe entradas, processa e gera uma saída correspondente. Figure 2. Utilização de um gerador de aplicações (adaptado de [Cleaveland 1988]). Um dos principais problemas dos geradores é que podem ser usados efetivamente

7 somente em alguns tipos de aplicação [Cleaveland 1988]. Para minimizar esse problema, foram criados os geradores de aplicação configuráveis (GAC). Os GACs são geradores que podem ser adaptados para trabalharem com diferentes domínios. Um GAC configurado para um certo domínio deve apresentar as mesmas características de um gerador de aplicação específico, ou seja, receber uma especificação, armazená-la em meio persistente, permitir a edição e reedição dessa especificação, validá-la e transformá-la em artefatos de software. A configuração de um GAC pode ser uma atividade menos custosa do que a construção de um gerador de aplicações específico [Shimabukuro 2006]. Seção 2.3.1, apresenta-se o um gerador de aplicação configurável. Para construir um gerador de aplicações é necessário ter conhecimento sobre o domínio da aplicação. [Cleaveland 1988] destacou sete etapas necessárias para o desenvolvimento de um gerador de aplicações: 1. Reconhecimento de domínios, iniciado na maioria dos casos por meio do reconhecimento de padrões [Cleaveland 1988]. 2. Definição das fronteiras do domínio. 3. Definição do modelo subjacente. 4. Definição das partes fixas e variantes. 5. Definição da especificação de entrada. 6. Definição dos produtos. 7. Implementação do gerador Captor O Captor [Shimabukuro 2006] é um GAC que possui o objetivo de facilitar a geração de artefatos de software em diferentes domínios. Entre os artefatos que o captor pode gerar estão: código, documentação e testes. Esse gerador permite a definição de domínios com diferentes arquitetura de software. O Captor possui quatro módulos, conforme é mostrado na Figura 3. O módulo de gerenciamento de projetos é responsável por fazer a criação, manutenção e a remoção de projetos. O módulo de gerenciamento de domínio cria uma estrutura de dados para representar o domínio escolhido pelo usuário para ser usada pelos outros módulos do gerador. O módulo de gerenciamento de interface apresenta as janelas para o usuário. Por fim, o módulo de transformação de gabaritos gera os artefatos. O Captor se baseia em arquivos XML e gabaritos XSL para realizar a configuração para domínios específicos. Para utilizar o Captor corretamente é necessário seguir os seguintes passos: especificar a linguagem de modelagem de aplicação (LMA) em um conjunto de formulários organizados hierarquicamente em forma de árvore; criar gabaritos para cada artefato que deve ser gerado; fornecer um arquivo de mapeamento de transformação de gabaritos baseado na MTL (Mapping Transformation Language) definida por [Shimabukuro 2006]; configuração do captor e da ferramenta Ant [Davidson et al. 2009] para realização de pré e pós-processamentos específicos nos artefatos gerados. O Captor foi posteriormente atualizado para permitir a geração de software que utilize mais de um domínio. A nova versão do Captor é chamada de Captor-AO

8 Engenheiro de Aplicação Especificação GUI Gerenciamento de Domínio Configuração de Domínio Dados do Projeto + Especificação (XML) Motor de Transformação de Gabaritos Gerenciamento de Projeto Gabaritos Engenheiro de Domínio Figure 3. Arquitetura do Captor (adaptado de [Shimabukuro 2006]). [Pereira Júnior 2008], pois utiliza aspectos para a composição dos domínios. Com o Captor-AO, o engenheiro de aplicações pode utilizar um domínio principal, chamado de domínio base, e opcionalmente mais alguns domínios transversais compatíveis com o domínio base escolhido para compor as aplicações. Além dessa possibilidade de composição de aplicações com mais de um domínio o Captor-AO incorporou diversas melhorias relacionadas a usabilidade do Captor. 3. Teste de software no contexto de MDD O teste de software é uma atividade presente na maioria dos processos de desenvolvimento e visa garantir que o produto de software atende aos requisitos que foram definidos para ele. Entre esses requisitos destacam-se: garantir que o software está correto (correção); garantir que ele atende aos requisitos de desempenho; e garantir que ele é seguro. O teste de software não é a única atividade com esse objetivo, mas tem-se mostrado a mais utilizada e eficiente. Conforme foi visto na seção anterior o MDD visa automatizar o processo de desenvolvimento por meio da utilização de modelos de alto nível, transformações entre modelos e geração automática de código. Nesse contexto, surge a dúvida se o teste de software passa a ser uma atividade redundante e dispendiosa [Rutherford et al. 2003]. Afinal, o que deve-se testar quando utiliza-se o desenvolvimento baseado em modelos para produzir software? Em um primeiro momento testa-se a infraestrutura criada para o MDD, ou seja, as ferramentas a serem utilizadas. Para isso, são utilizadas todas as técnicas de testes convencionais (teste funcional, estrutural e análise de mutantes) e não interessam ao escopo deste artigo. Supondo que as ferramentas estão de acordo com o que espera-se delas e que elas de fato geram código correto e livre de erros, o foco do teste no MDD são as transformações entre modelos e o produto final de software. Caso encontrem-se erros no software, ocorreram problemas na transformação entre os modelos ou os modelos iniciais estavam incorretos. Existem basicamente duas vertentes de teste em MDD: Teste de

9 transformação entre modelos; teste baseado em modelos. Enquanto a primeira foca no teste de software desenvolvido com a utilização de MDD a segunda foca na utilização de técnicas de MDD para automatizar a derivação de casos de teste. Essas técnicas serão detalhadas a seguir Teste de transformação entre modelos A correção de uma transformação de modelos pode ser determinada com a verificação se a saída da transformação satisfaz seus objetivos, ou seja, se não existem diferenças entre o modelo esperado e o modelo de saída. Neste tipo de estratégia assumi-se que o motor de transformação está correto e que o modelo de entrada foi especificado corretamente. Isso significa que a especificação da transformação entre modelos é o único artefato que precisa ser validado e verificado [Lin et al. 2004]. Pode-se garantir a correção dessa especificação de várias formas, mas em geral recorre-se a duas alternativas: aplicar métodos formais em uma prova de corretude; e os testes de execução. Os teste de execução apresentam diversas vantagens que o tornam o método mais efetivo para determinar se a tarefa (transformação de modelos) foi executada corretamente, tais como: a relativa facilidade com que muitas atividades de teste podem ser executadas; o software desenvolvido pode ser executado no seu ambiente esperado de execução; grande parte do processo de teste pode ser automatizado. Assim como o teste de software convencional, o teste de especificação de modelos de transformação pode apenas mostrar a presença de erros na especificação e não garantir sua ausência. Contudo, mesmo sendo uma alternativa mais aplicável que os métodos formais, pode ser bem efetiva em revelar a presença de erros [Lin et al. 2004]. As atividades básicas de testes consistem em projetar casos de teste, executar o software com esses casos de teste e analisar os resultados produzidos por essas execuções. Assim, define-se o teste de transformação de modelos como a execução de uma especificação de transformação determinística com dados de teste (ou seja, entrada para casos de teste) e uma comparação entre os resultados reais (ou seja, o modelo obtido), com a saída esperada (ou seja, o modelo esperado), que devem satisfazer a intenção da transformação. Se não existem diferenças entre o modelo obtido e modelos esperado, pode-se inferir que a transformação do modelo está correta com relação à especificação dos testes. Se existem diferenças entre o modelo obtido e modelos esperado, a especificação da transformação precisa ser revista e modificada [Lin et al. 2004]. Apresenta-se na Figura 4 um framework para teste de especificação de transformação de modelos que consiste da geração de testes, execução de testes e documentação de testes automaticamente. Esse framework possui basicamente três componentes principais: o construtor de casos de teste, recebe como entrada a especificação de teste e produz casos de teste para a especificação de transformação a ser testada; o motor de teste, recebe como entrada os casos de teste gerados para os executar no modelo de entrada e ainda compara o modelo gerado com o modelo esperado; e por fim, o analisador de testes que recebe os resultados do motor de teste e permite a navegação entre as diferenças encontradas nos modelos. Uma das partes críticas do framework apresentado é a comparação de modelos. A principal tarefa da comparação de modelos é calcular o mapeamento e as diferenças entre os modelos. A comparação de modelos é utilizada para descobrir diferenças entre

10 Figure 4. Framework para teste de especificação de transformação de modelos (adaptado de [Lin et al. 2004]). o modelo esperado e o modelo gerado. Visto que a comparação de modelos feita de forma manual é uma atividade tediosa, consome muito tempo e é sujeita a erros, sugerese a automação dessa atividade. [Lin et al. 2004] levantou uma série de problemas que precisam ser explorados mais profundamente para atingir o objetivo de automatizar a comparação de modelos, dos quais destacam-se: Que propriedades dos modelos precisam ser comparadas? Em geral compara-se as propriedades estruturais dos modelos para descobrir diferenças. Contudo, as propriedades estruturais podem variar de acordo com a linguagem de modelagem. Por esse motivo utiliza-se o MOF da OMG em todas as linguagens de modelagem para o MDA; outro problema é a definição e representação do mapeamento e diferenças entre os modelos, as diversas abordagens existentes variam entre si; o último problema nesse contexto é a possibilidade da existência de múltiplos mapeamentos tais que o resultado da comparação de modelos não seja único. Em que nível deve-se comparar os modelos? Os modelos são geralmente renderizados em uma notação gráfica e podem ser persistidos em uma linguagem intermediária como o XML (Extensible Markup Language) [W3C 2008]. Com isso, torna-se possível comparar os modelos por meio da sua representação via XML. Contudo, alguns problemas surgem dessa abordagem tornando-a inviável Geração automática de casos de teste Com um apropriado nível de detalhe na especificação de componentes específicos de domínio é possível automatizar a geração de alguns ou todos os casos de teste. Visto que nem todo código de um sistema feito com MDD é gerado automaticamente. Acontece o mesmo com os casos de teste, pois para o código que é escrito a mão deve-se fazer casos de teste de forma tradicional. Dessa forma apresenta-se nesta subseção o trabalho de [Rutherford et al. 2003], que tem uma abordagem de geração automática de casos de teste baseada na utilização da ferramenta MODEST (Model-Driven Enterprise System Transformer).

11 A ferramenta MODEST é semelhante a ferramenta Captor-AO apresentada na seção Ela não implementa o padrão MDA. Contudo, existem muitas similaridades, de tal forma que, muitas das lições aprendidas com o MODEST podem ser rapidamente aplicadas as ferramentas MDA. O MODEST recebe como entrada uma especificação do sistema e templates de código, por fim o desenvolvedor implementa operações específicas de domínio e os casos de teste para elas. A geração de artefatos é feita por meio de um conjunto de transformações XSL. Ao fim do desenvolvimento o desenvolvedor entrega ao cliente tanto a aplicação quanto os códigos de teste. Na Figura 5, são apresentadas as entradas para o MODEST e suas possíveis saídas. Figure 5. Utilização do MODEST [Rutherford et al. 2003]. A utilização dessa ferramenta permite que o código de teste seja gerado em paralelo com o código da aplicação e que seja usado para validar e certificar atividades em tempo de desenvolvimento. Entre as possibilidades de geração de código de teste têm-se: geração de código para instanciar objetos gerenciados e estáticos representativos; geração de casos de teste para validar implementação de objetos estáticos; geração de casos de teste para validar implementações de objetos gerenciados; e geração de framework de teste para facilitar o teste de lógica específica de domínio. Com a utilização dessa ferramenta gera-se testes de unidade e testes de integração. O foco dessa abordagem é a apresentar a ferra MODEST e demonstrar que ela pode ser utilizada tanto para geração aplicações, quanto para geração de casos de teste de forma automatizada. Uma abordagem mais promissora é apresenta na subseção a seguir Teste baseado em modelos O teste baseado em modelos (MDT) apresenta-se como a mais promissora das abordagens, pois utiliza padrões e apresenta-se mais amadurecido que as outras abordagens. O

12 MDT consiste de três atividades: a geração de casos de teste a partir de modelos de acordo com um dado critério de cobertura; geração de um oraculo de teste para determinar o resultado esperado de um teste; e execução de testes no ambiente de teste, possivelmente gerado a partir de modelos [Born et al. 2004]. As atividades um e dois são independentes de plataforma. Em contrapartida, a execução dos testes tem lugar em uma determinada plataforma, seja ela uma plataforma de teste genérica para testar a lógica do aplicativo, ou uma plataforma de destino real da aplicação. Neste último caso, os modelos específicos de plataforma são necessárias para gerar ambientes de teste e mapear casos de teste independente de plataforma e oráculos sobre a plataforma desejada [Born et al. 2004]. Os casos de teste independente de plataforma são conhecidos como PIT e são gerados a partir do PIM. O PIT é mapeado posteriormente para plataformas alvo específicas. Os modelos independentes de plataforma servem como oráculos de teste. Para utilizar essa estratégia de teste utiliza-se o perfil UML U2TP (UML 2 Test Profile). Na Figura 6, apresenta-se os passos da utilização do MDT. Figure 6. MDT [Dai 2004]. O perfil U2TP introduz 4 conceitos lógicos para definir a linguagem de modelagem de um sistema de teste: a arquitetura de teste, o comportamento de teste, os dados de teste e o tempo. A arquitetura de teste define um ou mais objetos para serem testados e chama-os de SUT (System Under Test). Uma arquitetura de teste possui: os componentes de teste, que são objetos dentro do teste de sistema que podem se comunicar com o SUT para realizar o comportamento de teste; contexto de teste, que permitem aos usuários agrupar os casos de teste para descrever uma configuração de teste; arbitragem, que corresponde a uma maneira de avaliar um veredito para um contexto de teste; e um escalonador, que avalia um veredito para um contexto de teste [Heckel and Lohmann 2003]. O comportamento de teste define o propósito do teste. Utilizam-se os diagramas de interação UML para definir os estímulos de teste, observações, controle/invocação de testes, coordenações e ações. Os casos de teste determinam o comportamento normativo dos testes e correspondem a uma operação do contexto de teste que especifica como um

13 conjunto de componentes interage com o SUT. Um veredito de teste pode retornar : pass, inconclusive, fail ou error. Os dados de teste são de dois tipos: wildcards, que são usados para manipular eventos inesperados; e data pools, que são associados com o contexto de teste e incluem os dados de teste concretos. Para recuperar os dados de teste da data pool utiliza-se as operações chamadas seletores de dados. por fim, são definidas regras de codificação que permitem ao testador definir a codificação e decodificação dos dados de teste quando comunicados com o SUT. Para dar suporte a testes específicos define-se os conceitos de restrição e controle de comportamentos de teste com relação ao tempo. Para isso utilizam-se temporizadores e zonas de tempo. A utilização de todos esses conceitos para elaboração dos teste baseados em modelos acontece de acordo com o seguinte processo: defini-se um novo pacote UML como o pacote de teste do sistema, importa-se as classes e interfaces do sistema para o novo pacote, inicia-se a partir da especificação da arquitetura de teste e depois continua-se com a especificação do comportamento de teste, por fim, adiciona-se dados de teste e tempo nas especificações da arquitetura (Zona de tempo e data poll) e do comportamento de teste (Temporizador ou particionamento de dados) [Dai 2004]. Na Figura 7, apresenta-se um exemplo de criação de teste com U2TP. Figure 7. MDT [Dai 2004]. 4. Conclusão Conforme foi apresentado no artigo, a abordagem de desenvolvimento baseado em modelos vem ganhando grande atenção na academia e na industria, principalmente com a utilização da abordagem MDA da OMG. Mesmo nesse contexto, no qual boa parte do código passa a ser gerado automaticamente a atividade de teste de software continua a ter grande importância para a garantir a qualidade do software. Apresentou-se ainda as duas principais abordagens de teste no contexto de MDD. Na primeira, foca-se em testar as especificações das transformações entre modelos para garantir a corretude do software gerado. A segunda abordagem foca na automatização da atividade de testes por meio da utilização de uma abordagem semelhante ao MDD, o MDT. Embora as iniciativas sejam

14 promissoras, percebe-se que as pesquisas ainda estão muito incipientes na área, pois ainda falta muitos detalhes desse processo de teste. References Born, M., Schieferdecker, I., gerhard Gross, H., and Santos, P. (2004). Model-driven development and testing - a case study. In University of Twente, pages Cleaveland, J. C. (1988). Building application generators. IEEE Softw., 5(4): Czarnecki, K., Østerbye, K., and Völter, M. (2002). Generative programming. In ECOOP Workshops, pages Dai, Z. R. (2004). Model-driven testing with uml 2.0. Technical report, Computing Laboratory, University of Kent. Davidson, D. J., Atherton, B., Bailliez, S., and Ensin, M. B. (2009). The Apache Ant Project. Programa de computador. France, R. and Rumpe, B. (2007). Model-driven development of complex software: A research roadmap. In FOSE 07: 2007 Future of Software Engineering, pages 37 54, Washington, DC, USA. IEEE Computer Society. Heckel, R. and Lohmann, M. (2003). Towards model-driven testing. Kent, S. (2002). Model driven engineering. In IFM 02: Proceedings of the Third International Conference on Integrated Formal Methods, pages , London, UK. Springer-Verlag. Krueger, C. W. (1992). Software reuse. ACM Comput. Surv., 24(2): Lin, Y., Zhang, J., and Gray, J. (2004). Model comparison: A key challenge for transformation testing and version control in model driven software development. In Control in Model Driven Software Development. OOPSLA/GPCE: Best Practices for Model- Driven Software Development, pages Springer. Lucrédio, D. (2007). Uma Abordagem Orientada a Modelos para Reutilização de Software. PhD thesis, Sao Carlos, SP, Brasil. Director-Renata Pontin de Mattos Fortes. Mellor, S. J., Clark, A. N., and Futagami, T. (2003). Guest editors introduction: Modeldriven development. IEEE Software, 20: OMG (2003). Mda guide version Pereira Júnior, C. A. d. F. (2008). Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO. Master s thesis, Universidade de São Paulo, São Carlos, SP. Rutherford, M. J., Wolf, A. L., Rutherford, C. M. J., Wolf, E. L., and Wolf, E. L. (2003). A case for test-code generation in model-driven systems. In In International Conference on Generative Programming and Component Engineering (GPCE) 2003, pages Springer-Verlag. Schmidt, D. C. (2006). Model-driven engineering. IEEE Computer, 39(2). Shimabukuro, J. E. K. (2006). Um gerador de aplicações configurável. Master s thesis, ICMC-USP.

15 Smaragdakis, Y. and Batory, D. (2000). Application generators. In in Software Engineering volume of the Encyclopedia of Electrical and Electronics Engineering, pages John Wiley and Sons. Völter, M. and Groher, I. (2007). Product line implementation using aspect-oriented and model-driven software development. In SPLC, pages IEEE Computer Society. W3C (2008). Extensible Markup Language (XML). internet.

Model Driven Development (MDD)

Model Driven Development (MDD) Model Driven Development (MDD) Mestrado em Engenharia de Produção e Sistemas Computacionais Profa. Adriana Pereira de Medeiros adrianamedeiros@puro.uff.br Sumário Introdução Desenvolvimento de Software

Leia mais

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP: Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP: 8429016 Definição de MDA OMG (Object Management Group) propôs uma aplicação abrangente das práticas

Leia mais

3 Tecnologias Relacionadas

3 Tecnologias Relacionadas Tecnologias Relacionadas 31 3 Tecnologias Relacionadas O objetivo deste capítulo é apresentar um resumo de cada tecnologia relacionada ao processo proposto nesta dissertação, mostrando suas principais

Leia mais

Metamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo

Metamodelos para Banco de Dados. Carlos Julian Menezes Araújo Prof. Dr. Robson do Nascimento Fidalgo Metamodelos para Banco de Dados Carlos Julian Menezes Araújo cjma@cin.ufpe.br Prof. Dr. Robson do Nascimento Fidalgo 1 Agenda Metadados MDA MOF Metamodelos CWM Pacote Relacional Referências 2 Metadados

Leia mais

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste

6.1. Teste Baseado em Gramática e Outras Abordagens de Teste 6 Discussão Além das técnicas de teste usando modelos gramaticais, existem outras abordagens de teste funcional de sistemas que estão sendo estudadas pela comunidade científica. Algumas delas se dedicam

Leia mais

Processos de software

Processos de software Processos de software 1 Processos de software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software. 2 Objetivos Introduzir modelos de processos de

Leia mais

Introdução à Análise e Projeto de Sistemas

Introdução à Análise e Projeto de Sistemas Introdução à I. O Que vamos fazer na Disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente para criar sistemas OO Tem que saber Análise e Projeto OO (APOO) Isto é, Análise

Leia mais

Composição e Geração de Aplicações usando Aspectos

Composição e Geração de Aplicações usando Aspectos Composição e Geração de Aplicações usando Aspectos Carlos Alberto de Freitas Pereira Júnior 1 Rosana Teresinha Vaccare Braga 1 1 Programa de Mestrado em Ciências de Computação e Matemática Computacional

Leia mais

Estudo do processo de automatização de testes dirigidos por modelos

Estudo do processo de automatização de testes dirigidos por modelos Estudo do processo de automatização de testes dirigidos por modelos Daniel Frossard Costa 1, Jandira Guenka Palma 1 1 Departamento de Computação Universidade Estadual de Londrina (UEL) Caixa Postal 10.011

Leia mais

Introdução à Engenharia de Software

Introdução à Engenharia de Software Introdução à Engenharia de Software Professor: Rômulo César romulodandrade@gmail.com www.romulocesar.com.br Imagem Clássica Objetivo da aula Depois desta aula você terá uma visão sobre o que é a engenharia

Leia mais

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 1 O Paradigma Orientado a Objetos A Linguagem UML Descrição da Arquitetura 1 Programa

Leia mais

Rational Unified Process (RUP)

Rational Unified Process (RUP) Rational Unified Process (RUP) A Rational é bem conhecida pelo seu investimento em orientação em objetos. A empresa foi à criadora da Unified Modeling Language (UML), assim como de várias ferramentas que

Leia mais

Uma Abordagem para o Controle da Evolução de Software no Desenvolvimento Orientado a Modelos

Uma Abordagem para o Controle da Evolução de Software no Desenvolvimento Orientado a Modelos Uma Abordagem para o Controle da Evolução de Software no Desenvolvimento Orientado a Modelos Chessman Kennedy Faria Corrêa 1 Leonardo G. P. Murta 1 Claudia M. L. Werner 1 1 Programa de Engenharia de Sistemas

Leia mais

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Cronograma das Aulas. Hoje você está na aula Semana

Leia mais

Desenvolvimento Dirigido por Modelos: Conceitos, Aplicações, e Perspectivas. Prof. Valdemar Neto INF-UFG

Desenvolvimento Dirigido por Modelos: Conceitos, Aplicações, e Perspectivas. Prof. Valdemar Neto INF-UFG Desenvolvimento Dirigido por Modelos: Conceitos, Aplicações, e Perspectivas Prof. Valdemar Neto INF-UFG Agenda Introdução Conceitos Ferramentas Aplicações Perspectivas Engenharia de Software Convencional

Leia mais

UML (Unified Modelling Language)

UML (Unified Modelling Language) UML (Unified Modelling Language) Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Referências: Booch, G. et al. The Unified Modeling Language User Guide

Leia mais

Análise e projeto de sistemas

Análise e projeto de sistemas Análise e projeto de sistemas Conteúdo: UML O processo de desenvolvimento de software Prof. Patrícia Lucas A linguagem de modelagem unificada (UML) A UML teve origem em uma tentativa de se unificar os

Leia mais

Engenharia de Software

Engenharia de Software Instituto Superior Politécnico de Ciências e Tecnologia Engenharia de Software Prof Pedro Vunge www.pedrovunge.com I Semestre de 2018 Capítulo 1 Introdução SUMÁRIO Engenharia de Software Definição; Objectivos

Leia mais

Captor-AO: Gerador de Aplicações apoiado pela Programação Orientada a Aspectos

Captor-AO: Gerador de Aplicações apoiado pela Programação Orientada a Aspectos Captor-AO: Gerador de Aplicações apoiado pela Programação Orientada a Aspectos Carlos Alberto de Freitas Pereira Júnior 1 Paulo Cesar Masiero 1 Rosana Teresinha Vaccare Braga 1 1 Instituto de Ciências

Leia mais

Model Driven Architecture. Centro de Informática/UFPE Fernando Trinta

Model Driven Architecture. Centro de Informática/UFPE Fernando Trinta Model Driven Architecture Centro de Informática/UFPE Fernando Trinta Roteiro Contexto Introdução Conceitos MDA Platform Independent Model Platform Specific Model Transformations Consequências Promessas

Leia mais

Introdução a Teste de Software

Introdução a Teste de Software Universidade Católica de Pelotas Tecnólogo em Análise e Desenvolvimento de Sistemas Disciplina de Qualidade de Software Introdução a Teste de Software Prof. Luthiano Venecian 1 Conceitos Teste de software

Leia mais

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Notas de Aula 03: Introdução a Orientação a Objetos e a UML Notas de Aula 03: Introdução a Orientação a Objetos e a UML Objetivos da aula: Introduzir os conceitos da Orientação à Objetos (O.O) Introduzir os conceitos da UML Relacionar os processos às ferramentas

Leia mais

REUSO E REUSABILIDADE

REUSO E REUSABILIDADE REUSO E REUSABILIDADE Manutenção de Software Profa. Cynthia Pinheiro Antes de mais nada... 2ª Lista de Exercícios Já está disponível no site a 2ª Lista de Exercícios Entrega: dia 03/10, no horário da aula.

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 4 http://www.ic.uff.br/~bianca/engsoft2/ Aula 4-03/05/2006 1 Modelos Prescritivos de Processo Modelo em cascata Modelos incrementais Modelo incremental Modelo RAD Modelos

Leia mais

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software INTRODUÇÃO AO SWEBOK Introdução a Computação e Engenharia de Software Profa. Cynthia Pinheiro Introdução Origens do corpo de conhecimentos da Engenharia de Software: Engenharia da Computação Ciência da

Leia mais

Professor Emiliano S. Monteiro

Professor Emiliano S. Monteiro Professor Emiliano S. Monteiro To-Do Doing Done Conhecer os processos de desenvolvimento habilita o aluno a realizar uma melhor escolha de processo para uso em projetos futuros. A vantagem de conhecer

Leia mais

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves I Processos de desenvolvimento de SW profa. Denise Neves profa.denise@hotmail.com 2018 Projeto Um projeto é um empreendimento temporário empreendido para alcançar um único conjunto de objetivos. (PMI,PMBOK

Leia mais

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo

Ciência da Computação. Análise e Projeto Orientado a Objetos UML. Anderson Belgamo Ciência da Computação Análise e Projeto Orientado a Objetos UML Anderson Belgamo 1 Evolução do Software O rápido crescimento da capacidade computacional das máquinas resultou na demanda por sistemas de

Leia mais

Análise de Sistemas. Aula 5

Análise de Sistemas. Aula 5 Análise de Sistemas Aula 5 Prof. Emerson Klisiewicz CONTEXTUALIZAÇÃO Aula 5 Análise Orientada a Objetos Introdução a UML Histórico e Visão Geral Ferramentas CASE O Sucesso... Clientes satisfeitos Eles

Leia mais

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan Introdução aos computadores, à Internet e à World Wide Web Prof. Marcelo Roberto Zorzan História do Java Origem Linguagem desenvolvida pela Sun Microsystems Sintaxe similar ao C++ Inicialmente chamada

Leia mais

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado)

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado) Processo UP Unified Process (Processo Unificado) Conjunto de passos que tem como objetivo atingir uma meta Processo de software na ES, processo que visa a produzir o software - de modo eficiente e previsível

Leia mais

DMS - DOCUMENTO DE MODELAGEM DE SISTEMA VERSÃO: [NOME DO SISTEMA] [SIGLA] [AUTORES]

DMS - DOCUMENTO DE MODELAGEM DE SISTEMA VERSÃO: [NOME DO SISTEMA] [SIGLA] [AUTORES] DMS - DOCUMENTO DE MODELAGEM DE SISTEMA Este documento foi criado seguindo as recomendações e orientações do livro UML na Prática Do Problema ao Sistema e do modelo PRISM do MPDS (Modelo Prático para Desenvolvimento

Leia mais

Desenvolvimento de software orientado a características e dirigido por modelos

Desenvolvimento de software orientado a características e dirigido por modelos Desenvolvimento de software orientado a características e dirigido por modelos Rodrigo Reis Pereira 1, Marcelo Almeida Maia 1 1 Faculdade de Computação Universidade Federal de Uberlândia (UFU) Uberlândia

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Marcelle Mussalli Cordeiro {mmussalli@gmail.com} Cordeiro Reflexão O que é software?? Cordeiro 2 O que é Software? Programa Dados de configuração Dados de documentação Tudo que esteja

Leia mais

2

2 ANÁLISE DE SISTEMAS (processo de desenvolvimento de sistemas) por Antônio Maurício Pitangueira 1 2 Levantamento de requisitos Análise de requisitos Projeto Implementação Testes Implantação Foco da disciplina

Leia mais

Ciclo de vida: fases x atividades

Ciclo de vida: fases x atividades Ciclo de vida Fase de definição Análise e Especificação Estudo de Viabilidade Estimativas Planejamento Fase de desenvolvimento Design Implementação e integração Verificação e Validação Fase de operação

Leia mais

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks 48 3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks Este capítulo apresenta uma visão geral da contribuição principal deste trabalho: uma abordagem orientada a aspectos para o

Leia mais

Engenharia de Software

Engenharia de Software Universidade São Judas Tadeu Prof. André Luiz Ribeiro Prof. Jorge Luis Pirolla Introdução à Computação Engenharia de Software Tópicos O que é Engenharia de Software? Engenharia de Software em camadas Processo

Leia mais

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software Reuso de Software Aula 02 Agenda da Aula Introdução a Reuso de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com Introdução a Reuso de Software Abordagens de Reuso

Leia mais

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins.

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins. Bibliografia Quais são os problemas? 4 A sofisticação do software ultrapassou nossa capacidade de construção. 4 Nossa capacidade de construir programas não acompanha a demanda por novos programas. 4 Nossa

Leia mais

Curso de Sistemas de Informação. Karla Donato Fook DESU / DComp. Modelagem de Dados UML

Curso de Sistemas de Informação. Karla Donato Fook DESU / DComp. Modelagem de Dados UML Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DComp 2017 Modelagem de Dados UML 2 1 Eduardo Bezerra Editora Campus/Elsevier Porcentagem de projetos que terminam dentro do

Leia mais

5 Processo de Reificação e de Desenvolvimento com ACCA

5 Processo de Reificação e de Desenvolvimento com ACCA Uma Arquitetura para a Coordenação e a Composição de Artefatos de Software 53 5 Processo de Reificação e de Desenvolvimento com ACCA Resumo Este capítulo visa esclarecer e descrever atividades existentes

Leia mais

especificação por meio de exemplos não é garantia de corretude, mas a experiência mostra que tende a ser melhor do que o estado da prática hoje

especificação por meio de exemplos não é garantia de corretude, mas a experiência mostra que tende a ser melhor do que o estado da prática hoje 1 Introdução Testar é o conjunto de tarefas ou passos executados para verificar se um produto ou serviço atende à sua proposta. Dessa forma, a execução de testes em um programa contribui para a melhoria

Leia mais

Aplicação da Técnica de Tecelagem de Modelos na Transformação de Modelos na MDA

Aplicação da Técnica de Tecelagem de Modelos na Transformação de Modelos na MDA Alexandre dos Santos Mignon Aplicação da Técnica de Tecelagem de Modelos na Transformação de Modelos na MDA Dissertação apresentada à Escola Politécnica da Universidade de São Paulo para obtenção do Título

Leia mais

Desenvolvimento Dirigido por Modelos: Ferramentas

Desenvolvimento Dirigido por Modelos: Ferramentas DCC / ICEx / UFMG Desenvolvimento Dirigido por Modelos: Ferramentas Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Existe MDD na prática? Poucos sistemas ainda são desenvolvidos usando a filosofia

Leia mais

Requisitos de Software e UML Básico. Janaína Horácio

Requisitos de Software e UML Básico. Janaína Horácio Requisitos de Software e UML Básico Janaína Horácio janaina@les.inf.puc-rio.br Agenda Requisitos O que é? Objetivos? Atividades?... UML O que é? Modelos... Casos de Uso O que é? Componentes 2 Requisitos

Leia mais

Capítulo 5 Modelação do Sistema 1

Capítulo 5 Modelação do Sistema 1 Capítulo 5 Modelação do Sistema Capítulo 5 Modelação do Sistema 1 Assuntos abordados Modelos de contexto Modelos de interação Modelos estruturais Modelos comportamentais Engenharia orientada a modelos

Leia mais

Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira

Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira Técnicas para Reutilização de Software Prof. Eduardo Figueiredo Estagiário: Johnatan Oliveira Panorama de Reutilização Frameworks Padrões de projeto Aplicações configuráveis Padrões de arquitetura Linha

Leia mais

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software ENG SOFT - TESTES TESTES DE SOFTWARE 1. Fundamentos sobre testes de software A atividade de teste de software sempre foi considerada como um gasto de tempo desnecessário, uma atividade de segunda classe,

Leia mais

132 6 Conclusão 6.1. Contribuições da Tese

132 6 Conclusão 6.1. Contribuições da Tese 132 6 Conclusão Esta tese teve como objetivo principal o estudo da aplicação de transformações para manter a rastreabilidade de um sistema de software. Esta abordagem permite a captura automática das informações

Leia mais

FUNDAMENTOS DE ENGENHARIA DE SOFTWARE. Professor: Paulo Vencio

FUNDAMENTOS DE ENGENHARIA DE SOFTWARE. Professor: Paulo Vencio FUNDAMENTOS DE ENGENHARIA DE SOFTWARE Professor: Paulo Vencio Bibliografia: Como o assunto é cobrado: Conceito de forma geral Bibliografia Específica Aplicação do Conceito Conteúdo Programático: Conceito

Leia mais

Visões Arquiteturais. Visões Arquiteturais

Visões Arquiteturais. Visões Arquiteturais Visões Arquiteturais Separar diferentes aspectos em visões separadas com o objetivo de gerenciar complexidade. Cada visão descreve diferentes conceitos da Engenharia. Visões permitem reduzir a quantidade

Leia mais

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS Tereza Gonçalves Kirner Apresentação elaborada com base em: Hoffer, Jeffrey A., George, Joey F. Modern Systems Analysis and Design (Capítulo 1), Pearson,

Leia mais

Engenharia de Requisitos

Engenharia de Requisitos Engenharia de Requisitos Criado: mar/2001 Atualizado: set/2005 Tópicos Definição de Requisitos Participantes Processo Documento de Requisitos (SRS) Evolução dos Requisitos 2 Referência I.Sommerville. Sw

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 12 PROFª BRUNO CALEGARO Santa Maria, 29 de Outubro de 2013. Revisão aula passada Modelagem de sistemas Perspectiva externa Perspectiva de iteração

Leia mais

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata Processo de Desenvolvimento Também chamado de ciclo de vida do software Reflete os passos necessários para se construir um produto de software Existem vários modelos de ciclo de vida Cascata (1956) Iterativo

Leia mais

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software Professor Ariel da Silva Dias Modelos de Processo de Software Conjunto de atividades que leva à produção de um produto de Software [Sommerville,2011]; Podemos contar com ferramentas de apoio com o objetivo

Leia mais

2 Fluxos no Ciclo de Vida do Processo Unificado. O Processo Unificado consiste da repetição de uma série de ciclos durante a vida de um sistema.

2 Fluxos no Ciclo de Vida do Processo Unificado. O Processo Unificado consiste da repetição de uma série de ciclos durante a vida de um sistema. Processo Unificado Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Ciclo de Vida - Fluxos Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre

Leia mais

JADEX: A BDI REASONING ENGINE. Alexander Pokahr, Lars Braubach e Winfried Lamersdorf Springer US - Multi-Agent Programming 2005 pp.

JADEX: A BDI REASONING ENGINE. Alexander Pokahr, Lars Braubach e Winfried Lamersdorf Springer US - Multi-Agent Programming 2005 pp. JADEX: A BDI REASONING ENGINE Alexander Pokahr, Lars Braubach e Winfried Lamersdorf Springer US - Multi-Agent Programming 2005 pp. 149-174 Volume 15 Motivação Existem muitas plataformas para desenvolvimento

Leia mais

MODELAGEM DE UM SISTEMA DE GERENCIAMENTO DE COMUNICAÇÃO PARA VANTS: MODEL DRIVEN ARCHITETURE COM INTEGRAÇÃO AO PROCESSO UNIFICADO

MODELAGEM DE UM SISTEMA DE GERENCIAMENTO DE COMUNICAÇÃO PARA VANTS: MODEL DRIVEN ARCHITETURE COM INTEGRAÇÃO AO PROCESSO UNIFICADO MODELAGEM DE UM SISTEMA DE GERENCIAMENTO DE COMUNICAÇÃO PARA VANTS: MODEL DRIVEN ARCHITETURE COM INTEGRAÇÃO AO PROCESSO UNIFICADO Christiane Barbieri De Pelegrin * Rogéria Ramos de Oliveira Monteiro **

Leia mais

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos. AULA 02 OBJETIVO: Características da Linguagem Orientada a Objetos. HABILIDADES TRABALHADAS: Comparação das características das linguagens orientadas a objetos frente às linguagens estruturadas. Conhecimentos

Leia mais

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema: Modelos de Ciclo de Vida e Metodologias de Software 33) No SCRUM, uma iteração que segue um ciclo (PDCA) e entrega incremento de software pronto é denominada: A) Backlog. B) Sprint. C) Daily scrum. D)

Leia mais

Model Driven Development (MDD)

Model Driven Development (MDD) DCC / ICEx / UFMG Model Driven Development (MDD) Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Motivação para MDD Software é caro Os EUA sozinho investem mais de $250 bilhões em software Nos EUA,

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Ciência da Computação Prof. Elias Ferreira Elaborador por: Ana Claudia Bastos Loureiro Monção JUNIT Teste de Software Processo de Software Um processo de software pode ser visto como o conjunto de atividades,

Leia mais

6. Considerações Finais

6. Considerações Finais 146 6. Considerações Finais Neste capítulo apresentamos as conclusões que foram feitas nesta dissertação. Estas conclusões são apresentadas em três 4 seções: Lições Aprendidas, Trabalhos Relacionados,

Leia mais

Ferramenta MVCase Uma Ferramenta Integradora de Tecnologias para o Desenvolvimento de Componentes Distribuídos

Ferramenta MVCase Uma Ferramenta Integradora de Tecnologias para o Desenvolvimento de Componentes Distribuídos Ferramenta MVCase Uma Ferramenta Integradora de Tecnologias para o Desenvolvimento de Componentes Distribuídos Eduardo Santana de Almeida Daniel Lucrédio Calebe de Paula Bianchini Antonio Francisco do

Leia mais

4/14/11. Processos de Engenharia de Requisitos. Engenharia de requisitos. Elicitação e análise. A espiral de requisitos

4/14/11. Processos de Engenharia de Requisitos. Engenharia de requisitos. Elicitação e análise. A espiral de requisitos Processos de engenharia de requisitos Processos de Engenharia de Requisitos Os requisitos e as formas de obtê-los e documentálos variam drasticamente de um projeto para o outro Contudo, existe uma série

Leia mais

3 Arquitetura para a Coordenação e a Composição de Artefatos de Software

3 Arquitetura para a Coordenação e a Composição de Artefatos de Software Uma Arquitetura para a Coordenação e a de Artefatos de 23 3 Arquitetura para a Coordenação e a de Artefatos de Resumo Este capítulo apresenta a arquitetura ACCA, que é a parte central deste trabalho. A

Leia mais

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis

Leia mais

Um ambiente de suporte para uma linguagem de modelagem de sistemas multi-agentes

Um ambiente de suporte para uma linguagem de modelagem de sistemas multi-agentes Richard Werneck de Carvalho Um ambiente de suporte para uma linguagem de modelagem de sistemas multi-agentes Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do título

Leia mais

5º Congresso de Pós-Graduação

5º Congresso de Pós-Graduação 5º Congresso de Pós-Graduação UMA FERRAMENTA PARA GERAÇÃO AUTOMÁTICA DE DIAGRAMA DE CLASSES A PARTIR DA ESPECIFICAÇÃO DE REQUISITOS EM LINGUAGEM NATURAL Autor(es) Orientador(es) LUIZ EDUARDO GALVÃO MARTINS

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE ENGENHARIA DE SOFTWARE Qualidade de Software Qualidade do produto e do processo Padrões de software Revisões Medições e métricas de software Kele Teixeira Belloze kelebelloze@gmail.com CONCEITO DE QUALIDADE

Leia mais

ALM Aplicações em Linguagem de Montagem. Introdução. A produção de Software é uma atividade build and fix. build. fix

ALM Aplicações em Linguagem de Montagem. Introdução. A produção de Software é uma atividade build and fix. build. fix Introdução A produção de Software é uma atividade build and fix. 1 Introdução build 2 Introdução fix 3 1 Introdução 4 P s Só pessoas motivadas e comprometidas com o projeto garantem o respectivo sucesso;

Leia mais

4 ALBATROZ : Um ambiente para desenvolvimento de SMA

4 ALBATROZ : Um ambiente para desenvolvimento de SMA 41 4 ALBATROZ : Um ambiente para desenvolvimento de SMA Resumo Neste capítulo será apresentado o processo de desenvolvimento do ambiente Albatroz. Cada ferramenta é detalhada indicando suas funcionalidades.

Leia mais

5º Congresso de Pós-Graduação

5º Congresso de Pós-Graduação 5º Congresso de Pós-Graduação UMA FERRAMENTA PARA GERAÇÃO AUTOMÁTICA DE DIAGRAMA DE CLASSES A PARTIR DA ESPECIFICAÇÃO DE REQUISITOS EM LINGUAGEM NATURAL Autor(es) WILSON CARLOS DA SILVA Orientador(es)

Leia mais

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Processos de Software Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1 Objetivos Apresentar modelos de processos de software Descrever três modelos genéricos de processo e quando

Leia mais

Barbara Cristina Alves Silveira 1, Thiago Silva-de-Souza 2 INTRODUÇÃO REFERENCIAL TEÓRICO

Barbara Cristina Alves Silveira 1, Thiago Silva-de-Souza 2 INTRODUÇÃO REFERENCIAL TEÓRICO ACASE SPEM: FERRAMENTA PARA INSTANCIAÇÃO DE PROCESSOS SPEM BASEADA NO ECLIPSE MODELING FRAMEWORK ACASE SPEM: AN ECLIPSE MODELING FRAMEWORK BASED TOOL FOR SPEM PROCESSES INSTANTIATION Barbara Cristina Alves

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE 1 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE Nickerson Fonseca Ferreira nickerson.ferreira@ifrn.edu.br Introdução 2 Antes de qualquer

Leia mais

SSC 0721 Teste e Validação de Software

SSC 0721 Teste e Validação de Software SSC 0721 Teste e Validação de Software Conceitos básicos Prof. Marcio E. Delamaro delamaro@icmc.usp.br SSC 0721 Teste e Validação de Software ICMC/USP p. 1 O que é teste Atividade de executar um programa

Leia mais

FUNDAMENTOS DA ANÁLISE E PROJETO DE SISTEMAS. Projeto de Programas PPR0001

FUNDAMENTOS DA ANÁLISE E PROJETO DE SISTEMAS. Projeto de Programas PPR0001 FUNDAMENTOS DA ANÁLISE E PROJETO DE SISTEMAS Projeto de Programas PPR0001 2 Introdução Antes de desenvolver ou construir qualquer produto ou sistema em engenharia é necessário um... o PROJETO O que é um

Leia mais

Princípios da Engenharia de Software aula 03

Princípios da Engenharia de Software aula 03 Princípios da Engenharia de Software aula 03 Prof.: José Honorato Ferreira Nunes Material cedido por: Prof.: Franklin M. Correia Na aula anterior... Modelos de processos de software: Evolucionário Tipos

Leia mais

Introdução à UML. Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX. Prof. Fernando Maia da Mota

Introdução à UML. Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX. Prof. Fernando Maia da Mota Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX Introdução à UML Prof. Fernando Maia da Mota Slides gentilmente cedidos por Profa. Dra. Maria Istela Cagnin Machado UFMS/FACOM Introdução

Leia mais

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos Banco de Dados Parte 2 Prof. Leonardo Vasconcelos - Conceitos e Arquiteturas de SBD Modelos de dados: conjunto de conceitos que podem ser usados para descrever a estrutura de um banco de dados. Permitem

Leia mais

6 Ferramenta para a Especialização de Mecanismos de Persistência

6 Ferramenta para a Especialização de Mecanismos de Persistência Ferramenta para a Especialização de Mecanismos de Persistência 71 6 Ferramenta para a Especialização de Mecanismos de Persistência 6.1. Introdução Esta ferramenta foi desenvolvida para viabilizar o processo

Leia mais

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Engenharia de Software I Informática 2006 Profa. Dra. Itana Gimenes RUP: Projeto Artefatos Modelo de Projeto: Lista de classes de

Leia mais

2 Metodologias para Projetos de Aplicações Hipermidia

2 Metodologias para Projetos de Aplicações Hipermidia 2 Metodologias para Projetos de Aplicações Hipermidia O processo de desenvolvimento de aplicações é o objeto de diversas pesquisas, principalmente no caso das aplicações voltadas para a Internet, que diferem

Leia mais

Paradigmas de Software

Paradigmas de Software Paradigmas de Software Objetivos Introdução aos paradigmas de software. Descrição de modelos genéricos e sua aplicabilidade. Descrição dos processos de requisitos, desenvolvimento, teste e evolução. Modelo

Leia mais

Model-Driven Architecture

Model-Driven Architecture Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Model-Driven Architecture Guilherme Potenciano Ricardo Cacheta Waldemarin SSC5944 - Arquitetura de Software (...) it might be

Leia mais

UML Unified Modeling Language Linguagem de Modelagem Unificada

UML Unified Modeling Language Linguagem de Modelagem Unificada UML Unified Modeling Language Linguagem de Modelagem Unificada Prof. Gilberto Porto e-mail: porto@gilbertoporto.com.br A linguagem UML n UML (Unified Modeling Language) Linguagem de Modelagem Unificada

Leia mais

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini   / Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com / andre.belini@ifsp.edu.br MATÉRIA: ENGENHARIA DE SOFTWARE Aula N : 05 Tema:

Leia mais

Padrão para Especificação de Requisitos de Produto de Multimídia

Padrão para Especificação de Requisitos de Produto de Multimídia Padrão para Especificação de Requisitos de Produto de Multimídia 1 Introdução 1.1 Escopo do documento Sugere-se aqui uma estrutura para a Especificação de Requisitos de Produto de Multimídia (ERPM). Esta

Leia mais

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO Sumário PREFÁCIO...3 MODELO DA DOCUMENTAÇÃO...3 1. INTRODUÇÃO AO DOCUMENTO...3 1.1. Tema...3 2. DESCRIÇÃO

Leia mais

Fábricas de Software. Processos de Software. Fábricas de Software. Fábricas de Software 17/08/2010. Jorge Dias

Fábricas de Software. Processos de Software. Fábricas de Software. Fábricas de Software 17/08/2010. Jorge Dias Fábricas de Software Processos de Software Jorge Dias Um processo estruturado, controladoe melhoradode forma contínua, considerando abordagens de engenharia industrial, orientado para o atendimento a múltiplas

Leia mais

contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles.

contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles. Web Services Web Service é um componente de software identificado por uma URI que independe de implementação ou de plataforma e pode ser descrito, publicado e invocado sobre uma rede por meio de mensagens

Leia mais

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1 Verificação e Validação Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1 Objetivos Apresentar a verificação e validação de software e discutir a distinção entre elas Descrever

Leia mais

PDS. Aula 1.5 Modelos de Processo. Prof. Dr. Bruno Moreno

PDS. Aula 1.5 Modelos de Processo. Prof. Dr. Bruno Moreno PDS Aula 1.5 Modelos de Processo Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br Tipos de Modelos Modelo em Cascata; Prototipação; RAD; Modelo Incremental; Desenvolvimento Evolucionário; Desenvolvimento

Leia mais

Componentes de Software Baseados em Engenharia de

Componentes de Software Baseados em Engenharia de 19 a 21 de mar o de 2010 117 Componentes de Software Baseados em Engenharia de Domínio Leonardo Ciocari, Rafael Cancian 1 Centro de Ciências Tecnológicas da Terra e do Mar (CTTMar) Universidade do Vale

Leia mais

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador Prof. Araken Medeiros araken@ufersa.edu.br O processo de resolução de um problema com um computador leva à escrita de um algoritmo ou programa e à sua execução. Mas o que é um algoritmo? Angicos, RN 15/9/2009

Leia mais